summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/bioinformatics.scm9
-rw-r--r--gnu/packages/cran.scm2
-rw-r--r--gnu/packages/crypto.scm32
-rw-r--r--gnu/packages/databases.scm16
-rw-r--r--gnu/packages/glib.scm61
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnupg.scm90
-rw-r--r--gnu/packages/golang.scm6
-rw-r--r--gnu/packages/maths.scm41
-rw-r--r--gnu/packages/music.scm28
-rw-r--r--gnu/packages/patches/crypto++-fix-dos-in-asn.1-decoders.patch65
-rw-r--r--gnu/packages/perl.scm415
-rw-r--r--gnu/packages/sssd.scm15
-rw-r--r--gnu/packages/statistics.scm25
-rw-r--r--gnu/packages/tor.scm4
-rw-r--r--gnu/packages/web.scm42
-rw-r--r--gnu/packages/xml.scm6
18 files changed, 801 insertions, 61 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 060357ea8f..8f5cf46ee0 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -576,6 +576,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/crawl-upgrade-saves.patch		\
   %D%/packages/patches/crda-optional-gcrypt.patch		\
   %D%/packages/patches/crossmap-allow-system-pysam.patch	\
+  %D%/packages/patches/crypto++-fix-dos-in-asn.1-decoders.patch \
   %D%/packages/patches/clucene-contribs-lib.patch               \
   %D%/packages/patches/cube-nocheck.patch			\
   %D%/packages/patches/cursynth-wave-rand.patch			\
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index aaf8b613e0..43a00f196c 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1315,14 +1315,15 @@ splice junctions between exons.")
 (define-public bwa
   (package
     (name "bwa")
-    (version "0.7.15")
+    (version "0.7.17")
     (source (origin
               (method url-fetch)
-              (uri (string-append "mirror://sourceforge/bio-bwa/bwa-"
-                                  version ".tar.bz2"))
+              (uri (string-append
+                    "https://github.com/lh3/bwa/releases/download/v"
+                    version "/bwa-" version ".tar.bz2"))
               (sha256
                (base32
-                "0585ikg0gv0mpyw9iq0bq9n0hr95867bbv8jbzs9pk4slkpsymig"))))
+                "1zfhv2zg9v1icdlq4p9ssc8k01mca5d1bd87w71py2swfi74s6yy"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ;no "check" target
diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm
index dba294c8d7..9a27c82d21 100644
--- a/gnu/packages/cran.scm
+++ b/gnu/packages/cran.scm
@@ -410,6 +410,8 @@ any subsequent lookup as it keeps the hash table in memory.")
      "This package provides data structures that are stored on disk but
 behave (almost) as if they were in RAM by transparently mapping only a section
 in main memory.")
+    ;; error Architecture not supported.
+    (supported-systems (delete "aarch64-linux" %supported-systems))
     (license license:gpl2)))
 
 (define-public r-ffbase
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 549955d7b4..0021bee7b4 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 ng0 <ng0@infotropique.org>
 ;;; Copyright © 2016, 2017 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (gnu packages attr)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages cryptsetup)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages gnupg)
@@ -632,3 +634,33 @@ data on your platform, so the seed itself will be as random as possible.
 Networking and Cryptography library.  These libraries have a stated goal
 of improving usability, security and speed.")
     (license license:asl2.0)))
+
+(define-public crypto++
+  (package
+    (name "crypto++")
+    (version "5.6.5")
+    (source (origin
+              (method url-fetch/zipbomb)
+              (uri (string-append "https://cryptopp.com/cryptopp"
+                                  (string-join (string-split version #\.) "")
+                                  ".zip"))
+              (sha256
+               (base32
+                "0d1cqdz369ivi082k59025wvxzywvkizw7i0pf5h0a1izs3g8pm7"))
+              (patches
+               (search-patches "crypto++-fix-dos-in-asn.1-decoders.patch"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure))))
+    (native-inputs
+     `(("unzip" ,unzip)))
+    (home-page "https://cryptopp.com/")
+    (synopsis "C++ class library of cryptographic schemes")
+    (description "Crypto++ is a C++ class library of cryptographic schemes.")
+    ;; 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))))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 8ccbba2b1a..24e3364d50 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -20,6 +20,8 @@
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -934,6 +936,20 @@ widely deployed SQL database engine in the world.  The source code for SQLite
 is in the public domain.")
    (license license:public-domain)))
 
+;; This is used by Clementine.
+(define-public sqlite-with-fts3
+  (package (inherit sqlite)
+    (name "sqlite-with-fts3")
+    (arguments
+     (substitute-keyword-arguments (package-arguments sqlite)
+       ((#:configure-flags flags)
+        `(list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE "
+                              "-DSQLITE_ENABLE_UNLOCK_NOTIFY "
+                              "-DSQLITE_ENABLE_DBSTAT_VTAB "
+                              "-DSQLITE_ENABLE_FTS3 "
+                              "-DSQLITE_ENABLE_FTS3_PARENTHESIS "
+                              "-DSQLITE_ENABLE_FTS3_TOKENIZER")))))))
+
 (define-public tdb
   (package
     (name "tdb")
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 6024c7600f..cef6d7bea0 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -5,6 +5,8 @@
 ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 Petter <petter@mykolab.ch>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,6 +29,7 @@
   #:use-module (guix download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
@@ -62,7 +65,9 @@
             itstool
             libsigc++
             glibmm
-            telepathy-glib))
+            telepathy-glib
+            perl-net-dbus
+            perl-net-dbus-glib))
 
 (define dbus
   (package
@@ -745,3 +750,57 @@ programming langauage.  It also contains the utility
 reading and writing @uref{https://www.freedesktop.org/wiki/Distributions/AppStream,AppStream}
 metadata.")
     (license license:lgpl2.1+)))
+
+(define perl-net-dbus
+  (package
+    (name "perl-net-dbus")
+    (version "1.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DANBERR/Net-DBus-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0sg2w147b9r9ykfzjs7y9qxry73xkjnhnk4qf95kfv79p5nnk4c3"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
+    (inputs
+     `(("dbus" ,dbus)))
+    (propagated-inputs
+     `(("perl-xml-twig" ,perl-xml-twig)))
+    (home-page "http://search.cpan.org/dist/Net-DBus/")
+    (synopsis "Extension for the DBus bindings")
+    (description "@code{Net::DBus} provides a Perl XS API to the DBus
+inter-application messaging system.  The Perl API covers the core base level
+of the DBus APIs, not concerning itself yet with the GLib or QT wrappers.")
+    (license license:perl-license)))
+
+(define perl-net-dbus-glib
+  (package
+    (name "perl-net-dbus-glib")
+    (version "0.33.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/D/DA/DANBERR/"
+                           "Net-DBus-GLib-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1z4mbv8z0rad604xahijpg5szzi8qak07hbahh230z4jf96fkxvj"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("dbus-glib" ,dbus-glib)))
+    (home-page "http://search.cpan.org/~danberr/Net-DBus-GLib-0.33.0/")
+    (synopsis "Perl extension for the DBus GLib bindings")
+    (description "This package provides an extension to the @code{Net::DBus}
+module allowing integration with the GLib mainloop.  To integrate with the
+main loop, simply get a connection to the bus via the methods in
+@code{Net::DBus::GLib} rather than the usual @code{Net::DBus} module.  Every
+other API remains the same.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 3eb85202e3..b17a39ccf9 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -186,14 +186,14 @@ and support for SSL3 and TLS.")
 (define-public gnurl
   (package
    (name "gnurl")
-   (version "7.56.0")
+   (version "7.56.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://gnunet.org/sites/default/files/"
                                 name "-" version ".tar.bz2"))
             (sha256
              (base32
-              "18inbbqg7jygxa37x313ivc51p215fkp0ppw3xznk6d5ci4bs8fg"))))
+              "0phbs3lw0a561fqsj4fyngmpaznjlnx4qx9n9xzglivy69r9j1n8"))))
    (build-system gnu-build-system)
    (outputs '("out"
               "doc"))                             ; 1.5 MiB of man3 pages
diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index e8a44f20b8..1d69e48d13 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -53,6 +53,9 @@
   #:use-module (gnu packages security-token)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages tor)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -875,3 +878,90 @@ designed to provide an object-oriented method for interacting with GnuPG,
 being able to perform functions such as but not limited to encrypting,
 signing, decryption, verification, and key-listing parsing.")
     (license license:perl-license)))
+
+(define-public parcimonie
+  (package
+    (name "parcimonie")
+    (version "0.10.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://gaffer.ptitcanardnoir.org/"
+                                  "intrigeri/files/parcimonie/App-Parcimonie-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1kf891117s1f3k6lxvbjdb21va9gxh29vlp9bd664ssgw266rcyb"))))
+    (build-system perl-build-system)
+    (inputs
+     `(("gnupg" ,gnupg-1)    ; This is the version used by perl-gnupg-interface
+       ("perl-config-general" ,perl-config-general)
+       ("perl-clone" ,perl-clone)
+       ("perl-data" ,perl-data)
+       ("perl-exporter-tiny" ,perl-exporter-tiny)
+       ("perl-file-homedir" ,perl-file-homedir)
+       ("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-file-which" ,perl-file-which)
+       ("perl-getopt-long-descriptive" ,perl-getopt-long-descriptive)
+       ("perl-gnupg-interface" ,perl-gnupg-interface)
+       ("perl-ipc-system-simple" ,perl-ipc-system-simple)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-libintl-perl" ,perl-libintl-perl) ; Locale::TextDomain
+       ("perl-lwp-online" ,perl-lwp-online)
+       ("perl-module-build" ,perl-module-build)
+       ("perl-module-pluggable-object" ,perl-module-pluggable)
+       ("perl-moo" ,perl-moo)
+       ("perl-moox-handlesvia" ,perl-moox-handlesvia)
+       ("perl-moox-late" ,perl-moox-late)
+       ("perl-moox-options" ,perl-moox-options)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-net-dbus" ,perl-net-dbus)
+       ("perl-net-dbus-glib" ,perl-net-dbus-glib)
+       ("perl-path-tiny" ,perl-path-tiny)
+       ("perl-test-most" ,perl-test-most)
+       ("perl-test-trap" ,perl-test-trap)
+       ("perl-time-duration" ,perl-time-duration)
+       ("perl-time-duration-parse" ,perl-time-duration-parse)
+       ("perl-try-tiny" ,perl-try-tiny)
+       ("perl-type-tiny" ,perl-type-tiny)
+       ("perl-types-path-tiny" ,perl-types-path-tiny)
+       ("perl-unicode-linebreak" ,perl-unicode-linebreak)
+       ("perl-xml-parser" ,perl-xml-parser)
+       ("perl-xml-twig" ,perl-xml-twig)
+       ("torsocks" ,torsocks)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Needed for using gpg-connect-agent during tests.
+         (add-before 'check 'set-HOME
+           (lambda _ (setenv "HOME" "/tmp") #t))
+         (add-before 'install 'fix-references
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "lib/App/Parcimonie/GnuPG/Interface.pm"
+               (("gpg2") "gpg")
+               ;; Skip check whether dependencies are in the PATH
+               (("defined which.*") "")
+               (("call\\('parcimonie-torified-gpg'\\)")
+                (string-append "call('" (assoc-ref outputs "out")
+                               "/bin/parcimonie-torified-gpg')")))
+             (substitute* "bin/parcimonie-torified-gpg"
+               (("torsocks") (string-append (assoc-ref inputs "torsocks")
+                                            "/bin/torsocks")))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (perllib (string-append out "/lib/perl5/site_perl/"
+                                            ,(package-version perl))))
+               (wrap-program (string-append out "/bin/parcimonie")
+                 `("PERL5LIB" ":"
+                   prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
+               #t))))))
+    (home-page "https://gaffer.ptitcanardnoir.org/intrigeri/code/parcimonie/")
+    (synopsis "Incrementally refreshes a GnuPG keyring")
+    (description "Parcimonie incrementaly refreshes a GnuPG keyring in a way
+that makes it hard to correlate the keyring content to an individual, and
+makes it hard to locate an individual based on an identifying subset of her
+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+)))
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index b1967b3f1a..f97f6f1711 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
 ;;; Copyright © 2016 Andy Wingo <wingo@igalia.com>
 ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
