summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/guix.texi12
-rw-r--r--gnu/local.mk5
-rw-r--r--gnu/packages/admin.scm4
-rw-r--r--gnu/packages/algebra.scm11
-rw-r--r--gnu/packages/apr.scm8
-rw-r--r--gnu/packages/aspell.scm113
-rw-r--r--gnu/packages/bioinformatics.scm66
-rw-r--r--gnu/packages/calcurse.scm11
-rw-r--r--gnu/packages/commencement.scm15
-rw-r--r--gnu/packages/conkeror.scm4
-rw-r--r--gnu/packages/crypto.scm38
-rw-r--r--gnu/packages/emacs.scm116
-rw-r--r--gnu/packages/engineering.scm167
-rw-r--r--gnu/packages/ftp.scm6
-rw-r--r--gnu/packages/games.scm6
-rw-r--r--gnu/packages/gnupg.scm31
-rw-r--r--gnu/packages/gnuzilla.scm15
-rw-r--r--gnu/packages/golang.scm4
-rw-r--r--gnu/packages/gstreamer.scm2
-rw-r--r--gnu/packages/image.scm2
-rw-r--r--gnu/packages/java.scm17
-rw-r--r--gnu/packages/libcanberra.scm28
-rw-r--r--gnu/packages/lighting.scm4
-rw-r--r--gnu/packages/linux.scm12
-rw-r--r--gnu/packages/mail.scm51
-rw-r--r--gnu/packages/messaging.scm2
-rw-r--r--gnu/packages/mpd.scm8
-rw-r--r--gnu/packages/music.scm5
-rw-r--r--gnu/packages/networking.scm14
-rw-r--r--gnu/packages/node.scm10
-rw-r--r--gnu/packages/ocaml.scm179
-rw-r--r--gnu/packages/package-management.scm36
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch66
-rw-r--r--gnu/packages/patches/exiv2-CVE-2017-14860.patch48
-rw-r--r--gnu/packages/patches/wget-CVE-2017-6508.patch45
-rw-r--r--gnu/packages/patches/wget-fix-504-test-timeout.patch160
-rw-r--r--gnu/packages/patches/wget-perl-5.26.patch96
-rw-r--r--gnu/packages/perl.scm73
-rw-r--r--gnu/packages/php.scm4
-rw-r--r--gnu/packages/python.scm171
-rw-r--r--gnu/packages/scribus.scm79
-rw-r--r--gnu/packages/statistics.scm62
-rw-r--r--gnu/packages/syndication.scm36
-rw-r--r--gnu/packages/synergy.scm4
-rw-r--r--gnu/packages/terminals.scm33
-rw-r--r--gnu/packages/version-control.scm12
-rw-r--r--gnu/packages/video.scm146
-rw-r--r--gnu/packages/virtualization.scm16
-rw-r--r--gnu/packages/web.scm24
-rw-r--r--gnu/packages/webkit.scm4
-rw-r--r--gnu/packages/wget.scm13
-rw-r--r--gnu/packages/wine.scm6
-rw-r--r--gnu/packages/xml.scm4
-rw-r--r--gnu/packages/xorg.scm40
-rw-r--r--gnu/tests/install.scm2
-rw-r--r--guix/build/go-build-system.scm2
-rw-r--r--guix/download.scm77
-rw-r--r--guix/import/cpan.scm7
-rw-r--r--guix/import/elpa.scm7
-rw-r--r--guix/import/github.scm11
-rw-r--r--guix/scripts.scm14
-rw-r--r--guix/scripts/challenge.scm19
-rw-r--r--guix/scripts/gc.scm8
-rw-r--r--guix/scripts/graph.scm11
-rw-r--r--guix/scripts/hash.scm9
-rw-r--r--guix/scripts/lint.scm55
-rw-r--r--guix/scripts/package.scm3
-rw-r--r--guix/scripts/refresh.scm8
-rw-r--r--guix/scripts/size.scm3
-rwxr-xr-xguix/scripts/substitute.scm19
-rw-r--r--guix/scripts/weather.scm3
-rw-r--r--tests/cpan.scm4
73 files changed, 1735 insertions, 675 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index d7fabe9599..e4ba15cd2e 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -3592,6 +3592,11 @@ package source code's remote URI and filesystem hierarchy structure.  In
 some cases, you will need to unpack the package's source code to a
 different directory structure than the one indicated by the import path,
 and @code{#:unpack-path} should be used in such cases.
+
+Packages that provide Go libraries should be installed along with their
+source code.  The key @code{#:install-source?}, which defaults to
+@code{#t}, controls whether or not the source code is installed.  It can
+be set to @code{#f} for packages that only provide executable files.
 @end defvr
 
 @defvr {Scheme Variable} glib-or-gtk-build-system
@@ -7276,6 +7281,13 @@ updating list of substitutes from 'https://guix.example.org'... 100.0%
   local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
   https://hydra.gnu.org/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
   https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs
+
+@dots{}
+
+6,406 store items were analyzed:
+  - 4,749 (74.1%) were identical
+  - 525 (8.2%) differed
+  - 1,132 (17.7%) were inconclusive
 @end smallexample
 
 @noindent
diff --git a/gnu/local.mk b/gnu/local.mk
index 329a71f214..a8f4e1e574 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -602,6 +602,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/eudev-rules-directory.patch		\
   %D%/packages/patches/evilwm-lost-focus-bug.patch		\
   %D%/packages/patches/exim-CVE-2017-1000369.patch		\
+  %D%/packages/patches/exiv2-CVE-2017-14860.patch		\
+  %D%/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch	\
   %D%/packages/patches/fastcap-mulGlobal.patch			\
   %D%/packages/patches/fastcap-mulSetup.patch			\
   %D%/packages/patches/fasthenry-spAllocate.patch		\
@@ -1087,9 +1089,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/vte-CVE-2012-2738-pt1.patch			\
   %D%/packages/patches/vte-CVE-2012-2738-pt2.patch			\
   %D%/packages/patches/weechat-python.patch			\
-  %D%/packages/patches/wget-CVE-2017-6508.patch			\
-  %D%/packages/patches/wget-fix-504-test-timeout.patch			\
-  %D%/packages/patches/wget-perl-5.26.patch			\
   %D%/packages/patches/wicd-bitrate-none-fix.patch		\
   %D%/packages/patches/wicd-get-selected-profile-fix.patch	\
   %D%/packages/patches/wicd-urwid-1.3.patch			\
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index cb5e86d39a..8f3f3cd892 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1382,14 +1382,14 @@ of supported upstream metrics systems simultaneously.")
 (define-public ansible
   (package
     (name "ansible")
-    (version "2.3.1.0")
+    (version "2.4.1.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "ansible" version))
        (sha256
         (base32
-         "1xdr82fy8gahxh3586wm5k1bxksys7yl1f2n24shrk8gf99qyjyd"))
+         "0spv0kjaicwss4q52s727b6grdizcxpa0bbsfg26pgf5kjrayqfs"))
        (patches (search-patches "ansible-wrap-program-hack.patch"))))
     (build-system python-build-system)
     (native-inputs
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 08940e4f90..ede137b22c 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -207,7 +207,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
 (define-public giac-xcas
   (package
     (name "giac-xcas")
-    (version "1.2.3-57")
+    (version "1.4.9-17")
     (source (origin
               (method url-fetch)
               ;; "~parisse/giac" is not used because the maintainer regularly
@@ -219,7 +219,7 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
                                   "source/giac_" version ".tar.gz"))
               (sha256
                (base32
-                "0a7c1r2rgsin671qy98yvwgkg6a81d0pp0p4p7sydhrfi1k9xpr1"))))
+                "0fabw706hixp4da4pgkbjrlf9gk4xrmv404f884jb24bnmb5hbax"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -229,13 +229,6 @@ GP2C, the GP to C compiler, translates GP scripts to PARI programs.")
              ;; Some Makefiles contain hard-coded "/bin/cp".
              (substitute* (find-files "doc" "^Makefile")
                (("/bin/cp") (which "cp")))
-             #t))
-         (add-after 'unpack 'disable-broken-test
-           (lambda _
-             ;; Disable failing test.  Actually, the results are correct but
-             ;; a sorting discrepancy prevents the test from being validated.
-             (substitute* "check/Makefile.in"
-               (("chk_fhan16") ""))
              #t)))))
     (inputs
      `(("fltk" ,fltk)
diff --git a/gnu/packages/apr.scm b/gnu/packages/apr.scm
index baadb41b60..62af24f0c7 100644
--- a/gnu/packages/apr.scm
+++ b/gnu/packages/apr.scm
@@ -30,14 +30,14 @@
 (define-public apr
   (package
     (name "apr")
-    (version "1.5.2")
+    (version "1.6.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/apr/apr-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0ypn51xblix5ys9xy7da3ngdydip0qqh9rdq8nz54w9aq8lys0vx"))
+               "0wiik6amxn6lkc55fv9yz5i3kbxnqbp36alrzabx1avsdp8hc7qk"))
              (patches
               (search-patches "apr-skip-getservbyname-test.patch"))
              (patch-flags '("-p0"))))
@@ -65,14 +65,14 @@ around or take advantage of platform-specific deficiencies or features.")
 (define-public apr-util
   (package
     (name "apr-util")
-    (version "1.5.4")
+    (version "1.6.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/apr/apr-util-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0bn81pfscy9yjvbmyx442svf43s6dhrdfcsnkpxz43fai5qk5kx6"))))
+               "0nq3s1yn13vplgl6qfm09f7n0wm08malff9s59bqf9nid9xjzqfk"))))
     (build-system gnu-build-system)
     (inputs
      `(("apr" ,apr)))
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index c97d32260b..3eeeee64fd 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -28,8 +28,9 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix licenses)
   #:use-module (gnu packages)
-  #:use-module (gnu packages perl)
-  #:use-module (gnu packages base))
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages perl))
 
 (define-public aspell
   (package
@@ -115,6 +116,13 @@ dictionaries, including personal ones.")
     (home-page "http://aspell.net/")))
 
 
+(define-public aspell-dict-ca
+  (aspell-dictionary "ca" "Catalan"
+                     #:version "2.1.5-1"
+                     #:sha256
+                     (base32
+                      "1fb5y5kgvk25nlsfvc8cai978hg66x3pbp9py56pldc7vxzf9npb")))
+
 (define-public aspell-dict-de
   (aspell-dictionary "de" "German"
                      #:version "20030222-1"
@@ -210,3 +218,104 @@ dictionaries, including personal ones.")
                      #:sha256
                      (base32
                       "1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p")))
+
+
+;;;
+;;; Hunspell packages made from the Aspell word lists.
+;;;
+
+(define* (aspell-word-list language synopsis
+                           #:optional
+                           (nick (string-map (lambda (chr)
+                                               (if (char=? #\_ chr)
+                                                   #\-
+                                                   chr))
+                                             (string-downcase language))))
+  (package
+    (name (string-append "hunspell-dict-" nick))
+    (version "2017.08.24")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://downloads.sourceforge.net/wordlist/scowl-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1kdhydzg5z5x20ad2j1x5hbdhvy08ljkfdi2v3gbyvghbagxm15s"))))
+    (native-inputs
+     `(("tar" ,tar)
+       ("gzip" ,gzip)
+       ("perl" ,perl)
+       ("aspell" ,aspell)))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'check)
+         (replace 'build
+           (lambda _
+             (substitute* "speller/make-hunspell-dict"
+               (("zip -9 .*$")
+                "return\n"))
+             (mkdir "speller/hunspell")
+
+             ;; XXX: This actually builds all the dictionary variants.
+             (zero? (system* "make" "-C" "speller" "hunspell"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out      (assoc-ref %outputs "out"))
+                    (hunspell (string-append out "/share/hunspell"))
+                    (myspell  (string-append out "/share/myspell"))
+                    (doc      (string-append out "/share/doc/"
+                                             ,name)))
+               (mkdir-p myspell)
+               (install-file ,(string-append "speller/" language ".aff")
+                             hunspell)
+               (symlink hunspell (string-append myspell "/dicts"))
+               (for-each (lambda (file)
+                           (install-file file doc))
+                         (find-files "."
+                                     "^(Copyright|.*\\.(txt|org|md))$"))
+               #t))))))
+    (synopsis synopsis)
+    (description
+     "This package provides a dictionary for the Hunspell spell-checking
+library.")
+    (home-page "http://wordlist.aspell.net/")
+    (license (non-copyleft "file://Copyright"
+                           "Word lists come from several sources, all
+under permissive licensing terms.  See the 'Copyright' file."))))
+
+(define-syntax define-word-list-dictionary
+  (syntax-rules (synopsis)
+    ((_ name language (synopsis text))
+     (define-public name
+       (aspell-word-list language text)))
+    ((_ name language nick (synopsis text))
+     (define-public name
+       (aspell-word-list language text nick)))))
+
+(define-word-list-dictionary hunspell-dict-en
+  "en"
+  (synopsis "Hunspell dictionary for English"))
+
+(define-word-list-dictionary hunspell-dict-en-au
+  "en_AU"
+  (synopsis "Hunspell dictionary for Australian English"))
+
+(define-word-list-dictionary hunspell-dict-en-ca
+  "en_CA"
+  (synopsis "Hunspell dictionary for Canadian English"))
+
+(define-word-list-dictionary hunspell-dict-en-gb
+  "en_GB-ise" "en-gb"
+  (synopsis "Hunspell dictionary for British English, with -ise endings"))
+
+(define-word-list-dictionary hunspell-dict-en-gb-ize
+  "en_GB-ize"
+  (synopsis "Hunspell dictionary for British English, with -ize endings"))
+
+(define-word-list-dictionary hunspell-dict-en-us
+  "en_US"
+  (synopsis "Hunspell dictionary for United States English"))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 43a00f196c..987662fc89 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1836,64 +1836,6 @@ files between different genome assemblies.  It supports most commonly used
 file formats including SAM/BAM, Wiggle/BigWig, BED, GFF/GTF, VCF.")
     (license license:gpl2+)))
 
-(define-public cufflinks
-  (package
-    (name "cufflinks")
-    (version "2.2.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "http://cole-trapnell-lab.github.io/"
-                                  "cufflinks/assets/downloads/cufflinks-"
-                                  version ".tar.gz"))
-              (sha256
-               (base32
-                "1bnm10p8m7zq4qiipjhjqb24csiqdm1pwc8c795z253r2xk6ncg8"))))
-    (build-system gnu-build-system)
-    (arguments
-     `(#:make-flags
-       (list
-        ;; The includes for "eigen" are located in a subdirectory.
-        (string-append "EIGEN_CPPFLAGS="
-                       "-I" (assoc-ref %build-inputs "eigen")
-                       "/include/eigen3/")
-        ;; Cufflinks must be linked with various boost libraries.
-        (string-append "LDFLAGS="
-                       (string-join '("-lboost_system"
-                                      "-lboost_serialization"
-                                      "-lboost_thread"))))
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'fix-search-for-bam
-          (lambda _
-            (substitute* '("ax_bam.m4"
-                           "configure"
-                           "src/hits.h")
-              (("<bam/sam\\.h>") "<samtools/sam.h>")
-              (("<bam/bam\\.h>") "<samtools/bam.h>")
-              (("<bam/version\\.hpp>") "<samtools/version.h>"))
-            #t)))
-       #:configure-flags
-       (list (string-append "--with-bam="
-                            (assoc-ref %build-inputs "samtools")))))
-    (inputs
-     `(("eigen" ,eigen)
-       ("samtools" ,samtools-0.1)
-       ("htslib" ,htslib)
-       ("boost" ,boost)
-       ("python" ,python-2)
-       ("zlib" ,zlib)))
-    (home-page "http://cole-trapnell-lab.github.io/cufflinks/")
-    (synopsis "Transcriptome assembly and RNA-Seq expression analysis")
-    (description
-     "Cufflinks assembles RNA transcripts, estimates their abundances,
-and tests for differential expression and regulation in RNA-Seq
-samples.  It accepts aligned RNA-Seq reads and assembles the
-alignments into a parsimonious set of transcripts.  Cufflinks then
-estimates the relative abundances of these transcripts based on how
-many reads support each one, taking into account biases in library
-preparation protocols.")
-    (license license:boost1.0)))
-
 (define-public cutadapt
   (package
     (name "cutadapt")
@@ -2117,7 +2059,7 @@ identify enrichments with functional annotations of the genome.")
 (define-public diamond
   (package
     (name "diamond")
-    (version "0.9.10")
+    (version "0.9.11")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2126,7 +2068,7 @@ identify enrichments with functional annotations of the genome.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "13qqzwg54n5dqh8pm5n3v8x6gqbczzakphwwjix63qv60hcd5bqd"))))
+                "1yqil5531p35xkqa44x75vvq8s7w8kqjqn1p5hf1nh0d91j9ihby"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no "check" target
@@ -6199,7 +6141,7 @@ SELECT or UPDATE queries to an end-point.")
 (define-public vsearch
   (package
     (name "vsearch")
-    (version "2.5.0")
+    (version "2.5.2")
     (source
      (origin
        (method url-fetch)
@@ -6209,7 +6151,7 @@ SELECT or UPDATE queries to an end-point.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "1k8wf3qns4mqrsizywbkqcasqjw000m4drxsag3qd7390pwvf9kz"))
+         "1z10psrwhflchwzw1fvzwnsn59xglf94qrn7msj93fpnjgafvmks"))
        (patches (search-patches "vsearch-unbundle-cityhash.patch"))
        (snippet
         '(begin
diff --git a/gnu/packages/calcurse.scm b/gnu/packages/calcurse.scm
index 20a9a8fb47..44e90448cd 100644
--- a/gnu/packages/calcurse.scm
+++ b/gnu/packages/calcurse.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015, 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -38,13 +39,17 @@
        (base32
         "0il0y06akdqgy0f9p40m4x6arn66nh7sr1w1i41bszycs7div266"))))
     (build-system gnu-build-system)
-    (inputs `(("ncurses" ,ncurses)
-              ("tzdata" ,tzdata)))
+    (inputs `(("ncurses" ,ncurses)))
+    (native-inputs `(("tzdata" ,tzdata-2017a)))
     (arguments
      ;; The ical tests all want to create a ".calcurse" directory, and may
      ;; fail with "cannot create directory '.calcurse': File exists" if run
      ;; concurently.
-     '(#:parallel-tests? #f
+     `(#:parallel-tests? #f
+       ;; Since this tzdata is only used for tests and not referenced by the
+       ;; built package, used the "fixed" obsolete version of tzdata and ensure
+       ;; it does not sneak in to the closure.
+       #:disallowed-references (,tzdata-2017a)
        #:phases (modify-phases %standard-phases
                   (add-before 'check 'check-setup
                     (lambda* (#:key inputs #:allow-other-keys)
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index 93199d210d..f3afb28e18 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -967,7 +967,7 @@ COREUTILS-FINAL vs. COREUTILS, etc."
 ;;; GCC toolchain.
 ;;;
 
-(define (gcc-toolchain gcc)
+(define (make-gcc-toolchain gcc)
   "Return a complete toolchain for GCC."
   (package
     (name "gcc-toolchain")
@@ -1013,18 +1013,21 @@ and binaries, plus debugging symbols in the 'debug' output), and Binutils.")
               ("libc-debug" ,glibc-final "debug")))))
 
 (define-public gcc-toolchain-4.8
-  (gcc-toolchain gcc-4.8))
+  (make-gcc-toolchain gcc-4.8))
 
 (define-public gcc-toolchain-4.9
-  (gcc-toolchain gcc-4.9))
+  (make-gcc-toolchain gcc-4.9))
+
+(define-public gcc-toolchain
+  (make-gcc-toolchain gcc-final))
 
 (define-public gcc-toolchain-5
-  (gcc-toolchain gcc-final))
+  gcc-toolchain)
 
 (define-public gcc-toolchain-6
-  (gcc-toolchain gcc-6))
+  (make-gcc-toolchain gcc-6))
 
 (define-public gcc-toolchain-7
-  (gcc-toolchain gcc-7))
+  (make-gcc-toolchain gcc-7))
 
 ;;; commencement.scm ends here
diff --git a/gnu/packages/conkeror.scm b/gnu/packages/conkeror.scm
index d9722a1906..6145dbf445 100644
--- a/gnu/packages/conkeror.scm
+++ b/gnu/packages/conkeror.scm
@@ -29,7 +29,7 @@
 (define-public conkeror
   (package
     (name "conkeror")
-    (version "1.0.3")
+    (version "1.1.0")
     (source (origin
               (method url-fetch)
               (uri
@@ -38,7 +38,7 @@
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0ybmincxw3msnrfpby9gnckbq2x94c7fra2m66zham54cjc7mav3"))))
+                "0jz216mjwis7f03j98s4wkcrrq2j3f41fb2y47a5qszc340zhdzv"))))
     (build-system gnu-build-system)
     (inputs `(("icecat" ,icecat)))
     (arguments
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 0021bee7b4..e17db289e5 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -664,3 +664,41 @@ of improving usability, security and speed.")
     ;; The compilation is distributed under the Boost license; the individual
     ;; files in the compilation are in the public domain.
     (license (list license:boost1.0 license:public-domain))))
+
+(define-public python2-roca-detect
+  (package
+    (name "python2-roca-detect")
+    (version "1.0.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "roca-detect" version))
+       (sha256
+        (base32
+         "1di4akyw2lf5r8zfwvyhkilz8jv8g4b66rgaqwfabmjwma6gnw27"))))
+    (build-system python-build-system)
+    (native-inputs
+     ;; TODO: apk_parse_ph4, pyjks
+     `(("python2-dateutil" ,python2-dateutil)
+       ("python2-six" ,python2-six)
+       ("python2-cryptography" ,python2-cryptography)
+       ("python2-future" ,python2-future)
+       ("python2-coloredlogs" ,python2-coloredlogs)
+       ("python2-pgpdump" ,python2-pgpdump)))
+    (arguments
+     `(;; Basic testing routine is quite simple and works with Py3
+       ;; but the rest of the code that processes the different
+       ;; key formats and extracts the modulus for inspection is
+       ;; not yet fully py3 ready.
+       #:python ,python-2))
+    (home-page "https://github.com/crocs-muni/roca")
+    (synopsis "ROCA detection tool")
+    (description
+     "This tool is related to the paper entitled @i{Return of the
+Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli}.  It
+enables you to test public RSA keys for a presence of the described
+vulnerability.  Currently the tool supports the following key formats: X.509
+Certificate (DER encoded, PEM encoded), RSA PEM (encoded private key, public
+key), SSH public key, ASC-encoded OpenPGP key, APK Android application, LDIFF
+file, and more.")
+    (license license:gpl3)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index bc803892af..ad96093c3f 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1216,6 +1216,51 @@ Using emacs-direnv means that programs started from Emacs will use the
 environment set through Direnv.")
     (license license:gpl3+)))
 
+(define-public emacs-ggtags
+  (package
+    (name "emacs-ggtags")
+    (version "0.8.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "http://elpa.gnu.org/packages/ggtags-"
+                           version ".el"))
+       (sha256
+        (base32
+         "0ny3llk021g6r0s75xdm4hzpbxv393ddm2r6f2xdk8kqnq4gnirp"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/leoliu/ggtags")
+    (synopsis "Frontend to the GNU Global source code tagging system")
+    (description "@code{ggtags} provides a frontend to the GNU Global source
+code tagging system.
+
+Features:
+
+@itemize
+@item Build on @code{compile.el} for asynchronicity and its large feature-set.
+@item Automatically update Global's tag files when needed with tuning for
+large source trees.
+@item Intuitive navigation among multiple matches with mode-line display of
+current match, total matches and exit status.
+@item Read tag with completion.
+@item Show definition at point.
+@item Jump to #include files.
+@item Support search history and saving a search to register/bookmark.
+@item Query replace.
+@item Manage Global's environment variables on a per-project basis.
+@item Highlight (definition) tag at point.
+@item Abbreviated display of file names.
+@item Support all Global search backends: @code{grep}, @code{idutils}, etc.
+@item Support exuberant ctags @url{http://ctags.sourceforge.net/} and
+@code{pygments} backend.
+@item Support all Global's output formats: @code{grep}, @code{ctags-x},
+@code{cscope} etc.
+@item Support projects on remote hosts (e.g. via @code{tramp}).
+@item Support eldoc.
+@item Search @code{GTAGSLIBPATH} for references and symbols.
+@end itemize\n")
+    (license license:gpl3+)))
+
 (define-public emacs-go-mode
   (package
     (name "emacs-go-mode")
@@ -1630,7 +1675,7 @@ allows easily move between them.")
 (define-public emacs-s
   (package
     (name "emacs-s")
-    (version "1.11.0")
+    (version "1.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1639,7 +1684,7 @@ allows easily move between them.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0krq5nz3llfx0vwdqn18pmq777ja0fac185w0h9qymppb1j1hvc2"))))
+                "0xbl75863pcm806zg0x1lw7qznzjq2c8320k8js7apyag8q4srvh"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -1698,7 +1743,7 @@ Stack Overflow, Super User, and other StackExchange sites.")
 (define-public emacs-f
   (package
     (name "emacs-f")
-    (version "0.18.2")
+    (version "0.19.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1707,7 +1752,7 @@ Stack Overflow, Super User, and other StackExchange sites.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1926shh2ymdsgz05c6q181mzzz1rci99ch568j151xi865jinyg5"))))
+                "05195n80ywa68qykxn7dza6qd59rhakvlzhaa9l6mcpmjf9l9grs"))))
     (build-system emacs-build-system)
     (propagated-inputs
      `(("emacs-s" ,emacs-s)
@@ -2362,6 +2407,30 @@ front-ends.  Company comes with many back-ends, e.g. @code{company-elisp}.
 These are distributed in separate files and can be used individually.")
     (license license:gpl3+)))
 
+(define-public emacs-company-quickhelp
+  (package
+    (name "emacs-company-quickhelp")
+    (version "2.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://github.com/expez/company-quickhelp/archive/"
+             version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0xrn2z1dgk5gmkmp2jkn9g83ckk39lqp5pyyv8rl7f6gqvib3qh0"))))
+    (build-system emacs-build-system)
+    (propagated-inputs
+     `(("emacs-pos-tip" ,emacs-pos-tip)
+       ("emacs-company" ,emacs-company)))
+    (home-page "https://github.com/expez/company-quickhelp")
+    (synopsis "Popup documentation for completion candidates")
+    (description "@code{company-quickhelp} shows documentation for the
+completion candidate when using the Company text completion framework.")
+    (license license:gpl3+)))
+
 (define-public emacs-multiple-cursors
   (package
     (name "emacs-multiple-cursors")
@@ -3039,7 +3108,7 @@ fully-functional one.")
 (define-public emacs-hydra
   (package
     (name "emacs-hydra")
-    (version "0.13.6")
+    (version "0.14.0")
     (source
      (origin
        (method url-fetch)
@@ -3048,7 +3117,7 @@ fully-functional one.")
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0575vh858gm35p57s49dy6pc2ij46dmj9zaa4z0cp98sqra3j3l0"))))
+         "0884k3ffwzhh6krbd8l7vvm184dkagb2jf4q8xzg72plln34qrm8"))))
     (build-system emacs-build-system)
     (home-page "https://github.com/abo-abo/hydra")
     (synopsis "Make Emacs bindings that stick around")
@@ -3568,7 +3637,7 @@ If you want to mark a folder manually as a project just create an empty
 (define-public emacs-elfeed
   (package
     (name "emacs-elfeed")
-    (version "2.1.1")
+    (version "2.2.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/skeeto/elfeed/archive/"
@@ -3576,7 +3645,7 @@ If you want to mark a folder manually as a project just create an empty
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1wlwc8fbkg6w1c8p856ikc20xm72f51clnzz419p0g8cavy27npw"))))
+                "0d7i93l3b0ck3iad9ddqp7sqa8w16hnamrby8bwvl316rqk4lzlf"))))
     (build-system emacs-build-system)
     (arguments
      `(#:phases
@@ -3896,6 +3965,33 @@ for search-based navigation of buffers.")
      "This Emacs library provides a Helm interface for Projectile.")
     (license license:gpl3+)))
 
+(define-public emacs-helm-make
+  (let ((commit "786104ac0c3cf4fe5b53f841eb9fe10bda2e4031")
+        (revision "1"))
+    (package
+      (name "emacs-helm-make")
+      (version (string-append "0.1.0-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/abo-abo/helm-make.git")
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0qdfk0p2j8jah7m0ngy2mm7775cn779m3a84yll86wqc74g331qs"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       `(("emacs-helm" ,emacs-helm)
+         ("emacs-projectile" ,emacs-projectile)))
+      (home-page "https://github.com/abo-abo/helm-make")
+      (synopsis "Select a Makefile target with helm")
+      (description "@code{helm-make} or @code{helm-make-projectile} will give
+you a @code{helm} selection of directory Makefile's targets.  Selecting a
+target will call @code{compile} on it.")
+      (license license:gpl3+))))
+
 (define-public emacs-cider
   (package
     (name "emacs-cider")
@@ -4564,7 +4660,7 @@ mode-line.")
 (define-public emacs-yasnippet
   (package
     (name "emacs-yasnippet")
-    (version "0.12.0")
+    (version "0.12.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/joaotavora/yasnippet/"
@@ -4572,7 +4668,7 @@ mode-line.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "1yqiprighgqz1hsslph50cy09xxqabc06jffrnjcsdf6nj70xlkc"))
+                "01jabaz0g67bsziayrxgv74px55fx4nlrcl0csl8f1by2102pwc5"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c9e184d7d5..911f519e2f 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -42,10 +42,12 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages commencement)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages fpga)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gd)
@@ -54,6 +56,7 @@
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gperf)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages image)
@@ -626,8 +629,8 @@ language.")
 ;; We use kicad from a git commit, because support for boost 1.61.0 has been
 ;; recently added.
 (define-public kicad
-  (let ((commit "4ee344e150bfaf3a6f3f7bf935fb96ae07c423fa")
-        (revision "1"))
+  (let ((commit "5f4599fb56da4dd748845ab10abec02961d477f3")
+        (revision "2"))
     (package
       (name "kicad")
       (version (string-append "4.0-" revision "."
@@ -639,7 +642,7 @@ language.")
                (url "https://git.launchpad.net/kicad")
                (commit commit)))
          (sha256
-          (base32 "0kf6r92nps0658i9n3p9vp5dzbssmc22lvjv5flyvnlf83l63s4n"))
+          (base32 "1833pln2975gmc5s18xf7s8m9vg834lmxxdjk0wlk3lq7bvjjnff"))
          (file-name (string-append name "-" version "-checkout"))))
       (build-system cmake-build-system)
       (arguments
@@ -661,6 +664,7 @@ language.")
                               (assoc-ref %build-inputs "wxpython")
                               "/include/wx-3.0")
                "-DCMAKE_BUILD_WITH_INSTALL_RPATH=TRUE"
+               "-DKICAD_SPICE=TRUE"
                ;; TODO: Enable this when CA certs are working with curl.
                "-DBUILD_GITHUB_PLUGIN=OFF")
          #:phases