@@ -198,6 +198,7 @@ programming language.  Designed primarily for systems programming, it is a
 compiled, statically typed language in the tradition of C and C++, with
 garbage collection, various safety features and in the style of communicating
 sequential processes (CSP) concurrent programming features added.")
+    (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
     (license license:bsd-3)))
 
 (define-public go-1.9
@@ -372,6 +373,7 @@ sequential processes (CSP) concurrent programming features added.")
                  (copy-recursively "../" output))))))))
     (native-inputs
      `(("go" ,go-1.4)
-       ,@(package-native-inputs go-1.4)))))
+       ,@(package-native-inputs go-1.4)))
+    (supported-systems %supported-systems)))
 
 (define-public go go-1.9)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9af6448621..c854a5a599 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -1460,7 +1460,7 @@ September 2004}")
 (define-public petsc
   (package
     (name "petsc")
-    (version "3.7.6")
+    (version "3.8.0")
     (source
      (origin
       (method url-fetch)
@@ -1468,11 +1468,10 @@ September 2004}")
       (uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/"
                           "petsc-lite-" version ".tar.gz"))
       (sha256
-       (base32 "1y3f5jjq0v5b62i3sabp4kp5mgfyp3vnk0dxhwkrhpypax77nzxh"))))
+       (base32 "1lajbk3c29hnh83v6cbmm3a8wv6bdykh0p70kwrr4vrnizalk88s"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("python" ,python-2)
-       ("perl" ,perl)))
+     `(("python" ,python-2)))
     (inputs
      `(("gfortran" ,gfortran)
        ("lapack" ,lapack)
@@ -1594,7 +1593,7 @@ scientific applications modeled by partial differential equations.")
 (define-public slepc
   (package
     (name "slepc")
-    (version "3.7.4")
+    (version "3.8.0")
     (source
      (origin
        (method url-fetch)
@@ -1602,7 +1601,7 @@ scientific applications modeled by partial differential equations.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "12pbl8yd6r8k9xjlr1qw25rs0k1acgic7hw1s6l6bhiv9s285drg"))))
+         "0qyrsdndfdw2g0jmj9iskxj3j20zlkplhv26288s079dhm7cr365"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("python" ,python-2)))
@@ -2308,7 +2307,7 @@ schemes.")
 (define-public p4est
   (package
     (name "p4est")
-    (version "1.1")
+    (version "2.0")
     (source
      (origin
        (method url-fetch)
@@ -2316,7 +2315,7 @@ schemes.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "0faina2h5qsx3m2izbzaj9bbakma1krbbjmq43wrp1hcbyijflqb"))))
+         "16h267z256kxcxfjs390qqzv19hr58vrj4x8lndb7alnk2vca8n5"))))
     (build-system gnu-build-system)
     (inputs
      `(("fortran" ,gfortran)
@@ -3093,7 +3092,7 @@ revised simplex and the branch-and-bound methods.")
 (define-public dealii
   (package
     (name "dealii")
-    (version "8.5.0")
+    (version "8.5.1")
     (source
      (origin
        (method url-fetch)
@@ -3101,7 +3100,7 @@ revised simplex and the branch-and-bound methods.")
                            "download/v" version "/dealii-" version ".tar.gz"))
        (sha256
         (base32
-         "0yfpy4zh8j7hmqakw17zdlmvfdcmhwgs66wcb716plc4y7v3z4g6"))
+         "1bh9rsmkrg0zi70n27b11djmac9lximghsiy7mg7w7x544n82gnk"))
        (modules '((guix build utils)))
        (snippet
         ;; Remove bundled sources: UMFPACK, TBB, muParser, and boost
@@ -3409,28 +3408,6 @@ structured and unstructured grid problems.")))
 supports compressed MAT files, as well as newer (version 7.3) MAT files.")
     (license license:bsd-2)))
 
-(define-public libhilbert
-  (package
-    (name "libhilbert")
-    (version "0.2-1")
-    (source
-     (origin
-       (method url-fetch)
-       (uri (string-append "http://web.cs.dal.ca/~chamilto/hilbert/"
-                           "libhilbert-" version ".tar.gz"))
-       (sha256
-        (base32
-         "0v48x8405dj95gjn2saja4bzhw86d6zl6d3dg8h7dzac2qr97s34"))))
-    (build-system gnu-build-system)
-    (home-page "http://web.cs.dal.ca/~chamilto/hilbert")
-    (synopsis "Hilbert indices for multidimensional data")
-    (description "The libhilbert library can efficiently calculate Hilbert
-curves and order-preserving representations of Hilbert curve indices that use
-the same amount of space as the original point representation.  This is useful
-when using the Gilbert curve as a space filling curve through a
-high-dimensional space where not all demensions have the same cardinality.")
-    (license license:lgpl2.1+)))
-
 (define-public vc
   (package
     (name "vc")
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 6aca39cedd..2fd38362c2 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
 ;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org>
 ;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3334,3 +3335,30 @@ notation and includes basic support for digital audio.")
     (description "Sorcer is a wavetable LV2 plugin synthesizer, targeted at
 the electronic or dubstep genre.")
     (license license:gpl3+)))
+
+(define-public libechonest
+  (package
+    (name "libechonest")
+    (version "2.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "git://anongit.kde.org/libechonest.git")
+                    (commit version)))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+               (base32
+                "0xbavf9f355dl1d3qv59x4ryypqrdanh9xdvw2d0q66l008crdkq"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:tests? #f                      ; Tests require Internet access
+       #:configure-flags '("-DBUILD_WITH_QT4=OFF")))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qjson" ,qjson)))
+    (home-page "https://projects.kde.org/projects/playground/libs/libechonest")
+    (synopsis "C++/Qt classes to interface with The Echo Nest API")
+    (description "@code{libechonest} is a collection of C++/Qt classes
+designed to make a developer's life easy when trying to use the APIs provided
+by The Echo Nest.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/patches/crypto++-fix-dos-in-asn.1-decoders.patch b/gnu/packages/patches/crypto++-fix-dos-in-asn.1-decoders.patch
new file mode 100644
index 0000000000..88b2e7f25a
--- /dev/null
+++ b/gnu/packages/patches/crypto++-fix-dos-in-asn.1-decoders.patch
@@ -0,0 +1,65 @@
+From 3d9181d7bdd8e491f745dbc9e34bd20b6f6da069 Mon Sep 17 00:00:00 2001
+From: Gergely Nagy <ngg@tresorit.com>
+Date: Wed, 14 Dec 2016 13:19:01 +0100
+Subject: [PATCH] Fix possible DoS in ASN.1 decoders (CVE-2016-9939)
+
+---
+ asn.cpp | 10 ++++++++++
+ asn.h   |  2 ++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/asn.cpp b/asn.cpp
+index 297ff010..2e923ef7 100644
+--- a/asn.cpp
++++ b/asn.cpp
+@@ -123,6 +123,8 @@ size_t BERDecodeOctetString(BufferedTransformation &bt, SecByteBlock &str)
+ 	size_t bc;

+ 	if (!BERLengthDecode(bt, bc))

+ 		BERDecodeError();

++	if (bc > bt.MaxRetrievable())

++		BERDecodeError();

+ 

+ 	str.New(bc);

+ 	if (bc != bt.Get(str, bc))

+@@ -139,6 +141,8 @@ size_t BERDecodeOctetString(BufferedTransformation &bt, BufferedTransformation &
+ 	size_t bc;

+ 	if (!BERLengthDecode(bt, bc))

+ 		BERDecodeError();

++	if (bc > bt.MaxRetrievable())

++		BERDecodeError();

+ 

+ 	bt.TransferTo(str, bc);

+ 	return bc;

+@@ -161,6 +165,8 @@ size_t BERDecodeTextString(BufferedTransformation &bt, std::string &str, byte as
+ 	size_t bc;

+ 	if (!BERLengthDecode(bt, bc))

+ 		BERDecodeError();

++	if (bc > bt.MaxRetrievable())

++		BERDecodeError();

+ 

+ 	SecByteBlock temp(bc);

+ 	if (bc != bt.Get(temp, bc))

+@@ -188,6 +194,10 @@ size_t BERDecodeBitString(BufferedTransformation &bt, SecByteBlock &str, unsigne
+ 	size_t bc;

+ 	if (!BERLengthDecode(bt, bc))

+ 		BERDecodeError();

++	if (bc == 0)

++		BERDecodeError();

++	if (bc > bt.MaxRetrievable())

++		BERDecodeError();

+ 

+ 	byte unused;

+ 	if (!bt.Get(unused))

+diff --git a/asn.h b/asn.h
+index ed9de52c..33f0dd09 100644
+--- a/asn.h
++++ b/asn.h
+@@ -498,6 +498,8 @@ void BERDecodeUnsigned(BufferedTransformation &in, T &w, byte asnTag = INTEGER,
+ 	bool definite = BERLengthDecode(in, bc);

+ 	if (!definite)

+ 		BERDecodeError();

++	if (bc > in.MaxRetrievable())

++		BERDecodeError();

+ 

+ 	SecByteBlock buf(bc);

+ 

diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 438ccdf3f9..044f93e818 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -382,6 +382,27 @@ fields pragma, consider this module discouraged in favor of the lighter-weight
 parent.")
     (license (package-license perl))))  ;See README
 
+(define-public perl-browser-open
+  (package
+    (name "perl-browser-open")
+    (version "0.04")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CF/CFRANKS/Browser-Open-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0rv80n5ihy9vnrzsc3l7wlk8880cwabiljrydrdnxq1gg0lk3sxc"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Browser-Open/")
+    (synopsis "Open a browser in a given URL")
+    (description "The functions exported by this module allow you to open URLs
+in the user's browser.  A set of known commands per OS-name is tested for
+presence, and the first one found is executed.  With an optional parameter,
+all known commands are checked.")
+    (license (package-license perl))))
+
 (define-public perl-b-hooks-endofscope
   (package
     (name "perl-b-hooks-endofscope")
@@ -406,6 +427,28 @@ parent.")
 compiling the surrounding scope.")
     (license (package-license perl))))
 
+(define-public perl-b-keywords
+  (package
+    (name "perl-b-keywords")
+    (version "1.15")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RU/RURBAN/B-Keywords-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1nhdplmd0y69lnwyajg3anhk6pm13nm6qzm05nzpz8zl7j7fzlk5"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/B-Keywords/")
+    (synopsis "Lists of reserved barewords and symbol names")
+    (description "@code{B::Keywords} supplies several arrays of exportable
+keywords: @code{@@Scalars, @@Arrays, @@Hashes, @@Filehandles, @@Symbols,
+@@Functions, @@Barewords, @@TieIOMethods, @@UNIVERSALMethods and
+@@ExporterSymbols}.")
+    ;; GPLv2 only
+    (license gpl2)))
+
 (define-public perl-benchmark-timer
   (package
     (name "perl-benchmark-timer")
@@ -649,6 +692,28 @@ is captured while being passed through to the original file handles.")
 to test the installed perl for compatibility with his modules.")
     (license (package-license perl))))
 
+(define-public perl-carp-always
+  (package
+    (name "perl-carp-always")
+    (version "0.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/F/FE/FERREIRA/Carp-Always-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0i2rifkr7ybfcdsqana52487z7vxp2l5qdra0f6ik0ddhn6rzii1"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-base" ,perl-test-base)))
+    (home-page "http://search.cpan.org/dist/Carp-Always")
+    (synopsis "Warns and dies noisily with stack backtraces/")
+    (description "This module is meant as a debugging aid.  It can be used to
+make a script complain loudly with stack backtraces when @code{warn()}-ing or
+@code{die()}ing.")
+    (license (package-license perl))))
+
 (define-public perl-carp-assert
   (package
     (name "perl-carp-assert")
@@ -1181,6 +1246,27 @@ objects.")
                               "Clone-" version "/"))
     (license (package-license perl))))
 
+(define-public perl-clone-pp
+  (package
+    (name "perl-clone-pp")
+    (version "1.07")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/Clone-PP-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "15dkhqvih6rx9dnngfwwljcm9s8afb0nbyl2vdvhd8frnw4y31dz"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Clone-PP/")
+    (synopsis "Recursively copy Perl datatypes")
+    (description "This module provides a general-purpose @code{clone} function
+to make deep copies of Perl data structures.  It calls itself recursively to
+copy nested hash, array, scalar and reference types, including tied variables
+and objects.")
+    (license (package-license perl))))
+
 (define-public perl-common-sense
   (package
     (name "perl-common-sense")
@@ -1489,6 +1575,38 @@ functions and data structures for processing and analysing genomic and
 bioinformatics data.")
     (license gpl3+)))
 
+(define-public perl-data
+  (package
+    (name "perl-data")
+    (version "0.002009")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/M/MA/MATTP/"
+                           "Data-Perl-" version ".tar.gz"))
+       (sha256
+        (base32
+         "12vgqdjbfqf2qfg21x22wg88xnwxfbw2ki3qzcb3nb0chwjj4axn"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-deep" ,perl-test-deep)
+       ("perl-test-output" ,perl-test-output)
+       ("perl-test-fatal" ,perl-test-fatal)))
+    (inputs
+     `(("perl-class-method-modifiers" ,perl-class-method-modifiers)
+       ("perl-list-moreutils" ,perl-list-moreutils)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-role-tiny" ,perl-role-tiny)
+       ("perl-strictures" ,perl-strictures)))
+    (home-page "http://search.cpan.org/dist/Data-Perl/")
+    (synopsis "Base classes wrapping fundamental Perl data types")
+    (description "Collection of classes that wrap fundamental data types that
+exist in Perl.  These classes and methods as they exist today are an attempt
+to mirror functionality provided by Moose's Native Traits.  One important
+thing to note is all classes currently do no validation on constructor
+input.")
+    (license (package-license perl))))
+
 (define-public perl-data-compare
   (package
     (name "perl-data-compare")
@@ -1661,6 +1779,57 @@ The maths behind this is unfortunately fiddly, hence this module.")
 @end itemize")
     (license perl-license)))
 
+(define-public perl-data-printer
+  (package
+    (name "perl-data-printer")
+    (version "0.40")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GA/GARU/Data-Printer-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0njjh8zp5afc4602jrnmg89icj7gfsil6i955ypcqxc2gl830sb0"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-clone-pp" ,perl-clone-pp)
+       ("perl-file-homedir" ,perl-file-homedir)
+       ("perl-package-stash" ,perl-package-stash)
+       ("perl-sort-naturally" ,perl-sort-naturally)))
+    (home-page "http://search.cpan.org/dist/Data-Printer/")
+    (synopsis "Colored pretty-print of Perl data structures and objects")
+    (description "Display Perl variables and objects on screen, properly
+formatted (to be inspected by a human).")
+    (license (package-license perl))))
+
+(define-public perl-data-record
+  (package
+    (name "perl-data-record")
+    (version "0.02")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/O/OV/OVID/"
+                           "Data-Record-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1gwyhjwg4lrnfsn8wb6r8msb4yh0y4wca4mz3z120xbnl9nycshx"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-test-exception" ,perl-test-exception)
+       ("perl-module-build" ,perl-module-build)))
+    (propagated-inputs
+     `(("perl-sub-uplevel" ,perl-sub-uplevel)))
+    (home-page "http://search.cpan.org/dist/Data-Record/")
+    (synopsis "Conditionally split data into records")
+    (description "This Perl module allows you to split data into records by
+not only specifying what you wish to split the data on, but also by specifying
+an \"unless\" regular expression.  If the text in question matches the
+\"unless\" regex, it will not be split there.  This allows us to do things
+like split on newlines unless newlines are embedded in quotes.")
+    (license (package-license perl))))
+
 (define-public perl-data-stag
   (package
     (name "perl-data-stag")
@@ -3012,6 +3181,30 @@ It is really just boilerplate code that you would have written yourself.")
 changes made to any file.")
     (license artistic2.0)))
 
+(define-public perl-file-configdir
+  (package
+    (name "perl-file-configdir")
+    (version "0.018")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "File-ConfigDir-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1xpzrlya0gskk7lm6gppyfwbk0swv0n6ssgp629575dk5l49z2rf"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-file-homedir" ,perl-file-homedir)
+       ("perl-list-moreutils" ,perl-list-moreutils)))
+    (home-page "http://search.cpan.org/dist/File-ConfigDir/")
+    (synopsis "Get directories of configuration files")
+    (description "This module is a helper for installing, reading and finding
+configuration file locations.  @code{File::ConfigDir} is a module to help out
+when Perl modules (especially applications) need to read and store
+configuration files from more than one location.")
+    (license (package-license perl))))
+
 (define-public perl-file-copy-recursive
   (package
     (name "perl-file-copy-recursive")
@@ -3449,7 +3642,7 @@ single-letter approach, is provided but not enabled by default.")
 (define-public perl-getopt-long-descriptive
   (package
     (name "perl-getopt-long-descriptive")
-    (version "0.098")
+    (version "0.100")
     (source
      (origin
        (method url-fetch)
@@ -3457,10 +3650,11 @@ single-letter approach, is provided but not enabled by default.")
                            "Getopt-Long-Descriptive-" version ".tar.gz"))
        (sha256
         (base32
-         "08lphvqshcajvvd6z4rvcda6rx5kz8pysrsip4nfv2mbks95p9ma"))))
+         "1dpz5nhg5glmrpq46nkc90dg19cfqfjspqwhfvihsqyi229yfl8l"))))
     (build-system perl-build-system)
     (native-inputs
-     `(("perl-test-fatal" ,perl-test-fatal)
+     `(("perl-cpan-meta-check" ,perl-cpan-meta-check)
+       ("perl-test-fatal" ,perl-test-fatal)
        ("perl-test-warnings" ,perl-test-warnings)))
     (propagated-inputs
      `(("perl-params-validate" ,perl-params-validate)
@@ -4126,6 +4320,37 @@ version.")
 one: logging, exceptions, and translations.")
     (license (package-license perl))))
 
+(define-public perl-libintl-perl
+  (package
+    (name "perl-libintl-perl")
+    (version "1.28")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/G/GU/GUIDO/"
+                           "libintl-perl-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1gafrfvicjclqlz6i62jx2iqbq878yn3ws86waz2sqbd3gxz5svv"))))
+    (build-system perl-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-perl-search-path
+           (lambda _
+             ;; Work around "dotless @INC" build failure.
+             (setenv "PERL5LIB" (string-append (getcwd) ":"
+                                               (getenv "PERL5LIB")))
+             #t)))))
+    (propagated-inputs
+     `(("perl-file-sharedir" ,perl-file-sharedir)))
+    (home-page "http://search.cpan.org/dist/libintl-perl/")
+    (synopsis "High-level interface to Uniforum message translation")
+    (description "This package is an internationalization library for Perl
+that aims to be compatible with the Uniforum message translations system as
+implemented for example in GNU gettext.")
+    (license gpl3+)))
+
 (define-public perl-lingua-translit
   (package
     (name "perl-lingua-translit")
@@ -4197,7 +4422,7 @@ intersections, unions, unique elements, complements and many more.")
 (define-public perl-list-moreutils
   (package
     (name "perl-list-moreutils")
-    (version "0.402")
+    (version "0.426")
     (source
      (origin
        (method url-fetch)
@@ -4205,20 +4430,54 @@ intersections, unions, unique elements, complements and many more.")
                            "List-MoreUtils-" version ".tar.gz"))
        (sha256
         (base32
-         "1i0k7kqg1m9nf2xvq9l4lyf38fxvi9952vmmvhcdaf3qa95pxb24"))))
+         "1dj77b42cp5ziq9y38fff458avjwzm88kn076svcvl660h6n21cf"))))
     (build-system perl-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-perl-search-path
+           (lambda _
+             ;; Work around "dotless @INC" build failure.
+             (setenv "PERL5LIB"
+                     (string-append (getcwd) ":"
+                                    (getenv "PERL5LIB")))
+             #t)))))
     (native-inputs
      `(("perl-config-autoconf" ,perl-config-autoconf)
-       ("perl-inc-latest" ,perl-inc-latest)
-       ("perl-test-writevariants" ,perl-test-writevariants)))
+       ("perl-test-leaktrace" ,perl-test-leaktrace)))
     (propagated-inputs
-     `(("perl-exporter-tiny" ,perl-exporter-tiny)))
+     `(("perl-exporter-tiny" ,perl-exporter-tiny)
+       ("perl-list-moreutils-xs" ,perl-list-moreutils-xs)))
     (home-page "http://search.cpan.org/dist/List-MoreUtils/")
     (synopsis "Provide the stuff missing in List::Util")
     (description "List::MoreUtils provides some trivial but commonly needed
 functionality on lists which is not going to go into List::Util.")
     (license (package-license perl))))
 
+(define-public perl-list-moreutils-xs
+  (package
+    (name "perl-list-moreutils-xs")
+    (version "0.426")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/List-MoreUtils-XS-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0ss0a0f9yqs7gd9qamhaxq27mvn573ljg28ry1gy2pxbz56byzbc"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-config-autoconf" ,perl-config-autoconf)
+       ("perl-inc-latest" ,perl-inc-latest)
+       ("perl-test-leaktrace" ,perl-test-leaktrace)))
+    (home-page "http://search.cpan.org/dist/List-MoreUtils-XS")
+    (synopsis "Provide the stuff missing in List::Util in XS")
+    (description "@code{List::MoreUtils::XS} provides some trivial but
+commonly needed functionality on lists which is not going to go into
+@code{List::Util}.")
+    (license asl2.0)))
+
 (define-public perl-list-someutils
   (package
     (name "perl-list-someutils")
@@ -5292,6 +5551,95 @@ constraint with coercion to load the class.")
     (description "Contains the MooX and MooX::Role packages.")
     (license perl-license)))
 
+(define-public perl-moox-cmd
+  (package
+    (name "perl-moox-cmd")
+    (version "0.015")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/MooX-Cmd-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0145ha8vnc6sbg82ps96wj716bznq2qamm657bia9ji2yxhbnsam"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-list-moreutils" ,perl-list-moreutils)))
+    (propagated-inputs
+     `(("perl-module-pluggable" ,perl-module-pluggable)
+       ("perl-module-runtime" ,perl-module-runtime)
+       ("perl-moo" ,perl-moo)
+       ("perl-package-stash" ,perl-package-stash)
+       ("perl-params-util" ,perl-params-util)
+       ("perl-regexp-common" ,perl-regexp-common)))
+    (home-page "http://search.cpan.org/dist/MooX-Cmd")
+    (synopsis "Giving an easy Moo style way to make command organized CLI apps")
+    (description "This package eases the writing of command line utilities,
+accepting commands and subcommands and so on.  These commands can form a tree,
+which is mirrored in the package structure.  On invocation, each command along
+the path through the tree (starting from the top-level command through to the
+most specific one) is instantiated.")
+    (license (package-license perl))))
+
+(define-public perl-moox-configfromfile
+  (package
+    (name "perl-moox-configfromfile")
+    (version "0.008")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "MooX-ConfigFromFile-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zrpz4mzngnhaap6988is0w0aarilfj4kb1yc8hvfqna69lywac0"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-hash-merge" ,perl-hash-merge)
+       ("perl-json" ,perl-json)
+       ("perl-moox-cmd" ,perl-moox-cmd)))
+    (propagated-inputs
+     `(("perl-config-any" ,perl-config-any)
+       ("perl-file-configdir" ,perl-file-configdir)
+       ("perl-file-find-rule" ,perl-file-find-rule)
+       ("perl-hash-merge" ,perl-hash-merge)
+       ("perl-moo", perl-moo)
+       ("perl-moox-file-configdir" ,perl-moox-file-configdir)
+       ("perl-namespace-clean" ,perl-namespace-clean)))
+    (home-page "http://search.cpan.org/dist/MooX-ConfigFromFile/")
+    (synopsis "Moo eXtension for initializing objects from config file")
+    (description "This module is intended to easily load initialization values
+for attributes on object construction from an appropriate config file.  The
+building is done in @code{MooX::ConfigFromFile::Role}---using
+@code{MooX::ConfigFromFile} ensures that the role is applied.")
+    (license (package-license perl))))
+
+(define-public perl-moox-file-configdir
+  (package
+    (name "perl-moox-file-configdir")
+    (version "0.006")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/R/RE/REHSACK/"
+                           "MooX-File-ConfigDir-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0f808sq3627ymgf63zwgh705vv0nhwclxp89clhx8yl6hybcv7kx"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-file-configdir" ,perl-file-configdir)
+       ("perl-moo" ,perl-moo)
+       ("perl-namespace-clean" ,perl-namespace-clean)))
+    (home-page "http://search.cpan.org/dist/MooX-File-ConfigDir/")
+    (synopsis "Moo eXtension for @code{File::ConfigDir}")
+    (description "This module is a helper for easily finding configuration
+file locations.  This information can be used to find a suitable place for
+installing configuration files or for finding any piece of settings.")
+    (license (package-license perl))))
+
 (define-public perl-moox-handlesvia
   (package
     (name "perl-moox-handlesvia")
@@ -5369,6 +5717,57 @@ MooX::HandlesVia.
 @end enumerate")
     (license perl-license)))
 
+(define-public perl-moox-options
+  (package
+    (name "perl-moox-options")
+    (version "4.023")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://cpan/authors/id/C/CE/CELOGEEK/"
+                           "MooX-Options-" version ".tar.gz"))
+       (sha256
+        (base32
+         "14kz51hybxx8vcm4wg36f0qa64aainw7i2sqmqxg20c3qvczyvj2"))))
+    (build-system perl-build-system)
+    (native-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-import-into" ,perl-import-into)
+       ("perl-module-build" ,perl-module-build)
+       ("perl-moo" ,perl-moo)
+       ("perl-moose" ,perl-moose)
+       ("perl-moox-cmd" ,perl-moox-cmd)
+       ("perl-namespace-clean" ,perl-namespace-clean)
+       ("perl-role-tiny" ,perl-role-tiny)
+       ("perl-test-requires" ,perl-test-requires)
+       ("perl-test-trap" ,perl-test-trap)
+       ("perl-test-pod" ,perl-test-pod)
+       ("perl-try-tiny" ,perl-try-tiny)))
+    (propagated-inputs
+     `(("perl-config-any" ,perl-config-any)
+       ("perl-moox-configfromfile" ,perl-moox-configfromfile)
+       ("perl-data-record" ,perl-data-record)
+       ("perl-file-configdir" ,perl-file-configdir)
+       ("perl-file-find-rule" ,perl-file-find-rule)
+       ("perl-file-sharedir" ,perl-file-sharedir)
+       ("perl-getopt-long-descriptive" ,perl-getopt-long-descriptive)
+       ("perl-json-maybexs" ,perl-json-maybexs)
+       ("perl-libintl-perl" ,perl-libintl-perl)
+       ("perl-moox-configfromfile" ,perl-moox-configfromfile)
+       ("perl-moox-file-configdir" ,perl-moox-file-configdir)
+       ("perl-path-class" ,perl-path-class)
+       ("perl-regexp-common" ,perl-regexp-common)
+       ("perl-term-size-any" ,perl-term-size-any)
+       ("perl-unicode-linebreak" ,perl-unicode-linebreak)))
+    (home-page "http://search.cpan.org/dist/MooX-Options/")
+    (synopsis "Explicit Options eXtension for Object Class")
+    (description "Create a command line tool with your Mo, Moo, Moose objects.
+You have an @code{option} keyword to replace the usual @code{has} to
+explicitly use your attribute on the command line.  The @code{option} keyword
+takes additional parameters and uses @code{Getopt::Long::Descriptive} to
+generate a command line tool.")
+    (license (package-license perl))))
+
 (define-public perl-moox-types-mooselike
   (package
     (name "perl-moox-types-mooselike")
diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm
index 7d52ebab4c..95811d612b 100644
--- a/gnu/packages/sssd.scm
+++ b/gnu/packages/sssd.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -51,14 +52,14 @@
 (define-public ding-libs
   (package
     (name "ding-libs")
-    (version "0.6.0")
+    (version "0.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://releases.pagure.org/SSSD/ding-libs/"
                                   "ding-libs-" version ".tar.gz"))
               (sha256
                (base32
-                "1bczkvq7cblp75kqn6r2d7j5x7brfw6wxirzc6d2rkyb80gj2jkn"))))
+                "1h97mx2jdv4caiz4r7y8rxfsq78fx0k4jjnfp7x2s7xqvqks66d3"))))
     (build-system gnu-build-system)
     (home-page "https://pagure.io/SSSD/ding-libs/")
     (synopsis "Libraries for SSSD")