@@ -679,6 +683,14 @@ language.")
                    `("PYTHONPATH" ":" prefix (,path))
                    `("PATH" ":" prefix
                      (,(string-append python "/bin:")))))
+               #t))
+           (add-after 'wrap-program 'install-lib-3d
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (for-each
+                (lambda (file)
+                  (install-file file (string-append (assoc-ref outputs "out")
+                                                    "/lib")))
+                (find-files "." "^libkicad_3dsg.*"))
                #t)))))
       (native-inputs
        `(("boost" ,boost)
@@ -693,6 +705,7 @@ language.")
          ("glew" ,glew)
          ("glm" ,glm)
          ("hicolor-icon-theme" ,hicolor-icon-theme)
+         ("libngspice" ,libngspice)
          ("libsm" ,libsm)
          ("mesa" ,mesa)
          ("openssl" ,openssl)
@@ -708,7 +721,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
       (license license:gpl3+))))
 
 (define-public kicad-library
-  (let ((version "4.0.4"))
+  (let ((version "4.0.6"))
     (package
       (name "kicad-library")
       (version version)
@@ -719,7 +732,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
                       version ".tar.gz"))
                 (sha256
                  (base32
-                  "1wyda58y39lhxml0xv1ngvddi0nqihx9bnlza46ajzms38ajvh12"))))
+                  "16f47pd6f0ddsdxdrp327nr9v05gl8c24d0qypq2aqx5hdjmkp7f"))))
       (build-system cmake-build-system)
       (arguments
        `(#:out-of-source? #t
@@ -762,7 +775,7 @@ electrical diagrams), gerbview (viewing Gerber files) and others.")
                    version ".tar.gz"))
              (sha256
               (base32
-               "0ya4gg6clz3vp2wrb67xwg0bhwh5q8ag39jjmpcp4zjcqs1f48rb"))))))
+               "0vmgqhdw05k5fdnqv42grnvlz7v75g9md82jp2d3dvw2zw050lfb"))))))
       (home-page "http://kicad-pcb.org/")
       (synopsis "Libraries for kicad")
       (description "This package provides Kicad component, footprint and 3D
@@ -1441,25 +1454,62 @@ parallel computing platforms.  It also supports serial execution.")
                 (string-append (assoc-ref inputs "coreutils")
                                "/bin/cat")))
              #t))
+         (add-after 'patch-pkg-config 'setenv
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "CXX" (string-append (assoc-ref inputs "gcc")
+                                          "/bin/g++"))
+             (setenv "SYSTEM_LIBTOOL" (string-append (assoc-ref inputs "libtool")
+                                                     "/bin/libtool"))
+             #t))
+         (add-after 'setenv 'patch-gvhdl
+           (lambda _
+             (substitute* "v2cc/gvhdl.in"
+               (("--mode=link") "--mode=link --tag=CXX")
+               (("-lm") "-lm FREEHDL/lib/freehdl/libieee.la"))
+             #t))
+         (add-after 'patch-gvhdl 'patch-freehdl-gennodes
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "freehdl/freehdl-gennodes.in"
+               (("guile")
+                (string-append (assoc-ref inputs "guile") "/bin/guile"))
+               (("\\(debug") ";(debug")
+               (("\\(@ ") "(apply-emit")
+               (("\\(@@ ") "(apply-mini-format"))
+             #t))
          (add-after 'configure 'patch-freehdl-pc
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "freehdl.pc"
                (("=g\\+\\+")
-                (string-append "=" (assoc-ref inputs "gcc")
+                (string-append "=" (assoc-ref inputs "gcc-toolchain")
                                "/bin/g++"))
                (("=libtool")
                 (string-append "=" (assoc-ref inputs "libtool")
                                "/bin/libtool")))
              #t))
          (add-after 'install-scripts 'make-wrapper
-           (lambda* (#:key outputs #:allow-other-keys)
+           (lambda* (#:key inputs outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
+               ;; 'gvhdl' invokes the C compiler directly, so hard-code its
+               ;; file name.
+               (wrap-program (string-append out "/bin/gvhdl")
+                 `("CPLUS_INCLUDE_PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "gcc-toolchain")
+                                    "/include")))
+                 `("LIBRARY_PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "gcc-toolchain")
+                                    "/lib")))
+                 `("PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "gcc-toolchain")
+                                    "/bin")
+                    ,(string-append (assoc-ref inputs "coreutils")
+                                    "/bin"))))
                (wrap-program (string-append out "/bin/freehdl-config")
                  `("PKG_CONFIG_PATH" ":" prefix (,(string-append out "/lib/pkgconfig")))))
              #t)))))
     (inputs
      `(("coreutils" ,coreutils)
-       ("gcc" ,gcc)
+       ("gcc-toolchain" ,gcc-toolchain)
+       ("guile" ,guile-2.2)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("libtool" ,libtool)))
@@ -1474,3 +1524,102 @@ parallel computing platforms.  It also supports serial execution.")
     (license (list license:gpl2+
                    license:lgpl2.0+)))) ; freehdl's libraries
 
+(define-public qucs
+  (package
+    (name "qucs")
+    (version "0.0.19")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append
+                "https://sourceforge.net/projects/qucs/files/qucs/" version
+                "/qucs-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0giv9gfyfdizvjhq56x2pdncrlyv3k15lrsh6pk37i94vr7l7ij5"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'patch-configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "qucs/configure"
+               (("\\$QTDIR") (assoc-ref inputs "qt4")))
+             #t))
+         (add-after 'patch-configure 'patch-scripts
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* '("qucs/qucs/qucsdigi"
+                            "qucs/qucs/qucsdigilib"
+                            "qucs/qucs/qucsveri")
+               (("\\$BINDIR")
+                (string-append (assoc-ref outputs "out") "/bin"))
+               (("freehdl-config")
+                (string-append (assoc-ref inputs "freehdl") "/bin/freehdl-config"))
+               (("freehdl-v2cc")
+                (string-append (assoc-ref inputs "freehdl") "/bin/freehdl-v2cc"))
+               (("cp ")
+                (string-append (assoc-ref inputs "coreutils") "/bin/cp "))
+               (("glibtool")
+                (string-append (assoc-ref inputs "libtool") "/bin/libtool"))
+               (("sed")
+                (string-append (assoc-ref inputs "sed") "/bin/sed"))
+               (("iverilog")
+                (string-append (assoc-ref inputs "iverilog") "/bin/iverilog"))
+               (("vvp")
+                (string-append (assoc-ref inputs "iverilog") "/bin/vvp")))
+             #t))
+         (add-before 'check 'pre-check
+           (lambda _
+             ;; The test suite requires a running X server.
+             (system "Xvfb :1 &")
+             (setenv "DISPLAY" ":1")
+             #t))
+         (add-after 'install 'make-wrapper
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               ;; 'qucs' directly invokes gcc, hence this wrapping.
+               (wrap-program (string-append out "/bin/qucs")
+                 `("CPLUS_INCLUDE_PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "gcc-toolchain")
+                                    "/include")))
+                 `("PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "gcc-toolchain")
+                                    "/bin")))
+                 `("LIBRARY_PATH" ":" prefix
+                   (,(string-append (assoc-ref inputs "gcc-toolchain")
+                                    "/lib")))
+                 `("ADMSXMLBINDIR" ":" prefix
+                   (,(string-append (assoc-ref inputs "adms") "/bin")))
+                 `("ASCOBINDIR" ":" prefix
+                   (,(string-append (assoc-ref inputs "asco") "/bin")))
+                 `("QUCS_OCTAVE" ":" prefix
+                   (,(string-append (assoc-ref inputs "octave") "/bin/octave")))))
+             #t)))
+       #:parallel-build? #f ; race condition
+       #:configure-flags '("--disable-doc"))) ; we need octave-epstk
+    (native-inputs
+     `(("gperf" ,gperf)
+       ("libtool-native" ,libtool)
+       ("python" ,python-2) ; for tests
+       ("matplotlib" ,python2-matplotlib) ; for tests
+       ("numpy" ,python2-numpy) ; for tests
+       ("xorg-server" ,xorg-server))) ; for tests
+    (inputs
+     `(("adms" ,adms)
+       ("asco" ,asco)
+       ("coreutils" ,coreutils)
+       ("freehdl" ,freehdl)
+       ("gcc-toolchain" ,gcc-toolchain)
+       ("iverilog" ,iverilog)
+       ("libtool" ,libtool)
+       ("octave" ,octave)
+       ("qt4" ,qt-4)
+       ("sed" ,sed)))
+    (home-page "http://qucs.sourceforge.net/")
+    (synopsis "Circuit simulator with graphical user interface")
+    (description
+     "Qucs is a circuit simulator with graphical user interface.  The software
+aims to support all kinds of circuit simulation types---e.g. DC, AC,
+S-parameter, transient, noise and harmonic balance analysis.  Pure digital
+simulations are also supported.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index cbec25be15..9f4e4fc1c3 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -173,7 +173,7 @@ as required.")
 (define-public libfilezilla
   (package
     (name "libfilezilla")
-    (version "0.11.0")
+    (version "0.11.1")
     (source
      (origin
        (method url-fetch)
@@ -181,7 +181,7 @@ as required.")
                            name "/" name "-" version ".tar.bz2"))
        (sha256
         (base32
-         "1l4yhw269dyarqb2spqhycxzzyfn8pj4qh9vfycdw1c93hj6fx6c"))))
+         "1xv4is3zaz66h6iblj9pikapsjasjcbxx31bhkgn62xdq1sadfpc"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("cppunit" ,cppunit)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 61eed39ef0..896d53412e 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -2648,6 +2648,12 @@ Transport Tycoon Deluxe.")
      `(#:tests? #f ;; no tests available
        #:phases
         (modify-phases %standard-phases
+          (add-after 'unpack 'fix-usr-share-paths
+            (lambda* (#:key make-flags outputs #:allow-other-keys)
+              ;; Fix some references to /usr/share.
+              (substitute* "src/openrct2/platform/linux.c"
+                (("/usr/share")
+                (string-append (assoc-ref %outputs "out") "/share")))))
           (add-after 'build 'fix-cmake-install-file
             (lambda _
               ;; The build system tries to download a file and compare hashes.
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 1d69e48d13..52a8a75739 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -965,3 +965,34 @@ keyring content.  Parcimonie is a daemon that fetches one key at a time using
 the Tor network, waits a bit, changes the Tor circuit being used, and starts
 over.")
     (license license:gpl1+)))
+
+(define-public python2-pgpdump
+  (package
+    (name "python2-pgpdump")
+    (version "1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "pgpdump" version))
+       (sha256
+        (base32
+         "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw"))))
+    (build-system python-build-system)
+
+    ;; Currently fails to build with Python 3.
+    (arguments `(#:python ,python-2))
+
+    (home-page "https://github.com/toofishes/python-pgpdump")
+    (synopsis "Python library for parsing PGP packets")
+    (description
+     "Python-pgpdump is an OpenPGP packet parser based on
+@uref{http://www.mew.org/~kazu/proj/pgpdump/, pgpdump}.  It notably supports:
+
+@itemize
+@item signature packets;
+@item public key packets;
+@item secret key packets;
+@item trust, user ID, and user attribute packets;
+@item ASCII-armor decoding and CRC check.
+@end itemize\n")
+    (license license:bsd-3)))
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 2d607360c2..1b52732a78 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -450,7 +450,20 @@ standards.")
         (mozilla-patch "icecat-bug-1400003.patch"        "3af5bf8bdea0" "07az28dnpxr36j7i3llxkrlkrmg0bwk4f3sm75x1f0r1v5575p3p")
         (mozilla-patch "icecat-bug-1407751.patch"        "592df6088926" "1gy27idik4b6wcg4szww08cmpcljssja8wql6w1d807h7ni65lr7")
         (mozilla-patch "icecat-bug-1261175.patch"        "77a2d4610275" "13ysbwflnysj4rs45ibckd621s0vyg1s8dvannlvanvrz1g72zcz")
-        (mozilla-patch "icecat-bug-1394265.patch"        "2b30335d0b95" "0hs5cwickvfw7r5dn7y148jgr2b21hl613qp83k56634d0y64qwp")))
+        (mozilla-patch "icecat-bug-1394265.patch"        "2b30335d0b95" "0hs5cwickvfw7r5dn7y148jgr2b21hl613qp83k56634d0y64qwp")
+        (mozilla-patch "icecat-bug-1397811.patch"        "d6f008f95598" "0xclxrbg7pv8pa2j15p0gy9c8sigy2i9j0kvazl5fbyg6jsg3xgd")
+        (mozilla-patch "icecat-bug-1407740.patch"        "ab9b51cd75ac" "08jy3rbkyh934aw261ls0s87947d2mhss7xqk1xfdir9crij2g27")
+        (mozilla-patch "icecat-bug-1343147-pt1.patch"    "971d6345bc3a" "13791cvc51i991i5qyz6gp94vwzwkx479bnr8fsf8dw7z72wrsch")
+        (mozilla-patch "icecat-bug-1343147-pt2.patch"    "60df7db06669" "0r372g1zksvkzyz0qpq0mp30frilgsfxxx2xida8xc08wgxp5lh9")
+        (mozilla-patch "icecat-bug-1408005.patch"        "df49c25e6e4c" "0j77xbkxpflqf4jlccrv61vq0jgp4lfn8kb0zw1lswp3cyd6ml4i")
+        (mozilla-patch "icecat-bug-1411458.patch"        "3b899f872623" "01zjcpm8yp4s8yf4mj1bzq01aylmi69kd8qv0rrcl9hmj4g3pzr2")
+        (mozilla-patch "icecat-bug-1387799.patch"        "3d6d558ae6a6" "17wynknvs5wi7m9g5vn43rjmivbg1l6pnv8jymz1ccidy27qgdqi")
+        (mozilla-patch "icecat-bug-1408412.patch"        "8426754b7130" "0bbm2294bkvld55rdbpsc8b82ljqdcxpbg6cwdzvwfhqayl2pnqm")
+        (mozilla-patch "icecat-bug-1406750.patch"        "5ddd5d2aa769" "12z5i8h6qwjb1h1fvp2426bgsnsxx539d8k2is9x1q4133356niy")
+        (mozilla-patch "icecat-bug-1404636.patch"        "dd068f4e132a" "17qy9c1vfkz3pj6y8qmqbic73wrangsbdlylk2s54nbzhhp9cj1g")
+        (mozilla-patch "icecat-bug-1406398.patch"        "e6bd533b57e9" "1mmqav9yhxd0j47yffcdykaqjibfwjsk0jn0f44099s87y8qn9zy")
+        (mozilla-patch "icecat-bug-1401804.patch"        "2a87fb6b9c07" "0z0scw4y1vqhqkbw1ag14g8xrif14l95x7fd50q2sw425lli29lc")
+        (mozilla-patch "icecat-bug-1404910.patch"        "5007f2472f64" "0ns1l4yipwbb52sps2xzg30qd1rkpwykxq4chjg3wllhmcxbvvpw")))
       (modules '((guix build utils)))
       (snippet
        '(begin
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index f97f6f1711..b8f86ac5fd 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -205,7 +205,7 @@ sequential processes (CSP) concurrent programming features added.")
   (package
     (inherit go-1.4)
     (name "go")
-    (version "1.9.1")
+    (version "1.9.2")
     (source
      (origin
        (method url-fetch)
@@ -213,7 +213,7 @@ sequential processes (CSP) concurrent programming features added.")
                            name version ".src.tar.gz"))
        (sha256
         (base32
-         "03jmrgqq852wqyphvd8p46i32f72xki3bmylhkxf0kynqyfzqjm8"))))
+         "1p23n4xzbknl3bbhlckbvxbhpxknd5rn0i2szmn9i2dcz15ihpv6"))))
     (arguments
      (substitute-keyword-arguments (package-arguments go-1.4)
        ((#:phases phases)
diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm
index c308dc9f34..c87465db09 100644
--- a/gnu/packages/gstreamer.scm
+++ b/gnu/packages/gstreamer.scm
@@ -409,7 +409,7 @@ distribution problems in some jurisdictions, e.g. due to patent threats.")
        ("python" ,python)))
     (inputs
      `(("gst-plugins-base" ,gst-plugins-base)
-       ("ffmpeg" ,ffmpeg)
+       ("ffmpeg" ,ffmpeg-3.3)
        ("orc" ,orc)
        ("zlib" ,zlib)))
     (home-page "http://gstreamer.freedesktop.org/")
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 7d23d41be0..591c163ac3 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -866,6 +866,8 @@ channels.")
                                        version ".tar.gz")
                         (string-append "https://fossies.org/linux/misc/exiv2-"
                                        version ".tar.gz")))
+             (patches (search-patches "exiv2-CVE-2017-14860.patch"
+                                      "exiv2-CVE-2017-14859-14862-14864.patch"))
              (sha256
               (base32
                "1yza317qxd8yshvqnay164imm0ks7cvij8y8j86p1gqi1153qpn7"))))
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index ff5f1c9ae6..1fcd237d55 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1405,6 +1405,23 @@ bootstrapping purposes.")
                  (copy-recursively "openjdk.build/j2re-image" jre)
                  (copy-recursively "openjdk.build/j2sdk-image" jdk))
                #t))
+           ;; Some of the libraries in the lib/amd64 folder link to libjvm.so.
+           ;; But that shared object is located in the server/ folder, so it
+           ;; cannot be found.  This phase creates a symbolic link in the
+           ;; lib/amd64 folder so that the other libraries can find it.
+           ;;
+           ;; See:
+           ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
+           ;;
+           ;; FIXME: Find the bug in the build system, so that this symlink is
+           ;; not needed.
+           (add-after 'install 'install-libjvm
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((lib-path (string-append (assoc-ref outputs "out")
+                                               "/lib/amd64")))
+                 (symlink (string-append lib-path "/server/libjvm.so")
+                          (string-append lib-path "/libjvm.so")))
+               #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
diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm
index 941d3dcc45..9af6b40ffc 100644
--- a/gnu/packages/libcanberra.scm
+++ b/gnu/packages/libcanberra.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
+;;; Copyright © 2017 ng0 <ng0@infotropique.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,8 +25,11 @@
   #:use-module (gnu packages)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system python)
   #:use-module (guix build utils)
+  #:use-module (guix utils)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
@@ -33,6 +37,7 @@
   #:use-module (gnu packages linux)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages xiph))
 
 (define-public libcanberra
@@ -126,3 +131,26 @@ sounds for various system events.")
     (license (list cc-by-sa4.0 cc-by3.0 gpl2 gpl2+))
 
     (home-page "http://www.freedesktop.org/wiki/Specifications/sound-theme-spec/")))
+
+(define-public python-pycanberra
+  (package
+    (name "python-pycanberra")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://dist.ng0.infotropique.org/releases/"
+                           "pycanberra/pycanberra-" version ".tar.xz"))
+       (sha256
+        (base32
+         "16jjf8fcgaprmz6jacsxrh17l1ad891fns38bxv49lg3s3mn1nj2"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f)) ;No tests included.
+    (propagated-inputs
+     `(("libcanberra" ,libcanberra)))
+    (synopsis "Ctypes wrapper for the libcanberra API")
+    (description
+     "Pycanberra is a basic Python wrapper for libcanberra.")
+    (home-page "https://git.ng0.infotropique.org/pycanberra/")
+    (license lgpl2.1+)))
diff --git a/gnu/packages/lighting.scm b/gnu/packages/lighting.scm
index ab7069b53b..18512105cb 100644
--- a/gnu/packages/lighting.scm
+++ b/gnu/packages/lighting.scm
@@ -37,7 +37,7 @@
 (define-public ola
   (package
     (name "ola")
-    (version "0.10.4")
+    (version "0.10.5")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -46,7 +46,7 @@
               (patches (search-patches "ola-readdir-r.patch"))
               (sha256
                (base32
-                "01zpm0vpin784jyjhbdad097a4i0cjdfrqqfbsvx47d6nbssq2my"))))
+                "10q25mln4m628f1b2jgsdcw2398hsrhydnxjzi60w9yds3sdrpz9"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("bison" ,bison)
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index d4df711266..9c7bc67fcb 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -368,8 +368,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.13.9")
-(define %linux-libre-hash "1ymsdvm4djh7hg2wmn2v11w380i0ss9nkp4slfrgihdvn6yp5gbv")
+(define %linux-libre-version "4.13.10")
+(define %linux-libre-hash "0y1p5b1rxpbr3apvqqv589qwzfyzjpdrzysfj4h17s0k4gy6c5p8")
 
 (define-public linux-libre
   (make-linux-libre %linux-libre-version
@@ -378,14 +378,14 @@ It has been modified to remove all non-free binary blobs.")
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.9
-  (make-linux-libre "4.9.58"
-                    "0f1yxdvzdr1zfkh86i9z0p7ywdlz0blxnd11wbnw763qyk3qydyk"
+  (make-linux-libre "4.9.59"
+                    "0z8hq8a6ic38xh33idzl0k0yi4isgd7ncl2g1d6mzf9ixw5krhvc"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
 (define-public linux-libre-4.4
-  (make-linux-libre "4.4.94"
-                    "0g63is8d2k1mf1kaljkll79n7gzh4qn0fmrm2r9sab2sq41hch1m"
+  (make-linux-libre "4.4.95"
+                    "1k2lp1jgbm5xkl3qf0cqmp07hlv03jaws68l3irid95j99prsw0b"
                     %intel-compatible-systems
                     #:configuration-file kernel-config))
 
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index e9a7283cf2..1ae88a02e8 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -275,9 +275,8 @@ operating systems.")
 
 (define-public neomutt
   (package
-    (inherit mutt)
     (name "neomutt")
-    (version "20171013")
+    (version "20171027")
     (source
      (origin
        (method url-fetch)
@@ -285,7 +284,8 @@ operating systems.")
                            "/archive/" name "-" version ".tar.gz"))
        (sha256
         (base32
-         "0mcs5rhlajyxl0bw2hpwcwx14rzrgk6sf8yr0gdj1di3sq166z2s"))))
+         "10z523cy3s6syh0mwpsncl87wrvyzsk99y7nzicwvx6y3hmdw01d"))))
+    (build-system gnu-build-system)
     (inputs
      `(("cyrus-sasl" ,cyrus-sasl)
        ("gdbm" ,gdbm)
@@ -323,7 +323,6 @@ operating systems.")
              "--without-ssl"
              "--with-sasl"
 
-             "--with-regex"
              "--enable-smime"
              "--enable-notmuch"
              "--with-idn"
@@ -333,8 +332,6 @@ operating systems.")
              ;; in the chroot. The workaround is this.
              "--with-mailpath=/var/mail"
 
-             "--with-external-dotlock"
-
              (string-append "--with-curses="
                             (assoc-ref %build-inputs "ncurses")))
        #:phases
@@ -346,7 +343,8 @@ operating systems.")
     (synopsis "Command-line mail reader based on Mutt")
     (description
      "NeoMutt is a command-line mail reader which is based on mutt.
-It adds a large amount of new and improved features to mutt.")))
+It adds a large amount of new and improved features to mutt.")
+    (license gpl2+)))
 
 (define-public gmime
   (package
@@ -428,7 +426,7 @@ and corrections.  It is based on a Bayesian filter.")
 (define-public offlineimap
   (package
     (name "offlineimap")
-    (version "7.1.3")
+    (version "7.1.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/OfflineIMAP/offlineimap/"
@@ -436,7 +434,7 @@ and corrections.  It is based on a Bayesian filter.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0iaznh8q3fmia43r0600vrd3w8njis1x65ry9fv3zsyx0ili1z02"))))
+                "0m34iks3l9p6shqkgfhfpiccglm6gk5nj98x20pvahl58nclmzn6"))))
     (build-system python-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)))
@@ -548,7 +546,7 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
     ;; TODO: Add webkit and gtk to build the mug GUI.
     (inputs
      `(("xapian" ,xapian)
-       ("guile" ,guile-2.0)
+       ("guile" ,guile-2.2)
        ("glib" ,glib)
        ("gmime" ,gmime)
        ("tzdata" ,tzdata)))             ;for mu/test/test-mu-query.c
@@ -567,7 +565,19 @@ security functionality including PGP, S/MIME, SSH, and SSL.")
            ;; the lispdir anyway, so we have to modify "configure.ac".
            (lambda _
              (substitute* "configure"
-               (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") ""))
+               (("^ +lispdir=\"\\$\\{lispdir\\}/mu4e/\".*") "")
+               ;; Use latest Guile
+               (("guile-2.0") "guile-2.2"))
+             (substitute* '("guile/Makefile.in"
+                            "guile/mu/Makefile.in")
+               (("share/guile/site/2.0/") "share/guile/site/2.2/"))
+             #t))
+         (add-before 'install 'fix-ffi
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "guile/mu.scm"
+               (("\"libguile-mu\"")
+                (format #f "\"~a/lib/libguile-mu\""
+                        (assoc-ref outputs "out"))))
              #t))
          (add-before 'check 'check-tz-setup
            (lambda* (#:key inputs #:allow-other-keys)
@@ -1363,7 +1373,7 @@ identify a message uniquely.")
 (define-public perl-email-mime
   (package
     (name "perl-email-mime")
-    (version "1.940")
+    (version "1.946")
     (source
      (origin
        (method url-fetch)
@@ -1371,7 +1381,7 @@ identify a message uniquely.")
                            "Email-MIME-" version ".tar.gz"))
        (sha256
         (base32
-         "0pnxbr16cn5qy96xqhp9zmd94ashc9ivqh10qbgbc3f637a0mfir"))))
+         "0z1k3i0lzp2k421gc8f3wq0jbqflkbw2xqd2k7n7pmv56417kvk8"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-email-address" ,perl-email-address)
@@ -1379,7 +1389,8 @@ identify a message uniquely.")
        ("perl-email-mime-contenttype" ,perl-email-mime-contenttype)
        ("perl-email-mime-encodings" ,perl-email-mime-encodings)
        ("perl-email-simple" ,perl-email-simple)
-       ("perl-mime-types" ,perl-mime-types)))
+       ("perl-mime-types" ,perl-mime-types)
+       ("perl-module-runtime" ,perl-module-runtime)))
     (home-page "http://search.cpan.org/dist/Email-MIME")
     (synopsis "MIME message handling")
     (description "Email::MIME is an extension of the Email::Simple module, to
@@ -1391,7 +1402,7 @@ message.  Headers are decoded from MIME encoding.")
 (define-public perl-email-mime-contenttype
   (package
     (name "perl-email-mime-contenttype")
-    (version "1.018")
+    (version "1.022")
     (source
      (origin
        (method url-fetch)
@@ -1399,7 +1410,7 @@ message.  Headers are decoded from MIME encoding.")
                            "Email-MIME-ContentType-" version ".tar.gz"))
        (sha256
         (base32
-         "1y8hpwm7p5a9y2azy0cgvlv2i2d0nj66ajfa0fj51wdq4w9cs23m"))))
+         "042kxhs3bp1ab9z0mbr1wy21ld4lxd6v2a2mmrashqnsn2075fws"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
@@ -1432,7 +1443,7 @@ header.")
 (define-public perl-email-sender
   (package
     (name "perl-email-sender")
-    (version "1.300028")
+    (version "1.300031")
     (source
      (origin
        (method url-fetch)
@@ -1440,7 +1451,7 @@ header.")
                            "Email-Sender-" version ".tar.gz"))
        (sha256
         (base32
-         "0c5dv1x9856nryj5mcbgb67a4irmadz80g0qnf4van3bd8wbj72a"))))
+         "052g0slw3h2lzn93j71fi47nfawww2aph4jhr3c860ji70lkf4n4"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-capture-tiny" ,perl-capture-tiny)))
@@ -1464,7 +1475,7 @@ Email::Send library.")
 (define-public perl-email-simple
   (package
     (name "perl-email-simple")
-    (version "2.213")
+    (version "2.214")
     (source
      (origin
        (method url-fetch)
@@ -1472,7 +1483,7 @@ Email::Send library.")
                            "Email-Simple-" version ".tar.gz"))
        (sha256
         (base32
-         "1ibwsng63gvqqc6r2135mjwfdzazxkb1x8q7f87wqcbjcjfpmffd"))))
+         "14kb86hi0m0bqc7kxpm4x5kvfsyj2x86gggbvpxhx9hy8hvjpw5j"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-email-date-format" ,perl-email-date-format)))
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index cd9c41fccf..72dbbcd1e9 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -822,7 +822,7 @@ instant messenger with audio and video chat capabilities.")
                (("TIMESTAMP") "\"\""))
              #t)))))
     (inputs
-     `(("ffmpeg" ,ffmpeg)
+     `(("ffmpeg" ,ffmpeg-3.3)
        ("glib" ,glib)
        ("gtk+" ,gtk+-2)
        ("libsodium" ,libsodium)
diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm
index 4ed0303be1..c305e457cb 100644
--- a/gnu/packages/mpd.scm
+++ b/gnu/packages/mpd.scm
@@ -75,7 +75,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
 (define-public mpd
   (package
     (name "mpd")
-    (version "0.20.10")
+    (version "0.20.11")
     (source (origin
               (method url-fetch)
               (uri
@@ -84,7 +84,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
                               "/mpd-" version ".tar.xz"))
               (sha256
                (base32
-                "089i9lh3fa8bix6v0sq0jgs7rkpk8l6q5lmdk6lip96vbh9c3ysj"))))
+                "1g0lwm8p98q2hxa9vd6jx61s7d3r665s2bmz6ipkv9ijmyfps8p9"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -195,7 +195,7 @@ terminal using ncurses.")
 (define-public ncmpcpp
   (package
     (name "ncmpcpp")
-    (version "0.8")
+    (version "0.8.1")
     (source (origin
               (method url-fetch)
               (uri
@@ -203,7 +203,7 @@ terminal using ncurses.")
                               version ".tar.bz2"))
               (sha256
                (base32
-                "0nj6ky805a55acj0w57sbn3vfmmkbqp97rhbi0q9848n10f2l3rg"))))
+                "1zw8d07b2bkssbsybg6jnmpq001w525viajrnz4jvfml3l55gyad"))))
     (build-system gnu-build-system)
     (inputs `(("libmpdclient" ,libmpdclient)
               ("boost"  ,boost)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 2fd38362c2..f5df440709 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -3316,6 +3316,11 @@ notation and includes basic support for digital audio.")
      `(#:tests? #f                      ; no tests included
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'remove-architecture-specific-flags
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("-msse2 -mfpmath=sse") ""))
+             #t))
          (add-after 'unpack 'build-faust-sources
            (lambda* (#:key inputs #:allow-other-keys)
              (with-directory-excursion "faust"
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index a6c1042978..57b32c252f 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015, 2016, 2017 Stefan Reichör <stefan@xsteve.at>
 ;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
-;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2016, 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
@@ -322,14 +322,14 @@ receiving NDP messages.")
 (define-public ethtool
   (package
     (name "ethtool")
-    (version "4.11")
+    (version "4.13")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://kernel.org/software/network/"
                                   name "/" name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cp132kk2xd2cwn1ysjv0cl8i9lnq3n4zi4wy676p5k4h2mfvn0j"))))
+                "1flwz4x76ajxigadq9knxgwr778g03y3qfx6c7rflc3x020a7hdp"))))
     (build-system gnu-build-system)
     (home-page "https://www.kernel.org/pub/software/network/ethtool/")
     (synopsis "Display or change Ethernet device settings")
@@ -709,7 +709,7 @@ allows for heavy scripting.")
 (define-public perl-net-dns
  (package
   (name "perl-net-dns")
-  (version "1.12")
+  (version "1.13")
   (source
     (origin
       (method url-fetch)
@@ -719,7 +719,7 @@ allows for heavy scripting.")
              ".tar.gz"))
       (sha256
         (base32
-          "1zy16idzc96n20fm9976qapz89n3f44xpylhs5cvfgyyg7z03zr5"))))
+          "0dlca65l45mqs7l58fg838bj3as5kmnbs1zy8vg9cbsz6rindivy"))))
   (build-system perl-build-system)
   (inputs
     `(("perl-digest-hmac" ,perl-digest-hmac)))
@@ -1392,14 +1392,14 @@ does not use SSH and requires a pre-shared symmetric key.")
 (define-public quagga
   (package
     (name "quagga")
-    (version "1.2.1")
+    (version "1.2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://savannah/quagga/quagga-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1kgvcr9cfgys5asvb5lh5h95silkr624apqm5x68xva19xfvmpda"))
+                "0c99rjjc62xl5kwvx2pwyvs0709vbwax1qydqbqf6r7fpvr24bjj"))
               (patches
                (search-patches "quagga-reproducible-build.patch"))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index 805b81bd2e..e354130ad2 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -40,14 +40,14 @@
 (define-public node
   (package
     (name "node")
-    (version "8.4.0")
+    (version "8.7.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://nodejs.org/dist/v" version
                                   "/node-v" version ".tar.gz"))
               (sha256
                (base32
-                "1vrpc4lspm33hmb8c2q4w1fzg3iaip2gx4wpr4nyy417hbx1a6k4"))))
+                "1a0ginagx3pav6v7adyp76jisia4qgbsq6pz3als4kshwlk4a667"))))
     (build-system gnu-build-system)
     (arguments
      ;; TODO: Purge the bundled copies from the source.
@@ -76,10 +76,6 @@
                (("'/usr/bin/env'")
                 (string-append "'" (which "env") "'")))
 