@@ -80,14 +81,14 @@ fundamental object types for C.")
 (define-public sssd
   (package
     (name "sssd")
-    (version "1.15.3")
+    (version "1.16.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://releases.pagure.org/SSSD/sssd/"
                                   "sssd-" version ".tar.gz"))
               (sha256
                (base32
-                "0d36dmzqdjfpspm9fw4zx0kh0qcx60p9vchxvcajn4qf3k3qsl3f"))))
+                "03wllgbxxz2zv14dcqr8d2xssppi7ibckh0rlky8gvsw6vjsd0f5"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -168,7 +169,7 @@ fundamental object types for C.")
     (description "SSSD is a system daemon.  Its primary function is to provide
 access to identity and authentication remote resource through a common
 framework that can provide caching and offline support to the system.  It
-provides PAM and NSS modules, and in the future will D-BUS based interfaces
-for extended user information.  It also provides a better database to store
-local users as well as extended user data.")
+provides PAM and NSS modules, and in the future will support D-BUS based
+interfaces for extended user information.  It also provides a better database
+to store local users as well as extended user data.")
     (license license:gpl3+)))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index b3ebd5abbd..96b390185a 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016, 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
+;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -5442,3 +5443,27 @@ the least concave majorant (LCM), for the half-normal and correlation
 distributions, and for computing empirical higher criticism (HC) scores and
 the corresponding decision threshold.")
     (license license:gpl3+)))