-             ;; Linting is no longer supported in the release tarball
-             (substitute* '("Makefile")
-               (("	\\$\\(MAKE\\) lint") ""))
-
              ;; FIXME: This test seems to depends on files that are not
              ;; available in the bundled v8. See
              ;; https://github.com/nodejs/node/issues/13344
@@ -92,6 +88,8 @@
                          "test/parallel/test-util-inspect.js"
                          "test/parallel/test-v8-serdes.js"
                          "test/parallel/test-dgram-membership.js"
+                         "test/parallel/test-dgram-multicast-set-interface-lo.js"
+                         "test/parallel/test-dns-cancel-reverse-lookup.js"
                          "test/parallel/test-dns-resolveany.js"
                          "test/parallel/test-cluster-master-error.js"
                          "test/parallel/test-cluster-master-kill.js"
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index b13168c7da..5b2536ae67 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -897,6 +897,28 @@ compilation and linkage, there are new frontends of the various OCaml
 compilers that can directly deal with packages.")
     (license license:x11)))
 
+(define-public ocaml-findlib-1.7.3
+  (package
+    (inherit ocaml-findlib)
+    (version "1.7.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.camlcity.org/download/"
+                                  "findlib" "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "12xx8si1qv3xz90qsrpazjjk4lc1989fzm97rsmc4diwla7n15ni"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments ocaml-findlib)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (zero? (system* "make" "install"
+                                 (string-append "OCAML_CORE_STDLIB="
+                                                out))))))))))))
+
 (define-public ocaml4.01-findlib
   (package
     (inherit ocaml-findlib)
@@ -3557,6 +3579,163 @@ library is currently designed for Unicode Standard 3.2.")
     ;; with an exception for linked libraries to use a different license
     (license license:lgpl2.0+)))
 
+(define-public ocaml-jbuilder
+  (package
+    (name "ocaml-jbuilder")
+    (version "1.0+beta14")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/janestreet/jbuilder/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "06jdcb4jmmp4wqyf9cm59jzgj0mxkpdzd9q3728gdxc1sz3v1sz0"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (setenv "PREFIX" out))
+             #t)))))
+    (native-inputs
+     `(("menhir" ,ocaml-menhir)))
+    (propagated-inputs
+     `(("opam" ,opam)))
+    (home-page "https://github.com/janestreet/jbuilder")
+    (synopsis "Composable build system for OCaml")
+    (description "Jbuilder is a build system designed for OCaml/Reason projects
+only.  It focuses on providing the user with a consistent experience and takes
+care of most of the low-level details of OCaml compilation.  All you have to do
+is provide a description of your project and Jbuilder will do the rest.")
+    (license license:asl2.0)))
+
+(define-public ocaml-zed
+  (package
+    (name "ocaml-zed")
+    (version "1.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/diml/zed/archive/"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1q281slzwgdrrxalayll75bxgghadswlh2zcvzy08nrywqnlq5y8"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'build
+           (lambda* (#:key #:allow-other-keys)
+             (zero? (system* "jbuilder" "build"))))
+         (delete 'check)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (zero? (system* "jbuilder" "install" "--prefix" out))))))))
+    (native-inputs
+     `(("jbuilder" ,ocaml-jbuilder)))
+    (propagated-inputs
+     `(("camomile" ,ocaml-camomile)
+       ("react" ,ocaml-react)))
+    (home-page "https://github.com/diml/zed")
+    (synopsis "Abstract engine for text editing in OCaml")
+    (description "Zed is an abstract engine for text edition.  It can be used
+to write text editors, edition widgets, readlines, etc.  You just have to
+connect an engine to your inputs and rendering functions to get an editor.")
+    (license license:bsd-3)))
+
+(define-public ocaml-lambda-term
+  (package
+    (name "ocaml-lambda-term")
+    (version "1.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/diml/lambda-term/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "10lx1jqgmmfwwlv64di4a8nia9l53v7179z70n9fx6aq5l7r8nba"))))
+    (build-system ocaml-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         ;; currently, ocaml-lwt is an old version of lwt from before lwt.react
+         ;; was split into a separate module called lwt_react
+         (add-before 'build 'use-old-lwt-react-name
+           (lambda _
+             (substitute* "src/jbuild" (("lwt_react") "lwt.react"))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (zero? (system* "jbuilder" "install" "--prefix" out))))))))
+    (native-inputs
+     `(("jbuilder" ,ocaml-jbuilder)))
+    (propagated-inputs
+     `(("lwt" ,ocaml-lwt)
+       ("zed" ,ocaml-zed)))
+    (home-page "https://github.com/diml/lambda-term")
+    (synopsis "Terminal manipulation library for OCaml")
+    (description "Lambda-Term is a cross-platform library for manipulating the
+terminal.  It provides an abstraction for keys, mouse events, colors, as well as
+a set of widgets to write curses-like applications.  The main objective of
+Lambda-Term is to provide a higher level functional interface to terminal
+manipulation than, for example, ncurses, by providing a native OCaml interface
+instead of bindings to a C library.")
+    (license license:bsd-3)))
+
+(define-public ocaml-utop
+  (package
+    (name "ocaml-utop")
+    (version "2.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/diml/utop/archive/"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1v22bzw1vgwbbmpvi7lkyp2r59w5mag85rmqplb4fwik78x7k4ss"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (libdir (string-append out "/lib/ocaml/site-lib")))
+               (mkdir-p libdir)
+               (zero? (system* "jbuilder" "install"
+                               "--prefix" out
+                               "--libdir" libdir))))))))
+    (native-inputs
+     `(("ocaml" ,ocaml)
+       ("cppo" ,ocaml-cppo)
+       ("jbuilder" ,ocaml-jbuilder)))
+    (propagated-inputs
+     `(("findlib" ,ocaml-findlib-1.7.3)
+       ("lambda-term" ,ocaml-lambda-term)
+       ("lwt" ,ocaml-lwt)
+       ("react" ,ocaml-react)
+       ("camomile" ,ocaml-camomile)
+       ("zed" ,ocaml-zed)))
+    (home-page "https://github.com/diml/utop")
+    (synopsis "Improved interface to the OCaml toplevel")
+    (description "UTop is an improved toplevel for OCaml.  It can run in a
+terminal or in Emacs.  It supports line editing, history, real-time and context
+sensitive completion, colors, and more.")
+    (license license:bsd-3)))
+
 (define-public coq-flocq
   (package
     (name "coq-flocq")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 07ac59da5b..cd81888cbb 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com>
 ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,7 +29,8 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (guix build-system emacs)
-  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0 bsd-3))
+  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ agpl3+ lgpl2.1+ asl2.0
+                                          bsd-3 silofl1.1))
   #:use-module (gnu packages)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages file)
@@ -41,6 +43,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages gettext)
+  #:use-module (gnu packages lisp)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages nettle)
   #:use-module (gnu packages perl)
@@ -717,3 +720,34 @@ is the package manager used by Anaconda installations, but it may be used for
 other systems as well.  Conda makes environments first-class citizens, making
 it easy to create independent environments even for C libraries.  Conda is
 written entirely in Python.")))
+
+(define-public gwl
+  (package
+    (name "gwl")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://www.guixwl.org/releases/gwl-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1x4swwp7kmhd57j3scii5c4h8swkcvab2r6mz7wxwwbx300wcqpy"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("guile" ,guile-2.2)))
+    (propagated-inputs
+     `(("guix" ,guix)
+       ("guile-commonmark" ,guile-commonmark)))
+    (home-page "https://www.guixwl.org")
+    (synopsis "Workflow management extension for GNU Guix")
+    (description "This project provides two subcommands to GNU Guix and
+introduces two record types that provide a workflow management extension built
+on top of GNU Guix.")
+    ;; The Scheme modules in guix/ and gnu/ are licensed GPL3+,
+    ;; the web interface modules in gwl/ are licensed AGPL3+,
+    ;; and the fonts included in this package are licensed OFL1.1.
+    (license (list gpl3+ agpl3+ silofl1.1))))
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 739c51e396..ffdda102e9 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -45,7 +45,7 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20170922")
+    (version "20171022")
     (source
      (origin
       (method url-fetch)
@@ -53,7 +53,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "0r8mdnmimdf4n6q5k0l8zdql83ka5plrb5qm3rcgkcfwmnk0p0k1"))))
+        "18pq10npl7g764ww7cy9r5n5s3kiy984jclf932qfgndcxsbpqpp"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
diff --git a/gnu/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch b/gnu/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch
new file mode 100644
index 0000000000..69e65aeb6b
--- /dev/null
+++ b/gnu/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch
@@ -0,0 +1,66 @@
+Fix CVE-2017-14859, CVE-2017-14862 and CVE-2017-14864.
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14859
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14862
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14864
+
+Copied from upstream:
+
+https://github.com/Exiv2/exiv2/commit/8a586c74bbe3fbca64e86e42a42282c73f427607
+
+From 8a586c74bbe3fbca64e86e42a42282c73f427607 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dan.cermak@cgc-instruments.com>
+Date: Sat, 7 Oct 2017 23:08:36 +0200
+Subject: [PATCH] Fix for CVE-2017-14864, CVE-2017-14862 and CVE-2017-14859
+
+The invalid memory dereference in
+Exiv2::getULong()/Exiv2::StringValueBase::read()/Exiv2::DataValue::read()
+is caused further up the call-stack, by
+v->read(pData, size, byteOrder) in TiffReader::readTiffEntry()
+passing an invalid pData pointer (pData points outside of the Tiff
+file). pData can be set out of bounds in the (size > 4) branch where
+baseOffset() and offset are added to pData_ without checking whether
+the result is still in the file. As offset comes from an untrusted
+source, an attacker can craft an arbitrarily large offset into the
+file.
+
+This commit adds a check into the problematic branch, whether the
+result of the addition would be out of bounds of the Tiff
+file. Furthermore the whole operation is checked for possible
+overflows.
+---
+ src/tiffvisitor.cpp | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/src/tiffvisitor.cpp b/src/tiffvisitor.cpp
+index 4ab733d4..ef13542e 100644
+--- a/src/tiffvisitor.cpp
++++ b/src/tiffvisitor.cpp
+@@ -47,6 +47,7 @@ EXIV2_RCSID("@(#) $Id$")
+ #include <iostream>
+ #include <iomanip>
+ #include <cassert>
++#include <limits>
+ 
+ // *****************************************************************************
+ namespace {
+@@ -1517,7 +1518,19 @@ namespace Exiv2 {
+                 size = 0;
+         }
+         if (size > 4) {
++            // setting pData to pData_ + baseOffset() + offset can result in pData pointing to invalid memory,
++            // as offset can be arbitrarily large
++            if ((static_cast<uintptr_t>(baseOffset()) > std::numeric_limits<uintptr_t>::max() - static_cast<uintptr_t>(offset))
++             || (static_cast<uintptr_t>(baseOffset() + offset) > std::numeric_limits<uintptr_t>::max() - reinterpret_cast<uintptr_t>(pData_)))
++            {
++                throw Error(59);
++            }
++            if (pData_ + static_cast<uintptr_t>(baseOffset()) + static_cast<uintptr_t>(offset) > pLast_) {
++                throw Error(58);
++            }
+             pData = const_cast<byte*>(pData_) + baseOffset() + offset;
++
++	    // check for size being invalid
+             if (size > static_cast<uint32_t>(pLast_ - pData)) {
+ #ifndef SUPPRESS_WARNINGS
+                 EXV_ERROR << "Upper boundary of data for "
diff --git a/gnu/packages/patches/exiv2-CVE-2017-14860.patch b/gnu/packages/patches/exiv2-CVE-2017-14860.patch
new file mode 100644
index 0000000000..43e6076b71
--- /dev/null
+++ b/gnu/packages/patches/exiv2-CVE-2017-14860.patch
@@ -0,0 +1,48 @@
+Fix CVE-2017-14860.
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-14860
+https://nvd.nist.gov/vuln/detail/CVE-2017-14860
+
+Copied from upstream:
+
+https://github.com/Exiv2/exiv2/commit/ff18fec24b119579df26fd2ebb8bb012cde102ce
+
+From ff18fec24b119579df26fd2ebb8bb012cde102ce Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dan.cermak@cgc-instruments.com>
+Date: Fri, 6 Oct 2017 23:09:08 +0200
+Subject: [PATCH] Fix for CVE-2017-14860
+
+A heap buffer overflow could occur in memcpy when icc.size_ is larger
+than data.size_ - pad, as then memcpy would read out of bounds of data.
+
+This commit adds a sanity check to iccLength (= icc.size_): if it is
+larger than data.size_ - pad (i.e. an overflow would be caused) an
+exception is thrown.
+
+This fixes #71.
+---
+ src/jp2image.cpp | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/src/jp2image.cpp b/src/jp2image.cpp
+index 747145cf..748d39b5 100644
+--- a/src/jp2image.cpp
++++ b/src/jp2image.cpp
+@@ -269,10 +269,15 @@ namespace Exiv2
+                             std::cout << "Exiv2::Jp2Image::readMetadata: "
+                                      << "Color data found" << std::endl;
+ #endif
+-                            long pad = 3 ; // 3 padding bytes 2 0 0
++                            const long pad = 3 ; // 3 padding bytes 2 0 0
+                             DataBuf data(subBox.length+8);
+                             io_->read(data.pData_,data.size_);
+-                            long    iccLength = getULong(data.pData_+pad, bigEndian);
++                            const long    iccLength = getULong(data.pData_+pad, bigEndian);
++                            // subtracting pad from data.size_ is safe:
++                            // size_ is at least 8 and pad = 3
++                            if (iccLength > data.size_ - pad) {
++                                throw Error(58);
++			    }
+                             DataBuf icc(iccLength);
+                             ::memcpy(icc.pData_,data.pData_+pad,icc.size_);
+ #ifdef DEBUG
diff --git a/gnu/packages/patches/wget-CVE-2017-6508.patch b/gnu/packages/patches/wget-CVE-2017-6508.patch
deleted file mode 100644
index 0218fceaad..0000000000
--- a/gnu/packages/patches/wget-CVE-2017-6508.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-Fix CVE-2017-6508:
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6508
-
-Patch copied from upstream source repository:
-
-https://git.savannah.gnu.org/cgit/wget.git/commit/?id=4d729e322fae359a1aefaafec1144764a54e8ad4
-
-From 4d729e322fae359a1aefaafec1144764a54e8ad4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
-Date: Mon, 6 Mar 2017 10:04:22 +0100
-Subject: [PATCH] Fix CRLF injection in Wget host part
-
-* src/url.c (url_parse): Reject control characters in host part of URL
-
-Reported-by: Orange Tsai
----
- src/url.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/src/url.c b/src/url.c
-index 8f8ff0b8..7d36b27d 100644
---- a/src/url.c
-+++ b/src/url.c
-@@ -925,6 +925,17 @@ url_parse (const char *url, int *error, struct iri *iri, bool percent_encode)
-       url_unescape (u->host);
-       host_modified = true;
- 
-+      /* check for invalid control characters in host name */
-+      for (p = u->host; *p; p++)
-+        {
-+          if (c_iscntrl(*p))
-+            {
-+              url_free(u);
-+              error_code = PE_INVALID_HOST_NAME;
-+              goto error;
-+            }
-+        }
-+
-       /* Apply IDNA regardless of iri->utf8_encode status */
-       if (opt.enable_iri && iri)
-         {
--- 
-2.12.0
-
diff --git a/gnu/packages/patches/wget-fix-504-test-timeout.patch b/gnu/packages/patches/wget-fix-504-test-timeout.patch
deleted file mode 100644
index d9bf154103..0000000000
--- a/gnu/packages/patches/wget-fix-504-test-timeout.patch
+++ /dev/null
@@ -1,160 +0,0 @@
-This patch is from upstream. If a machine is too slow it can cause
-test-504.py to fail.
-http://git.savannah.gnu.org/cgit/wget.git/patch/?id=ac4fed32204e9ec1874e7cb5ecc55f1b35c1c8de
-
-From ac4fed32204e9ec1874e7cb5ecc55f1b35c1c8de Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
-Date: Tue, 14 Feb 2017 16:20:26 +0100
-Subject: Fix 504 status handling
-
-* src/http.c (gethttp): Move 504 handling to correct place.
-  (http_loop): Fix memeory leak.
-* testenv/server/http/http_server.py: Add Content-Length header on non-2xx
-  status codes with a body
-
-Reported-by: Adam Sampson
----
- src/http.c                         | 30 +++++++++++-------------------
- testenv/server/http/http_server.py |  9 +++++----
- 2 files changed, 16 insertions(+), 23 deletions(-)
-
-diff --git a/src/http.c b/src/http.c
-index 898e184..d2c5c77 100644
---- a/src/http.c
-+++ b/src/http.c
-@@ -3476,7 +3476,7 @@ gethttp (const struct url *u, struct url *original_url, struct http_stat *hs,
- 
- #ifdef HAVE_METALINK
-   /* We need to check for the Metalink data in the very first response
--     we get from the server (before redirectionrs, authorization, etc.).  */
-+     we get from the server (before redirections, authorization, etc.).  */
-   if (metalink)
-     {
-       hs->metalink = metalink_from_http (resp, hs, u);
-@@ -3496,7 +3496,7 @@ gethttp (const struct url *u, struct url *original_url, struct http_stat *hs,
-       uerr_t auth_err = RETROK;
-       bool retry;
-       /* Normally we are not interested in the response body.
--         But if we are writing a WARC file we are: we like to keep everyting.  */
-+         But if we are writing a WARC file we are: we like to keep everything.  */
-       if (warc_enabled)
-         {
-           int _err;
-@@ -3556,20 +3556,6 @@ gethttp (const struct url *u, struct url *original_url, struct http_stat *hs,
-         pconn.authorized = true;
-     }
- 
--  if (statcode == HTTP_STATUS_GATEWAY_TIMEOUT)
--    {
--      hs->len = 0;
--      hs->res = 0;
--      hs->restval = 0;
--
--      CLOSE_FINISH (sock);
--      xfree (hs->message);
--
--      retval = GATEWAYTIMEOUT;
--      goto cleanup;
--    }
--
--
-   {
-     uerr_t ret = check_file_output (u, hs, resp, hdrval, sizeof hdrval);
-     if (ret != RETROK)
-@@ -3910,8 +3896,8 @@ gethttp (const struct url *u, struct url *original_url, struct http_stat *hs,
-               retval = _err;
-               goto cleanup;
-             }
--          else
--            CLOSE_FINISH (sock);
-+
-+          CLOSE_FINISH (sock);
-         }
-       else
-         {
-@@ -3934,7 +3920,11 @@ gethttp (const struct url *u, struct url *original_url, struct http_stat *hs,
-             CLOSE_INVALIDATE (sock);
-         }
- 
--      retval = RETRFINISHED;
-+      if (statcode == HTTP_STATUS_GATEWAY_TIMEOUT)
-+        retval = GATEWAYTIMEOUT;
-+      else
-+        retval = RETRFINISHED;
-+
-       goto cleanup;
-     }
- 
-@@ -4208,6 +4198,8 @@ http_loop (const struct url *u, struct url *original_url, char **newloc,
-              bring them to "while" statement at the end, to judge
-              whether the number of tries was exceeded.  */
-           printwhat (count, opt.ntry);
-+          xfree (hstat.message);
-+          xfree (hstat.error);
-           continue;
-         case FWRITEERR: case FOPENERR:
-           /* Another fatal error.  */
-diff --git a/testenv/server/http/http_server.py b/testenv/server/http/http_server.py
-index e96f6e8..b222df0 100644
---- a/testenv/server/http/http_server.py
-+++ b/testenv/server/http/http_server.py
-@@ -204,7 +204,6 @@ class _Handler(BaseHTTPRequestHandler):
- 
-     def Response(self, resp_obj):
-         self.send_response(resp_obj.response_code)
--        self.finish_headers()
-         if resp_obj.response_code == 304:
-             raise NoBodyServerError("Conditional get falling to head")
-         raise ServerError("Custom Response code sent.")
-@@ -329,7 +328,6 @@ class _Handler(BaseHTTPRequestHandler):
-         except AuthError as se:
-             self.send_response(401, "Authorization Required")
-             self.send_challenge(auth_rule.auth_type, auth_rule.auth_parm)
--            self.finish_headers()
-             raise se
- 
-     def handle_auth(self, auth_rule):
-@@ -362,7 +360,6 @@ class _Handler(BaseHTTPRequestHandler):
-             if header_recd is None or header_recd != exp_headers[header_line]:
-                 self.send_error(400, "Expected Header %s not found" %
-                                 header_line)
--                self.finish_headers()
-                 raise ServerError("Header " + header_line + " not found")
- 
-     def RejectHeader(self, header_obj):
-@@ -372,7 +369,6 @@ class _Handler(BaseHTTPRequestHandler):
-             if header_recd and header_recd == rej_headers[header_line]:
-                 self.send_error(400, 'Blacklisted Header %s received' %
-                                 header_line)
--                self.finish_headers()
-                 raise ServerError("Header " + header_line + ' received')
- 
-     def __log_request(self, method):
-@@ -400,6 +396,7 @@ class _Handler(BaseHTTPRequestHandler):
- 
-             content = self.server.fileSys.get(path)
-             content_length = len(content)
-+
-             for rule_name in self.rules:
-                 try:
-                     assert hasattr(self, rule_name)
-@@ -410,12 +407,16 @@ class _Handler(BaseHTTPRequestHandler):
-                     return(None, None)
-                 except AuthError as ae:
-                     print(ae.__str__())
-+                    self.finish_headers()
-                     return(None, None)
-                 except NoBodyServerError as nbse:
-                     print(nbse.__str__())
-+                    self.finish_headers()
-                     return(None, None)
-                 except ServerError as se:
-                     print(se.__str__())
-+                    self.add_header("Content-Length", content_length)
-+                    self.finish_headers()
-                     return(content, None)
- 
-             try:
--- 
-cgit v1.0-41-gc330
-
diff --git a/gnu/packages/patches/wget-perl-5.26.patch b/gnu/packages/patches/wget-perl-5.26.patch
deleted file mode 100644
index ee3a984daa..0000000000
--- a/gnu/packages/patches/wget-perl-5.26.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-This upstream commit adjusts tests for Perl 5.26.
-
-commit 7ffe93cabb181f39ad5091c31ab9f61bd940a55f
-Author: Anton Yuzhaninov <citrin+github@citrin.ru>
-Date:   Wed Apr 5 19:06:42 2017 +0300
-
-    Fix perl warnings in tests
-    
-    * tests/FTPServer.pm: Escape '{' in RE to fix warnings
-    * tests/FTPTest.pm: Likewise
-    * tests/HTTPServer.pm: Likewise
-    * tests/HTTPTest.pm: Likewise
-    * tests/Test-proxied-https-auth-keepalive.px: Likewise
-    * tests/Test-proxied-https-auth.px: Likewise
-    Escape '{' in RE to fix warnings:
-    Unescaped left brace in regex is deprecated, passed through in regex;
-    marked by <-- HERE in m/{{ <-- HERE port}}/
-
-diff --git a/tests/FTPServer.pm b/tests/FTPServer.pm
-index a5185d66..cac80942 100644
---- a/tests/FTPServer.pm
-+++ b/tests/FTPServer.pm
-@@ -589,7 +589,7 @@ sub new
-     foreach my $file (keys %{$self->{_input}})
-     {
-         my $ref = \$self->{_input}{$file}{content};
--        $$ref =~ s/{{port}}/$self->sockport/eg;
-+        $$ref =~ s/\Q{{port}}/$self->sockport/eg;
-     }
- 
-     return $self;
-diff --git a/tests/FTPTest.pm b/tests/FTPTest.pm
-index 50385ad0..0a1c768c 100644
---- a/tests/FTPTest.pm
-+++ b/tests/FTPTest.pm
-@@ -53,7 +53,7 @@ sub _substitute_port
- {
-     my $self = shift;
-     my $ret  = shift;
--    $ret =~ s/{{port}}/$self->{_server}->sockport/eg;
-+    $ret =~ s/\Q{{port}}/$self->{_server}->sockport/eg;
-     return $ret;
- }
- 
-diff --git a/tests/HTTPServer.pm b/tests/HTTPServer.pm
-index dd8ec043..78609f65 100644
---- a/tests/HTTPServer.pm
-+++ b/tests/HTTPServer.pm
-@@ -310,7 +310,7 @@ sub _substitute_port
- {
-     my $self = shift;
-     my $ret  = shift;
--    $ret =~ s/{{port}}/$self->sockport/eg;
-+    $ret =~ s/\Q{{port}}/$self->sockport/eg;
-     return $ret;
- }
- 
-diff --git a/tests/HTTPTest.pm b/tests/HTTPTest.pm
-index 00f079f8..6225c7f1 100644
---- a/tests/HTTPTest.pm
-+++ b/tests/HTTPTest.pm
-@@ -47,7 +47,7 @@ sub _substitute_port
- {
-     my $self = shift;
-     my $ret  = shift;
--    $ret =~ s/{{port}}/$self->{_server}->sockport/eg;
-+    $ret =~ s/\Q{{port}}/$self->{_server}->sockport/eg;
-     return $ret;
- }
- 
-diff --git a/tests/Test-proxied-https-auth-keepalive.px b/tests/Test-proxied-https-auth-keepalive.px
-index 049bebec..2a18ccfd 100755
---- a/tests/Test-proxied-https-auth-keepalive.px
-+++ b/tests/Test-proxied-https-auth-keepalive.px
-@@ -153,7 +153,7 @@ my $cmdline = $WgetTest::WGETPATH . " --user=fiddle-dee-dee"
-     . " --password=Dodgson -e https_proxy=localhost:{{port}}"
-     . " --no-check-certificate"
-     . " https://no.such.domain/needs-auth.txt";
--$cmdline =~ s/{{port}}/$SOCKET->sockport()/e;
-+$cmdline =~ s/\Q{{port}}/$SOCKET->sockport()/e;
- 
- if (defined $srcdir) {
-     $VALGRIND_SUPP_FILE = $srcdir . '/valgrind-suppressions-ssl';
-diff --git a/tests/Test-proxied-https-auth.px b/tests/Test-proxied-https-auth.px
-index ce4e736c..878114e7 100755
---- a/tests/Test-proxied-https-auth.px
-+++ b/tests/Test-proxied-https-auth.px
-@@ -152,7 +152,7 @@ my $cmdline = $WgetTest::WGETPATH . " --user=fiddle-dee-dee"
-     . " --password=Dodgson -e https_proxy=localhost:{{port}}"
-     . " --no-check-certificate"
-     . " https://no.such.domain/needs-auth.txt";
--$cmdline =~ s/{{port}}/$SOCKET->sockport()/e;
-+$cmdline =~ s/\Q{{port}}/$SOCKET->sockport()/e;
- 
- if (defined $srcdir) {
-     $VALGRIND_SUPP_FILE = $srcdir . '/valgrind-suppressions-ssl';
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 044f93e818..7225336c7c 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
 ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net>
@@ -584,7 +584,7 @@ Standard Serial Numbers.")
 (define-public perl-business-ismn
   (package
     (name "perl-business-ismn")
-    (version "1.13")
+    (version "1.131")
     (source
      (origin
        (method url-fetch)
@@ -592,7 +592,7 @@ Standard Serial Numbers.")
                            "Business-ISMN-" version ".tar.gz"))
        (sha256
         (base32
-         "0cm1v75axg4gp6cnbyavmnqqjscsxh7nc60vcbw34rqivvf9idc9"))))
+         "1xyc7x4c4xl930rz7grs1l52f1vg4rbiv0c6xlxdsim8qsh7k94g"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-tie-cycle" ,perl-tie-cycle)))
@@ -1165,7 +1165,7 @@ little other than manage the instantiation of a single object.")
 (define-public perl-class-tiny
   (package
     (name "perl-class-tiny")
-    (version "1.000")
+    (version "1.006")
     (source
      (origin
        (method url-fetch)
@@ -1173,7 +1173,7 @@ little other than manage the instantiation of a single object.")
                            "Class-Tiny-" version ".tar.gz"))
        (sha256
         (base32
-         "0jll90byj0nl16hwpf28k54i4n53jidjsj1bnlbx72v0n56qfpb2"))))
+         "0knbi1agcfc9d7fca0szvxr6335pb22pc5n648q1vrcba8qvvz1f"))))
     (build-system perl-build-system)
     (home-page "http://search.cpan.org/dist/Class-Tiny/")
     (synopsis "Minimalist class construction")
@@ -3130,14 +3130,14 @@ self-contained C libraries.  This module main goal is to help in that task.")
 (define-public perl-extutils-pkgconfig
   (package
     (name "perl-extutils-pkgconfig")
-    (version "1.15")
+    (version "1.16")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cpan/authors/id/X/XA/XAOC/"
                                   "ExtUtils-PkgConfig-" version ".tar.gz"))
               (sha256
                (base32
-                "1cxh6w8vmyqmhl6afys2q6z6jkp1m6zvacpk70196zmk48p1kcv9"))))
+                "0vhwh0731rhh1sswmvagq0myn754dnkab8sizh6d3n6pjpcwxsmv"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("pkg-config" ,pkg-config)))
@@ -3447,7 +3447,7 @@ the installation.")
 (define-public perl-file-sharedir-dist
   (package
     (name "perl-file-sharedir-dist")
-    (version "0.04")
+    (version "0.05")
     (source
      (origin
        (method url-fetch)
@@ -3455,7 +3455,7 @@ the installation.")
                            "File-ShareDir-Dist-" version ".tar.gz"))
        (sha256
         (base32
-         "028vnjw3fdmwk540w3b07cmr93ap0s13ni2b4c7iv56mgyy6gfc1"))))
+         "1xkmrckp1qfi9ik098n2vz0r8g7wfwp2y05zjd100w6wcqwfzcpn"))))
     (build-system perl-build-system)
     (home-page "http://search.cpan.org/dist/File-ShareDir-Dist/")
     (synopsis "Locate per-dist shared files")
@@ -4120,7 +4120,7 @@ versa using either JSON::XS or JSON::PP.")
 (define-public perl-json-any
   (package
     (name "perl-json-any")
-    (version "1.38")
+    (version "1.39")
     (source
      (origin
        (method url-fetch)
@@ -4128,7 +4128,7 @@ versa using either JSON::XS or JSON::PP.")
                            "JSON-Any-" version ".tar.gz"))
        (sha256
         (base32
-         "0mk6shg82i7y852bvj5d0qqma1d9k0jh10k4mg62hbgr800gb2m4"))))
+         "1hspg6khjb38syn59cysnapc1q77qgavfym3fqr6l2kiydf7ajdf"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-fatal" ,perl-test-fatal)
@@ -4252,7 +4252,7 @@ logging mechanism.")
 (define-public perl-log-log4perl
   (package
     (name "perl-log-log4perl")
-    (version "1.47")
+    (version "1.49")
     (source
      (origin
        (method url-fetch)
@@ -4262,7 +4262,7 @@ logging mechanism.")
              ".tar.gz"))
        (sha256
         (base32
-         "0vxraq9navx5mgf8y8g6l5rbl3dv2ml8bishka5m69hj07nxs0ch"))))
+         "05ifhx1lmv91dbs9ck2zbjrkhh8z9g32gi6gxdmwnilia5zihfdp"))))
     (build-system perl-build-system)
     (home-page
      "http://search.cpan.org/dist/Log-Log4perl/")
@@ -6622,7 +6622,7 @@ and @code{deserialize_regexp}.")
 (define-public perl-safe-isa
   (package
     (name "perl-safe-isa")
-    (version "1.000005")
+    (version "1.000008")
     (source
      (origin
        (method url-fetch)
@@ -6630,7 +6630,7 @@ and @code{deserialize_regexp}.")
                            "Safe-Isa-" version ".tar.gz"))
        (sha256
         (base32
-         "1vib54cp64dy3ic4n73skadp1pl4gn8s9qpxmzvi078dm3mpnbcw"))))
+         "08r74hwxq5b3bibnbwjr9anybg15l3zqdgcirpw1xm2qpvcxgdkx"))))
     (build-system perl-build-system)
     (home-page "http://search.cpan.org/dist/Safe-Isa/")
     (synopsis "Call isa, can, does, and DOES safely")
@@ -6957,7 +6957,7 @@ custom-built routines.")
 (define-public perl-sub-exporter-progressive
   (package
     (name "perl-sub-exporter-progressive")
-    (version "0.001011")
+    (version "0.001013")
     (source
      (origin
        (method url-fetch)
@@ -6965,7 +6965,7 @@ custom-built routines.")
                            "Sub-Exporter-Progressive-" version ".tar.gz"))
        (sha256
         (base32
-         "01kwzbqwdhvadpphnczid03nlyj0h4cxaq3m3v2401bckkkcc606"))))
+         "0mn0x8mkh36rrsr58s1pk4srwxh2hbwss7sv630imnk49navfdfm"))))
     (build-system perl-build-system)
     (native-inputs `(("perl-sub-exporter" ,perl-sub-exporter)))
     (home-page "http://search.cpan.org/dist/Sub-Exporter-Progressive/")
@@ -7134,7 +7134,36 @@ statements: @code{switch} and @code{case}.")
                                   "Sys-CPU-" version ".tar.gz"))
               (sha256
                (base32
-                "1r6976bs86j7zp51m5vh42xlyah951jgdlkimv202413kjvqc2i5"))))
+                "1r6976bs86j7zp51m5vh42xlyah951jgdlkimv202413kjvqc2i5"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; The contents of /proc/cpuinfo can differ and confuse the
+                  ;; cpu_clock and cpu_type methods, so we replace the test
+                  ;; with one that marks cpu_clock and cpu_type as TODO.
+                  ;; Borrowed from Debian.
+                  (call-with-output-file "t/Sys-CPU.t"
+                    (lambda (port)
+                      (format port "#!/usr/bin/perl
+
+use Test::More tests => 4;
+
+BEGIN { use_ok('Sys::CPU'); }
+
+$number = &Sys::CPU::cpu_count();
+ok( defined($number), \"CPU Count: $number\" );
+
+TODO: {
+    local $TODO = \"/proc/cpuinfo doesn't always report 'cpu MHz' or 'clock' or 'bogomips' ...\";
+    $speed = &Sys::CPU::cpu_clock();
+    ok( defined($speed), \"CPU Speed: $speed\" );
+}
+
+TODO: {
+    local $TODO = \"/proc/cpuinfo doesn't always report 'model name' or 'machine' ...\";
+    $type = &Sys::CPU::cpu_type();
+    ok( defined($type), \"CPU Type:  $type\" );
+}~%")))))))
     (build-system perl-build-system)
     (synopsis "Perl extension for getting CPU information")
     (description
@@ -8697,7 +8726,7 @@ algorism to indicate multiplication by 1000.")
 (define-public perl-text-table
   (package
     (name "perl-text-table")
-    (version "1.130")
+    (version "1.133")
     (source
      (origin
        (method url-fetch)
@@ -8705,7 +8734,7 @@ algorism to indicate multiplication by 1000.")
                            "Text-Table-" version ".tar.gz"))
        (sha256
         (base32
-         "02c8v38k639r23dgxwgvsy4myjjzvgdb238kpiffsiz25ab3xp5j"))))
+         "04kh5x5inq183rdg221wlqaaqi1ipyj588mxsslik6nhc14f17nd"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
@@ -8813,7 +8842,7 @@ approximately follow the suggestions in the Perl Style Guide.")
 (define-public perl-tie-cycle
   (package
     (name "perl-tie-cycle")
-    (version "1.221")
+    (version "1.225")
     (source
      (origin
        (method url-fetch)
@@ -8821,7 +8850,7 @@ approximately follow the suggestions in the Perl Style Guide.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "10g6kirf6jfaldckg98y4pl87vrm7grqlg6ymb7a9vhrznyn7qn6"))))
+         "0i9xq2qm50p2ih24265jndp2x8hfq7ap0d88nrlv5yaad4hxhc7k"))))
     (build-system perl-build-system)
     (home-page "http://search.cpan.org/dist/Tie-Cycle/")
     (synopsis "Cycle through a list of values")
diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm
index 1f3c7b556d..03e9d4bd94 100644
--- a/gnu/packages/php.scm
+++ b/gnu/packages/php.scm
@@ -52,7 +52,7 @@
 (define-public php
   (package
     (name "php")
-    (version "7.1.10")
+    (version "7.1.11")
     (home-page "https://secure.php.net/")
     (source (origin
               (method url-fetch)
@@ -60,7 +60,7 @@
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "02y52ml1svksx6fclg47vim2hnsva3531db7msrhpb9f39vzm3ib"))
+                "0gl9hk4888fjirrd4s73mdabhiqam0c45406a7fgw6njszlr6h07"))
               (modules '((guix build utils)))
               (snippet
                '(with-directory-excursion "ext"
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 119dde7d99..d257d48bc4 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2015, 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015, 2016 Erik Edrosa <erik.edrosa@gmail.com>
 ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2015 Kyle Meyer <kyle@kyleam.com>
+;;; Copyright © 2015, 2017 Kyle Meyer <kyle@kyleam.com>
 ;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
 ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
@@ -1098,6 +1098,119 @@ etc.).  The package is structured to make adding new modules easy.")
             "python"
             (package-inputs pycrypto)))))))
 