+
+(define-public r-forcats
+  (package
+    (name "r-forcats")
+    (version "0.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (cran-uri "forcats" version))
+       (sha256
+        (base32
+         "1mvwkynvvgz2vi8dyz11x7xrp53kadjawjcja34hwk1d89qf7g5m"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-magrittr" ,r-magrittr)
+       ("r-tibble" ,r-tibble)))
+    (home-page "http://forcats.tidyverse.org")
+    (synopsis "Tools for working with factors")
+    (description "This package provides helpers for reordering factor
+levels (including moving specified levels to front, ordering by first
+appearance, reversing, and randomly shuffling), and tools for modifying factor
+levels (including collapsing rare levels into other, \"anonymizing\", and
+manually \"recoding\").")
+    (license license:gpl3)))
diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm
index e44bab54a0..85e7e8779e 100644
--- a/gnu/packages/tor.scm
+++ b/gnu/packages/tor.scm
@@ -45,14 +45,14 @@
 (define-public tor
   (package
     (name "tor")
-    (version "0.3.1.7")
+    (version "0.3.1.8")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://dist.torproject.org/tor-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "13y0v4zfla0vziy9kkahmhrwylv32ianjikcr46mwbxvji4dvx8x"))))
+               "18dinpj03d036rashlad16lv7j2hba8gg742z07l37x5c242kxkx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--enable-gcc-hardening"
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 9fc47969ae..04886e06e3 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2017 Petter <petter@mykolab.ch>
+;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -90,6 +91,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages valgrind)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages curl)
@@ -510,6 +512,46 @@ easily construct JSON objects in C, output them as JSON formatted strings and
 parse JSON formatted strings back into the C representation of JSON objects.")
     (license l:x11)))
 