+(define-public python-humanfriendly
+  (package
+    (name "python-humanfriendly")
+    (version "4.4.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "humanfriendly" version))
+       (sha256
+        (base32
+         "0pisgizjql86785jchfjv217g0lsgk114g2lja5j4y3lsc3b9szi"))))
+    (build-system python-build-system)
+    (arguments
+     `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-monotonic" ,python-monotonic)))
+    (home-page "https://humanfriendly.readthedocs.io")
+    (synopsis "Human-friendly input and output in Python")
+    (description
+     "The functions and classes in @code{humanfriendly} can be used to make
+text interfaces more user-friendly.  It includes tools to parse and format
+numbers, file sizes, and timespans, timers for long-running operations, menus
+to allow the user to choose from a list of options, and terminal interaction
+helpers.")
+    (license license:expat)))
+
+(define-public python2-humanfriendly
+  (package-with-python2 python-humanfriendly))
+
+(define-public python-capturer
+  (package
+    (name "python-capturer")
+    (version "2.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "capturer" version))
+       (sha256
+        (base32
+         "05d6ji4j8ipiq0br7bwam38qc6hd9l1djmfxlzrxx19ziyjl4089"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:tests? #f))
+    (propagated-inputs
+     `(("python-humanfriendly" ,python-humanfriendly)))
+    (home-page "https://capturer.readthedocs.io")
+    (synopsis "Capture stdout and stderr streams of the current process")
+    (description
+     "The capturer package makes it easy to capture the stdout and stderr
+streams of the current process and subprocesses.  Output can be relayed
+to the terminal in real time but is also available to the Python program
+for additional processing.")
+    (license license:expat)))
+
+(define-public python2-capturer
+  (package-with-python2 python-capturer))
+
+(define-public python-verboselogs
+  (package
+    (name "python-verboselogs")
+    (version "1.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "verboselogs" version))
+       (sha256
+        (base32
+         "09z4d1jiasn7k1hs5af2ckmnrd0i1d1m04bhfjhv7z6svzfdwgg3"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-mock" ,python-mock)
+       ("python-astroid" ,python-astroid)
+       ("python-pylint" ,python-pylint)))
+    (home-page "https://verboselogs.readthedocs.io")
+    (synopsis "Verbose logging level for Python's logging module")
+    (description
+     "The @code{verboselogs} package extends Python's @code{logging} module to
+add the log levels NOTICE, SPAM, SUCCESS and VERBOSE.")
+    (license license:expat)))
+
+(define-public python2-verboselogs
+  (package-with-python2 python-verboselogs))
+
+(define-public python-coloredlogs
+  (package
+    (name "python-coloredlogs")
+    (version "7.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "coloredlogs" version))
+       (sha256
+        (base32
+         "1blcann6dyg5dhps9pg12rn0q0rjrlajpmmil0gy0j4cbvnl2il9"))))
+    (build-system python-build-system)
+    (arguments
+     `(;Tests require some updated modules
+       #:tests? #f))
+    (propagated-inputs
+     `(("python-capturer" ,python-capturer)))
+    (home-page "https://coloredlogs.readthedocs.io")
+    (synopsis "Colored stream handler for Python's logging module")
+    (description
+     "The @code{coloredlogs} package enables colored terminal output for
+Python's logging module.  The @code{ColoredFormatter} class inherits from
+@code{logging.Formatter} and uses ANSI escape sequences to render your logging
+messages in color.")
+    (license license:expat)))
+
+(define-public python2-coloredlogs
+  (package-with-python2 python-coloredlogs))
+
 (define-public python-eventlet
   (package
     (name "python-eventlet")
@@ -6524,13 +6637,13 @@ of the structure, dynamics, and functions of complex networks.")
 (define-public snakemake
   (package
     (name "snakemake")
-    (version "3.13.3")
+    (version "4.2.0")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "snakemake" version))
        (sha256
-        (base32 "1nixb944r4hlskwkzc4wjs34b40xpxpw9gmhhm5p09gvmm22ap5d"))))
+        (base32 "0mgl44q152ws40zj2vicqark5szyd73vqy9pf26g6hk6dk0y0c79"))))
     (build-system python-build-system)
     (arguments
      ;; TODO: Package missing test dependencies.
@@ -6549,7 +6662,11 @@ of the structure, dynamics, and functions of complex networks.")
              #t)))))
     (propagated-inputs
      `(("python-wrapt" ,python-wrapt)
-       ("python-requests" ,python-requests)))
+       ("python-requests" ,python-requests)
+       ("python-appdirs" ,python-appdirs)
+       ("python-configargparse" ,python-configargparse)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-ratelimiter" ,python-ratelimiter)))
     (home-page "https://bitbucket.org/snakemake/snakemake/wiki/Home")
     (synopsis "Python-based execution environment for make-like workflows")
     (description
@@ -9186,20 +9303,30 @@ config files.")
 (define-public python-configargparse
   (package
     (name "python-configargparse")
-    (version "0.10.0")
+    (version "0.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "https://pypi.python.org/packages/source/C/ConfigArgParse/"
+                    "https://pypi.io/packages/source/C/ConfigArgParse/"
                     "ConfigArgParse-" version ".tar.gz"))
               (sha256
                (base32
-                "19wh919gbdbzxzpagg52q3lm62yicm95ddlcx77dyjc1slyshl1v"))))
+                "0fgkiqh6r3rbkdq3k8c48m85g52k96686rw3a6jg4lcncrkpvk98"))))
     (build-system python-build-system)
+    (native-inputs
+     `(("python-pyyaml" ,python-pyyaml)))
     (arguments
-     ;; FIXME: Bug in test suite filed upstream:
-     ;; https://github.com/bw2/ConfigArgParse/issues/32
-     '(#:tests? #f))
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'check
+           (lambda _
+             ;; Bypass setuptools-shim because one test relies on "setup.py"
+             ;; being the first argument passed to the python call.
+             ;;
+             ;; NOTE: Many tests do not run because they rely on Python's
+             ;; built-in test.test_argparse, but we remove the unit tests from
+             ;; our Python installation.
+             (zero? (system* "python" "setup.py" "test")))))))
     (synopsis "Replacement for argparse")
     (description "A drop-in replacement for argparse that allows options to also
 be set via config files and/or environment variables.")
@@ -16740,3 +16867,27 @@ interpreter when it prints a stack trace.")
 
 (define-public python2-traceback2
   (package-with-python2 python-traceback2))
+
+(define-public python-ratelimiter
+  (package
+    (name "python-ratelimiter")
+    (version "1.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "ratelimiter" version))
+       (sha256
+        (base32
+         "1dhz85mj5bqd2mij84ncs6pz32hgidr79hay4aqfmzaa4rbb497p"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:tests? #f))          ; There are no tests in the pypi archive.
+    (home-page "https://github.com/RazerM/ratelimiter")
+    (synopsis "Simple rate limiting object")
+    (description
+     "The @code{ratelimiter} module ensures that an operation will not be
+executed more than a given number of times during a given period.")
+    (license license:asl2.0)))
+
+(define-public python2-ratelimiter
+  (package-with-python2 python-ratelimiter))
diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm
index d48051ee33..6230195ed4 100644
--- a/gnu/packages/scribus.scm
+++ b/gnu/packages/scribus.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -24,53 +25,95 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system cmake)
   #:use-module (gnu packages)
+  #:use-module (gnu packages boost)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cups)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages pdf)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
-  #:use-module (gnu packages imagemagick)
+  #:use-module (gnu packages tls)
   #:use-module (gnu packages xml))
 
 (define-public scribus
   (package
     (name "scribus")
-    (version "1.5.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://sourceforge/scribus/scribus-devel/"
-                                  version "/scribus-" version ".tar.xz"))
-              (sha256
-               (base32
-                "1xbl7h4x32y2nfhn57ivjziyvlnwadcbizqwfqx5srfsmqiyqppc"))))
+    (version "1.5.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/scribus/scribus-devel/"
+                           version "/scribus-" version ".tar.xz"))
+       (sha256
+        (base32
+         "0kyp45vidxa3v35ic9592db4zk3m8al26vck38q5v7z14x3hp8vk"))
+       (patches
+        (list
+         (origin
+           (method url-fetch)
+           (uri (string-append "https://github.com/scribusproject/scribus/commit/"
+                               "61186c7ef083046b7e0c908952e8a773e2787d82.patch"))
+           (file-name "scribus-fix-poppler-0.58-breakage.patch")
+           (sha256
+            (base32 "189qw9xmgz01xz1w1bi9lzrp399zk1j1iz5qdhchdrhgnd69b7ly")))
+         (origin
+           (method url-fetch)
+           (uri (string-append "https://github.com/scribusproject/scribus/commit/"
+                               "d82b1c989bd0e79b5611521f671adbfb94996e5e.patch"))
+           (file-name "scribus-fix-poppler-packaging.patch")
+           (sha256
+            (base32 "1p9s18jjvj2h0ba1xvk1zhmnn4f4n3ykrgb56mjd6in30h0vrykx")))))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Fix typo.  Equivalent to patch at
+        ;; https://bugs.scribus.net/view.php?id=14850
+        '(substitute* "cmake/modules/FindLIBPODOFO.cmake"
+           (("find_package\\(OPENSSL\\)") "find_package(OpenSSL)")))))
     (build-system cmake-build-system)
     (arguments
-     `(#:tests? #f ; no test target
+     `(#:tests? #f                      ;no test target
        #:configure-flags
-       '("-DCMAKE_CXX_FLAGS=-std=gnu++11")))
+       '("-DWANT_GRAPHICSMAGICK=1")))
     (inputs
-     `(("cairo" ,cairo)
+     `(("boost" ,boost)
+       ("cairo" ,cairo)
        ("cups" ,cups)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
        ("graphicsmagick" ,graphicsmagick)
+       ("harfbuzz" ,harfbuzz)
+       ("hunspell" ,hunspell)
+       ("icu4c" ,icu4c)
        ("lcms" ,lcms)
+       ("libcdr" ,libcdr)
+       ("libfreehand" ,libfreehand)
        ("libjpeg" ,libjpeg)
+       ("libmspub" ,libmspub)
+       ("libpagemaker" ,libpagemaker)
+       ("librevenge" ,librevenge)
        ("libtiff" ,libtiff)
+       ("libvisio" ,libvisio)
        ("libxml2" ,libxml2)
-       ("python" ,python-2)
-       ("freetype" ,freetype)
+       ("openssl" ,openssl)
+       ("podofo" ,podofo)
+       ("poppler" ,poppler)
+       ("python" ,python-2)             ;need Python library
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
-       ("qttools" ,qttools)
        ("zlib" ,zlib)))
     (native-inputs
-     `(("util-linux" ,util-linux)
-       ("pkg-config" ,pkg-config)))
-    (home-page "http://scribus.net")
+     `(("pkg-config" ,pkg-config)
+       ("qttools" ,qttools)
+       ("util-linux" ,util-linux)))
+    (home-page "https://www.scribus.net")
     (synopsis "Desktop publishing and page layout program")
     (description
      "Scribus is a @dfn{desktop publishing} (DTP) application and can be used
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 96b390185a..3367c7aa46 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -28,6 +28,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix hg-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system r)
@@ -5071,7 +5072,7 @@ expected shortfall risk are also included.")
        (uri (cran-uri "nloptr" version))
        (sha256
         (base32
-         "1cypz91z28vhvwq2rzqjrbdc6a2lvfr2g16vid2sax618q6ai089"))))
+         "1sz1xj3785x4vsm4nd6in298bk32hs2jk5nsxma7ivxi7jcmn8l4"))))
     (build-system r-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -5467,3 +5468,62 @@ appearance, reversing, and randomly shuffling), and tools for modifying factor
 levels (including collapsing rare levels into other, \"anonymizing\", and
 manually \"recoding\").")
     (license license:gpl3)))
+
+(define-public r-tgstat
+  (let ((changeset "4f8e60c03598f49aff6f5beeab40f2b995377e9f")
+        (revision "1"))
+    (package
+      (name "r-tgstat")
+      (version (string-append "1.0.2-" revision "." (string-take changeset 7)))
+      (source
+       (origin
+         (method hg-fetch)
+         (uri (hg-reference
+               (url "https://bitbucket.org/tanaylab/tgstat")
+               (changeset changeset)))
+         (sha256
+          (base32
+           "0ilkkyximy77zbncm91kdfqbxf0qyndg16pd3q3p6a3xc9qcmxvn"))))
+      (build-system r-build-system)
+      (arguments
+       `(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'fix-isnan
+             (lambda _
+               (substitute* "src/tgstat.h"
+                 (("#define isnan ::isnan")
+                  "#define isnan std::isnan"))
+               #t)))))
+      (propagated-inputs
+       `(("r-rcpp" ,r-rcpp)))
+      (home-page "https://bitbucket.org/tanaylab/tgstat/")
+      (synopsis "Tanay's group statistical utilities")
+      (description
+       "The goal of tgstat is to provide fast and efficient statistical
+tools.")
+      (license license:gpl2))))
+
+(define-public r-tgconfig
+  (let ((changeset "1e02c7614713bd0866c46f0c679a058f8c6d627e")
+        (revision "1"))
+    (package
+      (name "r-tgconfig")
+      (version (string-append "0.0.0.9000-" revision "." (string-take changeset 7)))
+      (source
+       (origin
+         (method hg-fetch)
+         (uri (hg-reference
+               (url "https://bitbucket.org/tanaylab/tgconfig")
+               (changeset changeset)))
+         (sha256
+          (base32
+           "0xy6c7s7mn1yx191154bwbv1bl424bnvc80syqpl1vdl28ba46rj"))))
+      (build-system r-build-system)
+      (propagated-inputs
+       `(("r-yaml" ,r-yaml)))
+      (home-page "https://bitbucket.org/tanaylab/tgconfig/")
+      (synopsis "Infrastructure for managing package parameters")
+      (description
+       "The goal of tgconfig is to provide infrastructure for managing package
+parameters.")
+      (license license:gpl3))))
diff --git a/gnu/packages/syndication.scm b/gnu/packages/syndication.scm
index 8ac0524fc6..b182e13395 100644
--- a/gnu/packages/syndication.scm
+++ b/gnu/packages/syndication.scm
@@ -21,13 +21,15 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages web))
+  #:use-module (gnu packages web)
+  #:use-module (srfi srfi-1))
 
 (define-public newsbeuter
   (package
@@ -76,3 +78,35 @@ more features.  Its user interface is coherent, easy to use, and might look
 common to users of @command{mutt} and @command{slrn}.")
     (license (list license:gpl2+ ; filter/*
                    license:x11))))
+
+(define-public newsboat
+  (package
+    (inherit newsbeuter)
+    (name "newsboat")
+    (version "2.10.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://newsboat.org/releases/" version
+                            "/newsboat-" version ".tar.xz"))
+        (sha256
+         (base32
+          "1xgqkhpjbq916g9hkaxs0s2fz8bg103pzjx75ziq5ba688l9imj4"))))
+    (arguments
+     '(#:phases (modify-phases %standard-phases
+                  (delete 'configure) ; no configure
+                  (add-after 'build 'build-documentation
+                    (lambda _ (zero? (system* "make" "doc")))))
+       #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out"))
+                          ;; see https://github.com/newsboat/newsboat/issues/43
+                          "WARNFLAGS=-Wno-sign-compare")
+       #:test-target "test"))
+    (native-inputs
+     `(("asciidoc" ,asciidoc)
+       ,@(alist-delete "ruby" (package-native-inputs newsbeuter))))
+    (home-page "https://newsboat.org/")
+    (description "Newsboat is a fork of Newsbeuter, an RSS/Atom feed reader for
+the text console.  It supports OPML import/exports, HTML rendering, podcast
+(podboat), offline reading, searching and storing articles to your filesystem,
+and many more features.  Its user interface is coherent, easy to use, and might
+look common to users of @command{mutt} and @command{slrn}.")))
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index 79f7ca0816..310a0f6194 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -38,12 +38,12 @@
     (source
      (origin
       (method url-fetch)
-      (uri (string-append "https://github.com/symless/synergy/archive/"
+      (uri (string-append "https://github.com/symless/synergy-core/archive/"
                           "v" version "-stable.tar.gz"))
       (file-name (string-append name "-" version ".tar.gz"))
       (sha256
        (base32
-        "16vxbly4a33c63da3kmj7j47cam583l7bip33jc43mw173wqihw5"))
+        "052z1yiwck9hlshf8in2dgz6p7jxmq9yfj32mfzjaygpz6mmmr4y"))
       (modules '((guix build utils)))
       (snippet
        ;; Remove ~14MB of unnecessary bundled source and binaries
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 2fa5f7e4cd..1bfe6a7762 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2016, 2017 José Miguel Sánchez García <jmi2k@openmailbox.org>
 ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;;
@@ -27,6 +28,7 @@
 (define-module (gnu packages terminals)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build utils)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system python)
@@ -51,6 +53,7 @@
   #:use-module (gnu packages wm)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
   #:use-module (srfi srfi-26))
 
 (define-public tilda
@@ -537,3 +540,33 @@ eye-candy, customizable, and reasonably lightweight.")
                 license:silofl1.1
                 license:x11
                 license:bsd-3)))))
+
+(define-public sakura
+  (package
+    (name "sakura")
+    (version "3.5.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://launchpad.net/" name "/trunk/"
+                                  version "/+download/" name "-" version
+                                  ".tar.bz2"))
+              (sha256
+               (base32
+                "0fhcn3540iw22l5zg3njh5z8cj0g2n9p6fvagjqa5zc323jfsc7b"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; no check phase
+     '(#:tests? #f))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("perl" ,perl)               ; for pod2man
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libxft" ,libxft)
+       ("vte" ,vte)))
+    (home-page "https://launchpad.net/sakura")
+    (synopsis "A simple but powerful libvte-based terminal emulator")
+    (description "@code{Sakura} is a terminal emulator based on GTK+ and VTE.
+It's a terminal emulator with few dependencies, so you don't need a full GNOME
+desktop installed to have a decent terminal emulator.")
+    (license license:gpl2)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index 8480f74fec..d03f5b58d3 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -1328,15 +1328,15 @@ from Subversion to any supported Distributed Version Control System (DVCS).")
 (define-public tig
   (package
     (name "tig")
-    (version "2.2")
+    (version "2.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://jonas.nitro.dk/tig/releases/tig-"
-                    version ".tar.gz"))
+                    "https://github.com/jonas/tig/releases/download/tig-"
+                    version "/tig-" version ".tar.gz"))
               (sha256
                (base32
-                "0k3m894vfkgkj7xbr0j6ph91351dl6id5f0hk2ksjp5lmg9i6llg"))))
+                "1vf02snz8qiiqiyqss1z63rzzmwbrc9agcgh21jdq13rja306vv8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)
@@ -1351,8 +1351,8 @@ from Subversion to any supported Distributed Version Control System (DVCS).")
            (lambda _
              (zero? (system* "make" "install-doc")))))
        #:tests? #f)) ; tests require access to /dev/tty
-     ;;`(#:test-target "test"))
-    (home-page "http://jonas.nitro.dk/tig/")
+    ;; #:test-target "test"))
+    (home-page "https://jonas.github.io/tig/")
     (synopsis "Ncurses-based text user interface for Git")
     (description
      "Tig is an ncurses text user interface for Git, primarily intended as
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 63824f6c57..9fd252aaf2 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -11,7 +11,7 @@
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
-;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
+;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
@@ -49,6 +49,7 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (guix build-system waf)
   #:use-module (gnu packages)
@@ -68,6 +69,7 @@
   #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages docbook)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages file)
   #:use-module (gnu packages flex)
@@ -585,18 +587,19 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "3.3.4")
+    (version "3.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0mx9dvad3lkyhvsrblf280x2bz6dxajya1ylnspbdzldj0dpxfcq"))))
+               "1vzvpx8ixy8m44f8qwp833hv253hpghybgzbc4n8b3div3j0dvmf"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
+       ("frei0r-plugins" ,frei0r-plugins)
        ("gnutls" ,gnutls)
        ("opus" ,opus)
        ("ladspa" ,ladspa)
@@ -636,7 +639,6 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
        ;; possible additional inputs:
        ;;   --enable-avisynth        enable reading of AviSynth script
        ;;                            files [no]
-       ;;   --enable-frei0r          enable frei0r video filtering
        ;;   --enable-libaacplus      enable AAC+ encoding via libaacplus [no]
        ;;   --enable-libcelt         enable CELT decoding via libcelt [no]
        ;;   --enable-libdc1394       enable IIDC-1394 grabbing using libdc1394
@@ -684,6 +686,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
        '("--enable-avresample"
          "--enable-gpl" ; enable optional gpl licensed parts
          "--enable-shared"
+         "--enable-frei0r"
          "--enable-fontconfig"
          "--enable-gnutls"
          "--enable-ladspa"
@@ -751,6 +754,19 @@ convert and stream audio and video.  It includes the libavcodec
 audio/video codec library.")
     (license license:gpl2+)))
 
+;; XXX: Remove this when gst-libav and qtox supports 3.4.
+(define-public ffmpeg-3.3
+  (package
+    (inherit ffmpeg)
+    (version "3.3.5")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "00nq8ng2p16yb48acargaz1hlp9kq24vfwvkqjlslz4a7864k4x8"))))))
+
 (define-public ffmpeg-2.8
   (package
     (inherit ffmpeg)
@@ -1050,7 +1066,7 @@ projects while introducing many more.")
 (define-public gnome-mpv
   (package
     (name "gnome-mpv")
-    (version "0.12")
+    (version "0.13")
     (source
      (origin
        (method url-fetch)
@@ -1059,7 +1075,7 @@ projects while introducing many more.")
                            ".tar.xz"))
        (sha256
         (base32
-         "0dcnz9vlf791v8d15j7hpymv87h6nb15alww6xjq0zpal5hi44kc"))))
+         "1w944ymyssgfcjiczrq4saig90crw9b9hhdsnchfbjsw173qi8n5"))))
     (native-inputs
      `(("intltool" ,intltool)
        ("pkg-config" ,pkg-config)))