+(define-public qjson
+  (package
+    (name "qjson")
+    (version "0.9.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/flavio/qjson/archive/"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1m0h4rajj99hv9w4i381a8x81lxiv167lxk10ncvphpkfxs624p8"))))
+    (build-system cmake-build-system)
+    (arguments
+     ;; The tests require a X server
+     `(#:configure-flags '("-DQJSON_BUILD_TESTS=ON"
+                           "-DCMAKE_CXX_FLAGS=-std=gnu++11 -fPIC")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-broken-test
+           (lambda _
+             ;; FIXME: One test fails.  See
+             ;; https://github.com/flavio/qjson/issues/105
+             (substitute* "tests/scanner/testscanner.cpp"
+               (("QTest::newRow\\(\"too large exponential\"\\)" line)
+                (string-append "//" line)))
+             #t))
+         (add-before 'check 'render-offscreen
+           (lambda _ (setenv "QT_QPA_PLATFORM" "offscreen") #t)))))
+    (inputs
+     `(("qtbase" ,qtbase)))
+    (home-page "http://qjson.sourceforge.net")
+    (synopsis "Library that maps JSON data to QVariant objects")
+    (description "QJson is a Qt-based library that maps JSON data to
+@code{QVariant} objects.  JSON arrays will be mapped to @code{QVariantList}
+instances, while JSON's objects will be mapped to @code{QVariantMap}.")
+    ;; Only version 2.1 of the license
+    (license l:lgpl2.1)))
+
 (define-public krona-tools
   (package
    (name "krona-tools")
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 13eb608144..23641842e6 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -12,7 +12,7 @@
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
-;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
@@ -57,14 +57,14 @@
 (define-public expat
   (package
     (name "expat")
-    (version "2.2.2")
+    (version "2.2.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/expat/expat/"
                                  version "/expat-" version ".tar.bz2"))
              (sha256
               (base32
-               "0ik0r39ala9c6hj4kxrk933klgwkzlkbrfhvhaykx8l1rwgr2xj3"))))
+               "17h1fb9zvqvf0sr78j211bngc6jpql5wzar8fg9b52jzjvdqbb83"))))
     (build-system gnu-build-system)
     (home-page "http://www.libexpat.org/")
     (synopsis "Stream-oriented XML parser library written in C")