@@ -1116,7 +1132,7 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2017.10.20")
+    (version "2017.10.29")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://yt-dl.org/downloads/"
@@ -1124,7 +1140,7 @@ access to mpv's powerful playback capabilities.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0npr8b1xg1dylz717kfllw433h1y16251npzch48lchq69bhm4iy"))))
+                "1yajwi2cr8j05j1rn61gs7yrr93nri4cq8n4zkb3w4a8413h7q4g"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -1233,7 +1249,7 @@ other site that youtube-dl supports.")
 (define-public you-get
   (package
     (name "you-get")
-    (version "0.4.915")
+    (version "0.4.939")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -1242,7 +1258,7 @@ other site that youtube-dl supports.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "147qf8kdxjv9003fgx50ws0rmjjq98sv11q6c3sdwd29zylaj1ql"))))
+                "1amkdfnjn2j4k7jlr7qw9mg5whd7dy6z1flh5cd0n9v3d4m7k0c5"))))
     (build-system python-build-system)
     (arguments
      ;; no tests
@@ -2472,3 +2488,113 @@ tools for styling them, including a built-in real-time video preview.")
    ; by upstream). See https://github.com/Aegisub/Aegisub/blob/master/LICENCE
    ; src/MatroskaParser.(c|h) is under bsd-3 with permission from the author
 
+(define-public gst-transcoder
+  (package
+    (name "gst-transcoder")
+    (version "1.12.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/pitivi/gst-transcoder/"
+                           "archive/" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0cnwmrsd321s02ff91m3j27ydj7f8wks0jvmp5admlhka6z7zxm9"))))
+    (build-system meson-build-system)
+    (inputs
+     `(("gobject-introspection" ,gobject-introspection)
+       ("glib" ,glib)
+       ("gstreamer" ,gstreamer)
+       ("gst-plugins-base" ,gst-plugins-base)))
+    (native-inputs
+     `(("python" ,python)
+       ("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/pitivi/gst-transcoder/")
+    (synopsis "GStreamer Transcoding API")
+    (description "GStreamer Transcoding API")
+    (license license:lgpl2.1)))
+
+(define-public gavl
+  (package
+    (name "gavl")
+    (version "1.4.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/gmerlin/"
+                           name "/" version "/"
+                           name "-" version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1kikkn971a14zzm7svi7190ldc14fjai0xyhpbcmp48s750sraji"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags '("LIBS=-lm")))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("doxygen" ,doxygen)))
+    (home-page "http://gmerlin.sourceforge.net")
+    (synopsis "Low level library for multimedia API building")
+    (description
+     "Gavl is short for Gmerlin Audio Video Library.  It is a low level
+library, upon which multimedia APIs can be built.  Gavl handles all the
+details of audio and video formats like colorspaces, sample rates,
+multichannel configurations, etc.  It provides standardized definitions for
+those formats as well as container structures for carrying audio samples or
+video images inside an application.
+
+In addition, it handles the sometimes ugly task of converting between all
+these formats and provides some elementary operations (copying, scaling,
+alpha blending etc).")
+    (license license:gpl3)))
+
+(define-public frei0r-plugins
+  (package
+    (name "frei0r-plugins")
+    (version "1.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://files.dyne.org/frei0r/"
+                           "frei0r-plugins-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0pji26fpd0dqrx1akyhqi6729s394irl73dacnyxk58ijqq4dhp0"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'autotools
+           (lambda _
+             (zero? (system* "sh" "autogen.sh")))))))
+    ;; TODO: opencv for additional face detection filters
+    (inputs
+     `(("gavl" ,gavl)
+       ("cairo" ,cairo)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("libtool" ,libtool)
+       ("automake" ,automake)
+       ("autoconf" ,autoconf)))
+    (home-page "https://www.dyne.org/software/frei0r/")
+    (synopsis "Minimalistic plugin API for video effects")
+    (description
+     "Frei0r is a minimalistic plugin API for video effects.
+The main emphasis is on simplicity for an API that will round up
+the most common video effects into simple filters, sources and
+mixers that can be controlled by parameters.  Frei0r wants to
+provide a way to share these simple effects between many
+applications, avoiding their reimplementation by different projects.
+It counts more than 100 plugins.")
+    (license (list license:gpl2+
+                   ;; The following files are licensed as LGPL2.1+:
+                   ;; src/generator/ising0r/ising0r.c
+                   ;; src/generator/onecol0r/onecol0r.cpp
+                   ;; src/generator/nois0r/nois0r.cpp
+                   ;; src/generator/lissajous0r/lissajous0r.cpp
+                   ;; src/filter/ndvi/gradientlut.hpp
+                   ;; src/filter/ndvi/ndvi.cpp
+                   ;; src/filter/facedetect/facedetect.cpp
+                   license:lgpl2.1+))))
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index c8ab607028..14b1dfbe04 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -275,7 +275,7 @@ all common programming languages.  Vala bindings are also provided.")
 (define-public lxc
   (package
     (name "lxc")
-    (version "2.0.8")
+    (version "2.1.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -283,7 +283,7 @@ all common programming languages.  Vala bindings are also provided.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "15449r56rqg3487kzsnfvz0w4p5ajrq0krcsdh6c9r6g0ark93hd"))))
+                "1xpghrinxhm2072fwmn42pxhjwh7qx6cbsipw4s6g38a8mkklrk8"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -509,9 +509,12 @@ virtualization library.")
        ;; Some of the tests seem to require network access to install virtual
        ;; machines.
        #:tests? #f
+       #:imported-modules ((guix build glib-or-gtk-build-system)
+                           ,@%python-build-system-modules)
        #:modules ((ice-9 match)
                   (srfi srfi-26)
                   (guix build python-build-system)
+                  ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
                   (guix build utils))
        #:phases
        (modify-phases %standard-phases
@@ -545,9 +548,14 @@ virtualization library.")
                              `("GI_TYPELIB_PATH" ":" prefix
                                ,(filter identity paths))))
                          bin-files))
-             #t)))))
+             #t))
+         (add-after 'install 'glib-or-gtk-compile-schemas
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (add-after 'install 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
     (inputs
-     `(("gtk+" ,gtk+)
+     `(("dconf" ,dconf)
+       ("gtk+" ,gtk+)
        ("gtk-vnc" ,gtk-vnc)
        ("libvirt" ,libvirt)
        ("libvirt-glib" ,libvirt-glib)
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index a544680143..22a8ea0c43 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -15,7 +15,7 @@
 ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
@@ -2391,7 +2391,7 @@ composed of HTML::Element style components.")
 (define-public perl-html-lint
   (package
     (name "perl-html-lint")
-    (version "2.20")
+    (version "2.26")
     (source
      (origin
        (method url-fetch)
@@ -2399,7 +2399,7 @@ composed of HTML::Element style components.")
                            "HTML-Lint-" version ".tar.gz"))
        (sha256
         (base32
-         "15vrqjnlb0f8rib1kqdf4islqy6i33h08wy7b1bkgd550p7lfjwk"))))
+         "02vi1s4sw3hjnndxd6s91cp54iw5pg8n5kl9v0109dfxzn1n9bnl"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-html-parser" ,perl-html-parser)
@@ -2586,15 +2586,15 @@ jar in conformance with RFC 6265 <http://tools.ietf.org/html/rfc6265>.")
 (define-public perl-http-cookies
   (package
     (name "perl-http-cookies")
-    (version "6.01")
+    (version "6.04")
     (source (origin
              (method url-fetch)
              (uri (string-append
-                   "mirror://cpan/authors/id/G/GA/GAAS/HTTP-Cookies-"
+                   "mirror://cpan/authors/id/O/OA/OALDERS/HTTP-Cookies-"
                    version ".tar.gz"))
              (sha256
               (base32
-               "087bqmg22dg3vj7gssh3pcsh9y1scimkbl5h1kc8jqyfhgisvlzm"))))
+               "1m0kxcirbvbkrm2c59p1bkbvzlcdymg8fdpa7wlxijlx0xwz1iqc"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-http-message" ,perl-http-message)))
@@ -3331,7 +3331,7 @@ either mocked HTTP or a locally spawned server.")
 (define-public perl-test-www-mechanize
   (package
     (name "perl-test-www-mechanize")
-    (version "1.44")
+    (version "1.48")
     (source
      (origin
        (method url-fetch)
@@ -3339,7 +3339,7 @@ either mocked HTTP or a locally spawned server.")
                            "Test-WWW-Mechanize-" version ".tar.gz"))
        (sha256
         (base32
-         "062pj242vsc73bw11jqpap92ax9wzc9f2m4xhyp1wzrwkfchpl2q"))))
+         "1d11fx9155d5v17d5w7q3kj37b01l8yj2yb0g6b0z1vh938rrlcr"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-exception" ,perl-test-exception)))
@@ -3399,7 +3399,7 @@ testing of Catalyst applications without needing to start up a web server.")
 (define-public perl-test-www-mechanize-psgi
   (package
     (name "perl-test-www-mechanize-psgi")
-    (version "0.35")
+    (version "0.37")
     (source
      (origin
        (method url-fetch)
@@ -3407,7 +3407,7 @@ testing of Catalyst applications without needing to start up a web server.")
                            "Test-WWW-Mechanize-PSGI-" version ".tar.gz"))
        (sha256
         (base32
-         "1hih8s49zf38bisvhnhzrrj0zwyiivkrbs7nmmdqm1qqy27wv7pc"))))
+         "0c9a9w0d2whadnrich7f09w37fgq5hws4gq04zgz4jsdjcvr3qv2"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-test-pod" ,perl-test-pod)))
@@ -3471,7 +3471,7 @@ and time-saving way.")
 (define-public perl-uri-find
   (package
     (name "perl-uri-find")
-    (version "20140709")
+    (version "20160806")
     (source
      (origin
        (method url-fetch)
@@ -3479,7 +3479,7 @@ and time-saving way.")
                            "URI-Find-" version ".tar.gz"))
        (sha256
         (base32
-         "0czc4h182s7sx3k123m7qlg7yybnwxgh369hap3c3b6xgrglrhy0"))))
+         "1mk3jv8x0mcq3ajrn9garnxd0jc7sw4pkwqi88r5apqvlljs84z2"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 59188ac4db..f8efad2e57 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -54,14 +54,14 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.18.1")
+    (version "2.18.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "15fp7szmkpannx7avsynf0nv3y343qwq0fvq3rz2m2mw5wq7pnww"))))
+                "1ry8zvv6k01g9p7agg326n0ziqpqjxd49h5w1b2is6rjnpqv6k5i"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
diff --git a/gnu/packages/wget.scm b/gnu/packages/wget.scm
index 3673ad5cc4..bfcfcad230 100644
--- a/gnu/packages/wget.scm
+++ b/gnu/packages/wget.scm
@@ -21,6 +21,7 @@
 (define-module (gnu packages wget)
   #:use-module (guix licenses)
   #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages libidn)
   #:use-module (gnu packages python)
   #:use-module (gnu packages perl)
@@ -34,18 +35,15 @@
 (define-public wget
   (package
     (name "wget")
-    (version "1.19.1")
+    (version "1.19.2")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "mirror://gnu/wget/wget-"
-                          version ".tar.xz"))
-      (patches (search-patches "wget-CVE-2017-6508.patch"
-                               "wget-fix-504-test-timeout.patch"
-                               "wget-perl-5.26.patch"))
+                          version ".tar.lz"))
       (sha256
        (base32
-        "1ljcfhbkdsd0zjfm520rbl1ai62fc34i7c45sfj244l8f6b0p58c"))))
+        "01yzal7xm85543x02bij3capnigr063d6c5vc039f8n5s9d796nm"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -65,7 +63,8 @@
     (inputs
      `(("gnutls" ,gnutls)
        ("libidn2" ,libidn2)
-       ("libpsl" ,libpsl)))
+       ("libpsl" ,libpsl)
+       ("lzip" ,lzip)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("perl" ,perl)
diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm
index a1637b9d78..b4c3c194f8 100644
--- a/gnu/packages/wine.scm
+++ b/gnu/packages/wine.scm
@@ -55,14 +55,14 @@
 (define-public wine
   (package
     (name "wine")
-    (version "2.0.2")
+    (version "2.0.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://dl.winehq.org/wine/source/2.0"
                                   "/wine-" version ".tar.xz"))
               (sha256
                (base32
-                "16iwf48cfi39aqyy8131jz4x7lr551c9yc0mnks7g24j77sq867p"))))
+                "0mmyc94r5drffir8zr8jx6iawhgfzjk96fj494aa18vhz1jcc4d8"))))
     (build-system gnu-build-system)
     (native-inputs `(("pkg-config" ,pkg-config)
                      ("gettext" ,gettext-minimal)
@@ -157,7 +157,7 @@ integrate Windows applications into your desktop.")
        ,@(strip-keyword-arguments '(#:configure-flags #:system)
                                   (package-arguments wine))))
     (synopsis "Implementation of the Windows API (64-bit version)")
-    (supported-systems '("x86_64-linux"))))
+    (supported-systems '("x86_64-linux" "aarch64-linux"))))
 
 ;; TODO: This is wine development version, provided for historical reasons.
 ;; We can remove it as soon as a new stable release is out.
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 23641842e6..c91e72a5a2 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -361,7 +361,7 @@ module.")
 (define-public perl-xml-libxml
   (package
     (name "perl-xml-libxml")
-    (version "2.0128")
+    (version "2.0132")
     (source
      (origin
        (method url-fetch)
@@ -369,7 +369,7 @@ module.")
                            "XML-LibXML-" version ".tar.gz"))
        (sha256
         (base32
-         "0awgd2gjzy7kn38bqblsigikzl81xsi561phkz9f9b9v3x2vmrr6"))))
+         "0xnl281hb590i287fxpl947f1s4zl9dnvc4ajvsqi89w23im453j"))))
     (build-system perl-build-system)
     (propagated-inputs
      `(("perl-xml-namespacesupport" ,perl-xml-namespacesupport)
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 1a2bf80004..4c03a858c2 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -5170,6 +5170,12 @@ over Xlib, including:
              ;; It's not used anyway, so set it to empty.
              "--with-default-font-path="
 
+             ;; The default is to use "uname -srm", which captures the kernel
+             ;; version and makes builds non-reproducible.
+             "--with-os-name=GNU"
+
+             "--with-os-vendor=GuixSD"    ;not strictly needed, but looks nice
+
 
              ;; For the log file, etc.
              "--localstatedir=/var"
@@ -5179,17 +5185,25 @@ over Xlib, including:
 
        #:phases
        (modify-phases %standard-phases
-         (add-before
-          'configure 'pre-configure
-          (lambda _
-            (substitute* (find-files "." "\\.c$")
-              (("/bin/sh") (which "sh")))
-
-            ;; Don't try to 'mkdir /var'.
-            (substitute* "hw/xfree86/Makefile.in"
-              (("\\$\\(MKDIR_P\\).*logdir.*")
-               "true\n"))
-            #t)))))
+         (add-before 'configure 'pre-configure
+           (lambda _
+             (substitute* (find-files "." "\\.c$")
+               (("/bin/sh") (which "sh")))
+
+             ;; Don't try to 'mkdir /var'.
+             (substitute* "hw/xfree86/Makefile.in"
+               (("\\$\\(MKDIR_P\\).*logdir.*")
+                "true\n"))
+
+             ;; Strip timestamps that would otherwise end up in the 'Xorg'
+             ;; binary.
+             (substitute* "configure"
+               (("^BUILD_DATE=.*$")
+                "BUILD_DATE=19700101\n")
+               (("^BUILD_TIME=.*$")
+                "BUILD_TIME=000001\n"))
+
+             #t)))))
     (home-page "https://www.x.org/wiki/")
     (synopsis "Xorg implementation of the X Window System")
     (description
@@ -5909,7 +5923,7 @@ basic eye-candy effects.")
 (define-public xpra
   (package
     (name "xpra")
-    (version "2.1.2")
+    (version "2.1.3")
     (source
      (origin
        (method url-fetch)
@@ -5917,7 +5931,7 @@ basic eye-candy effects.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "0a5ffs6gm7j7vzqdbhfmjn9z8qxm9m9as7a1vjmjx63yxv9jqihn"))))
+         "0r0l3p59q05fmvkp3jv8vmny2v8m1vyhqkg6b9r2qgxn1kcxx7rm"))))
     (build-system python-build-system)
     (inputs `(("ffmpeg", ffmpeg)
               ("flac", flac)
diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm
index d0cc08f431..a80c520ecc 100644
--- a/gnu/tests/install.scm
+++ b/gnu/tests/install.scm
@@ -219,7 +219,7 @@ packages defined in installation-os."
                        (image  (system-disk-image
                                 (operating-system-with-gc-roots
                                  os (list target))
-                                #:disk-image-size (* 1500 MiB)
+                                #:disk-image-size 'guess
                                 #:file-system-type
                                 installation-disk-image-file-system-type)))
     (define install
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 72af6ce7b6..d175f3b76a 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -171,7 +171,7 @@ respectively."
       (setenv "GOPATH" (string-append (getcwd) ":" (getenv "GOPATH")))
       (setenv "GOPATH" (getcwd)))
     ;; Where to install compiled executable files ('commands' in Go parlance').
-    (setenv "GOBIN" out)
+    (setenv "GOBIN" (string-append out "/bin"))
     #t))
 
 (define* (build #:key import-path #:allow-other-keys)
diff --git a/guix/download.scm b/guix/download.scm
index 449521c199..1bd4875b10 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -176,28 +176,63 @@
        "ftp://mirrors.go-part.com/xorg/"
        "http://x.cs.pu.edu.tw/"
        "ftp://ftp.is.co.za/pub/x.org")            ; South Africa
-      (cpan                              ; from http://www.cpan.org/SITES.html
-       "http://mirror.ibcp.fr/pub/CPAN/"
-       "ftp://ftp.ciril.fr/pub/cpan/"
-       "ftp://artfiles.org/cpan.org/"
+      (cpan
        "http://www.cpan.org/"
-       "ftp://cpan.rinet.ru/pub/mirror/CPAN/"
-       "ftp://cpan.inode.at/"
-       "ftp://cpan.iht.co.il/"
-       "ftp://ftp.osuosl.org/pub/CPAN/"
-       "ftp://ftp.nara.wide.ad.jp/pub/CPAN/"
-       "http://mirrors.163.com/cpan/"
-       "ftp://cpan.mirror.ac.za/"
-       "http://cpan.mirrors.ionfish.org/"
-       "http://cpan.mirror.dkm.cz/pub/CPAN/"
-       "http://cpan.mirror.iphh.net/"
-       "http://mirrors.teentelecom.net/CPAN/"
-       "http://mirror.teklinks.com/CPAN/"
-       "http://cpan.weepeetelecom.be/"
-       "http://mirrors.xservers.ro/CPAN/"
-       "http://cpan.yimg.com/"
-       "http://mirror.yazd.ac.ir/cpan/"
-       "http://ftp.belnet.be/ftp.cpan.org/")
+       "http://cpan.metacpan.org/"
+       ;; A selection of HTTP mirrors from http://www.cpan.org/SITES.html.
+       ;; Europe.
+       "http://ftp.belnet.be/mirror/ftp.cpan.org/"
+       "http://mirrors.nic.cz/CPAN/"
+       "http://mirror.ibcp.fr/pub/CPAN/"
+       "http://ftp.ntua.gr/pub/lang/perl/"
+       "http://kvin.lv/pub/CPAN/"
+       "http://mirror.as43289.net/pub/CPAN/"
+       "http://cpan.cs.uu.nl/"
+       "http://cpan.uib.no/"
+       "http://cpan-mirror.rbc.ru/pub/CPAN/"
+       "http://mirror.sbb.rs/CPAN/"
+       "http://cpan.lnx.sk/"
+       "http://ftp.rediris.es/mirror/CPAN/"
+       "http://mirror.ox.ac.uk/sites/www.cpan.org/"
+       ;; Africa.
+       "http://mirror.liquidtelecom.com/CPAN/"
+       "http://cpan.mirror.ac.za/"
+       "http://mirror.is.co.za/pub/cpan/"
+       "http://cpan.saix.net/"
+       "http://mirror.ucu.ac.ug/cpan/"
+       ;; North America.
+       "http://mirrors.gossamer-threads.com/CPAN/"
+       "http://mirror.csclub.uwaterloo.ca/CPAN/"
+       "http://mirrors.ucr.ac.cr/CPAN/"
+       "http://www.msg.com.mx/CPAN/"
+       "http://mirrors.namecheap.com/CPAN/"
+       "http://mirror.uic.edu/CPAN/"
+       "http://mirror.datapipe.net/CPAN/"
+       "http://mirror.cc.columbia.edu/pub/software/cpan/"
+       "http://mirror.uta.edu/CPAN/"
+       ;; South America.
+       "http://cpan.mmgdesigns.com.ar/"
+       "http://mirror.nbtelecom.com.br/CPAN/"
+       "http://linorg.usp.br/CPAN/"
+       "http://cpan.dcc.uchile.cl/"
+       "http://mirror.cedia.org.ec/CPAN/"
+       ;; Oceania.
+       "http://cpan.mirror.serversaustralia.com.au/"
+       "http://mirror.waia.asn.au/pub/cpan/"
+       "http://mirror.as24220.net/pub/cpan/"
+       "http://cpan.lagoon.nc/pub/CPAN/"
+       "http://cpan.inspire.net.nz/"
+       ;; Asia.
+       "http://mirror.dhakacom.com/CPAN/"
+       "http://mirrors.ustc.edu.cn/CPAN/"
+       "http://ftp.cuhk.edu.hk/pub/packages/perl/CPAN/"
+       "http://kambing.ui.ac.id/cpan/"
+       "http://cpan.hostiran.ir/"
+       "http://ftp.nara.wide.ad.jp/pub/CPAN/"
+       "http://mirror.neolabs.kz/CPAN/"
+       "http://cpan.nctu.edu.tw/"
+       "http://cpan.ulak.net.tr/"
+       "http://mirrors.vinahost.vn/CPAN/")
       (cran
        ;; Arbitrary mirrors from http://cran.r-project.org/mirrors.html
        ;; This one automatically redirects to servers worldwide
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm
index 6261e3e924..2ef02c43a4 100644
--- a/guix/import/cpan.scm
+++ b/guix/import/cpan.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -115,7 +116,7 @@ or #f on failure.  MODULE should be e.g. \"Test::Script\""
   (json-fetch (string-append "https://fastapi.metacpan.org/v1/release/" name)))
 
 (define (cpan-home name)
-  (string-append "http://search.cpan.org/dist/" name))
+  (string-append "http://search.cpan.org/dist/" name "/"))
 
 (define (cpan-source-url meta)
   "Return the download URL for a module's source tarball."
@@ -242,9 +243,9 @@ META."
                        ;; have not yet had a need for cross-compiled perl
                        ;; modules, however, so we leave it out.
                        (convert-inputs '("configure" "build" "test")))
-       ,@(maybe-inputs 'inputs
+       ,@(maybe-inputs 'propagated-inputs
                        (convert-inputs '("runtime")))
-       (home-page ,(string-append "http://search.cpan.org/dist/" name))
+       (home-page ,(cpan-home name))
        (synopsis ,(assoc-ref meta "abstract"))
        (description fill-in-yourself!)
        (license ,(string->license (assoc-ref meta "license"))))))
diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm
index 858eea88e2..45a419217c 100644
--- a/guix/import/elpa.scm
+++ b/guix/import/elpa.scm
@@ -80,8 +80,11 @@ NAMES (strings)."
                     (cut string-append <> "/archive-contents"))))
     (if url
         ;; Use a relatively small TTL for the archive itself.
-        (parameterize ((%http-cache-ttl (* 6 3600)))
-          (call-with-downloaded-file url read))
+        (let* ((port (http-fetch/cached (string->uri url)
+                                        #:ttl (* 6 3600)))
+               (data (read port)))
+          (close-port port)
+          data)
         (leave (G_ "~A: currently not supported~%") repo))))
 
 (define* (call-with-downloaded-file url proc #:optional (error-thunk #f))
diff --git a/guix/import/github.scm b/guix/import/github.scm
index b249b39067..4b7d53c704 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +20,7 @@
 (define-module (guix import github)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
   #:use-module (json)
   #:use-module (guix utils)
@@ -182,7 +184,14 @@ https://github.com/settings/tokens"))
 
 (define (latest-release pkg)
   "Return an <upstream-source> for the latest release of PKG."
-  (let* ((source-uri (origin-uri (package-source pkg)))
+  (define (origin-github-uri origin)
+    (match (origin-uri origin)
+      ((? string? url)
+       url)                                       ;surely a github.com URL
+      ((urls ...)
+       (find (cut string-contains <> "github.com") urls))))
+
+  (let* ((source-uri (origin-github-uri (package-source pkg)))
          (name (package-name pkg))
          (newest-version (latest-released-version source-uri name)))
     (if newest-version
diff --git a/guix/scripts.scm b/guix/scripts.scm
index 9ff7f25548..4a7ae7baa3 100644
--- a/guix/scripts.scm
+++ b/guix/scripts.scm
@@ -67,11 +67,13 @@ reporting."
 
 (define* (parse-command-line args options seeds
                              #:key
+                             (build-options? #t)
                              (argument-handler %default-argument-handler))
-  "Parse the command-line arguments ARGS as well as arguments passed via the
-'GUIX_BUILD_OPTIONS' environment variable according to OPTIONS (a list of
-SRFI-37 options) and return the result, seeded by SEEDS.
-Command-line options take precedence those passed via 'GUIX_BUILD_OPTIONS'.
+  "Parse the command-line arguments ARGS according to OPTIONS (a list of
+SRFI-37 options) and return the result, seeded by SEEDS.  When BUILD-OPTIONS?
+is true, also pass arguments passed via the 'GUIX_BUILD_OPTIONS' environment
+variable.  Command-line options take precedence those passed via
+'GUIX_BUILD_OPTIONS'.
 
 ARGUMENT-HANDLER is called for non-option arguments, like the 'operand-proc'
 parameter of 'args-fold'."
@@ -85,7 +87,9 @@ parameter of 'args-fold'."
 
   (call-with-values
       (lambda ()
-        (parse-options-from (environment-build-options) seeds))
+        (if build-options?
+            (parse-options-from (environment-build-options) seeds)
+            (apply values seeds)))
     (lambda seeds
       ;; ARGS take precedence over what the environment variable specifies.
       (parse-options-from args seeds))))
diff --git a/guix/scripts/challenge.scm b/guix/scripts/challenge.scm
index 681394f9cf..f0693ed8df 100644
--- a/guix/scripts/challenge.scm
+++ b/guix/scripts/challenge.scm
@@ -210,6 +210,20 @@ inconclusive reports."
        (report (G_ "~a contents match:~%") item)
        (report-hashes item local narinfos)))))
 
+(define (summarize-report-list reports)
+  "Display the overall summary of REPORTS."
+  (let ((total         (length reports))
+        (inconclusive  (count comparison-report-inconclusive? reports))
+        (matches       (count comparison-report-match? reports))
+        (discrepancies (count comparison-report-mismatch? reports)))
+    (report (G_ "~h store items were analyzed:~%") total)
+    (report (G_ "  - ~h (~,1f%) were identical~%")
+            matches (* 100. (/ matches total)))
+    (report (G_ "  - ~h (~,1f%) differed~%")
+            discrepancies (* 100. (/ discrepancies total)))
+    (report (G_ "  - ~h (~,1f%) were inconclusive~%")
+            inconclusive (* 100. (/ inconclusive total)))))
+
 
 ;;;
 ;;; Command-line options.
@@ -264,7 +278,8 @@ Challenge the substitutes for PACKAGE... provided by one or more servers.\n"))
 
 (define (guix-challenge . args)
   (with-error-handling
-    (let* ((opts     (parse-command-line args %options (list %default-options)))
+    (let* ((opts     (parse-command-line args %options (list %default-options)
+                                         #:build-options? #f))
            (files    (filter-map (match-lambda
                                    (('argument . file) file)
                                    (_ #f))
@@ -292,6 +307,8 @@ Challenge the substitutes for PACKAGE... provided by one or more servers.\n"))
                                     (reports (compare-contents items urls)))
                  (for-each (cut summarize-report <> #:verbose? verbose?)
                            reports)
+                 (report "\n")
+                 (summarize-report-list reports)
 
                  (exit (cond ((any comparison-report-mismatch? reports) 2)
                              ((every comparison-report-match? reports) 0)
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index 0a9719d259..378a47d113 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -159,12 +159,8 @@ Invoke the garbage collector.\n"))
 (define (guix-gc . args)
   (define (parse-options)
     ;; Return the alist of option values.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (G_ "~A: unrecognized option~%") name))
-                (lambda (arg result)
-                  (alist-cons 'argument arg result))
-                %default-options))
+    (parse-command-line args %options (list %default-options)
+                        #:build-options? #f))
 
   (define (symlink-target file)
     (let ((s (false-if-exception (lstat file))))
diff --git a/guix/scripts/graph.scm b/guix/scripts/graph.scm
index d5be442884..78f09f181b 100644
--- a/guix/scripts/graph.scm
+++ b/guix/scripts/graph.scm
@@ -417,7 +417,7 @@ substitutes."
   ;; TRANSLATORS: Here 'dot' is the name of a program; it must not be
   ;; translated.
   (display (G_ "Usage: guix graph PACKAGE...
-Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n"))
+Emit a representation of the dependency graph of PACKAGE...\n"))
   (display (G_ "
   -b, --backend=TYPE     produce a graph with the given backend TYPE"))
   (display (G_ "
@@ -447,12 +447,9 @@ Emit a Graphviz (dot) representation of the dependencies of PACKAGE...\n"))
 
 (define (guix-graph . args)
   (with-error-handling
-    (let* ((opts     (args-fold* args %options
-                                 (lambda (opt name arg . rest)
-                                   (leave (G_ "~A: unrecognized option~%") name))
-                                 (lambda (arg result)
-                                   (alist-cons 'argument arg result))
-                                 %default-options))
+    (let* ((opts     (parse-command-line args %options
+                                         (list %default-options)
+                                         #:build-options? #f))
            (backend  (assoc-ref opts 'backend))
            (type     (assoc-ref opts 'node-type))
            (items    (filter-map (match-lambda
diff --git a/guix/scripts/hash.scm b/guix/scripts/hash.scm
index 1fa6bb8d1f..cae5d6bcdf 100644
--- a/guix/scripts/hash.scm
+++ b/guix/scripts/hash.scm
@@ -104,13 +104,8 @@ and 'hexadecimal' can be used as well).\n"))
 (define (guix-hash . args)
   (define (parse-options)
     ;; Return the alist of option values.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (G_ "unrecognized option: ~a~%")
-                         name))
-                (lambda (arg result)
-                  (alist-cons 'argument arg result))
-                %default-options))
+    (parse-command-line args %options (list %default-options)
+                        #:build-options? #f))
 
   (define (vcs-file? file stat)
     (case (stat:type stat)
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index a26f92f49c..8840b1acb5 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -792,35 +792,44 @@ be determined."
     ((? origin?)
      (and=> (origin-actual-file-name patch) basename))))
 
-(define (current-vulnerabilities*)
-  "Like 'current-vulnerabilities', but return the empty list upon networking
-or HTTP errors.  This allows network-less operation and makes problems with
-the NIST server non-fatal.."
+(define (call-with-networking-fail-safe message error-value proc)
+  "Call PROC catching any network-related errors.  Upon a networking error,
+display a message including MESSAGE and return ERROR-VALUE."
   (guard (c ((http-get-error? c)
-             (warning (G_ "failed to retrieve CVE vulnerabilities \
-from ~s: ~a (~s)~%")
+             (warning (G_ "~a: HTTP GET error for ~a: ~a (~s)~%")
+                      message
                       (uri->string (http-get-error-uri c))
                       (http-get-error-code c)
                       (http-get-error-reason c))
-             (warning (G_ "assuming no CVE vulnerabilities~%"))
-             '()))
+             error-value))
     (catch #t
-      (lambda ()
-        (current-vulnerabilities))
+      proc
       (match-lambda*
         (('getaddrinfo-error errcode)
-         (warning (G_ "failed to lookup NIST host: ~a~%")
+         (warning (G_ "~a: host lookup failure: ~a~%")
+                  message
                   (gai-strerror errcode))
-         (warning (G_ "assuming no CVE vulnerabilities~%"))
-         '())
+         error-value)
         (('tls-certificate-error args ...)
-         (warning (G_ "TLS certificate error: ~a")
+         (warning (G_ "~a: TLS certificate error: ~a")
+                  message
                   (tls-certificate-error-string args))
-         (warning (G_ "assuming no CVE vulnerabilities~%"))
-         '())
+         error-value)
         (args
          (apply throw args))))))
 
+(define-syntax-rule (with-networking-fail-safe message error-value exp ...)
+  (call-with-networking-fail-safe message error-value
+                                  (lambda () exp ...)))
+
+(define (current-vulnerabilities*)
+  "Like 'current-vulnerabilities', but return the empty list upon networking
+or HTTP errors.  This allows network-less operation and makes problems with
+the NIST server non-fatal."
+  (with-networking-fail-safe (G_ "while retrieving CVE vulnerabilities")
+                             '()
+                             (current-vulnerabilities)))
+
 (define package-vulnerabilities
   (let ((lookup (delay (vulnerabilities->lookup-proc
                         (current-vulnerabilities*)))))
@@ -860,7 +869,11 @@ from ~s: ~a (~s)~%")
 
 (define (check-for-updates package)
   "Check if there is an update available for PACKAGE."
-  (match (package-latest-release* package (force %updaters))
+  (match (with-networking-fail-safe
+          (format #f (G_ "while retrieving upstream info for '~a'")
+                  (package-name package))
+          #f
+          (package-latest-release* package (force %updaters)))
     ((? upstream-source? source)
      (when (version>? (upstream-source-version source)
                       (package-version package))
@@ -1123,12 +1136,8 @@ run the checkers on all packages.\n"))
 (define (guix-lint . args)
   (define (parse-options)
     ;; Return the alist of option values.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (G_ "~A: unrecognized option~%") name))
-                (lambda (arg result)
-                  (alist-cons 'argument arg result))
-                %default-options))
+    (parse-command-line args %options (list %default-options)
+                        #:build-options? #f))
 
   (let* ((opts (parse-options))
          (args (filter-map (match-lambda
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 0e365018a9..f972ca2ef7 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -738,7 +738,8 @@ processed, #f otherwise."
               (available (fold-packages
                           (lambda (p r)
                             (let ((n (package-name p)))
-                              (if (supported-package? p)
+                              (if (and (supported-package? p)
+                                       (not (package-superseded p)))
                                   (if regexp
                                       (if (regexp-exec regexp n)
                                           (cons p r)
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index d638d744af..852b44b38d 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -338,12 +338,8 @@ dependent packages are rebuilt: ~{~a~^ ~}~%"
 (define (guix-refresh . args)
   (define (parse-options)
     ;; Return the alist of option values.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (G_ "~A: unrecognized option~%") name))
-                (lambda (arg result)
-                  (alist-cons 'argument arg result))
-                %default-options))
+    (parse-command-line args %options (list %default-options)
+                        #:build-options? #f))
 
   (define (options->updaters opts)
     ;; Return the list of updaters to use.
diff --git a/guix/scripts/size.scm b/guix/scripts/size.scm
index eade184e67..b7b53e43fb 100644
--- a/guix/scripts/size.scm
+++ b/guix/scripts/size.scm
@@ -291,7 +291,8 @@ Report the size of PACKAGE and its dependencies.\n"))
 
 (define (guix-size . args)
   (with-error-handling
-    (let* ((opts     (parse-command-line args %options (list %default-options)))
+    (let* ((opts     (parse-command-line args %options (list %default-options)
+                                         #:build-options? #f))
            (files    (filter-map (match-lambda
                                    (('argument . file) file)
                                    (_ #f))
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 1fbeed71e8..2fd2bf8104 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -533,6 +533,20 @@ indicates that PATH is unavailable at CACHE-URL."
         (headers '((User-Agent . "GNU Guile"))))
     (build-request (string->uri url) #:method 'GET #:headers headers)))
 
+(define (at-most max-length lst)
+  "If LST is shorter than MAX-LENGTH, return it; otherwise return its
+MAX-LENGTH first elements."
+  (let loop ((len 0)
+             (lst lst)
+             (result '()))
+    (match lst
+      (()
+       (reverse result))
+      ((head . tail)
+       (if (>= len max-length)
+           (reverse result)
+           (loop (+ 1 len) tail (cons head result)))))))
+
 (define* (http-multiple-get base-uri proc seed requests
                             #:key port (verify-certificate? #t))
   "Send all of REQUESTS to the server at BASE-URI.  Call PROC for each
@@ -553,7 +567,7 @@ initial connection on which HTTP requests are sent."
       (when (file-port? p)
         (setvbuf p _IOFBF (expt 2 16)))
 
-      ;; Send all of REQUESTS in a row.
+      ;; Send REQUESTS, up to a certain number, in a row.
       ;; XXX: Do our own caching to work around inefficiencies when
       ;; communicating over TLS: <http://bugs.gnu.org/22966>.
       (let-values (((buffer get) (open-bytevector-output-port)))
@@ -562,7 +576,8 @@ initial connection on which HTTP requests are sent."
                                'http-proxy-port?)
           (set-http-proxy-port?! buffer (http-proxy-port? p)))
 
-        (for-each (cut write-request <> buffer) requests)
+        (for-each (cut write-request <> buffer)
+                  (at-most 1000 requests))
         (put-bytevector p (get))
         (force-output p))
 
diff --git a/guix/scripts/weather.scm b/guix/scripts/weather.scm
index 4c4dfac8f6..0d4a7fa26b 100644
--- a/guix/scripts/weather.scm
+++ b/guix/scripts/weather.scm
@@ -205,7 +205,8 @@ Report the availability of substitutes.\n"))
 (define (guix-weather . args)
   (with-error-handling
     (let* ((opts     (parse-command-line args %options
-                                         (list %default-options)))
+                                         (list %default-options)
+                                         #:build-options? #f))
            (urls     (assoc-ref opts 'substitute-urls))
            (systems  (match (filter-map (match-lambda
                                           (('system . system) system)
diff --git a/tests/cpan.scm b/tests/cpan.scm
index 8900716cb0..e5bd0ae3a4 100644
--- a/tests/cpan.scm
+++ b/tests/cpan.scm
@@ -94,10 +94,10 @@
                                ('base32
                                 (? string? hash)))))
                    ('build-system 'perl-build-system)
-                   ('inputs
+                   ('propagated-inputs
                     ('quasiquote
                      (("perl-test-script" ('unquote 'perl-test-script)))))
-                   ('home-page "http://search.cpan.org/dist/Foo-Bar")
+                   ('home-page "http://search.cpan.org/dist/Foo-Bar/")
                    ('synopsis "Fizzle Fuzz")
                    ('description 'fill-in-yourself!)
                    ('license 'perl-license))