summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rw-r--r--HACKING6
-rw-r--r--THANKS1
-rw-r--r--build-aux/check-available-binaries.scm47
-rw-r--r--build-aux/check-final-inputs-self-contained.scm7
-rw-r--r--config-daemon.ac5
-rw-r--r--configure.ac4
-rw-r--r--doc/guix.texi46
-rw-r--r--gnu-system.am33
-rw-r--r--gnu/artwork.scm6
-rw-r--r--gnu/packages/aarddict.scm69
-rw-r--r--gnu/packages/admin.scm25
-rw-r--r--gnu/packages/algebra.scm11
-rw-r--r--gnu/packages/audio.scm750
-rw-r--r--gnu/packages/avahi.scm2
-rw-r--r--gnu/packages/base.scm47
-rw-r--r--gnu/packages/bioinformatics.scm136
-rw-r--r--gnu/packages/certs.scm118
-rw-r--r--gnu/packages/complexity.scm5
-rw-r--r--gnu/packages/compression.scm19
-rw-r--r--gnu/packages/ebook.scm6
-rw-r--r--gnu/packages/freedesktop.scm46
-rw-r--r--gnu/packages/ftp.scm46
-rw-r--r--gnu/packages/games.scm39
-rw-r--r--gnu/packages/gnome.scm22
-rw-r--r--gnu/packages/gnuzilla.scm28
-rw-r--r--gnu/packages/graphics.scm89
-rw-r--r--gnu/packages/gtk.scm28
-rw-r--r--gnu/packages/java.scm52
-rw-r--r--gnu/packages/libffcall.scm2
-rw-r--r--gnu/packages/linux-libre-i686.conf209
-rw-r--r--gnu/packages/linux-libre-x86_64.conf217
-rw-r--r--gnu/packages/linux.scm168
-rw-r--r--gnu/packages/lisp.scm304
-rw-r--r--gnu/packages/lua.scm4
-rw-r--r--gnu/packages/mail.scm87
-rw-r--r--gnu/packages/maths.scm25
-rw-r--r--gnu/packages/moreutils.scm68
-rw-r--r--gnu/packages/node.scm4
-rw-r--r--gnu/packages/openssl.scm4
-rw-r--r--gnu/packages/package-management.scm31
-rw-r--r--gnu/packages/patches/chmlib-inttypes.patch60
-rw-r--r--gnu/packages/patches/cpufrequtils-fix-aclocal.patch46
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0822.patch154
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch33
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch35
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch56
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch32
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch26
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch26
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch27
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch220
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch89
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch25
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch41
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch54
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch53
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch52
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch219
-rw-r--r--gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch104
-rw-r--r--gnu/packages/patches/luajit-no_ldconfig.patch31
-rw-r--r--gnu/packages/patches/luajit-symlinks.patch25
-rw-r--r--gnu/packages/patches/openexr-missing-samples.patch23
-rw-r--r--gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch16
-rw-r--r--gnu/packages/patches/weex-vacopy.patch13
-rw-r--r--gnu/packages/pdf.scm31
-rw-r--r--gnu/packages/perl.scm140
-rw-r--r--gnu/packages/pumpio.scm68
-rw-r--r--gnu/packages/python.scm444
-rw-r--r--gnu/packages/qt.scm52
-rw-r--r--gnu/packages/rdf.scm70
-rw-r--r--gnu/packages/ruby.scm4
-rw-r--r--gnu/packages/samba.scm7
-rw-r--r--gnu/packages/scheme.scm81
-rw-r--r--gnu/packages/sdl.scm14
-rw-r--r--gnu/packages/statistics.scm108
-rw-r--r--gnu/packages/video.scm232
-rw-r--r--gnu/packages/web.scm26
-rw-r--r--gnu/packages/wxwidgets.scm97
-rw-r--r--gnu/packages/xdisorg.scm30
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/base.scm3
-rw-r--r--gnu/services/xorg.scm34
-rw-r--r--gnu/system/grub.scm6
-rw-r--r--guix/build-system/perl.scm4
-rw-r--r--guix/build/download.scm84
-rw-r--r--guix/build/perl-build-system.scm59
-rw-r--r--guix/derivations.scm19
-rw-r--r--guix/download.scm10
-rw-r--r--guix/gexp.scm220
-rw-r--r--guix/http-client.scm4
-rw-r--r--guix/import/cpan.scm77
-rw-r--r--guix/licenses.scm15
-rw-r--r--guix/packages.scm7
-rw-r--r--guix/scripts/archive.scm16
-rw-r--r--guix/scripts/build.scm17
-rw-r--r--guix/scripts/environment.scm18
-rw-r--r--guix/scripts/package.scm24
-rw-r--r--guix/scripts/system.scm36
-rw-r--r--guix/store.scm8
-rw-r--r--guix/tests.scm18
-rw-r--r--guix/ui.scm33
-rw-r--r--m4/guix.m458
-rw-r--r--test-env.in9
-rw-r--r--tests/builders.scm8
-rw-r--r--tests/cpan.scm14
-rw-r--r--tests/derivations.scm19
-rw-r--r--tests/gexp.scm51
-rw-r--r--tests/guix-package.sh13
-rw-r--r--tests/packages.scm5
-rw-r--r--tests/ui.scm40
-rw-r--r--tests/union.scm6
112 files changed, 5853 insertions, 767 deletions
diff --git a/AUTHORS b/AUTHORS
index c156186378..47eb50c1a7 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -20,6 +20,7 @@ alphabetical order):
          Alírio Eyng <alirioeyng@gmail.com>
          Joshua Grant <tadni@riseup.net>
          Raimon Grau <raimonster@gmail.com>
+          David Hashe <david.hashe@dhashe.com>
          Nikita Karetnikov <nikita@karetnikov.org>
          Julien Lepiller <julien@lepiller.eu>
         Aljosha Papsch <misc@rpapsch.de>
diff --git a/HACKING b/HACKING
index 0231c7d84d..e8f6cc4208 100644
--- a/HACKING
+++ b/HACKING
@@ -25,12 +25,6 @@ Run ‘./bootstrap’ to download the Nix daemon source code and to generate the
 build system infrastructure using autoconf.  It reports an error if an
 inappropriate version of the above packages is being used.
 
-The ‘bootstrap’ script, among other things, invokes ‘git submodule update’; if
-you didn’t run it, you may get the following error:
-
-  make: *** No rule to make target `nix/libstore/schema.sql', needed by
-  `nix/libstore/schema.sql.hh'
-
 If you get an error like this one:
 
   configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES
diff --git a/THANKS b/THANKS
index 14f38bfd2b..a7944c0f99 100644
--- a/THANKS
+++ b/THANKS
@@ -22,6 +22,7 @@ infrastructure help:
           Brandon Invergo <brandon@gnu.org>
 	  Jeffrin Jose <ahiliation@yahoo.co.in>
 	     Kete <kete@ninthfloor.org>
+           Daniel Kochmański <dkochmanski@hellsgate.pl>
              Alex Kost <alezost@gmail.com>
 	  Matthew Lien <bluet@bluet.org>
 	    Niels Möller <nisse@lysator.liu.se>
diff --git a/build-aux/check-available-binaries.scm b/build-aux/check-available-binaries.scm
index 7ac4352839..bc6207eb2a 100644
--- a/build-aux/check-available-binaries.scm
+++ b/build-aux/check-available-binaries.scm
@@ -29,27 +29,28 @@
              (srfi srfi-26))
 
 (with-store store
-  (let* ((native (append-map (lambda (system)
-                               (map (cut package-derivation store <> system)
-                                    (list %bootstrap-tarballs emacs)))
-                             %supported-systems))
-         (cross  (map (cut package-cross-derivation store
-                           %bootstrap-tarballs <>)
-                      '("mips64el-linux-gnuabi64")))
-         (total  (append native cross)))
-    (define (warn item system)
-      (format (current-error-port) "~a (~a) is not substitutable~%"
-              item system)
-      #f)
+  (parameterize ((%graft? #f))
+    (let* ((native (append-map (lambda (system)
+                                 (map (cut package-derivation store <> system)
+                                      (list %bootstrap-tarballs emacs)))
+                               %supported-systems))
+           (cross  (map (cut package-cross-derivation store
+                             %bootstrap-tarballs <>)
+                        '("mips64el-linux-gnuabi64")))
+           (total  (append native cross)))
+      (define (warn item system)
+        (format (current-error-port) "~a (~a) is not substitutable~%"
+                item system)
+        #f)
 
-    (set-build-options store #:use-substitutes? #t)
-    (let* ((substitutable? (substitution-oracle store total))
-           (result         (every (lambda (drv)
-                                    (let ((out (derivation->output-path drv)))
-                                      (or (substitutable? out)
-                                          (warn out (derivation-system drv)))))
-                                  total)))
-      (when result
-        (format (current-error-port) "~a packages found substitutable~%"
-                (length total)))
-      (exit result))))
+      (set-build-options store #:use-substitutes? #t)
+      (let* ((substitutable? (substitution-oracle store total))
+             (result         (every (lambda (drv)
+                                      (let ((out (derivation->output-path drv)))
+                                        (or (substitutable? out)
+                                            (warn out (derivation-system drv)))))
+                                    total)))
+        (when result
+          (format (current-error-port) "~a packages found substitutable~%"
+                  (length total)))
+        (exit result)))))
diff --git a/build-aux/check-final-inputs-self-contained.scm b/build-aux/check-final-inputs-self-contained.scm
index ca7e8030b4..ba85c876d2 100644
--- a/build-aux/check-final-inputs-self-contained.scm
+++ b/build-aux/check-final-inputs-self-contained.scm
@@ -73,8 +73,9 @@ refer to the bootstrap tools."
 
 ;; Entry point.
 (with-store store
-  (set-build-options store #:use-substitutes? #t)
+  (parameterize ((%graft? #f))
+    (set-build-options store #:use-substitutes? #t)
 
-  (for-each (cut test-final-inputs store <>)
-            %supported-systems))
+    (for-each (cut test-final-inputs store <>)
+              %supported-systems)))
 
diff --git a/config-daemon.ac b/config-daemon.ac
index 32520acbf2..5f83d45a4c 100644
--- a/config-daemon.ac
+++ b/config-daemon.ac
@@ -127,9 +127,8 @@ if test "x$guix_build_daemon" = "xyes"; then
   fi
 
   dnl Temporary directory used to store the daemon's data.
-  AC_MSG_CHECKING([for unit test root])
-  GUIX_TEST_ROOT="`pwd`/test-tmp"
-  AC_MSG_RESULT([$GUIX_TEST_ROOT])
+  GUIX_TEST_ROOT_DIRECTORY
+  GUIX_TEST_ROOT="$ac_cv_guix_test_root"
   AC_SUBST([GUIX_TEST_ROOT])
 
   AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
diff --git a/configure.ac b/configure.ac
index 6f75fa3d7d..8291b0c5d0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.68)
-AC_INIT([GNU Guix], [0.8.1], [bug-guix@gnu.org], [guix],
+AC_INIT([GNU Guix], [0.8.2], [bug-guix@gnu.org], [guix],
   [http://www.gnu.org/software/guix/])
 AC_CONFIG_AUX_DIR([build-aux])
 
@@ -50,6 +50,8 @@ AC_SUBST([guix_localstatedir])
 AC_SUBST([guix_sysconfdir])
 AC_SUBST([guix_sbindir])
 
+GUIX_CHECK_FILE_NAME_LIMITS
+
 dnl We require the pkg.m4 set of macros from pkg-config.
 dnl Make sure it's available.
 m4_pattern_forbid([PKG_CHECK_MODULES])
diff --git a/doc/guix.texi b/doc/guix.texi
index 0c6b1e4384..bd8091ae51 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -1894,12 +1894,20 @@ parameter.
 
 @defvr {Scheme Variable} perl-build-system
 This variable is exported by @code{(guix build-system perl)}.  It
-implements the standard build procedure for Perl packages, which
-consists in running @code{perl Makefile.PL PREFIX=/gnu/store/@dots{}},
-followed by @code{make} and @code{make install}.
-
-The initial @code{perl Makefile.PL} invocation passes flags specified by
-the @code{#:make-maker-flags} parameter.
+implements the standard build procedure for Perl packages, which either
+consists in running @code{perl Build.PL --prefix=/gnu/store/@dots{}},
+followed by @code{Build} and @code{Build install}; or in running
+@code{perl Makefile.PL PREFIX=/gnu/store/@dots{}}, followed by
+@code{make} and @code{make install}; depending on which of
+@code{Build.PL} or @code{Makefile.PL} is present in the package
+distribution.  Preference is given to the former if both @code{Build.PL}
+and @code{Makefile.PL} exist in the package distribution.  This
+preference can be reversed by specifying @code{#t} for the
+@code{#:make-maker?} parameter.
+
+The initial @code{perl Makefile.PL} or @code{perl Build.PL} invocation
+passes flags specified by the @code{#:make-maker-flags} or
+@code{#:module-build-flags} parameter, respectively.
 
 Which Perl package is used can be specified with @code{#:perl}.
 @end defvr
@@ -2358,9 +2366,10 @@ Run @var{mval}, a monadic value in the store monad, in @var{store}, an
 open store connection.
 @end deffn
 
-@deffn {Monadic Procedure} text-file @var{name} @var{text}
+@deffn {Monadic Procedure} text-file @var{name} @var{text} [@var{references}]
 Return as a monadic value the absolute file name in the store of the file
-containing @var{text}, a string.
+containing @var{text}, a string.  @var{references} is a list of store items that the
+resulting text file refers to; it defaults to the empty list.
 @end deffn
 
 @deffn {Monadic Procedure} interned-file @var{file} [@var{name}] @
@@ -2579,7 +2588,7 @@ below allow you to do that (@pxref{The Store Monad}, for more
 information about monads.)
 
 @deffn {Monadic Procedure} gexp->derivation @var{name} @var{exp} @
-       [#:system (%current-system)] [#:target #f] [#:inputs '()] @
+       [#:system (%current-system)] [#:target #f] [#:graft? #t] @
        [#:hash #f] [#:hash-algo #f] @
        [#:recursive? #f] [#:env-vars '()] [#:modules '()] @
        [#:module-path @var{%load-path}] @
@@ -2590,12 +2599,15 @@ Return a derivation @var{name} that runs @var{exp} (a gexp) with
 is true, it is used as the cross-compilation target triplet for packages
 referred to by @var{exp}.
 
-Make @var{modules} available in the evaluation context of @var{EXP};
-@var{MODULES} is a list of names of Guile modules searched in
-@var{MODULE-PATH} to be copied in the store, compiled, and made available in
+Make @var{modules} available in the evaluation context of @var{exp};
+@var{modules} is a list of names of Guile modules searched in
+@var{module-path} to be copied in the store, compiled, and made available in
 the load path during the execution of @var{exp}---e.g., @code{((guix
 build utils) (guix build gnu-build-system))}.
 
+@var{graft?} determines whether packages referred to by @var{exp} should be grafted when
+applicable.
+
 When @var{references-graphs} is true, it must be a list of tuples of one of the
 following forms:
 
@@ -3077,9 +3089,10 @@ guix import pypi itsdangerous
 Import meta-data from @uref{https://www.metacpan.org/, MetaCPAN}.
 Information is taken from the JSON-formatted meta-data provided through
 @uref{https://api.metacpan.org/, MetaCPAN's API} and includes most
-relevant information.  License information should be checked closely.
-Package dependencies are included but may in some cases needlessly
-include core Perl modules.
+relevant information, such as module dependencies.  License information
+should be checked closely.  If Perl is available in the store, then the
+@code{corelist} utility will be used to filter core modules out of the
+list of dependencies.
 
 The command command below imports meta-data for the @code{Acme::Boolean}
 Perl module:
@@ -4621,7 +4634,8 @@ theme to use.  In that case, @var{theme-name} specifies the name of the
 theme.
 
 Last, @var{session} is a list of @code{<session-type>} objects denoting the
-available session types that can be chosen from the log-in screen.
+available session types that can be chosen from the log-in screen.  The first
+one is chosen by default.
 @end deffn
 
 @defvr {Scheme Variable} %default-sessions
diff --git a/gnu-system.am b/gnu-system.am
index 6849b9c618..a705204381 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -1,6 +1,6 @@
 # GNU Guix --- Functional package management for GNU
 # Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-# Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+# Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 # Copyright © 2013, 2014, 2015 Mark H Weaver <mhw@netris.org>
 #
 # This file is part of GNU Guix.
@@ -25,6 +25,7 @@ GNU_SYSTEM_MODULES =				\
   gnu.scm					\
   gnu/artwork.scm				\
   gnu/packages.scm				\
+  gnu/packages/aarddict.scm			\
   gnu/packages/abiword.scm			\
   gnu/packages/acct.scm				\
   gnu/packages/acl.scm				\
@@ -55,6 +56,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/calcurse.scm			\
   gnu/packages/ccache.scm			\
   gnu/packages/cdrom.scm			\
+  gnu/packages/certs.scm			\
   gnu/packages/cflow.scm			\
   gnu/packages/check.scm			\
   gnu/packages/cmake.scm			\
@@ -97,6 +99,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/fltk.scm				\
   gnu/packages/fonts.scm			\
   gnu/packages/fontutils.scm			\
+  gnu/packages/freedesktop.scm			\
   gnu/packages/freeipmi.scm			\
   gnu/packages/ftp.scm				\
   gnu/packages/fribidi.scm			\
@@ -190,6 +193,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/miscfiles.scm			\
   gnu/packages/mit-krb5.scm			\
   gnu/packages/moe.scm				\
+  gnu/packages/moreutils.scm			\
   gnu/packages/mpd.scm				\
   gnu/packages/mp3.scm				\
   gnu/packages/mpi.scm				\
@@ -229,6 +233,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/popt.scm				\
   gnu/packages/pth.scm				\
   gnu/packages/pulseaudio.scm			\
+  gnu/packages/pumpio.scm			\
   gnu/packages/pretty-print.scm			\
   gnu/packages/protobuf.scm			\
   gnu/packages/python.scm			\
@@ -257,6 +262,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/socat.scm			\
   gnu/packages/ssh.scm				\
   gnu/packages/stalonetray.scm			\
+  gnu/packages/statistics.scm			\
   gnu/packages/swig.scm				\
   gnu/packages/sxiv.scm				\
   gnu/packages/synergy.scm			\
@@ -289,6 +295,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/wine.scm				\
   gnu/packages/wordnet.scm			\
   gnu/packages/wv.scm				\
+  gnu/packages/wxwidgets.scm			\
   gnu/packages/xfig.scm				\
   gnu/packages/xiph.scm				\
   gnu/packages/xml.scm				\
@@ -357,6 +364,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/binutils-ld-new-dtags.patch		\
   gnu/packages/patches/binutils-loongson-workaround.patch	\
   gnu/packages/patches/cdparanoia-fpic.patch			\
+  gnu/packages/patches/chmlib-inttypes.patch			\
   gnu/packages/patches/clucene-pkgconfig.patch			\
   gnu/packages/patches/cmake-fix-tests.patch			\
   gnu/packages/patches/coreutils-dummy-man.patch		\
@@ -366,6 +374,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/cpio-CVE-2014-9112-pt4.patch		\
   gnu/packages/patches/cpio-CVE-2014-9112-pt5.patch		\
   gnu/packages/patches/cpio-gets-undeclared.patch		\
+  gnu/packages/patches/cpufrequtils-fix-aclocal.patch		\
   gnu/packages/patches/cssc-gets-undeclared.patch               \
   gnu/packages/patches/cssc-missing-include.patch               \
   gnu/packages/patches/clucene-contribs-lib.patch               \
@@ -410,6 +419,23 @@ dist_patch_DATA =						\
   gnu/packages/patches/guix-test-networking.patch		\
   gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
   gnu/packages/patches/hop-bigloo-4.0b.patch			\
+  gnu/packages/patches/icecat-CVE-2015-0822.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch		\
+  gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch		\
   gnu/packages/patches/irrlicht-mesa-10.patch			\
   gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
   gnu/packages/patches/kmod-module-directory.patch		\
@@ -430,6 +456,8 @@ dist_patch_DATA =						\
   gnu/packages/patches/libvpx-vp9-out-of-bounds-access.patch	\
   gnu/packages/patches/lm-sensors-hwmon-attrs.patch		\
   gnu/packages/patches/lua51-liblua-so.patch                    \
+  gnu/packages/patches/luajit-no_ldconfig.patch			\
+  gnu/packages/patches/luajit-symlinks.patch			\
   gnu/packages/patches/luit-posix.patch				\
   gnu/packages/patches/m4-gets-undeclared.patch			\
   gnu/packages/patches/make-impure-dirs.patch			\
@@ -449,6 +477,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/nvi-assume-preserve-path.patch		\
   gnu/packages/patches/nvi-dbpagesize-binpower.patch		\
   gnu/packages/patches/nvi-db4.patch				\
+  gnu/packages/patches/openexr-missing-samples.patch		\
   gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
   gnu/packages/patches/ots-no-include-missing-file.patch	\
   gnu/packages/patches/patchelf-page-size.patch			\
@@ -469,6 +498,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/python-fix-tests.patch			\
   gnu/packages/patches/python-libffi-mips-n32-fix.patch		\
   gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch	\
+  gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch	\
   gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch	\
   gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
   gnu/packages/patches/qt4-tests.patch				\
@@ -496,6 +526,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/vpnc-script.patch			\
   gnu/packages/patches/vtk-mesa-10.patch			\
   gnu/packages/patches/w3m-fix-compile.patch			\
+  gnu/packages/patches/weex-vacopy.patch			\
   gnu/packages/patches/wicd-urwid-1.3.patch			\
   gnu/packages/patches/wmctrl-64-fix.patch			\
   gnu/packages/patches/xf86-video-ark-remove-mibstore.patch	\
diff --git a/gnu/artwork.scm b/gnu/artwork.scm
index d14fda44bd..c3b1695ba7 100644
--- a/gnu/artwork.scm
+++ b/gnu/artwork.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -32,9 +32,9 @@
     (method git-fetch)
     (uri (git-reference
           (url "git://git.savannah.gnu.org/guix/guix-artwork.git")
-          (commit "94e6111")))
+          (commit "61ae7c8")))
     (sha256
      (base32
-      "0aax85mygpq4lbyn8sriafikyg54yss3lisin6pwkvlvp23a3v1j"))))
+      "102fxk2l6b0ibry3n430q8ljhwrnbml9qgalzkz6v09r7sx6a532"))))
 
 ;;; artwork.scm ends here
diff --git a/gnu/packages/aarddict.scm b/gnu/packages/aarddict.scm
new file mode 100644
index 0000000000..33bd7b4ac9
--- /dev/null
+++ b/gnu/packages/aarddict.scm
@@ -0,0 +1,69 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages aarddict)
+  #:use-module ((guix licenses) #:select (gpl3))
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system python)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt))
+
+(define-public aarddict
+  (package
+    (name "aarddict")
+    (version "0.9.3")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "https://github.com/aarddict/desktop/archive/"
+                          version ".tar.gz"))
+      (sha256
+       (base32
+        "12h7m0z7nd7rg8avpi9syd265k0rhh4vbdh464nq0jzdg8m9p28c"))))
+    (build-system python-build-system)
+    (inputs
+     `(("python2-pyicu" ,python2-pyicu)
+       ("python2-pyqt-4" ,python2-pyqt-4)
+       ("python2-setuptools" ,python2-setuptools)
+       ("python2-simplejson" ,python2-simplejson)
+       ("python2-sip" ,python2-sip)))
+    (arguments
+     `(#:python ,python-2 ; incompatible with Python 3
+       #:phases
+        (alist-cons-before
+         'build 'configure
+         ;; Force data into the output instead of the python package.
+         (lambda* (#:key outputs #:allow-other-keys)
+           (let ((out (assoc-ref outputs "out")))
+             (substitute* "setup.py"
+               (("sys.prefix") (string-append "'" out "'")))))
+         %standard-phases)))
+    (home-page "http://aarddict.org/index.html")
+    (synopsis
+     "Dictionary program and offline Wikipedia reader")
+    (description
+     "Aard Dictionary is a free, fast, easy to use word lookup program that
+looks up words fast even with huge dictionaries like English Wikipedia;
+looks up words in multiple dictionaries in multiple languages without
+switching;
+works great as offline Wikipedia reader;
+is keyboard navigation friendly;
+has efficient, highly compressed dictionary data storage format with
+ability to verify data integrity built-in.")
+    (license gpl3)))
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 6244a87f94..c779ade2b4 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -375,14 +375,14 @@ connection alive.")
 (define-public isc-dhcp
   (package
     (name "isc-dhcp")
-    (version "4.3.0")
+    (version "4.3.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://ftp.isc.org/isc/dhcp/"
                                   version "/dhcp-" version ".tar.gz"))
               (sha256
                (base32
-                "12mydvj6x3zcl3gla06bywfkkrgg03g66fijs94mwb7kbiym3dm7"))))
+                "1w4s7sni1m9223ya8m2a64lr62845c6xlraprjf8zfx6lylbqv16"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-after
@@ -409,9 +409,9 @@ connection alive.")
 
                      (system* "tar" "xf" "bind.tar.gz")
                      (for-each patch-shebang
-                               (find-files "bind-9.9.5" ".*"))
+                               (find-files "bind-9.9.5-P1" ".*"))
                      (zero? (system* "tar" "cf" "bind.tar.gz"
-                                     "bind-9.9.5"))))
+                                     "bind-9.9.5-P1"))))
                  (alist-cons-after
                   'install 'post-install
                   (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -420,6 +420,7 @@ connection alive.")
                     (let* ((out       (assoc-ref outputs "out"))
                            (libexec   (string-append out "/libexec"))
                            (coreutils (assoc-ref inputs "coreutils"))
+                           (inetutils (assoc-ref inputs "inetutils"))
                            (net-tools (assoc-ref inputs "net-tools"))
                            (sed       (assoc-ref inputs "sed")))
                       (substitute* "client/scripts/linux"
@@ -431,17 +432,19 @@ connection alive.")
                       (copy-file "client/scripts/linux"
                                  (string-append libexec "/dhclient-script"))
 
-                      (wrap-program (string-append libexec "/dhclient-script")
-                                    `("PATH" ":" prefix
-                                      ,(map (lambda (dir)
-                                              (string-append dir "/bin:"
-                                                             dir "/sbin"))
-                                            (list net-tools coreutils sed))))))
+                      (wrap-program
+                          (string-append libexec "/dhclient-script")
+                        `("PATH" ":" prefix
+                          ,(map (lambda (dir)
+                                  (string-append dir "/bin:"
+                                                 dir "/sbin"))
+                                (list inetutils net-tools coreutils sed))))))
                   %standard-phases))))
 
     (native-inputs `(("perl" ,perl)))
 
-    (inputs `(("net-tools" ,net-tools)
+    (inputs `(("inetutils" ,inetutils)
+              ("net-tools" ,net-tools)
               ("iproute" ,iproute)
 
               ;; When cross-compiling, we need the cross Coreutils and sed.
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index fb59928e02..2fe26a4878 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -84,22 +84,23 @@ solve the shortest vector problem.")
 (define-public pari-gp
   (package
    (name "pari-gp")
-   (version "2.7.2")
+   (version "2.7.3")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
                   version ".tar.gz"))
-            (sha256 (base32
-                     "1b0hzyhafpxhmiljyhnsh6c27ydsvb2599fshwq2fjfm96awjxmc"))))
+            (sha256
+              (base32
+                "02k54m7p47r54lgxqanxvf7pdrss17n8if1qwk5wx0j1px22j0rq"))))
    (build-system gnu-build-system)
    (inputs `(("gmp" ,gmp)
              ("perl" ,perl)
              ("readline" ,readline)))
    (arguments
     '(#:make-flags '("gp")
-      ;; FIXME: building the documentation requires tex; once this is available,
-      ;; replace "gp" by "all"
+      ;; FIXME: building the documentation requires tex; once this is
+      ;; available, replace "gp" by "all"
       #:test-target "dobench"
       #:phases
       (alist-replace
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 9227367dcd..52feea3701 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,17 +24,34 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system waf)
+  #:use-module (guix build-system trivial)
+  #:use-module (guix build-system cmake)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages boost)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
-  #:use-module (gnu packages glib) ;dbus
+  #:use-module (gnu packages file)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages mp3) ;taglib
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)  ;libsndfile, libsamplerate
   #:use-module (gnu packages python)
+  #:use-module (gnu packages rdf)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages which)
   #:use-module (gnu packages xiph)
-  #:use-module (gnu packages xml))
+  #:use-module (gnu packages xml)
+  #:use-module (srfi srfi-1))
 
 (define-public aubio
   (package
@@ -59,7 +77,6 @@
        #:python ,python-2))
     (inputs
      `(("jack" ,jack-1)
-       ("libuuid" ,util-linux)
        ("libsndfile" ,libsndfile)
        ("libsamplerate" ,libsamplerate)
        ("fftwf" ,fftwf)))
@@ -74,6 +91,153 @@ attacks, performing pitch detection, tapping the beat and producing MIDI
 streams from live audio.")
     (license license:gpl3+)))
 
+(define-public ardour
+  (package
+    (name "ardour")
+    (version "3.5.403")
+    (source (origin
+              ;; The project only provides tarballs upon individual request
+              ;; (or after payment) so we take the code from git.
+              (method git-fetch)
+              (uri (git-reference
+                    (url "git://git.ardour.org/ardour/ardour.git")
+                    (commit version)))
+              (snippet
+               '(call-with-output-file
+                    "libs/ardour/revision.cc"
+                  (lambda (port)
+                    (format port "#include \"ardour/revision.h\"
+namespace ARDOUR { const char* revision = \"3.5-403-gec2cb31\" ; }"))))
+              (sha256
+               (base32
+                "01b0wxh0wlxjfz5j8gcwwqhxc6q2kn4njz2fcmzv9fr3xaya5dbp"))
+              (file-name (string-append name "-" version))))
+    (build-system waf-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:python ,python-2))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("aubio" ,aubio)
+       ("lrdf" ,lrdf)
+       ("boost" ,boost)
+       ("atkmm" ,atkmm)
+       ("cairomm" ,cairomm)
+       ("gtkmm" ,gtkmm-2)
+       ("glibmm" ,glibmm)
+       ("libart-lgpl" ,libart-lgpl)
+       ("libgnomecanvasmm" ,libgnomecanvasmm)
+       ("pangomm" ,pangomm)
+       ("liblo" ,liblo)
+       ("libsndfile" ,libsndfile)
+       ("libsamplerate" ,libsamplerate)
+       ("libxml2" ,libxml2)
+       ("libogg" ,libogg)
+       ("libvorbis" ,libvorbis)
+       ("flac" ,flac)
+       ("lv2" ,lv2)
+       ("vamp" ,vamp)
+       ("curl" ,curl)
+       ("fftw" ,fftw)
+       ("fftwf" ,fftwf)
+       ("jack" ,jack-1)
+       ("serd" ,serd)
+       ("sord" ,sord)
+       ("sratom" ,sratom)
+       ("suil" ,suil)
+       ("lilv" ,lilv)
+       ("rasqal" ,rasqal)
+       ("raptor2" ,raptor2)
+       ("redland" ,redland)
+       ("rubberband" ,rubberband)
+       ("taglib" ,taglib)
+       ("python-rdflib" ,python-rdflib)))
+    (native-inputs
+     `(("perl" ,perl)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://ardour.org")
+    (synopsis "Digital audio workstation")
+    (description
+     "Ardour is a multi-channel digital audio workstation, allowing users to
+record, edit, mix and master audio and MIDI projects.  It is targeted at audio
+engineers, musicians, soundtrack editors and composers.")
+    (license license:gpl2+)))
+
+(define-public azr3
+  (package
+    (name "azr3")
+    (version "1.2.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/ll-plugins/azr3-jack-"
+                                  version
+                                  ".tar.bz2"))
+              (sha256
+               (base32
+                "18mdw6nc0vgj6k9rsy0x8w64wvzld0frqshrxxbxfj9qi9843vlc"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no check target
+       #:make-flags
+       (list "LV2PEG=ttl2c"
+             (string-append "prefix=" %output)
+             (string-append "pkgdatadir=" %output "/share/azr3-jack"))))
+    (inputs
+     `(("gtkmm" ,gtkmm-2)
+       ("lvtk" ,lvtk)
+       ("jack" ,jack-1)
+       ("lash" ,lash)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://ll-plugins.nongnu.org/azr3/")
+    (synopsis "Tonewheel organ synthesizer")
+    (description
+     "AZR-3 is a port of the free VST plugin AZR-3.  It is a tonewheel organ
+with drawbars, distortion and rotating speakers.  The organ has three
+sections, two polyphonic sections with nine drawbars each and one monophonic
+bass section with five drawbars.  A standalone JACK application and LV2
+plugins are provided.")
+    (license license:gpl2)))
+
+(define-public freepats
+  (package
+    (name "freepats")
+    (version "20060219")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://freepats.zenvoid.org/freepats-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "12iw36rd94zirll96cd5k0va7p5hxmf2shvjlhzihcmjaw8flq82"))))
+    (build-system trivial-build-system)
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let ((out (string-append %output "/share/freepats")))
+                     (setenv "PATH" (string-append
+                                     (assoc-ref %build-inputs "bzip2") "/bin:"
+                                     (assoc-ref %build-inputs "tar") "/bin"))
+                     (system* "tar" "xvf" (assoc-ref %build-inputs "source"))
+                     (chdir "freepats")
+                     ;; Use absolute pattern references
+                     (substitute* "freepats.cfg"
+                       (("Tone_000") (string-append out "/Tone_000"))
+                       (("Drum_000") (string-append out "/Drum_000")))
+                     (mkdir-p out)
+                     (copy-recursively "." out)))))
+    (native-inputs
+     `(("tar" ,tar)
+       ("bzip2" ,bzip2)))
+    (home-page "http://freepats.zenvoid.org")
+    (synopsis "GUS compatible patches for MIDI players")
+    (description
+     "FreePats is a project to create a free and open set of GUS compatible
+patches that can be used with softsynths such as Timidity and WildMidi.")
+    ;; GPLv2+ with exception for compositions using these patches.
+    (license license:gpl2+)))
+
 (define-public jack-1
   (package
     (name "jack")
@@ -89,8 +253,14 @@ streams from live audio.")
                "1mk1wnx33anp6haxfjjkfhwbaknfblsvj35nxvz0hvspcmhdyhpb"))))
     (build-system gnu-build-system)
     (inputs
-     `(("bdb" ,bdb)
-       ("libuuid" ,util-linux)))
+     `(("alsa-lib" ,alsa-lib)
+       ("bdb" ,bdb)
+       ("readline" ,readline)))
+    ;; uuid.h is included in the JACK type headers
+    (propagated-inputs
+     `(("libuuid" ,util-linux)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
     (home-page "http://jackaudio.org/")
     (synopsis "JACK audio connection kit")
     (description
@@ -106,7 +276,7 @@ synchronous execution of all clients, and low latency operation.")
 
 (define-public jack-2
   (package (inherit jack-1)
-    (name "jack")
+    (name "jack2")
     (version "1.9.10")
     (source (origin
              (method url-fetch)
@@ -134,6 +304,114 @@ synchronous execution of all clients, and low latency operation.")
     ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
     (license (list license:gpl2+ license:lgpl2.1+))))
 
+(define-public jalv
+  (package
+    (name "jalv")
+    (version "1.4.6")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.drobilla.net/jalv-"
+                                  version ".tar.bz2"))
+              (sha256
+               (base32
+                "1f1hcq74n3ziw8bk97mn5a1vgw028dxikv3fchaxd430pbbhqgl9"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (inputs
+     `(("lv2" ,lv2)
+       ("lilv" ,lilv)
+       ("suil" ,suil)
+       ("gtk" ,gtk+-2)
+       ("gtkmm" ,gtkmm-2)
+       ("qt" ,qt-4)
+       ("jack" ,jack-1)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/jalv/")
+    (synopsis "Simple LV2 host for JACK")
+    (description
+     "Jalv is a simple but fully featured LV2 host for JACK.  It runs LV2
+plugins and exposes their ports as JACK ports, essentially making any LV2
+plugin function as a JACK application.")
+    (license license:isc)))
+
+(define-public ladspa
+  (package
+    (name "ladspa")
+    (version "1.13")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "http://www.ladspa.org/download/ladspa_sdk_"
+                   version
+                   ".tgz"))
+             (sha256
+              (base32
+               "0srh5n2l63354bc0srcrv58rzjkn4gv8qjqzg8dnq3rs4m7kzvdm"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f  ; the "test" target is a listening test only
+       #:phases
+       (alist-replace
+        'configure
+        (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
+          (chdir "src")
+          (let ((out (assoc-ref outputs "out")))
+            (substitute* "makefile"
+              (("/usr/lib/ladspa/") (string-append out "/lib/ladspa/"))
+              (("/usr/include/")    (string-append out "/include/"))
+              (("/usr/bin/")        (string-append out "/bin/"))
+              (("-mkdirhier")       "mkdir -p")
+              (("^CC.*")            "CC = gcc\n")
+              (("^CPP.*")           "CPP = g++\n"))))
+        (alist-delete 'build %standard-phases))))
+    (home-page "http://ladspa.org")
+    (synopsis "Linux Audio Developer's Simple Plugin API (LADSPA)")
+    (description
+     "LADSPA is a standard that allows software audio processors and effects
+to be plugged into a wide range of audio synthesis and recording packages.")
+    (license license:lgpl2.1+)))
+
+(define-public lash
+  (package
+    (name "lash")
+    (version "0.6.0-rc2")
+    (source (origin
+              (method url-fetch)
+              ;; The tilde is not permitted in the builder name, but is used
+              ;; in the tarball.
+              (uri (string-append
+                    "mirror://savannah/lash/lash-"
+                    (string-join (string-split version #\-) "~")
+                    ".tar.bz2"))
+              (file-name (string-append name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "12z1vx3krrzsfccpah9xjs68900xvr7bw92wx8np5871i2yv47iw"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("bdb" ,bdb)
+       ("gtk" ,gtk+-2)
+       ("jack" ,jack-1)
+       ("readline" ,readline)
+       ("python" ,python-2)))
+    ;; According to pkg-config, packages depending on lash also need to have
+    ;; at least the following packages declared as inputs.
+    (propagated-inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("dbus" ,dbus)
+       ("libxml2" ,libxml2)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://www.nongnu.org/lash/")
+    (synopsis "Audio application session manager")
+    (description
+     "LASH is a session management system for audio applications.  It allows
+you to save and restore audio sessions consisting of multiple interconneced
+applications, restoring program state (i.e. loaded patches) and the
+connections between them.")
+    (license license:gpl2+)))
+
 (define-public liblo
   (package
     (name "liblo")
@@ -158,3 +436,463 @@ synchronous execution of all clients, and low latency operation.")
      "liblo is a lightweight library that provides an easy to use
 implementation of the Open Sound Control (OSC) protocol.")
     (license license:lgpl2.1+)))
+
+(define-public lilv
+  (package
+    (name "lilv")
+    (version "0.20.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.drobilla.net/lilv-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "0aj2plkx56iar8vzjbq2l7hi7sp0ml99m0h44rgwai2x4vqkk2j2"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    ;; required by lilv-0.pc
+    (propagated-inputs
+     `(("serd" ,serd)
+       ("sord" ,sord)
+       ("sratom" ,sratom)))
+    (inputs
+     `(("lv2" ,lv2)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/lilv/")
+    (synopsis "Library to simplify use of LV2 plugins in applications")
+    (description
+     "Lilv is a C library to make the use of LV2 plugins as simple as possible
+for applications.  Lilv is the successor to SLV2, rewritten to be
+significantly faster and have minimal dependencies.")
+    (license license:isc)))
+
+(define-public lv2
+  (package
+    (name "lv2")
+    (version "1.10.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://lv2plug.in/spec/lv2-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "1md41x9snrp4mcfyli7lyfpvcfa78nfy6xkdy84kppnl8m5qw378"))))
+    (build-system waf-build-system)
+    (arguments
+     `(#:tests? #f  ; no check target
+       #:configure-flags '("--lv2-system")))
+    (inputs
+     ;; Leaving off cairo and gtk+-2.0 which are needed for example plugins
+     `(("libsndfile" ,libsndfile)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://lv2plug.in/")
+    (synopsis "LV2 audio plugin specification")
+    (description
+     "LV2 is an open specification for audio plugins and host applications.
+At its core, LV2 is a simple stable interface, accompanied by extensions which
+add functionality to support the needs of increasingly powerful audio
+software.")
+    (license license:isc)))
+
+(define-public lvtk
+  (package
+    (name "lvtk")
+    (version "1.2.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://github.com/lvtk/lvtk/archive/"
+                                 version
+                                 ".tar.gz"))
+             (sha256
+              (base32
+               "03nbj2cqcklqwh50zj2gwm07crh5iwqbpxbpzwbg5hvgl4k4rnjd"))))
+    (build-system waf-build-system)
+    (arguments
+     `(#:tests? #f  ; no check target
+       #:python ,python-2
+       #:configure-flags
+       (list (string-append "--boost-includes="
+                            (assoc-ref %build-inputs "boost")
+                            "/include"))))
+    (inputs
+     `(("boost" ,boost)
+       ("lv2" ,lv2)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/lvtk/lvtk")
+    (synopsis "C++ libraries for LV2 plugins")
+    (description
+     "The LV2 Toolkit (LVTK) contains libraries that wrap the LV2 C API and
+extensions into easy to use C++ classes.  It is the successor of
+lv2-c++-tools.")
+    (license license:gpl3+)))
+
+(define-public patchage
+  (package
+    (name "patchage")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.drobilla.net/patchage-"
+                                  version
+                                  ".tar.bz2"))
+              (sha256
+               (base32
+                "1agdpwwi42176l4mxj0c4fsvdiv1ig56bfnnx0msckxmy57df8bb"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("boost" ,boost)
+       ("jack" ,jack-1)
+       ("ganv" ,ganv)
+       ("glib" ,glib)
+       ("glibmm" ,glibmm)
+       ("gtkmm" ,gtkmm-2)
+       ("dbus" ,dbus)
+       ("dbus-glib" ,dbus-glib)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/patchage/")
+    (synopsis "Modular patch bay for audio and MIDI systems")
+    (description
+     "Patchage is a modular patch bay for audio and MIDI systems based on JACK
+and ALSA.")
+    (license license:gpl3+)))
+
+(define-public rubberband
+  (package
+    (name "rubberband")
+    (version "1.8.1")
+    (source (origin
+              (method url-fetch)
+              (uri
+               (string-append "https://bitbucket.org/breakfastquay/rubberband/get/v"
+                              version
+                              ".tar.bz2"))
+              (sha256
+               (base32
+                "05amrbrxx0da3w7m237q51799r8xgs4ffqabi2qv06hq8dpcj386"))))
+    (build-system gnu-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (inputs
+     `(("ladspa" ,ladspa)
+       ("libsamplerate" ,libsamplerate)
+       ("vamp" ,vamp)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://breakfastquay.com/rubberband/")
+    (synopsis "Audio time-stretching and pitch-shifting library")
+    (description
+     "Rubber Band is a library and utility program that permits changing the
+tempo and pitch of an audio recording independently of one another.")
+    (license license:gpl2+)))
+
+(define-public sratom
+  (package
+    (name "sratom")
+    (version "0.4.6")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.drobilla.net/sratom-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "080jjiyxjnj7hf25844hd9rb01grvzz1rk8mxcdnakywmspbxfd4"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (inputs
+     `(("lv2" ,lv2)
+       ("serd" ,serd)
+       ("sord" ,sord)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/sratom/")
+    (synopsis "Library for serialising LV2 atoms to/from RDF")
+    (description
+     "Sratom is a library for serialising LV2 atoms to/from RDF, particularly
+the Turtle syntax.")
+    (license license:isc)))
+
+(define-public suil
+  (package
+    (name "suil")
+    (version "0.8.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.drobilla.net/suil-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "1s3adyiw7sa5gfvm5wasa61qa23629kprxyv6w8hbxdiwp0hhxkq"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (inputs
+     `(("lv2" ,lv2)
+       ("gtk+-2" ,gtk+-2)
+       ("qt-4" ,qt-4)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/suil/")
+    (synopsis "Library for loading and wrapping LV2 plugin UIs")
+    (description
+     "Suil is a lightweight C library for loading and wrapping LV2 plugin UIs.
+
+Suil makes it possible to load a UI of a toolkit in a host using another
+toolkit.  The API is designed such that hosts do not need to explicitly
+support specific toolkits – if Suil supports a particular toolkit, then UIs in
+that toolkit will work in all hosts that use Suil automatically.
+
+Suil currently supports every combination of Gtk 2, Qt 4, and X11.")
+    (license license:isc)))
+
+(define-public timidity++
+  (package
+    (name "timidity++")
+    (version "2.14.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/timidity/TiMidity++-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "0xk41w4qbk23z1fvqdyfblbz10mmxsllw0svxzjw5sa9y11vczzr"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "--enable-audio=alsa,flac,jack,ao,vorbis,speex"
+             "--enable-ncurses"
+             "--enable-server"
+             "--enable-alsaseq"
+             (string-append "--with-default-path="
+                            (assoc-ref %outputs "out") "/etc/timidity"))
+       #:phases
+       (alist-cons-after
+        'install 'install-config
+        (lambda _
+          (let ((out (string-append (assoc-ref %outputs "out")
+                                    "/etc/timidity")))
+            (mkdir-p out)
+            (call-with-output-file
+                (string-append out "/timidity.cfg")
+              (lambda (port)
+                (format port (string-append "source "
+                                            (assoc-ref %build-inputs "freepats")
+                                            "/share/freepats/freepats.cfg"))))))
+        %standard-phases)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("ao" ,ao)
+       ("flac" ,flac)
+       ("jack" ,jack-1)
+       ("libogg" ,libogg)
+       ("speex" ,speex)
+       ("ncurses" ,ncurses)
+       ("freepats" ,freepats)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://timidity.sourceforge.net/")
+    (synopsis "Software synthesizer for playing MIDI files")
+    (description
+     "TiMidity++ is a software synthesizer.  It can play MIDI files by
+converting them into PCM waveform data; give it a MIDI data along with digital
+instrument data files, then it synthesizes them in real-time, and plays.  It
+can not only play sounds, but also can save the generated waveforms into hard
+disks as various audio file formats.")
+    (license license:gpl2+)))
+
+(define-public vamp
+  (package
+    (name "vamp")
+    (version "2.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://code.soundsoftware.ac.uk"
+                    "/attachments/download/690/vamp-plugin-sdk-"
+                    version
+                    ".tar.gz"))
+              (sha256
+               (base32
+                "178kfgq08cmgdzv7g8dwyjp4adwx8q04riimncq4nqkm8ng9ywbv"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; no check target
+       #:phases
+       (alist-cons-after
+        'install 'remove-libvamp-hostsdk.la
+        (lambda* (#:key outputs #:allow-other-keys)
+          ;; https://bugs.launchpad.net/ubuntu/+source/vamp-plugin-sdk/+bug/1253656
+          (for-each delete-file
+                    (let ((out (assoc-ref outputs "out")))
+                      (list (string-append out "/lib/libvamp-sdk.la")
+                            (string-append out "/lib/libvamp-hostsdk.la"))))
+          #t)
+        %standard-phases)))
+    (inputs
+     `(("libsndfile" ,libsndfile)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://vamp-plugins.org")
+    (synopsis "Modular and extensible audio processing system")
+    (description
+     "Vamp is an audio processing plugin system for plugins that extract
+descriptive information from audio data — typically referred to as audio
+analysis plugins or audio feature extraction plugins.")
+    (license
+     (license:x11-style
+      "https://code.soundsoftware.ac.uk/projects/vamp-plugin-sdk/repository/entry/COPYING"))))
+
+(define-public libsbsms
+  (package
+    (name "libsbsms")
+    (version "2.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/sbsms/sbsms/" version
+                           "/libsbsms-" version ".tar.gz"))
+       (sha256
+        (base32 "1vmf84iy4dkwxv887grnlsfk43fmhd9gbg26gc2kgcv40sbkvayf"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("automake" ,automake)))
+    (arguments
+     `(#:phases
+       (alist-cons-after
+        'unpack 'fix-ar-lib-path
+        (lambda* (#:key inputs #:allow-other-keys)
+          ;; Originally a symlink to '/usr/local/share/automake-1.12/ar-lib'.
+          (delete-file "ar-lib")
+          (symlink
+           (string-append (assoc-ref inputs "automake") "/share/automake-"
+                          ,(package-version automake) "/ar-lib")
+           "ar-lib"))
+        %standard-phases)))
+    (home-page "http://sbsms.sourceforge.net/")
+    (synopsis "Library for time stretching and pitch scaling of audio")
+    (description
+     "SBSMS (Subband Sinusoidal Modeling Synthesis) is software for time
+stretching and pitch scaling of audio.  This package contains the library.")
+    ;; There is no explicit declaration of a license, but a COPYING file
+    ;; containing gpl2.
+    (license license:gpl2)))
+
+(define-public soundtouch
+  (package
+    (name "soundtouch")
+    (version "1.8.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "http://www.surina.net/soundtouch/soundtouch-" version ".tar.gz"))
+       (sha256
+        (base32 "0sqn3wk4qz20vf0vz853l6dl1gnj1yhqxfwxqsc5lp529kbn2h9x"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("file" ,file)))
+    (arguments
+     '(#:phases
+       (alist-cons-before
+        'configure 'bootstrap
+        (lambda _
+          (unless (zero? (system* "sh" "bootstrap"))
+            (error "bootstrap failed"))
+          (substitute* '("configure")
+            (("/usr/bin/file") "file")))
+        %standard-phases)))
+    (home-page "http://www.surina.net/soundtouch/")
+    (synopsis
+     "Audio processing library for changing tempo, pitch and playback rate")
+    (description
+     "SoundTouch is an audio processing library for changing the tempo, pitch
+and playback rates of audio streams or audio files.  It is intended for
+application developers writing sound processing tools that require tempo/pitch
+control functionality, or just for playing around with the sound effects.")
+    (license license:lgpl2.1+)))
+
+(define-public soxr
+  (package
+    (name "soxr")
+    (version "0.1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://sourceforge/soxr/soxr-" version
+                       "-Source.tar.xz"))
+       (sha256
+        (base32 "1hmadwqfpg15vhwq9pa1sl5xslibrjpk6hpq2s9hfmx1s5l6ihfw"))))
+    (build-system cmake-build-system)
+    (arguments '(#:tests? #f))          ;no 'check' target
+    (home-page "http://sourceforge.net/p/soxr/wiki/Home/")
+    (synopsis "One-dimensional sample-rate conversion library")
+    (description
+     "The SoX Resampler library (libsoxr) performs one-dimensional sample-rate
+conversion.  It may be used, for example, to resample PCM-encoded audio.")
+    (license license:lgpl2.1+)))
+
+(define-public twolame
+  (package
+    (name "twolame")
+    (version "0.3.13")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://sourceforge/twolame/twolame-" version ".tar.gz"))
+       (sha256
+        (base32 "0ahiqqng5pidwhj1wzph4vxxgxxgcfa3gl0gywipzx2ii7s35wwq"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("libsndfile" ,libsndfile)))
+    (native-inputs
+     `(("perl" ,perl)
+       ("which" ,which)))               ;used in tests/test.pl
+    (home-page "http://www.twolame.org/")
+    (synopsis "MPEG Audio Layer 2 (MP2) encoder")
+    (description
+     "TwoLAME is an optimised MPEG Audio Layer 2 (MP2) encoder based on
+tooLAME by Mike Cheng, which in turn is based upon the ISO dist10 code and
+portions of LAME.")
+    (license license:lgpl2.1+)))
+
+(define-public portaudio
+  (package
+    (name "portaudio")
+    (version "19.20140130")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.portaudio.com/archives/pa_stable_v"
+             (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
+             ".tgz"))
+       (sha256
+        (base32 "0mwddk4qzybaf85wqfhxqlf0c5im9il8z03rd4n127k8y2jj9q4g"))))
+    (build-system gnu-build-system)
+    (inputs
+     ;; TODO: Add ASIHPI.
+     `(("alsa-lib" ,alsa-lib)
+       ("jack" ,jack-2)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (arguments '(#:tests? #f))          ;no 'check' target
+    (home-page "http://www.portaudio.com/")
+    (synopsis "Audio I/O library")
+    (description
+     "PortAudio is a portable C/C++ audio I/O library providing a simple API
+to record and/or play sound using a callback function or a blocking read/write
+interface.")
+    (license license:expat)))
diff --git a/gnu/packages/avahi.scm b/gnu/packages/avahi.scm
index cd87508d0c..517df32382 100644
--- a/gnu/packages/avahi.scm
+++ b/gnu/packages/avahi.scm
@@ -97,7 +97,7 @@ DNS-SD (for \"DNS-Based Service Discovery\") protocols.")
      ;; The Avahi daemon socket is expected by src/Makefile.am to be at
      ;; "$(localstatedir)/run/avahi-daemon/socket", so set $(localstatedir)
      ;; appropriately.
-     '(#:configure-flags '("--localstatedir=/")))
+     '(#:configure-flags '("--localstatedir=/var")))
 
     ;; XXX: Stale URL, missing replacement.  See <http://bugs.gnu.org/18704>.
     (home-page "http://0pointer.de/lennart/projects/nss-mdns/")
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 698a6b6e03..13b1a1060f 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -29,6 +29,7 @@
   #:use-module (gnu packages ed)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages texinfo)
@@ -36,7 +37,8 @@
   #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial))
 
 ;;; Commentary:
 ;;;
@@ -537,9 +539,50 @@ the 'share/locale' sub-directory of this package.")
             (alist-delete 'install ,phases)))
          ((#:configure-flags flags)
           `(append ,flags
+                   ;; Use $(libdir)/locale as is the case by default.
                    (list (string-append "libc_cv_localedir="
                                         (assoc-ref %outputs "out")
-                                        "/share/locale")))))))))
+                                        "/lib/locale")))))))))
+
+(define-public glibc-utf8-locales
+  (package
+    (name "glibc-utf8-locales")
+    (version (package-version glibc))
+    (source #f)
+    (build-system trivial-build-system)
+    (arguments
+     '(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (srfi srfi-1)
+                                (guix build utils))
+
+                   (let* ((libc      (assoc-ref %build-inputs "glibc"))
+                          (gzip      (assoc-ref %build-inputs "gzip"))
+                          (out       (assoc-ref %outputs "out"))
+                          (localedir (string-append out "/lib/locale")))
+                     ;; 'localedef' needs 'gzip'.
+                     (setenv "PATH" (string-append libc "/bin:" gzip "/bin"))
+
+                     (mkdir-p localedir)
+                     (every (lambda (locale)
+                              (zero? (system* "localedef" "--no-archive"
+                                              "--prefix" localedir "-i" locale
+                                              "-f" "UTF-8"
+                                              (string-append localedir "/"
+                                                             locale
+                                                             ".UTF-8"))))
+
+                            ;; These are the locales commonly used for
+                            ;; tests---e.g., in Guile's i18n tests.
+                            '("de_DE" "el_GR" "en_US" "fr_FR" "tr_TR"))))))
+    (inputs `(("glibc" ,glibc)
+              ("gzip" ,gzip)))
+    (synopsis "Small sample of UTF-8 locales")
+    (description
+     "This package provides a small sample of UTF-8 locales mostly useful in
+test environments.")
+    (home-page (package-home-page glibc))
+    (license (package-license glibc))))
 
 (define-public tzdata
   (package
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 1766855c93..b64dab73cd 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -22,6 +22,7 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
@@ -34,6 +35,63 @@
   #:use-module (gnu packages vim)
   #:use-module (gnu packages zip))
 
+(define-public bedops
+  (package
+    (name "bedops")
+    (version "2.4.5")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/bedops/bedops/archive/v"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0wmg6j0icimlrnsidaxrzf3hfgjvlkkcwvpdg7n4gg7hdv2m9ni5"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:tests? #f
+       #:make-flags (list (string-append "BINDIR=" %output "/bin"))
+       #:phases
+       (alist-cons-after
+         'unpack 'unpack-tarballs
+         (lambda _
+           ;; FIXME: Bedops includes tarballs of minimally patched upstream
+           ;; libraries jansson, zlib, and bzip2.  We cannot just use stock
+           ;; libraries because at least one of the libraries (zlib) is
+           ;; patched to add a C++ function definition (deflateInit2cpp).
+           ;; Until the Bedops developers offer a way to link against system
+           ;; libraries we have to build the in-tree copies of these three
+           ;; libraries.
+
+           ;; See upstream discussion:
+           ;; https://github.com/bedops/bedops/issues/124
+
+           ;; Unpack the tarballs to benefit from shebang patching.
+           (with-directory-excursion "third-party"
+             (and (zero? (system* "tar" "xvf" "jansson-2.6.tar.bz2"))
+                  (zero? (system* "tar" "xvf" "zlib-1.2.7.tar.bz2"))
+                  (zero? (system* "tar" "xvf" "bzip2-1.0.6.tar.bz2"))))
+           ;; Disable unpacking of tarballs in Makefile.
+           (substitute* "system.mk/Makefile.linux"
+             (("^\tbzcat .*") "\t@echo \"not unpacking\"\n")
+             (("\\./configure") "CONFIG_SHELL=bash ./configure"))
+           (substitute* "third-party/zlib-1.2.7/Makefile.in"
+             (("^SHELL=.*$") "SHELL=bash\n")))
+         (alist-delete 'configure %standard-phases))))
+    (home-page "https://github.com/bedops/bedops")
+    (synopsis "Tools for high-performance genomic feature operations")
+    (description
+     "BEDOPS is a suite of tools to address common questions raised in genomic
+studies---mostly with regard to overlap and proximity relationships between
+data sets.  It aims to be scalable and flexible, facilitating the efficient
+and accurate analysis and management of large-scale genomic data.
+
+BEDOPS provides tools that perform highly efficient and scalable Boolean and
+other set operations, statistical calculations, archiving, conversion and
+other management of genomic data of arbitrary scale.  Tasks can be easily
+split by chromosome for distributing whole-genome analyses across a
+computational cluster.")
+    (license license:gpl2+)))
+
 (define-public bedtools
   (package
     (name "bedtools")
@@ -197,8 +255,15 @@ Illumina, Roche 454, and the SOLiD platform.")
                 "1k381ydranqxp09yf2y7w1d0chz5d59vb6jchi89hbb0prq19lk5"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:tests? #f ;no check target
-       #:make-flags '("allall")
+     `(#:tests? #f ;no check target
+       #:make-flags '("allall"
+                      ;; Disable unsupported `popcnt' instructions on
+                      ;; architectures other than x86_64
+                      ,@(if (string-prefix? "x86_64"
+                                            (or (%current-target-system)
+                                                (%current-system)))
+                            '()
+                            '("POPCNT_CAPABILITY=0")))
        #:phases
        (alist-replace
         'unpack
@@ -246,6 +311,73 @@ several alignment strategies enable effective alignment of RNA-seq reads, in
 particular, reads spanning multiple exons.")
     (license license:gpl3+)))
 
+(define-public htseq
+  (package
+    (name "htseq")
+    (version "0.6.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://pypi.python.org/packages/source/H/HTSeq/HTSeq-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "1i85ppf2j2lj12m0x690qq5nn17xxk23pbbx2c83r8ayb5wngzwv"))))
+    (build-system python-build-system)
+    (arguments `(#:python ,python-2)) ; only Python 2 is supported
+    (inputs
+     `(("python-numpy" ,python2-numpy)
+       ("python-setuptools" ,python2-setuptools)))
+    (home-page "http://www-huber.embl.de/users/anders/HTSeq/")
+    (synopsis "Analysing high-throughput sequencing data with Python")
+    (description
+     "HTSeq is a Python package that provides infrastructure to process data
+from high-throughput sequencing assays.")
+    (license license:gpl3+)))
+
+(define-public rseqc
+  (package
+    (name "rseqc")
+    (version "2.6.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://sourceforge/rseqc/"
+                       version "/RSeQC-" version ".tar.gz"))
+       (sha256
+        (base32 "09rf0x9d6apjja5l01cgprj7vigpw6kiqhy34ibwwlxil0db0ri4"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; remove bundled copy of pysam
+           (delete-file-recursively "lib/pysam")
+           (substitute* "setup.py"
+             ;; remove dependency on outdated "distribute" module
+             (("^from distribute_setup import use_setuptools") "")
+             (("^use_setuptools\\(\\)") "")
+             ;; do not use bundled copy of pysam
+             (("^have_pysam = False") "have_pysam = True"))))))
+    (build-system python-build-system)
+    (arguments `(#:python ,python-2))
+    (inputs
+     `(("python-cython" ,python2-cython)
+       ("python-pysam" ,python2-pysam)
+       ("python-numpy" ,python2-numpy)
+       ("python-setuptools" ,python2-setuptools)
+       ("zlib" ,zlib)))
+    (native-inputs
+     `(("python-nose" ,python2-nose)))
+    (home-page "http://rseqc.sourceforge.net/")
+    (synopsis "RNA-seq quality control package")
+    (description
+     "RSeQC provides a number of modules that can comprehensively evaluate
+high throughput sequence data, especially RNA-seq data.  Some basic modules
+inspect sequence quality, nucleotide composition bias, PCR bias and GC bias,
+while RNA-seq specific modules evaluate sequencing saturation, mapped reads
+distribution, coverage uniformity, strand specificity, etc.")
+    (license license:gpl3+)))
+
 (define-public samtools
   (package
     (name "samtools")
diff --git a/gnu/packages/certs.scm b/gnu/packages/certs.scm
new file mode 100644
index 0000000000..ab46143202
--- /dev/null
+++ b/gnu/packages/certs.scm
@@ -0,0 +1,118 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages certs)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages gnuzilla)
+  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages python))
+
+(define certdata2pem
+  (package
+    (name "certdata2pem")
+    (version "2013")
+    (source
+    (origin
+      (method url-fetch)
+        (uri
+          "http://pkgs.fedoraproject.org/cgit/ca-certificates.git/plain/certdata2pem.py?id=053dde8a2f5901e97028a58bf54e7d0ef8095a54")
+        (sha256
+          (base32
+            "0zscrm41gnsf14zvlkxhy00h3dmgidyz645ldpda3y3vabnwv8dx"))))
+   (build-system trivial-build-system)
+   (inputs
+     `(("python" ,python-2)))
+   (arguments
+    `(#:modules ((guix build utils))
+      #:builder
+        (begin
+          (use-modules (guix build utils))
+          (let ((bin (string-append %output "/bin")))
+            (copy-file (assoc-ref %build-inputs "source") "certdata2pem.py")
+            (chmod "certdata2pem.py" #o555)
+            (substitute* "certdata2pem.py"
+              (("/usr/bin/python")
+               (string-append (assoc-ref %build-inputs "python")
+                              "/bin/python"))
+              ;; Use the file extension .pem instead of .crt.
+              (("crt") "pem"))
+            (mkdir-p bin)
+            (copy-file "certdata2pem.py"
+                       (string-append bin "/certdata2pem.py"))))))
+   (synopsis "Python script to extract .pem data from certificate collection")
+   (description
+    "certdata2pem.py is a Python script to transform X.509 certificate
+\"source code\" as contained, for example, in the Mozilla sources, into
+.pem formatted certificates.")
+   (license license:gpl2+)
+   (home-page "http://pkgs.fedoraproject.org/cgit/ca-certificates.git/")))
+
+(define-public nss-certs
+  (package (inherit nss) ; to reuse the source, version and some metadata
+    (name "nss-certs")
+    (build-system gnu-build-system)
+    (outputs '("out"))
+    (native-inputs
+     `(("certdata2pem" ,certdata2pem)
+       ("openssl" ,openssl)))
+    (inputs '())
+    (propagated-inputs '())
+    (arguments
+     `(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-26))
+       #:imported-modules ((guix build gnu-build-system)
+                           (guix build utils))
+       #:phases
+         (alist-cons-after
+           'unpack 'install
+           (lambda _
+             (let ((certsdir (string-append %output "/etc/ssl/certs/")))
+               (mkdir-p certsdir)
+               (with-directory-excursion "nss/lib/ckfw/builtins/"
+                 ;; extract single certificates from blob
+                 (system* "certdata2pem.py" "certdata.txt")
+                 ;; copy the .pem files into the output
+                 (for-each
+                   (lambda (file)
+                     (copy-file file (string-append certsdir file)))
+                   ;; FIXME: Some of the file names are UTF8 (?) and cause an
+                   ;; error message such as 
+                   ;; find-files:
+                   ;; ./EBG_Elektronik_Sertifika_Hizmet_Sa??lay??c??s??:2.8.76.175.115.66.28.142.116.2.pem:
+                   ;; No such file or directory
+                   (find-files "." ".*\\.pem")))
+                 (with-directory-excursion certsdir
+                   ;; create symbolic links for and by openssl
+                   ;; Strangely, the call (system* "c_rehash" certsdir)
+                   ;; from inside the build dir fails with
+                   ;; "Usage error; try -help."
+                   ;; This looks like a bug in openssl-1.0.2, but we can also
+                   ;; switch into the target directory.
+                   (system* "c_rehash" "."))))
+           (map (cut assq <> %standard-phases)
+                '(set-paths unpack)))))
+    (synopsis "CA certificates from Mozilla")
+    (description
+      "This package provides certificates for Certification Authorities (CA)
+taken from the NSS package and thus ultimately from the Mozilla project.")))
diff --git a/gnu/packages/complexity.scm b/gnu/packages/complexity.scm
index 5216b7e39c..f0cd11e245 100644
--- a/gnu/packages/complexity.scm
+++ b/gnu/packages/complexity.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -27,14 +28,14 @@
 (define-public complexity
   (package
     (name "complexity")
-    (version "1.1")
+    (version "1.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnu/complexity/complexity-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1aad7n35ymxbj5dlpvm64dcd71b6i7hbmps0g7nkf47vj53l6y2j"))))
+                "0pmlhlj1chl4caaqffvn1cy9z8gwmjbx97syi7pdfa0vqygkql6d"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("texinfo" ,texinfo)
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index cda1984f6a..47a0361488 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -324,3 +325,21 @@ processed by a Bourne-type shell to unpack the original collection of files.
 This package is mostly for compatibility and historical interest.")
     (license license:gpl3+)))
 
+(define-public libmspack
+  (package
+    (name "libmspack")
+    (version "0.5")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://www.cabextract.org.uk/libmspack/libmspack-"
+                          version "alpha.tar.gz"))
+      (sha256
+       (base32 "04413hynb7zizxnkgy9riik3612dwirkpr6fcjrnfl2za9sz4rw9"))))
+    (build-system gnu-build-system)
+    (home-page "http://www.cabextract.org.uk/libmspack/")
+    (synopsis "Compression tools for some formats used by Microsoft")
+    (description
+     "The purpose of libmspack is to provide both compression and
+decompression of some loosely related file formats used by Microsoft.")
+    (license license:lgpl2.1+)))
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index f34966c762..e4d609aaf2 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -20,7 +20,8 @@
   #:use-module ((guix licenses) #:select (lgpl2.1+))
   #:use-module (guix packages)
   #:use-module (guix download)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages))
 
 (define-public chmlib
   (package
@@ -32,7 +33,8 @@
                                  version ".tar.bz2"))
              (sha256
                (base32
-                "18zzb4x3z0d7fjh1x5439bs62dmgsi4c1pg3qyr7h5gp1i5xcj9l"))))
+                "18zzb4x3z0d7fjh1x5439bs62dmgsi4c1pg3qyr7h5gp1i5xcj9l"))
+             (patches (list (search-patch "chmlib-inttypes.patch")))))
     (build-system gnu-build-system)
     (home-page "http://www.jedrea.com/chmlib/")
     (synopsis "Library for CHM files")
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
new file mode 100644
index 0000000000..0ee639d20a
--- /dev/null
+++ b/gnu/packages/freedesktop.scm
@@ -0,0 +1,46 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages freedesktop)
+  #:use-module ((guix licenses) #:select (expat))
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu))
+
+(define-public xdg-utils
+  (package
+    (name "xdg-utils")
+    (version "1.0.2")
+    (source
+      (origin
+        (method url-fetch)
+          (uri (string-append
+                 "http://portland.freedesktop.org/download/xdg-utils-"
+                 version ".tgz"))
+          (sha256
+            (base32
+             "1b019d3r1379b60p33d6z44kx589xjgga62ijz9vha95dg8vgbi1"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f)) ; no check target
+    (home-page "http://portland.freedesktop.org/")
+    (synopsis "Freedesktop.org scripts for desktop integration")
+    (description "The xdg-utils package is a set of simple scripts that
+provide basic desktop integration functions in the framework of the
+freedesktop.org project.")
+    (license expat)))
\ No newline at end of file
diff --git a/gnu/packages/ftp.scm b/gnu/packages/ftp.scm
index c5649812c0..f002122bb6 100644
--- a/gnu/packages/ftp.scm
+++ b/gnu/packages/ftp.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -17,10 +18,11 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages ftp)
-  #:use-module ((guix licenses) #:select (gpl3+ clarified-artistic))
-  #:use-module (guix packages)
-  #:use-module (guix download)
+  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ clarified-artistic))
   #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages pkg-config)
@@ -103,3 +105,41 @@ File Transfer Protocol (FTP) servers.  This includes 'ncftp', an interactive
 FTP browser, as well as non-interactive commands such as 'ncftpput' and
 'ncftpget'.")
     (license clarified-artistic)))
+
+
+(define-public weex
+  (package
+    (name "weex")
+    (version "2.6.1.5")
+    (source
+      (origin
+        (method url-fetch)
+        (uri
+          (string-append "mirror://sourceforge/weex/weex/" version
+                         "/weex-" version ".tar.gz"))
+        (sha256
+          (base32
+            "0f5cj5p852wkm24mzy2sxgxyahv2p9rk4wlq21j310pi7wlhgwyl"))
+        (patches (list (search-patch "weex-vacopy.patch")))))
+    (build-system gnu-build-system)
+    (arguments
+      `(#:phases
+        (alist-replace 'configure
+          ;; configure does not work followed by both "SHELL=..." and
+          ;; "CONFIG_SHELL=..."; set environment variables instead
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out (assoc-ref outputs "out"))
+                  (bash (which "bash")))
+              (setenv "SHELL" bash)
+              (setenv "CONFIG_SHELL" bash)
+              (zero? (system* bash "./configure"
+                              (string-append "--prefix=" out)))))
+          %standard-phases)))
+    (home-page "http://weex.sourceforge.net/")
+    (synopsis "Non-interactive client for FTP synchronization")
+    (description
+     "Weex is a utility designed to automate the task of remotely
+maintaining a web page or other FTP archive.  It synchronizes a set of
+local files to a remote server by performing uploads and remote deletes
+as required.")
+    (license gpl2+)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index a9c4d6bd11..789a02e577 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -7,6 +7,8 @@
 ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -398,7 +400,7 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
 (define-public xboard
   (package
     (name "xboard")
-    (version "4.7.3")
+    (version "4.8.0")
     (source
      (origin
        (method url-fetch)
@@ -406,17 +408,8 @@ exec ~a/bin/freedink -refdir ~a/share/dink\n"
                            ".tar.gz"))
        (sha256
         (base32
-         "1amy9krr0qkvcc7gnp3i9x9ma91fc5cq8hy3gdc7rmfsaczv1l3z"))))
+         "05rdj0nyirc4g1qi5hhrjy45y52ihp1j3ldq2c5bwrz0gzy4i3y8"))))
     (build-system gnu-build-system)
-    (arguments
-     '(#:phases
-       (alist-cons-before 
-        'configure 'pre-conf
-        ;; This is GNU.  So use gnuchess as the first choice of engine
-        (lambda _
-          (substitute* "xboard.conf.in" 
-            (("-firstChessProgram fairymax") "-firstChessProgram gnuchess")))
-        %standard-phases)))
     (inputs `(("cairo" ,cairo)
               ("librsvg" ,librsvg)
               ("libxt" ,libxt)
@@ -842,3 +835,27 @@ straight into any libretro-compatible frontend.  RetroArch is the official
 reference frontend for the libretro API, currently used by most as a modular
 multi-system game/emulator system.")
     (license license:gpl3+)))
+
+(define-public gnugo
+  (package
+    (name "gnugo")
+    (version "3.8")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnu/gnugo/gnugo-" version
+                                 ".tar.gz"))
+             (sha256
+              (base32
+               "0wkahvqpzq6lzl5r49a4sd4p52frdmphnqsfdv7gdp24bykdfs6s"))))
+    (build-system gnu-build-system)
+    (inputs `(("readline" ,readline)))
+    (synopsis "Play the game of Go")
+    (description "GNU Go is a program that plays the game of Go, in which
+players place stones on a grid to form territory or capture other stones.
+While it can be played directly from the terminal, rendered in ASCII
+characters, it is also possible to play GNU Go with 3rd party graphical
+interfaces or even in Emacs.  It supports the standard game storage format
+(SGF, Smart Game Format) and inter-process communication format (GMP, Go
+Modem Protocol).")
+    (home-page "http://www.gnu.org/software/gnugo/")
+    (license license:gpl3+)))
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 73fb7f50dc..52be520df5 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -995,6 +995,28 @@ high-quality vector-based 2D library with antialiasing and alpha composition.")
 creating interactive structured graphics.")
     (license license:lgpl2.0+)))
 
+(define-public libgnomecanvasmm
+  (package
+    (name "libgnomecanvasmm")
+    (version "2.26.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnome/sources/" name "/"
+                                  (version-major+minor version)  "/"
+                                  name "-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0679hcnpam2gkag2i63sm0wdm35gwvzafnz1354mg6j5gzwpfrcr"))))
+    (build-system gnu-build-system)
+    (propagated-inputs `(("libgnomecanvas" ,libgnomecanvas)))
+    (native-inputs
+     `(("gtkmm-2" ,gtkmm-2)
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://gtkmm.org")
+    (synopsis "C++ bindings to the GNOME Canvas library")
+    (description "C++ bindings to the GNOME Canvas library.")
+    (license license:lgpl2.0+)))
+
 (define-public libgnomeui
   (package
     (name "libgnomeui")
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index a1a0bf040d..335cfd1983 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@@ -122,15 +122,15 @@ in the Mozilla clients.")
 (define-public nss
   (package
     (name "nss")
-    (version "3.17.3")
+    (version "3.17.4")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
-                    "releases/NSS_3_17_3_RTM/src/nss-3.17.3.tar.gz"))
+                    "releases/NSS_3_17_4_RTM/src/nss-3.17.4.tar.gz"))
               (sha256
                (base32
-                "1m91z80x4zh1mxgf53bl33lp43gn1wxxx0y26mgz511gb81ykmgl"))
+                "0ycxzybgn4bq0i6j5zjdjl70n3s8a742yixyik4pw8x4h4cav60x"))
               ;; Create nss.pc and nss-config.
               (patches (list (search-patch "nss-pkgconfig.patch")))))
     (build-system gnu-build-system)
@@ -224,7 +224,25 @@ standards.")
                           version "/" name "-" version ".tar.bz2"))
       (sha256
        (base32
-        "0q5ilgfybcrbwf9hq9zc1cpnlhq1pddnnjmdrxrcrrg8lgx5kkc2"))))
+        "0q5ilgfybcrbwf9hq9zc1cpnlhq1pddnnjmdrxrcrrg8lgx5kkc2"))
+      (patches (map search-patch
+                    '("icecat-CVE-2015-0822.patch"
+                      "icecat-CVE-2015-0827-pt-1.patch"
+                      "icecat-CVE-2015-0827-pt-2.patch"
+                      "icecat-CVE-2015-0827-pt-3.patch"
+                      "icecat-CVE-2015-0831-pt-1.patch"
+                      "icecat-CVE-2015-0831-pt-2.patch"
+                      "icecat-CVE-2015-0836-pt-01.patch"
+                      "icecat-CVE-2015-0836-pt-02.patch"
+                      "icecat-CVE-2015-0836-pt-03.patch"
+                      "icecat-CVE-2015-0836-pt-04.patch"
+                      "icecat-CVE-2015-0836-pt-05.patch"
+                      "icecat-CVE-2015-0836-pt-06.patch"
+                      "icecat-CVE-2015-0836-pt-07.patch"
+                      "icecat-CVE-2015-0836-pt-08.patch"
+                      "icecat-CVE-2015-0836-pt-09.patch"
+                      "icecat-CVE-2015-0836-pt-10.patch"
+                      "icecat-CVE-2015-0836-pt-11.patch")))))
     (build-system gnu-build-system)
     (inputs
      `(("alsa-lib" ,alsa-lib)
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 55d2a198eb..c5ccfc271b 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -22,6 +22,9 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system cmake)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages boost))
 
@@ -63,3 +66,89 @@ many more.")
     ;; The 'LICENSE' file explains that a subset is available under more
     ;; permissive licenses.
     (license license:gpl3+)))
+
+(define-public ilmbase
+  (package
+    (name "ilmbase")
+    (version "2.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/openexr/ilmbase-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1izddjwbh1grs8080vmaix72z469qy29wrvkphgmqmcm0sv1by7c"))))
+    (build-system gnu-build-system)
+    (home-page "http://www.openexr.com/")
+    (synopsis "Utility C++ libraries for threads, maths, and exceptions")
+    (description
+     "IlmBase provides several utility libraries for C++.  Half is a class
+that encapsulates ILM's 16-bit floating-point format.  IlmThread is a thread
+abstraction.  Imath implements 2D and 3D vectors, 3x3 and 4x4 matrices,
+quaternions and other useful 2D and 3D math functions.  Iex is an
+exception-handling library.")
+    (license license:bsd-3)))
+
+(define-public openexr
+  (package
+    (name "openexr")
+    (version "2.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/openexr/openexr-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0ca2j526n4wlamrxb85y2jrgcv0gf21b3a19rr0gh4rjqkv1581n"))
+              (modules '((guix build utils)))
+              (snippet
+               '(substitute* (find-files "." "tmpDir\\.h")
+                  (("\"/var/tmp/\"")
+                   "\"/tmp/\"")))
+              (patches (list (search-patch "openexr-missing-samples.patch")))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (propagated-inputs
+     `(("ilmbase" ,ilmbase)                       ;used in public headers
+       ("zlib" ,zlib)))                           ;OpenEXR.pc reads "-lz"
+    (home-page "http://www.openexr.com")
+    (synopsis "High-dynamic range file format library")
+    (description
+     "OpenEXR is a high dynamic-range (HDR) image file format developed for
+use in computer imaging applications.  The IlmImf C++ libraries support
+storage of the \"EXR\" file format for storing 16-bit floating-point images.")
+    (license license:bsd-3)))
+
+(define-public ctl
+  (package
+    (name "ctl")
+    (version "1.5.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/ampas/CTL/archive/ctl-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "1gg04pyvw0m398akn0s1l07g5b1haqv5na1wpi5dii1jjd1w3ynp"))))
+    (build-system cmake-build-system)
+    (arguments '(#:tests? #f))                    ;no 'test' target
+
+    ;; Headers include OpenEXR and IlmBase headers.
+    (propagated-inputs `(("openexr" ,openexr)))
+
+    (home-page "http://ampasctl.sourceforge.net")
+    (synopsis "Color Transformation Language")
+    (description
+     "The Color Transformation Language, or CTL, is a small programming
+language that was designed to serve as a building block for digital color
+management systems.  CTL allows users to describe color transforms in a
+concise and unambiguous way by expressing them as programs.  In order to apply
+a given transform to an image, the color management system instructs a CTL
+interpreter to load and run the CTL program that describes the transform.  The
+original and the transformed image constitute the CTL program's input and
+output.")
+
+    ;; The web site says it's under a BSD-3 license, but the 'LICENSE' file
+    ;; and headers use different wording.
+    (license (license:bsd-style "file://LICENSE"))))
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index da39047196..a5022ba116 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -27,6 +27,7 @@
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system waf)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages ghostscript)
@@ -209,6 +210,33 @@ longer provided by recent pango releases.  pangox-compat provides the
 functions which were removed.")
     (license license:lgpl2.0+)))
 
+(define-public ganv
+  (package
+    (name "ganv")
+    (version "1.4.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.drobilla.net/ganv-"
+                                  version
+                                  ".tar.bz2"))
+              (sha256
+               (base32
+                "0g7s5mp14qgbfjdql0k1s8464r21g47ssn5dws6jazsnw6njhl0l"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (inputs
+     `(("gtk" ,gtk+-2)
+       ("gtkmm" ,gtkmm-2)))
+    (native-inputs
+     `(("glib" ,glib "bin")             ; for glib-genmarshal, etc.
+       ("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/ganv/")
+    (synopsis "GTK+ widget for interactive graph-like environments")
+    (description
+     "Ganv is an interactive GTK+ widget for interactive “boxes and lines” or
+graph-like environments, e.g. modular synths or finite state machine
+diagrams.")
+    (license license:gpl3+)))
 
 (define-public gtksourceview
   (package
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 4a86f63bdb..c486742c14 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -48,6 +48,58 @@
   #:use-module (gnu packages zip)
   #:use-module (gnu packages texinfo))
 
+(define-public ant
+  (package
+    (name "ant")
+    (version "1.9.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://www.apache.org/dist/ant/source/apache-ant-"
+                    version "-src.tar.gz"))
+              (sha256
+               (base32
+                "09kf5s1ir0rdrclsy174bsvbdcbajza9fja490w4mmvcpkw3zpak"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no "check" target
+       #:phases
+       (alist-cons-after
+        'unpack 'remove-scripts
+        ;; Remove bat / cmd scripts for DOS as well as the antRun and runant
+        ;; wrappers.
+        (lambda _
+          (for-each delete-file
+                    (find-files "src/script"
+                                "(.*\\.(bat|cmd)|runant.*|antRun.*)")))
+        (alist-replace
+         'build
+         (lambda _
+           (setenv "JAVA_HOME"
+                   (assoc-ref %build-inputs "icedtea6"))
+           ;; Disable tests to avoid dependency on hamcrest-core, which needs
+           ;; Ant to build.  This is necessary in addition to disabling the
+           ;; "check" phase, because the dependency on "test-jar" would always
+           ;; result in the tests to be run.
+           (substitute* "build.xml"
+             (("depends=\"jars,test-jar\"") "depends=\"jars\""))
+           (zero? (system* "bash" "bootstrap.sh"
+                           (string-append "-Ddist.dir="
+                                          (assoc-ref %outputs "out")))))
+         (alist-delete
+          'configure
+          (alist-delete 'install %standard-phases))))))
+    (native-inputs
+     `(("icedtea6" ,icedtea6)))
+    (home-page "http://ant.apache.org")
+    (synopsis "Build tool for Java")
+    (description
+     "Ant is a platform-independent build tool for Java.  It is similar to
+make but is implemented using the Java language, requires the Java platform,
+and is best suited to building Java projects.  Ant uses XML to describe the
+build process and its dependencies, whereas Make uses Makefile format.")
+    (license license:asl2.0)))
+
 (define-public icedtea6
   (package
     (name "icedtea6")
diff --git a/gnu/packages/libffcall.scm b/gnu/packages/libffcall.scm
index 010c22e38c..74d6b6347f 100644
--- a/gnu/packages/libffcall.scm
+++ b/gnu/packages/libffcall.scm
@@ -41,7 +41,7 @@
          "1lwdskc2w4rr98x9flr2726lmj4190l16r0izg7gqxy50801wwgd"))))
     (build-system gnu-build-system)
     (arguments `(#:parallel-build? #f))
-    (synopsis "Foreign function call libraries")
+    (synopsis "Foreign function calls from interpreters")
     (description
      "GNU Libffcall is a collection of libraries that can be used to build
 foreign function call interfaces in embedded interpreters.")
diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf
index 2274ea2879..3c82b91614 100644
--- a/gnu/packages/linux-libre-i686.conf
+++ b/gnu/packages/linux-libre-i686.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.19.0-gnu Kernel Configuration
+# Linux/x86 3.18.4-gnu Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -88,7 +88,6 @@ CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
 CONFIG_GENERIC_PENDING_IRQ=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
-CONFIG_GENERIC_MSI_IRQ=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
@@ -128,6 +127,7 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
+# CONFIG_PREEMPT_RCU is not set
 # CONFIG_TASKS_RCU is not set
 CONFIG_RCU_STALL_COMMON=y
 CONFIG_RCU_FANOUT=32
@@ -148,7 +148,7 @@ CONFIG_CGROUP_DEVICE=y
 CONFIG_CPUSETS=y
 CONFIG_PROC_PID_CPUSET=y
 CONFIG_CGROUP_CPUACCT=y
-CONFIG_PAGE_COUNTER=y
+CONFIG_RESOURCE_COUNTERS=y
 CONFIG_MEMCG=y
 CONFIG_MEMCG_SWAP=y
 # CONFIG_MEMCG_SWAP_ENABLED is not set
@@ -179,7 +179,6 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
-CONFIG_INIT_FALLBACK=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
@@ -283,7 +282,6 @@ CONFIG_OLD_SIGACTION=y
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
-CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -295,11 +293,6 @@ CONFIG_MODULE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
-# CONFIG_MODULE_SIG_SHA1 is not set
-# CONFIG_MODULE_SIG_SHA224 is not set
-# CONFIG_MODULE_SIG_SHA256 is not set
-# CONFIG_MODULE_SIG_SHA384 is not set
-# CONFIG_MODULE_SIG_SHA512 is not set
 # CONFIG_MODULE_COMPRESS is not set
 CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
@@ -457,7 +450,6 @@ CONFIG_SCHED_MC=y
 # CONFIG_PREEMPT_NONE is not set
 CONFIG_PREEMPT_VOLUNTARY=y
 # CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=y
 CONFIG_X86_LOCAL_APIC=y
 CONFIG_X86_IO_APIC=y
 CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -553,7 +545,6 @@ CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
-# CONFIG_X86_INTEL_MPX is not set
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
@@ -594,6 +585,7 @@ CONFIG_PM_SLEEP_SMP=y
 CONFIG_PM_WAKELOCKS=y
 CONFIG_PM_WAKELOCKS_LIMIT=100
 CONFIG_PM_WAKELOCKS_GC=y
+CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 CONFIG_PM_DEBUG=y
 CONFIG_PM_ADVANCED_DEBUG=y
@@ -642,7 +634,6 @@ CONFIG_ACPI_APEI_PCIEAER=y
 CONFIG_ACPI_APEI_EINJ=m
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
 CONFIG_ACPI_EXTLOG=m
-# CONFIG_PMIC_OPREGION is not set
 CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
 CONFIG_APM=m
@@ -671,7 +662,7 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 
 #
-# CPU frequency scaling drivers
+# x86 CPU frequency scaling drivers
 #
 CONFIG_X86_INTEL_PSTATE=y
 CONFIG_X86_PCC_CPUFREQ=y
@@ -743,6 +734,7 @@ CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 CONFIG_PCI_PRI=y
 CONFIG_PCI_PASID=y
+CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
 
 #
@@ -864,7 +856,6 @@ CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_NET_UDP_TUNNEL=m
 CONFIG_NET_FOU=m
-CONFIG_NET_FOU_IP_TUNNELS=y
 CONFIG_GENEVE=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
@@ -976,7 +967,6 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_REDIRECT=m
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_INET=m
@@ -989,7 +979,6 @@ CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
-CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_REJECT=m
@@ -1158,7 +1147,6 @@ CONFIG_NF_NAT_IPV4=m
 CONFIG_NFT_CHAIN_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=m
 CONFIG_NFT_MASQ_IPV4=m
-CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1199,7 +1187,6 @@ CONFIG_NF_NAT_IPV6=m
 CONFIG_NFT_CHAIN_NAT_IPV6=m
 CONFIG_NF_NAT_MASQUERADE_IPV6=m
 CONFIG_NFT_MASQ_IPV6=m
-CONFIG_NFT_REDIR_IPV6=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1299,7 +1286,6 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=m
-CONFIG_NET_DSA_HWMON=y
 CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
@@ -1395,7 +1381,6 @@ CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_SIMP=m
 CONFIG_NET_ACT_SKBEDIT=m
 CONFIG_NET_ACT_CSUM=m
-CONFIG_NET_ACT_VLAN=m
 # CONFIG_NET_CLS_IND is not set
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
@@ -1407,16 +1392,15 @@ CONFIG_BATMAN_ADV_NC=y
 CONFIG_BATMAN_ADV_MCAST=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=m
-CONFIG_OPENVSWITCH_VXLAN=m
-CONFIG_OPENVSWITCH_GENEVE=m
+CONFIG_OPENVSWITCH_GRE=y
+CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GENEVE=y
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
 CONFIG_NET_MPLS_GSO=m
 CONFIG_HSR=m
-# CONFIG_NET_SWITCHDEV is not set
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
@@ -1565,7 +1549,7 @@ CONFIG_VLSI_FIR=m
 CONFIG_VIA_FIR=m
 CONFIG_MCS_FIR=m
 CONFIG_BT=m
-CONFIG_BT_BREDR=y
+CONFIG_BT_6LOWPAN=m
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1573,8 +1557,6 @@ CONFIG_BT_BNEP_MC_FILTER=y
 CONFIG_BT_BNEP_PROTO_FILTER=y
 CONFIG_BT_CMTP=m
 CONFIG_BT_HIDP=m
-CONFIG_BT_LE=y
-CONFIG_BT_6LOWPAN=m
 
 #
 # Bluetooth device drivers
@@ -1627,7 +1609,6 @@ CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_MINSTREL_VHT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
@@ -1679,8 +1660,7 @@ CONFIG_NFC_MRVL=m
 CONFIG_NFC_MRVL_USB=m
 CONFIG_NFC_ST21NFCA=m
 CONFIG_NFC_ST21NFCA_I2C=m
-CONFIG_NFC_ST21NFCB=m
-CONFIG_NFC_ST21NFCB_I2C=m
+# CONFIG_NFC_ST21NFCB is not set
 
 #
 # Device Drivers
@@ -1700,9 +1680,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
-CONFIG_WANT_DEV_COREDUMP=y
 CONFIG_ALLOW_DEV_COREDUMP=y
-CONFIG_DEV_COREDUMP=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
@@ -1711,7 +1689,6 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_SPI=y
-CONFIG_REGMAP_SPMI=m
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
@@ -2173,7 +2150,7 @@ CONFIG_SCSI_LPFC=m
 CONFIG_SCSI_SIM710=m
 CONFIG_SCSI_SYM53C416=m
 CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_AM53C974=m
+CONFIG_SCSI_DC390T=m
 CONFIG_SCSI_T128=m
 CONFIG_SCSI_U14_34F=m
 CONFIG_SCSI_U14_34F_TAGGED_QUEUE=y
@@ -2181,7 +2158,6 @@ CONFIG_SCSI_U14_34F_LINKED_COMMANDS=y
 CONFIG_SCSI_U14_34F_MAX_TAGS=8
 CONFIG_SCSI_ULTRASTOR=m
 CONFIG_SCSI_NSP32=m
-CONFIG_SCSI_WD719X=m
 CONFIG_SCSI_DEBUG=m
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
@@ -2398,7 +2374,6 @@ CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
 CONFIG_NET_TEAM_MODE_LOADBALANCE=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
-CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
@@ -2478,7 +2453,6 @@ CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
 CONFIG_NET_DSA_MV88E6131=m
 CONFIG_NET_DSA_MV88E6123_61_65=m
 CONFIG_NET_DSA_MV88E6171=m
-CONFIG_NET_DSA_MV88E6352=m
 CONFIG_NET_DSA_BCM_SF2=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
@@ -2516,7 +2490,6 @@ CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
 CONFIG_B44_PCICORE_AUTOSELECT=y
 CONFIG_B44_PCI=y
-CONFIG_BCMGENET=m
 CONFIG_BNX2=m
 CONFIG_CNIC=m
 CONFIG_TIGON3=m
@@ -2583,7 +2556,7 @@ CONFIG_IXGBEVF=m
 CONFIG_I40E=m
 CONFIG_I40E_VXLAN=y
 CONFIG_I40E_DCB=y
-CONFIG_I40E_FCOE=y
+# CONFIG_I40E_FCOE is not set
 CONFIG_I40EVF=m
 CONFIG_FM10K=m
 CONFIG_FM10K_VXLAN=y
@@ -2655,7 +2628,6 @@ CONFIG_8139TOO_8129=y
 CONFIG_R8169=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
-CONFIG_NET_VENDOR_ROCKER=y
 CONFIG_NET_VENDOR_SAMSUNG=y
 CONFIG_SXGBE_ETH=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -2677,8 +2649,10 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=m
+CONFIG_STMMAC_PLATFORM=y
 # CONFIG_STMMAC_PCI is not set
+# CONFIG_STMMAC_DEBUG_FS is not set
+# CONFIG_STMMAC_DA is not set
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
@@ -2833,7 +2807,6 @@ CONFIG_ATH9K_STATION_STATISTICS=y
 CONFIG_ATH9K_WOW=y
 CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_CHANNEL_CONTEXT=y
-CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 CONFIG_ATH9K_HTC_DEBUGFS=y
 CONFIG_CARL9170=m
@@ -2920,7 +2893,7 @@ CONFIG_IWLDVM=m
 CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
-# CONFIG_IWLWIFI_UAPSD is not set
+CONFIG_IWLWIFI_UAPSD=y
 
 #
 # Debugging Options
@@ -3064,6 +3037,7 @@ CONFIG_X25_ASY=m
 CONFIG_SBNI=m
 # CONFIG_SBNI_MULTILINE is not set
 CONFIG_IEEE802154_DRIVERS=m
+# CONFIG_IEEE802154_FAKEHARD is not set
 CONFIG_IEEE802154_FAKELB=m
 CONFIG_IEEE802154_AT86RF230=m
 CONFIG_IEEE802154_MRF24J40=m
@@ -3285,9 +3259,6 @@ CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_CYAPA=m
-CONFIG_MOUSE_ELAN_I2C=m
-CONFIG_MOUSE_ELAN_I2C_I2C=y
-CONFIG_MOUSE_ELAN_I2C_SMBUS=y
 # CONFIG_MOUSE_INPORT is not set
 CONFIG_MOUSE_LOGIBM=m
 CONFIG_MOUSE_PC110PAD=m
@@ -3356,10 +3327,8 @@ CONFIG_TOUCHSCREEN_DYNAPRO=m
 CONFIG_TOUCHSCREEN_HAMPSHIRE=m
 CONFIG_TOUCHSCREEN_EETI=m
 CONFIG_TOUCHSCREEN_FUJITSU=m
-CONFIG_TOUCHSCREEN_GOODIX=m
 CONFIG_TOUCHSCREEN_ILI210X=m
 CONFIG_TOUCHSCREEN_GUNZE=m
-CONFIG_TOUCHSCREEN_ELAN=m
 CONFIG_TOUCHSCREEN_ELO=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
 CONFIG_TOUCHSCREEN_WACOM_I2C=m
@@ -3588,7 +3557,6 @@ CONFIG_IPMI_HANDLER=m
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_SI_PROBE_DEFAULTS=y
-CONFIG_IPMI_SSIF=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
@@ -3709,7 +3677,6 @@ CONFIG_I2C_XILINX=m
 # External I2C/SMBus adapter drivers
 #
 CONFIG_I2C_DIOLAN_U2C=m
-CONFIG_I2C_DLN2=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
 CONFIG_I2C_ROBOTFUZZ_OSIF=m
@@ -3724,7 +3691,6 @@ CONFIG_I2C_PCA_ISA=m
 CONFIG_I2C_CROS_EC_TUNNEL=m
 CONFIG_SCx200_ACB=m
 CONFIG_I2C_STUB=m
-# CONFIG_I2C_SLAVE is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -3803,12 +3769,8 @@ CONFIG_PINCTRL=y
 #
 # Pin controllers
 #
-CONFIG_PINMUX=y
-CONFIG_PINCONF=y
-CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
 CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_PINCTRL_CHERRYVIEW=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_DEVRES=y
@@ -3825,6 +3787,7 @@ CONFIG_GPIO_MAX730X=m
 # Memory mapped GPIO drivers:
 #
 CONFIG_GPIO_GENERIC_PLATFORM=m
+CONFIG_GPIO_DWAPB=m
 CONFIG_GPIO_IT8761E=m
 CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_SCH311X=m
@@ -3896,7 +3859,6 @@ CONFIG_GPIO_MSIC=y
 # USB GPIO expanders:
 #
 CONFIG_GPIO_VIPERBOARD=m
-CONFIG_GPIO_DLN2=m
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
@@ -4022,7 +3984,6 @@ CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 CONFIG_SENSORS_IIO_HWMON=m
-CONFIG_SENSORS_I5500=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IT87=m
 CONFIG_SENSORS_JC42=m
@@ -4069,14 +4030,12 @@ CONFIG_SENSORS_PC87427=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_NCT6683=m
 CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NCT7802=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_LTC2978=m
-CONFIG_SENSORS_LTC2978_REGULATOR=y
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
@@ -4282,7 +4241,6 @@ CONFIG_MFD_DA9052_SPI=y
 CONFIG_MFD_DA9052_I2C=y
 CONFIG_MFD_DA9055=y
 CONFIG_MFD_DA9063=y
-CONFIG_MFD_DLN2=m
 CONFIG_MFD_MC13XXX=m
 CONFIG_MFD_MC13XXX_SPI=m
 CONFIG_MFD_MC13XXX_I2C=m
@@ -4363,7 +4321,7 @@ CONFIG_MFD_WM831X_I2C=y
 CONFIG_MFD_WM831X_SPI=y
 CONFIG_MFD_WM8350=y
 CONFIG_MFD_WM8350_I2C=y
-CONFIG_MFD_WM8994=m
+CONFIG_MFD_WM8994=y
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 CONFIG_REGULATOR_FIXED_VOLTAGE=m
@@ -4504,9 +4462,16 @@ CONFIG_IR_NUVOTON=m
 CONFIG_IR_REDRAT3=m
 CONFIG_IR_STREAMZAP=m
 CONFIG_IR_WINBOND_CIR=m
-CONFIG_IR_IGORPLUGUSB=m
 CONFIG_IR_IGUANA=m
 CONFIG_IR_TTUSBIR=m
+CONFIG_IR_IMG=m
+# CONFIG_IR_IMG_RAW is not set
+CONFIG_IR_IMG_HW=y
+CONFIG_IR_IMG_NEC=y
+CONFIG_IR_IMG_JVC=y
+CONFIG_IR_IMG_SONY=y
+CONFIG_IR_IMG_SHARP=y
+CONFIG_IR_IMG_SANYO=y
 CONFIG_RC_LOOPBACK=m
 CONFIG_IR_GPIO_CIR=m
 CONFIG_MEDIA_USB_SUPPORT=y
@@ -4582,6 +4547,7 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
@@ -4744,7 +4710,6 @@ CONFIG_DVB_MANTIS=m
 CONFIG_DVB_HOPPER=m
 CONFIG_DVB_NGENE=m
 CONFIG_DVB_DDBRIDGE=m
-CONFIG_DVB_SMIPCIE=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 CONFIG_VIDEO_VIA_CAMERA=m
@@ -4756,12 +4721,17 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
 CONFIG_V4L_TEST_DRIVERS=y
 CONFIG_VIDEO_VIVID=m
-CONFIG_VIDEO_VIM2M=m
+CONFIG_VIDEO_MEM2MEM_TESTDEV=m
 
 #
 # Supported MMC/SDIO adapters
 #
 CONFIG_SMS_SDIO_DRV=m
+CONFIG_MEDIA_PARPORT_SUPPORT=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_PMS=m
+CONFIG_VIDEO_W9966=m
 CONFIG_RADIO_ADAPTERS=y
 CONFIG_RADIO_TEA575X=m
 CONFIG_RADIO_SI470X=y
@@ -4963,7 +4933,6 @@ CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
 CONFIG_MEDIA_TUNER_M88TS2022=m
-CONFIG_MEDIA_TUNER_M88RS6000T=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_SI2157=m
 CONFIG_MEDIA_TUNER_IT913X=m
@@ -5075,10 +5044,6 @@ CONFIG_DVB_S5H1411=m
 CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
-
-#
-# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
-#
 CONFIG_DVB_TC90522=m
 
 #
@@ -5098,7 +5063,6 @@ CONFIG_DVB_ISL6405=m
 CONFIG_DVB_ISL6421=m
 CONFIG_DVB_ISL6423=m
 CONFIG_DVB_A8293=m
-CONFIG_DVB_SP2=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
@@ -5142,7 +5106,6 @@ CONFIG_DRM_TTM=m
 #
 # I2C encoder or helper chips
 #
-CONFIG_DRM_I2C_ADV7511=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
@@ -5560,7 +5523,7 @@ CONFIG_SND_BCD2000=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_DICE=m
-CONFIG_SND_OXFW=m
+CONFIG_SND_FIREWIRE_SPEAKERS=m
 CONFIG_SND_ISIGHT=m
 CONFIG_SND_SCS1X=m
 CONFIG_SND_FIREWORKS=m
@@ -5588,9 +5551,6 @@ CONFIG_SND_SOC_FSL_ESAI=m
 CONFIG_SND_SOC_IMX_AUDMUX=m
 CONFIG_SND_MFLD_MACHINE=m
 CONFIG_SND_SST_MFLD_PLATFORM=m
-CONFIG_SND_SST_IPC=m
-CONFIG_SND_SST_IPC_PCI=m
-CONFIG_SND_SST_IPC_ACPI=m
 CONFIG_SND_SOC_INTEL_SST=m
 CONFIG_SND_SOC_INTEL_SST_ACPI=m
 CONFIG_SND_SOC_INTEL_HASWELL=m
@@ -5599,8 +5559,6 @@ CONFIG_SND_SOC_INTEL_HASWELL_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m
 CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m
-CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
-CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 
 #
@@ -5613,16 +5571,12 @@ CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
 CONFIG_SND_SOC_CS35L32=m
-CONFIG_SND_SOC_CS42L51=m
-CONFIG_SND_SOC_CS42L51_I2C=m
 CONFIG_SND_SOC_CS42L52=m
 CONFIG_SND_SOC_CS42L56=m
 CONFIG_SND_SOC_CS42L73=m
 CONFIG_SND_SOC_CS4265=m
 CONFIG_SND_SOC_CS4270=m
 CONFIG_SND_SOC_CS4271=m
-CONFIG_SND_SOC_CS4271_I2C=m
-CONFIG_SND_SOC_CS4271_SPI=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_HDMI_CODEC=m
@@ -5635,10 +5589,7 @@ CONFIG_SND_SOC_PCM512x_I2C=m
 CONFIG_SND_SOC_PCM512x_SPI=m
 CONFIG_SND_SOC_RL6231=m
 CONFIG_SND_SOC_RT286=m
-CONFIG_SND_SOC_RT5631=m
 CONFIG_SND_SOC_RT5640=m
-CONFIG_SND_SOC_RT5670=m
-# CONFIG_SND_SOC_RT5677_SPI is not set
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_SI476X=m
 CONFIG_SND_SOC_SIGMADSP=m
@@ -5653,13 +5604,8 @@ CONFIG_SND_SOC_SSM4567=m
 CONFIG_SND_SOC_STA350=m
 CONFIG_SND_SOC_TAS2552=m
 CONFIG_SND_SOC_TAS5086=m
-CONFIG_SND_SOC_TFA9879=m
-CONFIG_SND_SOC_TLV320AIC23=m
-CONFIG_SND_SOC_TLV320AIC23_I2C=m
-CONFIG_SND_SOC_TLV320AIC23_SPI=m
 CONFIG_SND_SOC_TLV320AIC31XX=m
 CONFIG_SND_SOC_TLV320AIC3X=m
-CONFIG_SND_SOC_TS3A227E=m
 CONFIG_SND_SOC_WM8510=m
 CONFIG_SND_SOC_WM8523=m
 CONFIG_SND_SOC_WM8580=m
@@ -5685,7 +5631,6 @@ CONFIG_AC97_BUS=m
 # HID support
 #
 CONFIG_HID=m
-CONFIG_HID_BATTERY_STRENGTH=y
 CONFIG_HIDRAW=y
 CONFIG_UHID=m
 CONFIG_HID_GENERIC=m
@@ -5727,7 +5672,6 @@ CONFIG_HID_LCPOWER=m
 CONFIG_HID_LENOVO=m
 CONFIG_HID_LOGITECH=m
 CONFIG_HID_LOGITECH_DJ=m
-CONFIG_HID_LOGITECH_HIDPP=m
 CONFIG_LOGITECH_FF=y
 CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_LOGIG940_FF=y
@@ -5748,7 +5692,6 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
-CONFIG_HID_PLANTRONICS=m
 CONFIG_HID_PRIMAX=m
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
@@ -5895,10 +5838,9 @@ CONFIG_USB_MUSB_HDRC=m
 # CONFIG_USB_MUSB_HOST is not set
 # CONFIG_USB_MUSB_GADGET is not set
 CONFIG_USB_MUSB_DUAL_ROLE=y
-
-#
-# Platform Glue Layer
-#
+CONFIG_USB_MUSB_TUSB6010=m
+CONFIG_USB_MUSB_UX500=m
+# CONFIG_USB_UX500_DMA is not set
 CONFIG_MUSB_PIO_ONLY=y
 CONFIG_USB_DWC3=m
 # CONFIG_USB_DWC3_HOST is not set
@@ -5916,13 +5858,14 @@ CONFIG_USB_DWC3_PCI=m
 # CONFIG_USB_DWC3_DEBUG is not set
 CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y
 CONFIG_USB_DWC2=y
-CONFIG_USB_DWC2_HOST=y
+CONFIG_USB_DWC2_HOST=m
+CONFIG_USB_DWC2_PLATFORM=y
+CONFIG_USB_DWC2_PCI=y
 
 #
-# Gadget/Dual-role mode requires USB Gadget support to be enabled
+# Gadget mode requires USB Gadget support to be enabled
 #
-CONFIG_USB_DWC2_PLATFORM=y
-CONFIG_USB_DWC2_PCI=y
+CONFIG_USB_DWC2_PERIPHERAL=m
 # CONFIG_USB_DWC2_DEBUG is not set
 # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
 CONFIG_USB_CHIPIDEA=m
@@ -6061,12 +6004,6 @@ CONFIG_USB_PXA27X=m
 CONFIG_USB_MV_UDC=m
 CONFIG_USB_MV_U3D=m
 # CONFIG_USB_M66592 is not set
-CONFIG_USB_BDC_UDC=m
-
-#
-# Platform Support
-#
-CONFIG_USB_BDC_PCI=m
 CONFIG_USB_AMD5536UDC=m
 CONFIG_USB_NET2272=m
 CONFIG_USB_NET2272_DMA=y
@@ -6090,10 +6027,7 @@ CONFIG_USB_F_RNDIS=m
 CONFIG_USB_F_MASS_STORAGE=m
 CONFIG_USB_F_FS=m
 CONFIG_USB_F_UAC1=m
-CONFIG_USB_F_UAC2=m
 CONFIG_USB_F_UVC=m
-CONFIG_USB_F_MIDI=m
-CONFIG_USB_F_HID=m
 CONFIG_USB_CONFIGFS=m
 CONFIG_USB_CONFIGFS_SERIAL=y
 CONFIG_USB_CONFIGFS_ACM=y
@@ -6107,10 +6041,6 @@ CONFIG_USB_CONFIGFS_PHONET=y
 CONFIG_USB_CONFIGFS_MASS_STORAGE=y
 CONFIG_USB_CONFIGFS_F_LB_SS=y
 CONFIG_USB_CONFIGFS_F_FS=y
-CONFIG_USB_CONFIGFS_F_UAC1=y
-CONFIG_USB_CONFIGFS_F_UAC2=y
-CONFIG_USB_CONFIGFS_F_MIDI=y
-CONFIG_USB_CONFIGFS_F_HID=y
 CONFIG_USB_ZERO=m
 CONFIG_USB_AUDIO=m
 CONFIG_GADGET_UAC1=y
@@ -6175,7 +6105,6 @@ CONFIG_MMC_USHC=m
 CONFIG_MMC_USDHI6ROL0=m
 CONFIG_MMC_REALTEK_PCI=m
 CONFIG_MMC_REALTEK_USB=m
-CONFIG_MMC_TOSHIBA_PCI=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -6216,7 +6145,6 @@ CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8788=m
-CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA963X=m
@@ -6266,7 +6194,6 @@ CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_USER_MEM=y
-CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 # CONFIG_INFINIBAND_MTHCA_DEBUG is not set
@@ -6294,8 +6221,6 @@ CONFIG_EDAC=y
 CONFIG_EDAC_DECODE_MCE=m
 CONFIG_EDAC_MCE_INJ=m
 CONFIG_EDAC_MM_EDAC=m
-CONFIG_EDAC_AMD64=m
-# CONFIG_EDAC_AMD64_ERROR_INJECTION is not set
 CONFIG_EDAC_AMD76X=m
 CONFIG_EDAC_E7XXX=m
 CONFIG_EDAC_E752X=m
@@ -6335,7 +6260,6 @@ CONFIG_RTC_DRV_88PM860X=m
 CONFIG_RTC_DRV_88PM80X=m
 CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
 CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_LP8788=m
@@ -6469,8 +6393,6 @@ CONFIG_VFIO_IOMMU_TYPE1=m
 CONFIG_VFIO=m
 CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
-CONFIG_VFIO_PCI_MMAP=y
-CONFIG_VFIO_PCI_INTX=y
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -6571,9 +6493,10 @@ CONFIG_COMEDI_PCMMIO=m
 CONFIG_COMEDI_PCMUIO=m
 CONFIG_COMEDI_MULTIQ3=m
 CONFIG_COMEDI_S526=m
-CONFIG_COMEDI_PCI_DRIVERS=m
+CONFIG_COMEDI_PCI_DRIVERS=y
 CONFIG_COMEDI_8255_PCI=m
 CONFIG_COMEDI_ADDI_WATCHDOG=m
+CONFIG_COMEDI_ADDI_APCI_035=m
 CONFIG_COMEDI_ADDI_APCI_1032=m
 CONFIG_COMEDI_ADDI_APCI_1500=m
 CONFIG_COMEDI_ADDI_APCI_1516=m
@@ -6626,7 +6549,7 @@ CONFIG_COMEDI_RTD520=m
 CONFIG_COMEDI_S626=m
 CONFIG_COMEDI_MITE=m
 CONFIG_COMEDI_NI_TIOCMD=m
-CONFIG_COMEDI_PCMCIA_DRIVERS=m
+CONFIG_COMEDI_PCMCIA_DRIVERS=y
 CONFIG_COMEDI_CB_DAS16_CS=m
 CONFIG_COMEDI_DAS08_CS=m
 CONFIG_COMEDI_NI_DAQ_700_CS=m
@@ -6634,7 +6557,7 @@ CONFIG_COMEDI_NI_DAQ_DIO24_CS=m
 CONFIG_COMEDI_NI_LABPC_CS=m
 CONFIG_COMEDI_NI_MIO_CS=m
 CONFIG_COMEDI_QUATECH_DAQP_CS=m
-CONFIG_COMEDI_USB_DRIVERS=m
+CONFIG_COMEDI_USB_DRIVERS=y
 CONFIG_COMEDI_DT9812=m
 CONFIG_COMEDI_NI_USB6501=m
 CONFIG_COMEDI_USBDUX=m
@@ -6769,6 +6692,7 @@ CONFIG_IIO_SIMPLE_DUMMY=m
 # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set
 # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set
 CONFIG_FB_XGI=m
+CONFIG_BCM_WIMAX=m
 CONFIG_FT1000=m
 CONFIG_FT1000_USB=m
 CONFIG_FT1000_PCMCIA=m
@@ -6800,17 +6724,10 @@ CONFIG_DVB_CXD2099=m
 CONFIG_VIDEO_DT3155=m
 # CONFIG_DT3155_CCIR is not set
 CONFIG_DT3155_STREAMING=y
-CONFIG_VIDEO_TLG2300=m
-CONFIG_DVB_MN88472=m
-CONFIG_DVB_MN88473=m
-CONFIG_MEDIA_PARPORT_SUPPORT=y
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_PMS=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_SAA7191=m
+# CONFIG_VIDEO_TCM825X is not set
 CONFIG_LIRC_STAGING=y
 CONFIG_LIRC_BT829=m
+CONFIG_LIRC_IGORPLUGUSB=m
 CONFIG_LIRC_IMON=m
 CONFIG_LIRC_PARALLEL=m
 CONFIG_LIRC_SASEM=m
@@ -6822,6 +6739,7 @@ CONFIG_LIRC_ZILOG=m
 #
 # Android
 #
+# CONFIG_ANDROID is not set
 CONFIG_USB_WPAN_HCD=m
 CONFIG_WIMAX_GDM72XX=m
 CONFIG_WIMAX_GDM72XX_QOS=y
@@ -6908,6 +6826,11 @@ CONFIG_PVPANIC=m
 CONFIG_CHROME_PLATFORMS=y
 CONFIG_CHROMEOS_LAPTOP=m
 CONFIG_CHROMEOS_PSTORE=m
+
+#
+# SOC (System On Chip) specific Drivers
+#
+CONFIG_SOC_TI=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -6943,7 +6866,6 @@ CONFIG_DW_APB_TIMER=y
 # CONFIG_SH_TIMER_TMU is not set
 # CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
-CONFIG_PCC=y
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_DMAR_TABLE=y
@@ -6964,7 +6886,6 @@ CONFIG_STE_MODEM_RPROC=m
 #
 # SOC (System On Chip) specific Drivers
 #
-CONFIG_SOC_TI=y
 CONFIG_PM_DEVFREQ=y
 
 #
@@ -7027,7 +6948,6 @@ CONFIG_AD7793=m
 CONFIG_AD7887=m
 CONFIG_AD7923=m
 CONFIG_AD799X=m
-CONFIG_AXP288_ADC=m
 CONFIG_LP8788_ADC=m
 CONFIG_MAX1027=m
 CONFIG_MAX1363=m
@@ -7035,7 +6955,6 @@ CONFIG_MCP320X=m
 CONFIG_MCP3422=m
 CONFIG_MEN_Z188_ADC=m
 CONFIG_NAU7802=m
-CONFIG_QCOM_SPMI_IADC=m
 CONFIG_TI_ADC081C=m
 CONFIG_TI_ADC128S052=m
 CONFIG_TI_AM335X_ADC=m
@@ -7111,7 +7030,6 @@ CONFIG_ITG3200=m
 #
 CONFIG_DHT11=m
 CONFIG_SI7005=m
-CONFIG_SI7020=m
 
 #
 # Inertial measurement units
@@ -7168,7 +7086,6 @@ CONFIG_IIO_SYSFS_TRIGGER=m
 #
 # Pressure sensors
 #
-CONFIG_BMP280=m
 CONFIG_HID_SENSOR_PRESS=m
 CONFIG_MPL115=m
 CONFIG_MPL3115=m
@@ -7241,11 +7158,6 @@ CONFIG_RAS=y
 CONFIG_THUNDERBOLT=m
 
 #
-# Android
-#
-# CONFIG_ANDROID is not set
-
-#
 # Firmware Drivers
 #
 CONFIG_EDD=y
@@ -7430,7 +7342,6 @@ CONFIG_SQUASHFS_FILE_DIRECT=y
 CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 CONFIG_SQUASHFS_XATTR=y
 CONFIG_SQUASHFS_ZLIB=y
-# CONFIG_SQUASHFS_LZ4 is not set
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
@@ -7615,7 +7526,6 @@ CONFIG_FRAME_WARN=1024
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_READABLE_ASM is not set
 CONFIG_UNUSED_SYMBOLS=y
-# CONFIG_PAGE_OWNER is not set
 CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
@@ -7629,7 +7539,6 @@ CONFIG_DEBUG_KERNEL=y
 #
 # Memory Debugging
 #
-# CONFIG_PAGE_EXTENSION is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
@@ -7666,7 +7575,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
-CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_SCHED_STACK_END_CHECK is not set
 CONFIG_TIMER_STATS=y
 
 #
@@ -7783,7 +7692,6 @@ CONFIG_KGDB_SERIAL_CONSOLE=y
 # CONFIG_KGDB_TESTS is not set
 CONFIG_KGDB_LOW_LEVEL_TRAP=y
 CONFIG_KGDB_KDB=y
-CONFIG_KDB_DEFAULT_ENABLE=0x1
 CONFIG_KDB_KEYBOARD=y
 CONFIG_KDB_CONTINUE_CATASTROPHIC=0
 CONFIG_STRICT_DEVMEM=y
@@ -7873,7 +7781,6 @@ CONFIG_IMA_DEFAULT_HASH_SHA1=y
 CONFIG_IMA_DEFAULT_HASH="sha1"
 CONFIG_IMA_APPRAISE=y
 CONFIG_IMA_TRUSTED_KEYRING=y
-# CONFIG_IMA_LOAD_X509 is not set
 CONFIG_EVM=y
 CONFIG_EVM_ATTR_FSUUID=y
 CONFIG_EVM_EXTRA_SMACK_XATTRS=y
diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf
index cf4cd766c0..0b865808ab 100644
--- a/gnu/packages/linux-libre-x86_64.conf
+++ b/gnu/packages/linux-libre-x86_64.conf
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.19.0-gnu Kernel Configuration
+# Linux/x86 3.18.4-gnu Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
@@ -89,7 +89,6 @@ CONFIG_GENERIC_IRQ_LEGACY_ALLOC_HWIRQ=y
 CONFIG_GENERIC_PENDING_IRQ=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
-CONFIG_GENERIC_MSI_IRQ=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
@@ -109,17 +108,19 @@ CONFIG_GENERIC_CMOS_UPDATE=y
 CONFIG_TICK_ONESHOT=y
 CONFIG_NO_HZ_COMMON=y
 # CONFIG_HZ_PERIODIC is not set
-CONFIG_NO_HZ_IDLE=y
-# CONFIG_NO_HZ_FULL is not set
+# CONFIG_NO_HZ_IDLE is not set
+CONFIG_NO_HZ_FULL=y
+# CONFIG_NO_HZ_FULL_ALL is not set
+CONFIG_NO_HZ_FULL_SYSIDLE=y
+CONFIG_NO_HZ_FULL_SYSIDLE_SMALL=8
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 
 #
 # CPU/Task time and stats accounting
 #
-CONFIG_TICK_CPU_ACCOUNTING=y
-# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
-# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_VIRT_CPU_ACCOUNTING=y
+CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_BSD_PROCESS_ACCT_V3=y
 CONFIG_TASKSTATS=y
@@ -131,6 +132,7 @@ CONFIG_TASK_IO_ACCOUNTING=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
+# CONFIG_PREEMPT_RCU is not set
 # CONFIG_TASKS_RCU is not set
 CONFIG_RCU_STALL_COMMON=y
 CONFIG_CONTEXT_TRACKING=y
@@ -152,8 +154,8 @@ CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
 CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
 CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
 CONFIG_ARCH_SUPPORTS_INT128=y
-CONFIG_NUMA_BALANCING=y
 CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
+CONFIG_NUMA_BALANCING=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
@@ -161,7 +163,7 @@ CONFIG_CGROUP_DEVICE=y
 CONFIG_CPUSETS=y
 CONFIG_PROC_PID_CPUSET=y
 CONFIG_CGROUP_CPUACCT=y
-CONFIG_PAGE_COUNTER=y
+CONFIG_RESOURCE_COUNTERS=y
 CONFIG_MEMCG=y
 CONFIG_MEMCG_SWAP=y
 # CONFIG_MEMCG_SWAP_ENABLED is not set
@@ -192,7 +194,6 @@ CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
 CONFIG_RD_LZ4=y
-CONFIG_INIT_FALLBACK=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
@@ -300,7 +301,6 @@ CONFIG_COMPAT_OLD_SIGACTION=y
 # GCOV-based kernel profiling
 #
 # CONFIG_GCOV_KERNEL is not set
-CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
 # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -451,7 +451,6 @@ CONFIG_SCHED_MC=y
 # CONFIG_PREEMPT_NONE is not set
 CONFIG_PREEMPT_VOLUNTARY=y
 # CONFIG_PREEMPT is not set
-CONFIG_X86_UP_APIC_MSI=y
 CONFIG_X86_LOCAL_APIC=y
 CONFIG_X86_IO_APIC=y
 CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y
@@ -463,7 +462,6 @@ CONFIG_X86_MCE_INJECT=m
 CONFIG_X86_THERMAL_VECTOR=y
 CONFIG_X86_16BIT=y
 CONFIG_X86_ESPFIX64=y
-CONFIG_X86_VSYSCALL_EMULATION=y
 CONFIG_I8K=m
 CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
@@ -551,7 +549,6 @@ CONFIG_X86_PAT=y
 CONFIG_ARCH_USES_PG_UNCACHED=y
 CONFIG_ARCH_RANDOM=y
 CONFIG_X86_SMAP=y
-# CONFIG_X86_INTEL_MPX is not set
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_EFI_MIXED=y
@@ -597,6 +594,7 @@ CONFIG_PM_SLEEP_SMP=y
 CONFIG_PM_WAKELOCKS=y
 CONFIG_PM_WAKELOCKS_LIMIT=100
 CONFIG_PM_WAKELOCKS_GC=y
+CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 CONFIG_PM_DEBUG=y
 CONFIG_PM_ADVANCED_DEBUG=y
@@ -647,7 +645,6 @@ CONFIG_ACPI_APEI_MEMORY_FAILURE=y
 CONFIG_ACPI_APEI_EINJ=m
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
 CONFIG_ACPI_EXTLOG=m
-# CONFIG_PMIC_OPREGION is not set
 CONFIG_SFI=y
 
 #
@@ -669,7 +666,7 @@ CONFIG_CPU_FREQ_GOV_ONDEMAND=y
 CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 
 #
-# CPU frequency scaling drivers
+# x86 CPU frequency scaling drivers
 #
 CONFIG_X86_INTEL_PSTATE=y
 CONFIG_X86_PCC_CPUFREQ=y
@@ -730,6 +727,7 @@ CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 CONFIG_PCI_PRI=y
 CONFIG_PCI_PASID=y
+CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
 
 #
@@ -842,7 +840,6 @@ CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_NET_UDP_TUNNEL=m
 CONFIG_NET_FOU=m
-CONFIG_NET_FOU_IP_TUNNELS=y
 CONFIG_GENEVE=m
 CONFIG_INET_AH=m
 CONFIG_INET_ESP=m
@@ -954,7 +951,6 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NF_NAT_REDIRECT=m
 CONFIG_NETFILTER_SYNPROXY=m
 CONFIG_NF_TABLES=m
 CONFIG_NF_TABLES_INET=m
@@ -967,7 +963,6 @@ CONFIG_NFT_COUNTER=m
 CONFIG_NFT_LOG=m
 CONFIG_NFT_LIMIT=m
 CONFIG_NFT_MASQ=m
-CONFIG_NFT_REDIR=m
 CONFIG_NFT_NAT=m
 CONFIG_NFT_QUEUE=m
 CONFIG_NFT_REJECT=m
@@ -1136,7 +1131,6 @@ CONFIG_NF_NAT_IPV4=m
 CONFIG_NFT_CHAIN_NAT_IPV4=m
 CONFIG_NF_NAT_MASQUERADE_IPV4=m
 CONFIG_NFT_MASQ_IPV4=m
-CONFIG_NFT_REDIR_IPV4=m
 CONFIG_NF_NAT_SNMP_BASIC=m
 CONFIG_NF_NAT_PROTO_GRE=m
 CONFIG_NF_NAT_PPTP=m
@@ -1177,7 +1171,6 @@ CONFIG_NF_NAT_IPV6=m
 CONFIG_NFT_CHAIN_NAT_IPV6=m
 CONFIG_NF_NAT_MASQUERADE_IPV6=m
 CONFIG_NFT_MASQ_IPV6=m
-CONFIG_NFT_REDIR_IPV6=m
 CONFIG_IP6_NF_IPTABLES=m
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1277,7 +1270,6 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
 CONFIG_NET_DSA=m
-CONFIG_NET_DSA_HWMON=y
 CONFIG_NET_DSA_TAG_BRCM=y
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
@@ -1369,7 +1361,6 @@ CONFIG_NET_ACT_PEDIT=m
 CONFIG_NET_ACT_SIMP=m
 CONFIG_NET_ACT_SKBEDIT=m
 CONFIG_NET_ACT_CSUM=m
-CONFIG_NET_ACT_VLAN=m
 # CONFIG_NET_CLS_IND is not set
 CONFIG_NET_SCH_FIFO=y
 CONFIG_DCB=y
@@ -1381,16 +1372,15 @@ CONFIG_BATMAN_ADV_NC=y
 CONFIG_BATMAN_ADV_MCAST=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-CONFIG_OPENVSWITCH_GRE=m
-CONFIG_OPENVSWITCH_VXLAN=m
-CONFIG_OPENVSWITCH_GENEVE=m
+CONFIG_OPENVSWITCH_GRE=y
+CONFIG_OPENVSWITCH_VXLAN=y
+CONFIG_OPENVSWITCH_GENEVE=y
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
 CONFIG_NET_MPLS_GSO=m
 CONFIG_HSR=m
-# CONFIG_NET_SWITCHDEV is not set
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
@@ -1533,7 +1523,7 @@ CONFIG_VLSI_FIR=m
 CONFIG_VIA_FIR=m
 CONFIG_MCS_FIR=m
 CONFIG_BT=m
-CONFIG_BT_BREDR=y
+CONFIG_BT_6LOWPAN=m
 CONFIG_BT_RFCOMM=m
 CONFIG_BT_RFCOMM_TTY=y
 CONFIG_BT_BNEP=m
@@ -1541,8 +1531,6 @@ CONFIG_BT_BNEP_MC_FILTER=y
 CONFIG_BT_BNEP_PROTO_FILTER=y
 CONFIG_BT_CMTP=m
 CONFIG_BT_HIDP=m
-CONFIG_BT_LE=y
-CONFIG_BT_6LOWPAN=m
 
 #
 # Bluetooth device drivers
@@ -1595,7 +1583,6 @@ CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
-CONFIG_MAC80211_RC_MINSTREL_VHT=y
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
@@ -1647,8 +1634,7 @@ CONFIG_NFC_MRVL=m
 CONFIG_NFC_MRVL_USB=m
 CONFIG_NFC_ST21NFCA=m
 CONFIG_NFC_ST21NFCA_I2C=m
-CONFIG_NFC_ST21NFCB=m
-CONFIG_NFC_ST21NFCB_I2C=m
+# CONFIG_NFC_ST21NFCB is not set
 CONFIG_HAVE_BPF_JIT=y
 
 #
@@ -1669,9 +1655,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y
 CONFIG_EXTRA_FIRMWARE=""
 CONFIG_FW_LOADER_USER_HELPER=y
 # CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
-CONFIG_WANT_DEV_COREDUMP=y
 CONFIG_ALLOW_DEV_COREDUMP=y
-CONFIG_DEV_COREDUMP=y
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 CONFIG_SYS_HYPERVISOR=y
@@ -1680,7 +1664,6 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_SPI=y
-CONFIG_REGMAP_SPMI=m
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
@@ -2125,8 +2108,7 @@ CONFIG_SCSI_QLA_ISCSI=m
 CONFIG_SCSI_LPFC=m
 # CONFIG_SCSI_LPFC_DEBUG_FS is not set
 CONFIG_SCSI_DC395x=m
-CONFIG_SCSI_AM53C974=m
-CONFIG_SCSI_WD719X=m
+CONFIG_SCSI_DC390T=m
 CONFIG_SCSI_DEBUG=m
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
@@ -2334,7 +2316,6 @@ CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
 CONFIG_NET_TEAM_MODE_LOADBALANCE=m
 CONFIG_MACVLAN=m
 CONFIG_MACVTAP=m
-CONFIG_IPVLAN=m
 CONFIG_VXLAN=m
 CONFIG_NETCONSOLE=m
 CONFIG_NETCONSOLE_DYNAMIC=y
@@ -2413,7 +2394,6 @@ CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
 CONFIG_NET_DSA_MV88E6131=m
 CONFIG_NET_DSA_MV88E6123_61_65=m
 CONFIG_NET_DSA_MV88E6171=m
-CONFIG_NET_DSA_MV88E6352=m
 CONFIG_NET_DSA_BCM_SF2=m
 CONFIG_ETHERNET=y
 CONFIG_MDIO=m
@@ -2447,7 +2427,6 @@ CONFIG_B44=m
 CONFIG_B44_PCI_AUTOSELECT=y
 CONFIG_B44_PCICORE_AUTOSELECT=y
 CONFIG_B44_PCI=y
-CONFIG_BCMGENET=m
 CONFIG_BNX2=m
 CONFIG_CNIC=m
 CONFIG_TIGON3=m
@@ -2511,7 +2490,7 @@ CONFIG_IXGBEVF=m
 CONFIG_I40E=m
 CONFIG_I40E_VXLAN=y
 CONFIG_I40E_DCB=y
-CONFIG_I40E_FCOE=y
+# CONFIG_I40E_FCOE is not set
 CONFIG_I40EVF=m
 CONFIG_FM10K=m
 CONFIG_FM10K_VXLAN=y
@@ -2579,7 +2558,6 @@ CONFIG_8139TOO_8129=y
 CONFIG_R8169=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
-CONFIG_NET_VENDOR_ROCKER=y
 CONFIG_NET_VENDOR_SAMSUNG=y
 CONFIG_SXGBE_ETH=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -2600,8 +2578,10 @@ CONFIG_SMSC911X=m
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=m
+CONFIG_STMMAC_PLATFORM=y
 # CONFIG_STMMAC_PCI is not set
+# CONFIG_STMMAC_DEBUG_FS is not set
+# CONFIG_STMMAC_DA is not set
 CONFIG_NET_VENDOR_SUN=y
 CONFIG_HAPPYMEAL=m
 CONFIG_SUNGEM=m
@@ -2756,7 +2736,6 @@ CONFIG_ATH9K_STATION_STATISTICS=y
 CONFIG_ATH9K_WOW=y
 CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_CHANNEL_CONTEXT=y
-CONFIG_ATH9K_PCOEM=y
 CONFIG_ATH9K_HTC=m
 CONFIG_ATH9K_HTC_DEBUGFS=y
 CONFIG_CARL9170=m
@@ -2843,7 +2822,7 @@ CONFIG_IWLDVM=m
 CONFIG_IWLMVM=m
 CONFIG_IWLWIFI_OPMODE_MODULAR=y
 # CONFIG_IWLWIFI_BCAST_FILTERING is not set
-# CONFIG_IWLWIFI_UAPSD is not set
+CONFIG_IWLWIFI_UAPSD=y
 
 #
 # Debugging Options
@@ -2981,6 +2960,7 @@ CONFIG_X25_ASY=m
 CONFIG_SBNI=m
 # CONFIG_SBNI_MULTILINE is not set
 CONFIG_IEEE802154_DRIVERS=m
+# CONFIG_IEEE802154_FAKEHARD is not set
 CONFIG_IEEE802154_FAKELB=m
 CONFIG_IEEE802154_AT86RF230=m
 CONFIG_IEEE802154_MRF24J40=m
@@ -3186,9 +3166,6 @@ CONFIG_MOUSE_SERIAL=m
 CONFIG_MOUSE_APPLETOUCH=m
 CONFIG_MOUSE_BCM5974=m
 CONFIG_MOUSE_CYAPA=m
-CONFIG_MOUSE_ELAN_I2C=m
-CONFIG_MOUSE_ELAN_I2C_I2C=y
-CONFIG_MOUSE_ELAN_I2C_SMBUS=y
 CONFIG_MOUSE_VSXXXAA=m
 CONFIG_MOUSE_GPIO=m
 CONFIG_MOUSE_SYNAPTICS_I2C=m
@@ -3254,10 +3231,8 @@ CONFIG_TOUCHSCREEN_DYNAPRO=m
 CONFIG_TOUCHSCREEN_HAMPSHIRE=m
 CONFIG_TOUCHSCREEN_EETI=m
 CONFIG_TOUCHSCREEN_FUJITSU=m
-CONFIG_TOUCHSCREEN_GOODIX=m
 CONFIG_TOUCHSCREEN_ILI210X=m
 CONFIG_TOUCHSCREEN_GUNZE=m
-CONFIG_TOUCHSCREEN_ELAN=m
 CONFIG_TOUCHSCREEN_ELO=m
 CONFIG_TOUCHSCREEN_WACOM_W8001=m
 CONFIG_TOUCHSCREEN_WACOM_I2C=m
@@ -3475,7 +3450,6 @@ CONFIG_IPMI_HANDLER=m
 CONFIG_IPMI_DEVICE_INTERFACE=m
 CONFIG_IPMI_SI=m
 CONFIG_IPMI_SI_PROBE_DEFAULTS=y
-CONFIG_IPMI_SSIF=m
 CONFIG_IPMI_WATCHDOG=m
 CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
@@ -3589,7 +3563,6 @@ CONFIG_I2C_XILINX=m
 # External I2C/SMBus adapter drivers
 #
 CONFIG_I2C_DIOLAN_U2C=m
-CONFIG_I2C_DLN2=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
 CONFIG_I2C_ROBOTFUZZ_OSIF=m
@@ -3602,7 +3575,6 @@ CONFIG_I2C_VIPERBOARD=m
 #
 CONFIG_I2C_CROS_EC_TUNNEL=m
 CONFIG_I2C_STUB=m
-# CONFIG_I2C_SLAVE is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -3679,12 +3651,8 @@ CONFIG_PINCTRL=y
 #
 # Pin controllers
 #
-CONFIG_PINMUX=y
-CONFIG_PINCONF=y
-CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
 CONFIG_PINCTRL_BAYTRAIL=y
-CONFIG_PINCTRL_CHERRYVIEW=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIO_DEVRES=y
@@ -3701,6 +3669,7 @@ CONFIG_GPIO_MAX730X=m
 # Memory mapped GPIO drivers:
 #
 CONFIG_GPIO_GENERIC_PLATFORM=m
+CONFIG_GPIO_DWAPB=m
 CONFIG_GPIO_IT8761E=m
 CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_SCH311X=m
@@ -3768,7 +3737,6 @@ CONFIG_GPIO_TPS65910=y
 # USB GPIO expanders:
 #
 CONFIG_GPIO_VIPERBOARD=m
-CONFIG_GPIO_DLN2=m
 CONFIG_W1=m
 CONFIG_W1_CON=y
 
@@ -3893,7 +3861,6 @@ CONFIG_SENSORS_HIH6130=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 CONFIG_SENSORS_IIO_HWMON=m
-CONFIG_SENSORS_I5500=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IT87=m
 CONFIG_SENSORS_JC42=m
@@ -3940,14 +3907,12 @@ CONFIG_SENSORS_PC87427=m
 CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_NCT6683=m
 CONFIG_SENSORS_NCT6775=m
-CONFIG_SENSORS_NCT7802=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
 CONFIG_SENSORS_LTC2978=m
-CONFIG_SENSORS_LTC2978_REGULATOR=y
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
@@ -4140,7 +4105,6 @@ CONFIG_MFD_DA9052_SPI=y
 CONFIG_MFD_DA9052_I2C=y
 CONFIG_MFD_DA9055=y
 CONFIG_MFD_DA9063=y
-CONFIG_MFD_DLN2=m
 CONFIG_MFD_MC13XXX=m
 CONFIG_MFD_MC13XXX_SPI=m
 CONFIG_MFD_MC13XXX_I2C=m
@@ -4219,7 +4183,7 @@ CONFIG_MFD_WM831X_I2C=y
 CONFIG_MFD_WM831X_SPI=y
 CONFIG_MFD_WM8350=y
 CONFIG_MFD_WM8350_I2C=y
-CONFIG_MFD_WM8994=m
+CONFIG_MFD_WM8994=y
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 CONFIG_REGULATOR_FIXED_VOLTAGE=m
@@ -4359,9 +4323,16 @@ CONFIG_IR_NUVOTON=m
 CONFIG_IR_REDRAT3=m
 CONFIG_IR_STREAMZAP=m
 CONFIG_IR_WINBOND_CIR=m
-CONFIG_IR_IGORPLUGUSB=m
 CONFIG_IR_IGUANA=m
 CONFIG_IR_TTUSBIR=m
+CONFIG_IR_IMG=m
+# CONFIG_IR_IMG_RAW is not set
+CONFIG_IR_IMG_HW=y
+CONFIG_IR_IMG_NEC=y
+CONFIG_IR_IMG_JVC=y
+CONFIG_IR_IMG_SONY=y
+CONFIG_IR_IMG_SHARP=y
+CONFIG_IR_IMG_SANYO=y
 CONFIG_RC_LOOPBACK=m
 CONFIG_IR_GPIO_CIR=m
 CONFIG_MEDIA_USB_SUPPORT=y
@@ -4437,6 +4408,7 @@ CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
 # CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
 CONFIG_VIDEO_HDPVR=m
+CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
@@ -4599,7 +4571,6 @@ CONFIG_DVB_MANTIS=m
 CONFIG_DVB_HOPPER=m
 CONFIG_DVB_NGENE=m
 CONFIG_DVB_DDBRIDGE=m
-CONFIG_DVB_SMIPCIE=m
 CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 CONFIG_VIDEO_VIA_CAMERA=m
@@ -4610,12 +4581,16 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
 CONFIG_V4L_TEST_DRIVERS=y
 CONFIG_VIDEO_VIVID=m
-CONFIG_VIDEO_VIM2M=m
+CONFIG_VIDEO_MEM2MEM_TESTDEV=m
 
 #
 # Supported MMC/SDIO adapters
 #
 CONFIG_SMS_SDIO_DRV=m
+CONFIG_MEDIA_PARPORT_SUPPORT=y
+CONFIG_VIDEO_BWQCAM=m
+CONFIG_VIDEO_CQCAM=m
+CONFIG_VIDEO_W9966=m
 CONFIG_RADIO_ADAPTERS=y
 CONFIG_RADIO_TEA575X=m
 CONFIG_RADIO_SI470X=y
@@ -4801,7 +4776,6 @@ CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
 CONFIG_MEDIA_TUNER_M88TS2022=m
-CONFIG_MEDIA_TUNER_M88RS6000T=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_SI2157=m
 CONFIG_MEDIA_TUNER_IT913X=m
@@ -4913,10 +4887,6 @@ CONFIG_DVB_S5H1411=m
 CONFIG_DVB_S921=m
 CONFIG_DVB_DIB8000=m
 CONFIG_DVB_MB86A20S=m
-
-#
-# ISDB-S (satellite) & ISDB-T (terrestrial) frontends
-#
 CONFIG_DVB_TC90522=m
 
 #
@@ -4936,7 +4906,6 @@ CONFIG_DVB_ISL6405=m
 CONFIG_DVB_ISL6421=m
 CONFIG_DVB_ISL6423=m
 CONFIG_DVB_A8293=m
-CONFIG_DVB_SP2=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
@@ -4974,7 +4943,6 @@ CONFIG_DRM_TTM=m
 #
 # I2C encoder or helper chips
 #
-CONFIG_DRM_I2C_ADV7511=m
 CONFIG_DRM_I2C_CH7006=m
 CONFIG_DRM_I2C_SIL164=m
 CONFIG_DRM_I2C_NXP_TDA998X=m
@@ -5007,7 +4975,6 @@ CONFIG_DRM_AST=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
 # CONFIG_DRM_BOCHS is not set
-CONFIG_HSA_AMD=m
 
 #
 # Frame buffer Devices
@@ -5344,7 +5311,7 @@ CONFIG_SND_BCD2000=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
 CONFIG_SND_DICE=m
-CONFIG_SND_OXFW=m
+CONFIG_SND_FIREWIRE_SPEAKERS=m
 CONFIG_SND_ISIGHT=m
 CONFIG_SND_SCS1X=m
 CONFIG_SND_FIREWORKS=m
@@ -5370,9 +5337,6 @@ CONFIG_SND_SOC_FSL_SSI=m
 CONFIG_SND_SOC_FSL_SPDIF=m
 CONFIG_SND_SOC_FSL_ESAI=m
 CONFIG_SND_SOC_IMX_AUDMUX=m
-CONFIG_SND_SST_MFLD_PLATFORM=m
-CONFIG_SND_SST_IPC=m
-CONFIG_SND_SST_IPC_ACPI=m
 CONFIG_SND_SOC_INTEL_SST=m
 CONFIG_SND_SOC_INTEL_SST_ACPI=m
 CONFIG_SND_SOC_INTEL_HASWELL=m
@@ -5381,8 +5345,6 @@ CONFIG_SND_SOC_INTEL_HASWELL_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_RT5640_MACH=m
 CONFIG_SND_SOC_INTEL_BYT_MAX98090_MACH=m
 CONFIG_SND_SOC_INTEL_BROADWELL_MACH=m
-CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
-CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 
 #
@@ -5395,16 +5357,12 @@ CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
 CONFIG_SND_SOC_CS35L32=m
-CONFIG_SND_SOC_CS42L51=m
-CONFIG_SND_SOC_CS42L51_I2C=m
 CONFIG_SND_SOC_CS42L52=m
 CONFIG_SND_SOC_CS42L56=m
 CONFIG_SND_SOC_CS42L73=m
 CONFIG_SND_SOC_CS4265=m
 CONFIG_SND_SOC_CS4270=m
 CONFIG_SND_SOC_CS4271=m
-CONFIG_SND_SOC_CS4271_I2C=m
-CONFIG_SND_SOC_CS4271_SPI=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_HDMI_CODEC=m
@@ -5417,10 +5375,7 @@ CONFIG_SND_SOC_PCM512x_I2C=m
 CONFIG_SND_SOC_PCM512x_SPI=m
 CONFIG_SND_SOC_RL6231=m
 CONFIG_SND_SOC_RT286=m
-CONFIG_SND_SOC_RT5631=m
 CONFIG_SND_SOC_RT5640=m
-CONFIG_SND_SOC_RT5670=m
-# CONFIG_SND_SOC_RT5677_SPI is not set
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_SI476X=m
 CONFIG_SND_SOC_SIGMADSP=m
@@ -5434,13 +5389,8 @@ CONFIG_SND_SOC_SSM4567=m
 CONFIG_SND_SOC_STA350=m
 CONFIG_SND_SOC_TAS2552=m
 CONFIG_SND_SOC_TAS5086=m
-CONFIG_SND_SOC_TFA9879=m
-CONFIG_SND_SOC_TLV320AIC23=m
-CONFIG_SND_SOC_TLV320AIC23_I2C=m
-CONFIG_SND_SOC_TLV320AIC23_SPI=m
 CONFIG_SND_SOC_TLV320AIC31XX=m
 CONFIG_SND_SOC_TLV320AIC3X=m
-CONFIG_SND_SOC_TS3A227E=m
 CONFIG_SND_SOC_WM8510=m
 CONFIG_SND_SOC_WM8523=m
 CONFIG_SND_SOC_WM8580=m
@@ -5466,7 +5416,6 @@ CONFIG_AC97_BUS=m
 # HID support
 #
 CONFIG_HID=m
-CONFIG_HID_BATTERY_STRENGTH=y
 CONFIG_HIDRAW=y
 CONFIG_UHID=m
 CONFIG_HID_GENERIC=m
@@ -5508,7 +5457,6 @@ CONFIG_HID_LCPOWER=m
 CONFIG_HID_LENOVO=m
 CONFIG_HID_LOGITECH=m
 CONFIG_HID_LOGITECH_DJ=m
-CONFIG_HID_LOGITECH_HIDPP=m
 CONFIG_LOGITECH_FF=y
 CONFIG_LOGIRUMBLEPAD2_FF=y
 CONFIG_LOGIG940_FF=y
@@ -5529,7 +5477,6 @@ CONFIG_HID_PICOLCD_BACKLIGHT=y
 CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
-CONFIG_HID_PLANTRONICS=m
 CONFIG_HID_PRIMAX=m
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
@@ -5676,10 +5623,9 @@ CONFIG_USB_MUSB_HDRC=m
 # CONFIG_USB_MUSB_HOST is not set
 # CONFIG_USB_MUSB_GADGET is not set
 CONFIG_USB_MUSB_DUAL_ROLE=y
-
-#
-# Platform Glue Layer
-#
+CONFIG_USB_MUSB_TUSB6010=m
+CONFIG_USB_MUSB_UX500=m
+# CONFIG_USB_UX500_DMA is not set
 CONFIG_MUSB_PIO_ONLY=y
 CONFIG_USB_DWC3=m
 # CONFIG_USB_DWC3_HOST is not set
@@ -5697,13 +5643,14 @@ CONFIG_USB_DWC3_PCI=m
 # CONFIG_USB_DWC3_DEBUG is not set
 CONFIG_DWC3_HOST_USB3_LPM_ENABLE=y
 CONFIG_USB_DWC2=y
-CONFIG_USB_DWC2_HOST=y
+CONFIG_USB_DWC2_HOST=m
+CONFIG_USB_DWC2_PLATFORM=y
+CONFIG_USB_DWC2_PCI=y
 
 #
-# Gadget/Dual-role mode requires USB Gadget support to be enabled
+# Gadget mode requires USB Gadget support to be enabled
 #
-CONFIG_USB_DWC2_PLATFORM=y
-CONFIG_USB_DWC2_PCI=y
+CONFIG_USB_DWC2_PERIPHERAL=m
 # CONFIG_USB_DWC2_DEBUG is not set
 # CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
 CONFIG_USB_CHIPIDEA=m
@@ -5842,12 +5789,6 @@ CONFIG_USB_PXA27X=m
 CONFIG_USB_MV_UDC=m
 CONFIG_USB_MV_U3D=m
 # CONFIG_USB_M66592 is not set
-CONFIG_USB_BDC_UDC=m
-
-#
-# Platform Support
-#
-CONFIG_USB_BDC_PCI=m
 CONFIG_USB_AMD5536UDC=m
 CONFIG_USB_NET2272=m
 CONFIG_USB_NET2272_DMA=y
@@ -5871,10 +5812,7 @@ CONFIG_USB_F_RNDIS=m
 CONFIG_USB_F_MASS_STORAGE=m
 CONFIG_USB_F_FS=m
 CONFIG_USB_F_UAC1=m
-CONFIG_USB_F_UAC2=m
 CONFIG_USB_F_UVC=m
-CONFIG_USB_F_MIDI=m
-CONFIG_USB_F_HID=m
 CONFIG_USB_CONFIGFS=m
 CONFIG_USB_CONFIGFS_SERIAL=y
 CONFIG_USB_CONFIGFS_ACM=y
@@ -5888,10 +5826,6 @@ CONFIG_USB_CONFIGFS_PHONET=y
 CONFIG_USB_CONFIGFS_MASS_STORAGE=y
 CONFIG_USB_CONFIGFS_F_LB_SS=y
 CONFIG_USB_CONFIGFS_F_FS=y
-CONFIG_USB_CONFIGFS_F_UAC1=y
-CONFIG_USB_CONFIGFS_F_UAC2=y
-CONFIG_USB_CONFIGFS_F_MIDI=y
-CONFIG_USB_CONFIGFS_F_HID=y
 CONFIG_USB_ZERO=m
 CONFIG_USB_AUDIO=m
 CONFIG_GADGET_UAC1=y
@@ -5957,7 +5891,6 @@ CONFIG_MMC_USHC=m
 CONFIG_MMC_USDHI6ROL0=m
 CONFIG_MMC_REALTEK_PCI=m
 CONFIG_MMC_REALTEK_USB=m
-CONFIG_MMC_TOSHIBA_PCI=m
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -5996,7 +5929,6 @@ CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
 CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_LP8788=m
-CONFIG_LEDS_LP8860=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
 CONFIG_LEDS_PCA963X=m
@@ -6045,7 +5977,6 @@ CONFIG_INFINIBAND=m
 CONFIG_INFINIBAND_USER_MAD=m
 CONFIG_INFINIBAND_USER_ACCESS=m
 CONFIG_INFINIBAND_USER_MEM=y
-CONFIG_INFINIBAND_ON_DEMAND_PAGING=y
 CONFIG_INFINIBAND_ADDR_TRANS=y
 CONFIG_INFINIBAND_MTHCA=m
 # CONFIG_INFINIBAND_MTHCA_DEBUG is not set
@@ -6113,7 +6044,6 @@ CONFIG_RTC_DRV_88PM860X=m
 CONFIG_RTC_DRV_88PM80X=m
 CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
-CONFIG_RTC_DRV_DS1374_WDT=y
 CONFIG_RTC_DRV_DS1672=m
 CONFIG_RTC_DRV_DS3232=m
 CONFIG_RTC_DRV_LP8788=m
@@ -6245,8 +6175,6 @@ CONFIG_VFIO_IOMMU_TYPE1=m
 CONFIG_VFIO=m
 CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
-CONFIG_VFIO_PCI_MMAP=y
-CONFIG_VFIO_PCI_INTX=y
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -6348,9 +6276,10 @@ CONFIG_COMEDI_PCMMIO=m
 CONFIG_COMEDI_PCMUIO=m
 CONFIG_COMEDI_MULTIQ3=m
 CONFIG_COMEDI_S526=m
-CONFIG_COMEDI_PCI_DRIVERS=m
+CONFIG_COMEDI_PCI_DRIVERS=y
 CONFIG_COMEDI_8255_PCI=m
 CONFIG_COMEDI_ADDI_WATCHDOG=m
+CONFIG_COMEDI_ADDI_APCI_035=m
 CONFIG_COMEDI_ADDI_APCI_1032=m
 CONFIG_COMEDI_ADDI_APCI_1500=m
 CONFIG_COMEDI_ADDI_APCI_1516=m
@@ -6403,7 +6332,7 @@ CONFIG_COMEDI_RTD520=m
 CONFIG_COMEDI_S626=m
 CONFIG_COMEDI_MITE=m
 CONFIG_COMEDI_NI_TIOCMD=m
-CONFIG_COMEDI_PCMCIA_DRIVERS=m
+CONFIG_COMEDI_PCMCIA_DRIVERS=y
 CONFIG_COMEDI_CB_DAS16_CS=m
 CONFIG_COMEDI_DAS08_CS=m
 CONFIG_COMEDI_NI_DAQ_700_CS=m
@@ -6411,7 +6340,7 @@ CONFIG_COMEDI_NI_DAQ_DIO24_CS=m
 CONFIG_COMEDI_NI_LABPC_CS=m
 CONFIG_COMEDI_NI_MIO_CS=m
 CONFIG_COMEDI_QUATECH_DAQP_CS=m
-CONFIG_COMEDI_USB_DRIVERS=m
+CONFIG_COMEDI_USB_DRIVERS=y
 CONFIG_COMEDI_DT9812=m
 CONFIG_COMEDI_NI_USB6501=m
 CONFIG_COMEDI_USBDUX=m
@@ -6546,6 +6475,7 @@ CONFIG_IIO_SIMPLE_DUMMY=m
 # CONFIG_IIO_SIMPLE_DUMMY_EVENTS is not set
 # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set
 CONFIG_FB_XGI=m
+CONFIG_BCM_WIMAX=m
 CONFIG_FT1000=m
 CONFIG_FT1000_USB=m
 CONFIG_FT1000_PCMCIA=m
@@ -6573,16 +6503,10 @@ CONFIG_DVB_CXD2099=m
 CONFIG_VIDEO_DT3155=m
 # CONFIG_DT3155_CCIR is not set
 CONFIG_DT3155_STREAMING=y
-CONFIG_VIDEO_TLG2300=m
-CONFIG_DVB_MN88472=m
-CONFIG_DVB_MN88473=m
-CONFIG_MEDIA_PARPORT_SUPPORT=y
-CONFIG_VIDEO_BWQCAM=m
-CONFIG_VIDEO_CQCAM=m
-CONFIG_VIDEO_W9966=m
-CONFIG_VIDEO_SAA7191=m
+# CONFIG_VIDEO_TCM825X is not set
 CONFIG_LIRC_STAGING=y
 CONFIG_LIRC_BT829=m
+CONFIG_LIRC_IGORPLUGUSB=m
 CONFIG_LIRC_IMON=m
 CONFIG_LIRC_PARALLEL=m
 CONFIG_LIRC_SASEM=m
@@ -6594,6 +6518,7 @@ CONFIG_LIRC_ZILOG=m
 #
 # Android
 #
+# CONFIG_ANDROID is not set
 CONFIG_USB_WPAN_HCD=m
 CONFIG_WIMAX_GDM72XX=m
 CONFIG_WIMAX_GDM72XX_QOS=y
@@ -6620,6 +6545,7 @@ CONFIG_DGNC=m
 CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
 CONFIG_CRYPTO_SKEIN=y
+CONFIG_CRYPTO_THREEFISH=y
 CONFIG_UNISYSSPAR=y
 CONFIG_UNISYS_VISORUTIL=m
 CONFIG_UNISYS_VISORCHANNEL=m
@@ -6683,6 +6609,11 @@ CONFIG_PVPANIC=m
 CONFIG_CHROME_PLATFORMS=y
 CONFIG_CHROMEOS_LAPTOP=m
 CONFIG_CHROMEOS_PSTORE=m
+
+#
+# SOC (System On Chip) specific Drivers
+#
+CONFIG_SOC_TI=y
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -6716,7 +6647,6 @@ CONFIG_CLKBLD_I8253=y
 # CONFIG_SH_TIMER_TMU is not set
 # CONFIG_EM_TIMER_STI is not set
 CONFIG_MAILBOX=y
-CONFIG_PCC=y
 CONFIG_IOMMU_API=y
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_AMD_IOMMU=y
@@ -6741,7 +6671,6 @@ CONFIG_STE_MODEM_RPROC=m
 #
 # SOC (System On Chip) specific Drivers
 #
-CONFIG_SOC_TI=y
 CONFIG_PM_DEVFREQ=y
 
 #
@@ -6804,7 +6733,6 @@ CONFIG_AD7793=m
 CONFIG_AD7887=m
 CONFIG_AD7923=m
 CONFIG_AD799X=m
-CONFIG_AXP288_ADC=m
 CONFIG_LP8788_ADC=m
 CONFIG_MAX1027=m
 CONFIG_MAX1363=m
@@ -6812,7 +6740,6 @@ CONFIG_MCP320X=m
 CONFIG_MCP3422=m
 CONFIG_MEN_Z188_ADC=m
 CONFIG_NAU7802=m
-CONFIG_QCOM_SPMI_IADC=m
 CONFIG_TI_ADC081C=m
 CONFIG_TI_ADC128S052=m
 CONFIG_TI_AM335X_ADC=m
@@ -6888,7 +6815,6 @@ CONFIG_ITG3200=m
 #
 CONFIG_DHT11=m
 CONFIG_SI7005=m
-CONFIG_SI7020=m
 
 #
 # Inertial measurement units
@@ -6945,7 +6871,6 @@ CONFIG_IIO_SYSFS_TRIGGER=m
 #
 # Pressure sensors
 #
-CONFIG_BMP280=m
 CONFIG_HID_SENSOR_PRESS=m
 CONFIG_MPL115=m
 CONFIG_MPL3115=m
@@ -7018,11 +6943,6 @@ CONFIG_RAS=y
 CONFIG_THUNDERBOLT=m
 
 #
-# Android
-#
-# CONFIG_ANDROID is not set
-
-#
 # Firmware Drivers
 #
 CONFIG_EDD=y
@@ -7208,7 +7128,6 @@ CONFIG_SQUASHFS_FILE_DIRECT=y
 CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y
 CONFIG_SQUASHFS_XATTR=y
 CONFIG_SQUASHFS_ZLIB=y
-# CONFIG_SQUASHFS_LZ4 is not set
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
@@ -7393,7 +7312,6 @@ CONFIG_FRAME_WARN=1024
 # CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_READABLE_ASM is not set
 CONFIG_UNUSED_SYMBOLS=y
-# CONFIG_PAGE_OWNER is not set
 CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
@@ -7407,7 +7325,6 @@ CONFIG_DEBUG_KERNEL=y
 #
 # Memory Debugging
 #
-# CONFIG_PAGE_EXTENSION is not set
 # CONFIG_DEBUG_PAGEALLOC is not set
 # CONFIG_DEBUG_OBJECTS is not set
 # CONFIG_SLUB_DEBUG_ON is not set
@@ -7443,7 +7360,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
-CONFIG_SCHED_STACK_END_CHECK=y
+# CONFIG_SCHED_STACK_END_CHECK is not set
 CONFIG_TIMER_STATS=y
 
 #
@@ -7561,7 +7478,6 @@ CONFIG_KGDB_SERIAL_CONSOLE=y
 # CONFIG_KGDB_TESTS is not set
 CONFIG_KGDB_LOW_LEVEL_TRAP=y
 CONFIG_KGDB_KDB=y
-CONFIG_KDB_DEFAULT_ENABLE=0x1
 CONFIG_KDB_KEYBOARD=y
 CONFIG_KDB_CONTINUE_CATASTROPHIC=0
 CONFIG_STRICT_DEVMEM=y
@@ -7651,7 +7567,6 @@ CONFIG_IMA_DEFAULT_HASH_SHA1=y
 CONFIG_IMA_DEFAULT_HASH="sha1"
 CONFIG_IMA_APPRAISE=y
 CONFIG_IMA_TRUSTED_KEYRING=y
-# CONFIG_IMA_LOAD_X509 is not set
 CONFIG_EVM=y
 CONFIG_EVM_ATTR_FSUUID=y
 CONFIG_EVM_EXTRA_SMACK_XATTRS=y
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index de3e6cb496..4fe6f887cf 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -198,7 +198,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
      #f)))
 
 (define-public linux-libre
-  (let* ((version "3.19")
+  (let* ((version "3.18.7")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Apply the neat patch.
@@ -271,7 +271,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "1ndrflzalkcyy61im6kcm8z681yaq2hwqgn6zbd7r3j9mscyqq1a"))))
+               "113r2dzmiwlchp5b3hyjyx91jysx5j4hhxjw45gaky5nj9pax2rh"))))
     (build-system gnu-build-system)
     (native-inputs `(("perl" ,perl)
                      ("bc" ,bc)
@@ -446,7 +446,11 @@ providing the system administrator with some help in common tasks.")
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)))
     (arguments
-     '(#:phases (alist-replace
+     '(#:modules ((guix build utils)
+                  (guix build gnu-build-system)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+       #:phases (alist-replace
                  'configure
                  (lambda* (#:key outputs #:allow-other-keys)
                    ;; No `configure', just a single Makefile.
@@ -468,6 +472,13 @@ providing the system administrator with some help in common tasks.")
                             (system* "make" "install"
                                      (string-append "DESTDIR=" out)))
 
+                           ;; Remove commands and man pages redundant with
+                           ;; Coreutils.
+                           (let ((dup (append-map (cut find-files out <>)
+                                                  '("^kill" "^uptime"))))
+                             (for-each delete-file dup)
+                             #t)
+
                            ;; Sanity check.
                            (zero?
                             (system* (string-append out "/bin/ps")
@@ -512,14 +523,14 @@ slabtop, and skill.")
 (define-public e2fsprogs
   (package
     (name "e2fsprogs")
-    (version "1.42.11")
+    (version "1.42.12")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/e2fsprogs/e2fsprogs-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0xhbj7494g3y2w2miyrzdz6nciaffxajrs6wqm73yp4jnrqagn2b"))
+               "0v0qcfyls0dlrjy8gx9m3s2wbkp5z3lbsr5hb7x8kp8f3bclcy71"))
              (modules '((guix build utils)))
              (snippet
               '(substitute* "MCONFIG.in"
@@ -866,7 +877,11 @@ manpages.")
               (list (search-patch "net-tools-bitrot.patch")))))
     (build-system gnu-build-system)
     (arguments
-     '(#:phases (alist-cons-after
+     '(#:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (srfi srfi-1)
+                  (srfi srfi-26))
+       #:phases (alist-cons-after
                  'unpack 'patch
                  (lambda* (#:key inputs #:allow-other-keys)
                    (define (apply-patch file)
@@ -877,7 +892,6 @@ manpages.")
                      (format #t "applying Debian patch set '~a'...~%"
                              patch.gz)
                      (system (string-append "gunzip < " patch.gz " > the-patch"))
-                     (pk 'here)
                      (and (apply-patch "the-patch")
                           (for-each apply-patch
                                     (find-files "debian/patches"
@@ -896,7 +910,18 @@ manpages.")
                       ;; definition.
                       (substitute* '("config.make" "config.h")
                         (("^.*HAVE_AFDECnet.*$") ""))))
-                  %standard-phases))
+                  (alist-cons-after
+                   'install 'remove-redundant-commands
+                   (lambda* (#:key outputs #:allow-other-keys)
+                     ;; Remove commands and man pages redundant with
+                     ;; Inetutils.
+                     (let* ((out (assoc-ref outputs "out"))
+                            (dup (append-map (cut find-files out <>)
+                                             '("^hostname"
+                                               "^(yp|nis|dns)?domainname"))))
+                       (for-each delete-file dup)
+                       #t))
+                   %standard-phases)))
 
        ;; Binaries that depend on libnet-tools.a don't declare that
        ;; dependency, making it parallel-unsafe.
@@ -1699,6 +1724,36 @@ you to access information from temperature, voltage, and fan speed sensors.
 It works with most newer systems.")
     (license gpl2+)))
 
+(define-public i2c-tools
+  (package
+    (name "i2c-tools")
+    (version "3.1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "000pvg995qy1b15ks59gd0klri55hb33kqpg5czy84hw1pbdgm0l"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f  ; no 'check' target
+       #:make-flags (list (string-append "prefix=" %output)
+                          "CC=gcc")
+       ;; no configure script
+       #:phases (alist-delete 'configure %standard-phases)))
+    (inputs
+     `(("perl" ,perl)))
+    (home-page "http://www.lm-sensors.org/wiki/I2CTools")
+    (synopsis "I2C tools for Linux")
+    (description
+     "The i2c-tools package contains a heterogeneous set of I2C tools for
+Linux: a bus probing tool, a chip dumper, register-level SMBus access helpers,
+EEPROM decoding scripts, EEPROM programming tools, and a python module for
+SMBus access.")
+    (license gpl2+)))
+
 (define-public xsensors
   (package
     (name "xsensors")
@@ -1837,3 +1892,100 @@ thanks to the use of namespaces.")
 is for enabling irq-unmasking and IDE multiplemode.")
     (license (bsd-style "file://LICENSE.TXT"))))
 
+(define-public acpid
+  (package
+    (name "acpid")
+    (version "2.0.23")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/acpid2/acpid-"
+                                  version ".tar.xz"))
+              (sha256
+               (base32
+                "1vl7c6vc724v4jwki17czgj6lnrknnj1a6llm8gkl32i2gnam5j3"))))
+    (build-system gnu-build-system)
+    (home-page "http://sourceforge.net/projects/acpid2/")
+    (synopsis "Daemon for delivering ACPI events to user-space programs")
+    (description
+     "acpid is designed to notify user-space programs of Advanced
+Configuration and Power Interface (ACPI) events.  acpid should be started
+during the system boot, and will run as a background process.  When an ACPI
+event is received from the kernel, acpid will examine the list of rules
+specified in /etc/acpi/events and execute the rules that match the event.")
+    (license gpl2+)))
+
+(define-public sysfsutils
+  (package
+    (name "sysfsutils")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "mirror://sourceforge/linux-diag/sysfsutils/" version "/sysfsutils-"
+         version ".tar.gz"))
+       (sha256
+        (base32 "12i0ip11xbfcjzxz4r10cvz7mbzgq1hfcdn97w6zz7sm3wndwrg8"))))
+    (build-system gnu-build-system)
+    (home-page "http://linux-diag.sourceforge.net/Sysfsutils.html")
+    (synopsis "System utilities based on Linux sysfs")
+    (description
+     "These are a set of utilites built upon sysfs, a virtual filesystem in
+Linux kernel versions 2.5+ that exposes a system's device tree.  The package
+also contains the libsysfs library.")
+    ;; The library is under lgpl2.1+ (all files say "or any later version").
+    ;; The rest is mostly gpl2, with a few files indicating gpl2+.
+    (license (list gpl2 gpl2+ lgpl2.1+))))
+
+(define-public sysfsutils-1
+  (package
+    (inherit sysfsutils)
+    (version "1.3.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "mirror://sourceforge/linux-diag/sysfsutils/sysfsutils-" version
+         "/sysfsutils-" version ".tar.gz"))
+       (sha256
+        (base32 "0kdhs07fm8263pxwd5blwn2x211cg4fk63fyf9ijcdkvzmwxrqq3"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           (substitute* "Makefile.in"
+             (("includedir = /usr/include/sysfs")
+              "includedir = @includedir@"))
+           (substitute* "configure"
+             (("includedir='(\\$\\{prefix\\}/include)'" all orig)
+              (string-append "includedir='" orig "/sysfs'")))))))
+    (synopsis "System utilities based on Linux sysfs (version 1.x)")))
+
+(define-public cpufrequtils
+  (package
+    (name "cpufrequtils")
+    (version "0.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufrequtils-"
+         version ".tar.gz"))
+       (sha256
+        (base32 "0qfqv7nqmjfr3p0bwrdlxkiqwqr7vmx053cadaa548ybqbghxmvm"))
+       (patches (list (search-patch "cpufrequtils-fix-aclocal.patch")))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("sysfsutils" ,sysfsutils-1)))
+    (arguments
+     '(#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
+                                         (assoc-ref %outputs "out") "/lib"))))
+    (home-page "https://www.kernel.org/pub/linux/utils/kernel/cpufreq/")
+    (synopsis "Utilities to get and set CPU frequency on Linux")
+    (description
+     "The cpufrequtils suite contains utilities to retreive CPU frequency
+information, and set the CPU frequency if supported, using the cpufreq
+capabilities of the Linux kernel.")
+    (license gpl2)))
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 0bacac47bf..5db3fa98f9 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,7 +27,19 @@
   #:use-module (gnu packages m4)
   #:use-module (guix download)
   #:use-module (guix utils)
-  #:use-module (guix build-system gnu))
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages bdw-gc)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages libffcall)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages libsigsegv)
+  #:use-module (gnu packages admin)
+  #:use-module (gnu packages ed)
+  #:use-module (gnu packages m4)
+  #:use-module (gnu packages version-control)
+  #:use-module (ice-9 match))
 
 (define-public gcl
   (package
@@ -81,3 +94,292 @@ stratified garbage collection strategy, a source-level debugger and a built-in
 interface to the Tk widget system.")
     (license license:lgpl2.0+)))
 
+(define-public ecl
+  (package
+    (name "ecl")
+    (version "13.5.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/ecls/ecls/"
+                           (version-major+minor version)
+                           "/ecl-" version ".tgz"))
+       (sha256
+        (base32 "18ic8w9sdl0dh3kmyc9lsrafikrd9cg1jkhhr25p9saz0v75f77r"))))
+    (build-system gnu-build-system)
+    (native-inputs `(("which" ,which)))
+    (inputs `(("gmp" ,gmp)
+              ("libatomic-ops" ,libatomic-ops)
+              ("libgc" ,libgc)
+              ("libffi" ,libffi)))
+    (arguments
+     '(#:phases
+       ;; The test-suite seems to assume that ECL is installed.  So re-order
+       ;; the phases, then reference the installed executable.
+       (let* ((check-phase (assq-ref %standard-phases 'check))
+              (rearranged-phases
+               (alist-cons-after 'install 'check check-phase
+                                 (alist-delete 'check %standard-phases))))
+         (alist-cons-before
+          'check 'pre-check
+          (lambda* (#:key outputs #:allow-other-keys)
+            (substitute* '("build/tests/Makefile")
+              (("ECL=ecl")
+               (string-append
+                "ECL=" (assoc-ref outputs "out") "/bin/ecl"))))
+          rearranged-phases))
+       ;; Parallel builds explicitly not supported:
+       ;; http://sourceforge.net/p/ecls/bugs/98/
+       #:parallel-build? #f
+       #:parallel-tests? #f))
+    (home-page "http://ecls.sourceforge.net/")
+    (synopsis "Embeddable Common Lisp")
+    (description "ECL is an implementation of the Common Lisp language as
+defined by the ANSI X3J13 specification.  Its most relevant features are: a
+bytecode compiler and interpreter, being able to compile Common Lisp with any
+C/C++ compiler, being able to build standalone executables and libraries, and
+supporting ASDF, Sockets, Gray streams, MOP, and other useful components.")
+    ;; Note that the file "Copyright" points to some files and directories
+    ;; which aren't under the lgpl2.0+ and instead contain many different,
+    ;; non-copyleft licenses.
+    (license license:lgpl2.0+)))
+
+(define-public clisp
+  (package
+    (name "clisp")
+    (version "2.49")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnu/clisp/release/" version
+                           "/clisp-" version ".tar.gz"))
+       (sha256
+        (base32 "0rp82nqp5362isl9i34rwgg04cidz7izljd9d85pqcw1qr964bxx"))))
+    (build-system gnu-build-system)
+    (inputs `(("libffcall" ,libffcall)
+              ("readline" ,readline)
+              ("libsigsegv" ,libsigsegv)))
+    (arguments
+     '(#:phases
+       (alist-cons-after
+        'unpack 'patch-sh-and-pwd
+        (lambda _
+          ;; The package is very messy with its references to "/bin/sh" and
+          ;; some other absolute paths to traditional tools.  These appear in
+          ;; many places where our automatic patching misses them.  Therefore
+          ;; we do the following, in this early (post-unpack) phase, to solve
+          ;; the problem from its root.
+          (substitute* (find-files "." "configure|Makefile")
+            (("/bin/sh") "sh"))
+          (substitute* '("src/clisp-link.in")
+            (("/bin/pwd") "pwd")))
+        (alist-cons-before
+         'build 'chdir-to-source
+         (lambda _
+           ;; We are supposed to call make under the src sub-directory.
+           (chdir "src"))
+         %standard-phases))
+       ;; Makefiles seem to have race conditions.
+       #:parallel-build? #f))
+    (home-page "http://www.clisp.org/")
+    (synopsis "A Common Lisp implementation")
+    (description
+     "GNU CLISP is an implementation of ANSI Common Lisp.  Common Lisp is a
+high-level, object-oriented functional programming language.  CLISP includes
+an interpreter, a compiler, a debugger, and much more.")
+    ;; Website says gpl2+, COPYRIGHT file says gpl2; actual source files have
+    ;; a lot of gpl3+.  (Also some parts are under non-copyleft licenses, such
+    ;; as CLX by Texas Instruments.)  In that case gpl3+ wins out.
+    (license license:gpl3+)))
+
+(define-public sbcl
+  (package
+    (name "sbcl")
+    (version "1.2.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/sbcl/sbcl/" version "/sbcl-"
+                           version "-source.tar.bz2"))
+       (sha256
+        (base32 "0ab9lw056yf6y0rjmx3iirn5n59pmssqxf00fbmpyl6qsnpaja1d"))))
+    (build-system gnu-build-system)
+    ;; Bootstrap with CLISP.
+    (native-inputs
+     `(("clisp" ,clisp)
+       ("which" ,which)
+       ("inetutils" ,inetutils)         ;for hostname(1)
+       ("ed" ,ed)))
+    (arguments
+     '(#:phases
+       (alist-delete
+        'configure
+        (alist-cons-before
+         'build 'patch-unix-tool-paths
+         (lambda* (#:key outputs inputs #:allow-other-keys)
+           (let ((out (assoc-ref outputs "out"))
+                 (bash (assoc-ref inputs "bash"))
+                 (coreutils (assoc-ref inputs "coreutils"))
+                 (ed (assoc-ref inputs "ed")))
+             (define (quoted-path input path)
+               (string-append "\"" input path "\""))
+             ;; Patch absolute paths in string literals.  Note that this
+             ;; occurs in some .sh files too (which contain Lisp code).
+             (substitute* (find-files "." "\\.(lisp|sh)$")
+               (("\"/bin/sh\"") (quoted-path bash "/bin/sh"))
+               (("\"/usr/bin/env\"") (quoted-path coreutils "/usr/bin/env"))
+               (("\"/bin/cat\"") (quoted-path coreutils "/bin/cat"))
+               (("\"/bin/ed\"") (quoted-path ed "/bin/ed"))
+               (("\"/bin/echo\"") (quoted-path coreutils "/bin/echo"))
+               (("\"/bin/uname\"") (quoted-path coreutils "/bin/uname")))
+             ;; This one script has a non-string occurrence of /bin/sh.
+             (substitute* '("tests/foreign.test.sh")
+               ;; Leave whitespace so we don't match the shebang.
+               ((" /bin/sh ") " sh "))
+             ;; This file contains a module that can create executable files
+             ;; which depend on the presence of SBCL.  It generates shell
+             ;; scripts doing "exec sbcl ..." to achieve this.  We patch both
+             ;; the shebang and the reference to "sbcl", tying the generated
+             ;; executables to the exact SBCL package that generated them.
+             (substitute* '("contrib/sb-executable/sb-executable.lisp")
+               (("/bin/sh") (string-append bash "/bin/sh"))
+               (("exec sbcl") (string-append "exec " out "/bin/sbcl")))
+             ;; Disable some tests that fail in our build environment.
+             (substitute* '("contrib/sb-bsd-sockets/tests.lisp")
+               ;; This requires /etc/protocols.
+               (("\\(deftest get-protocol-by-name/error" all)
+                (string-append "#+nil ;disabled by Guix\n" all)))
+             (substitute* '("contrib/sb-posix/posix-tests.lisp")
+               ;; These assume some users/groups which we don't have.
+               (("\\(deftest pwent\\.[12]" all)
+                (string-append "#+nil ;disabled by Guix\n" all))
+               (("\\(deftest grent\\.[12]" all)
+                (string-append "#+nil ;disabled by Guix\n" all)))))
+         (alist-replace
+          'build
+          (lambda* (#:key outputs #:allow-other-keys)
+            (setenv "CC" "gcc")
+            (zero? (system* "sh" "make.sh" "clisp"
+                            (string-append "--prefix="
+                                           (assoc-ref outputs "out")))))
+          (alist-replace
+           'install
+           (lambda _
+             (zero? (system* "sh" "install.sh")))
+           %standard-phases))))
+       ;; No 'check' target, though "make.sh" (build phase) runs tests.
+       #:tests? #f))
+    (home-page "http://www.sbcl.org/")
+    (synopsis "Common Lisp implementation")
+    (description "Steel Bank Common Lisp (SBCL) is a high performance Common
+Lisp compiler.  In addition to the compiler and runtime system for ANSI Common
+Lisp, it provides an interactive environment including a debugger, a
+statistical profiler, a code coverage tool, and many other extensions.")
+    ;; Public domain in jurisdictions that allow it, bsd-2 otherwise.  MIT
+    ;; loop macro has its own license.  See COPYING file for further notes.
+    (license (list license:public-domain license:bsd-2
+                   (license:x11-style "file://src/code/loop.lisp")))))
+
+(define-public ccl
+  (package
+    (name "ccl")
+    (version "1.10")
+    (source #f)
+    (build-system gnu-build-system)
+    ;; CCL consists of a "lisp kernel" and "heap image", both of which are
+    ;; shipped in precompiled form in source tarballs.  The former is a C
+    ;; program which we can rebuild from scratch, but the latter cannot be
+    ;; generated without an already working copy of CCL, and is platform
+    ;; dependent, so we need to fetch the correct tarball for the platform.
+    (inputs
+     `(("ccl"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "ftp://ftp.clozure.com/pub/release/1.10/ccl-" version "-"
+                 (match (%current-system)
+                   ((or "i686-linux" "x86_64-linux") "linuxx86")
+                   ("armhf-linux" "linuxarm"))
+                 ".tar.gz"))
+           (sha256
+            (base32
+             (match (%current-system)
+               ((or "i686-linux" "x86_64-linux")
+                "0mr653q5px05lr11z2mk551m5g47b4wq96vbfibpp0qlc9jp58lc")
+               ("armhf"
+                "1py02irpmi2qz5rq3h33wfv6impf15z8i2rign6hvhlqn7s99wwh"))))))))
+    (native-inputs
+     `(("m4" ,m4)
+       ("subversion" ,subversion)))
+    (arguments
+     `(#:tests? #f                      ;no 'check' target
+       #:phases
+       (alist-replace
+        'unpack
+        (lambda* (#:key inputs #:allow-other-keys)
+          (and (zero? (system* "tar" "xzvf" (assoc-ref inputs "ccl")))
+               (begin (chdir "ccl") #t)))
+        (alist-delete
+         'configure
+         (alist-cons-before
+          'build 'pre-build
+          ;; Enter the source directory for the current platform's lisp
+          ;; kernel, and run 'make clean' to remove the precompiled one.
+          (lambda _
+            (chdir (string-append
+                    "lisp-kernel/"
+                    ,(match (or (%current-target-system) (%current-system))
+                       ("i686-linux" "linuxx8632")
+                       ("x86_64-linux" "linuxx8664")
+                       ("armhf-linux" "linuxarm"))))
+            (substitute* '("Makefile")
+              (("/bin/rm") "rm"))
+            (setenv "CC" "gcc")
+            (zero? (system* "make" "clean")))
+          ;; XXX Do we need to recompile the heap image as well for Guix?
+          ;; For now just use the one we already got in the tarball.
+          (alist-replace
+           'install
+           (lambda* (#:key outputs inputs #:allow-other-keys)
+             ;; The lisp kernel built by running 'make' in lisp-kernel/$system
+             ;; is put back into the original directory, so go back.  The heap
+             ;; image is there as well.
+             (chdir "../..")
+             (let* ((out (assoc-ref outputs "out"))
+                    (libdir (string-append out "/lib/"))
+                    (bindir (string-append out "/bin/"))
+                    (wrapper (string-append bindir "ccl"))
+                    (bash (assoc-ref inputs "bash"))
+                    (kernel
+                     ,(match (or (%current-target-system) (%current-system))
+                        ("i686-linux" "lx86cl")
+                        ("x86_64-linux" "lx86cl64")
+                        ("armhf-linux" "armcl")))
+                    (heap (string-append kernel ".image")))
+               (mkdir-p libdir)
+               (mkdir-p bindir)
+               (copy-file kernel (string-append libdir kernel))
+               (copy-file heap (string-append libdir heap))
+               (with-output-to-file wrapper
+                 (lambda ()
+                   (display
+                    (string-append
+                     "#!" bash "/bin/sh\n"
+                     "if [ -z \"$CCL_DEFAULT_DIRECTORY\" ]; then\n"
+                     "    CCL_DEFAULT_DIRECTORY=" libdir "\n"
+                     "fi\n"
+                     "export CCL_DEFAULT_DIRECTORY\n"
+                     "exec " libdir kernel "\n"))))
+               (chmod wrapper #o755)))
+           %standard-phases))))))
+    (supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
+    (home-page "http://ccl.clozure.com/")
+    (synopsis "Common Lisp implementation")
+    (description "Clozure CL (often called CCL for short) is a Common Lisp
+implementation featuring fast compilation speed, native threads, a precise,
+generational, compacting garbage collector, and a convenient foreign-function
+interface.")
+    ;; See file doc/LICENSE for clarifications it makes regarding how the LGPL
+    ;; applies to Lisp code according to them.
+    (license (list license:lgpl2.1
+                   license:clarified-artistic)))) ;TRIVIAL-LDAP package
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index eda69f93ba..9a3a83f48f 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -87,7 +87,9 @@ for configuration, scripting, and rapid prototyping.")
               (uri (string-append "http://luajit.org/download/LuaJIT-"
                                   version ".tar.gz"))
               (sha256
-               (base32 "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm"))))
+               (base32 "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm"))
+	      (patches (list (search-patch "luajit-symlinks.patch")
+			     (search-patch "luajit-no_ldconfig.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f                      ;luajit is distributed without tests
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 62f86ef839..dc33c8cbd3 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
 ;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
 ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +47,7 @@
   #:use-module (gnu packages databases)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages openssl)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages readline)
@@ -529,4 +531,89 @@ an SMTP server (for example at a free mail provider) which takes care of further
 delivery.")
     (license gpl3+)))
 
+(define-public exim
+  (package
+    (name "exim")
+    (version "4.85")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "ftp://ftp.exim.org/pub/exim/exim4/exim-" version ".tar.bz2"))
+       (sha256
+        (base32 "195a3ll5ck9viazf9pvgcyc0sziln5g0ggmlm6ax002lphmiy88k"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("bdb" ,bdb)
+       ("gnutls" ,gnutls)
+       ("gzip" ,gzip)
+       ("bzip2" ,bzip2)
+       ("xz" ,xz)
+       ("pcre" ,pcre)
+       ("perl" ,perl)
+       ("libxt" ,libxt)
+       ("libxaw" ,libxaw)))
+    (native-inputs
+     `(("perl" ,perl)))
+    (arguments
+     '(#:phases
+       (alist-replace
+        'configure
+        ;; We'd use #:make-flags but the top-level Makefile calls others
+        ;; recursively, so just set all variables this way.
+        (lambda* (#:key outputs inputs #:allow-other-keys)
+          (substitute* '("Makefile" "OS/Makefile-Default")
+            (("(RM_COMMAND=).*" all var)
+             (string-append var "rm\n")))
+          (copy-file "src/EDITME" "Local/Makefile")
+          (copy-file "exim_monitor/EDITME" "Local/eximon.conf")
+          (let ((out (assoc-ref outputs "out"))
+                (gzip (assoc-ref inputs "gzip"))
+                (bzip2 (assoc-ref inputs "bzip2"))
+                (xz (assoc-ref inputs "xz")))
+            (substitute* '("Local/Makefile")
+              (("(BIN_DIRECTORY=).*" all var)
+               (string-append var out "/bin\n"))
+              (("(CONFIGURE_FILE=).*" all var)
+               (string-append var out "/etc/exim.conf\n"))
+              (("(EXIM_USER=).*" all var)
+               (string-append var "nobody\n"))
+              (("(FIXED_NEVER_USERS=).*" all var)
+               (string-append var "\n"))  ;XXX no root in build environment
+              (("(COMPRESS_COMMAND=).*" all var)
+               (string-append var gzip "/bin/gzip\n"))
+              (("(ZCAT_COMMAND=).*" all var)
+               (string-append var gzip "/bin/zcat\n")))
+            ;; This file has hardcoded names for tools despite the zcat
+            ;; configuration above.
+            (substitute* '("src/exigrep.src")
+              (("'zcat'") (string-append "'" gzip "/bin/zcat'"))
+              (("'bzcat'") (string-append "'" bzip2 "/bin/bzcat'"))
+              (("'xzcat'") (string-append "'" xz "/bin/xzcat'"))
+              (("'lzma'") (string-append "'" xz "/bin/lzma'")))))
+        (alist-cons-before
+         'build 'fix-sh-paths
+         (lambda* (#:key inputs #:allow-other-keys)
+           (substitute* '("scripts/lookups-Makefile" "scripts/reversion")
+             (("SHELL=/bin/sh") "SHELL=sh"))
+           (substitute* '("scripts/Configure-config.h")
+             (("\\| /bin/sh") "| sh"))
+           (let ((bash (assoc-ref inputs "bash")))
+             (substitute* '("scripts/Configure-eximon")
+               (("#!/bin/sh") (string-append "#!" bash "/bin/sh")))))
+         %standard-phases))
+       #:make-flags '("INSTALL_ARG=-no_chown")
+       ;; No 'check' target.
+       #:tests? #f))
+    (home-page "http://www.exim.org/")
+    (synopsis
+     "Message Transfer Agent (MTA) developed at the University of Cambridge")
+    (description
+     "Exim is a message transfer agent (MTA) developed at the University of
+Cambridge for use on Unix systems connected to the Internet.  In style it is
+similar to Smail 3, but its facilities are more general.  There is a great
+deal of flexibility in the way mail can be routed, and there are extensive
+facilities for checking incoming mail.")
+    (license gpl2+)))
+
 ;;; mail.scm ends here
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index c3cf30c7a7..8c4eb3bd2f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
 ;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -212,6 +213,30 @@ can be imported from spreadsheets, text files and database sources and it can
 be output in text, PostScript, PDF or HTML.")
     (license license:gpl3+)))
 
+(define-public arpack-ng
+  (package
+    (name "arpack-ng")
+    (version "3.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/opencollab/arpack-ng/archive/"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "1fwch6vipms1ispzg2djvbzv5wag36f1dmmr3xs3mbp6imfyhvff"))))
+    (build-system gnu-build-system)
+    (home-page "https://github.com/opencollab/arpack-ng")
+    (inputs
+     `(("lapack" ,lapack)
+       ("fortran" ,gfortran-4.8)))
+    (synopsis "Fortran subroutines for solving eigenvalue problems")
+    (description
+     "ARPACK-NG is a collection of Fortran77 subroutines designed to solve
+large scale eigenvalue problems.")
+    (license (license:bsd-style "file://COPYING"
+                                "See COPYING in the distribution."))))
+
 (define-public lapack
   (package
     (name "lapack")
diff --git a/gnu/packages/moreutils.scm b/gnu/packages/moreutils.scm
new file mode 100644
index 0000000000..4ea6df3dcc
--- /dev/null
+++ b/gnu/packages/moreutils.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages moreutils)
+  #:use-module ((guix licenses) #:prefix l:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages docbook))
+
+(define-public moreutils
+  (package
+    (name "moreutils")
+    (version "0.55")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://debian/pool/main/m/moreutils/moreutils_"
+                    version ".orig.tar.gz"))
+              (sha256
+               (base32
+                "1dcah2jx8dbznn8966xl7sf1jrld2qfh6l6xcmx9dsnf8p8mr7fs"))))
+    (build-system gnu-build-system)
+    (inputs `(("perl" ,perl)
+              ("libxml2" ,libxml2)
+              ("libxslt" ,libxslt)
+              ("docbook-xml" ,docbook-xml-4.4)
+              ("docbook-xsl" ,docbook-xsl)))
+    (arguments
+     `(#:phases
+       (alist-replace
+        'configure
+        (lambda* (#:key inputs #:allow-other-keys)
+          (use-modules (srfi srfi-1))
+          (substitute* "Makefile"
+            (("/usr/share/xml/.*/docbook.xsl")
+             (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl"))
+                    (files (find-files docbook-xsl "^docbook\\.xsl$")))
+               (find (lambda (file)
+                       (string-suffix? "/manpages/docbook.xsl" file))
+                     files)))))
+        %standard-phases)
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             "CC=gcc")))
+    (home-page "http://joeyh.name/code/moreutils/")
+    (synopsis "Miscellaneous general-purpose command-line tools")
+    (description
+     "Moreutils is a collection of general-purpose command-line tools to
+augment the traditional Unix toolbox.")
+    (license l:gpl2+)))
diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm
index be4f44ddfb..e8b834c3c9 100644
--- a/gnu/packages/node.scm
+++ b/gnu/packages/node.scm
@@ -35,14 +35,14 @@
 (define-public node
   (package
     (name "node")
-    (version "0.10.36")
+    (version "0.12.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://nodejs.org/dist/v" version
                                   "/node-v" version ".tar.gz"))
               (sha256
                (base32
-                "10cc2yglmrp8i2l4lm4pnm1pf7jvzjk5v80kddl4dkjb578d3mxr"))))
+                "0cifd2qhpyrbxx71a4hsagzk24qas8m5zvwcyhx69cz9yhxf404p"))))
     (native-inputs `(("python" ,python-2)
                      ("perl" ,perl)
                      ("gcc" ,gcc-4.9)
diff --git a/gnu/packages/openssl.scm b/gnu/packages/openssl.scm
index 4f7526d755..90dea4956d 100644
--- a/gnu/packages/openssl.scm
+++ b/gnu/packages/openssl.scm
@@ -63,6 +63,10 @@
               (("/bin/rm")
                "rm"))))
         %standard-phases))))
+   (native-search-paths
+     (list (search-path-specification
+           (variable "SSL_CERT_DIR")
+           (files '("etc/ssl/certs")))))
    (synopsis "SSL/TLS implementation")
    (description
     "OpenSSL is an implementation of SSL/TLS")
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index acb72f6bc6..97e96c712f 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,7 +23,7 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
-  #:use-module ((guix licenses) #:select (gpl3+ lgpl2.1+))
+  #:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+))
   #:use-module (gnu packages)
   #:use-module (gnu packages guile)
   #:use-module ((gnu packages compression) #:select (bzip2 gzip))
@@ -210,3 +211,31 @@ never change after they have been built.  Nix stores packages in the Nix
 store, usually the directory /nix/store, where each package has its own unique
 sub-directory.")
     (license lgpl2.1+)))
+
+(define-public stow
+  (package
+    (name "stow")
+    (version "2.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://gnu/stow/stow-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0arw1nsdlcvd7javkbk2bdvnc31d7dmb6fr25xyyi6ng76cxg2cb"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("perl" ,perl)))
+    (native-inputs
+     `(("perl-test-simple" ,perl-test-simple)
+       ("perl-test-output" ,perl-test-output)
+       ("perl-capture-tiny" ,perl-capture-tiny)))
+    (home-page "https://www.gnu.org/software/stow/")
+    (synopsis "Managing installed software packages")
+    (description
+     "GNU Stow is a symlink manager.  It generates symlinks to directories
+of data and makes them appear to be merged into the same directory.  It is
+typically used for managing software packages installed from source, by
+letting you install them apart in distinct directories and then create
+symlinks to the files in a common directory such as /usr/local.")
+    (license gpl2+)))
diff --git a/gnu/packages/patches/chmlib-inttypes.patch b/gnu/packages/patches/chmlib-inttypes.patch
new file mode 100644
index 0000000000..033e808792
--- /dev/null
+++ b/gnu/packages/patches/chmlib-inttypes.patch
@@ -0,0 +1,60 @@
+Taken from Debian, necessary for compilation on mips.
+
+Patch to fix integer types problem by Goswin von Brederlow
+<brederlo@informatik.uni-tuebingen.de> (#258444)
+--- chmlib-0.39.orig/src/chm_lib.c
++++ chmlib-0.39/src/chm_lib.c
+@@ -56,6 +56,7 @@
+ 
+ #include "lzx.h"
+ 
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #ifdef CHM_DEBUG
+@@ -149,22 +150,9 @@
+ typedef __int64                 Int64;
+ typedef unsigned __int64        UInt64;
+ 
+-/* I386, 32-bit, non-Windows */
+-/* Sparc        */
+-/* MIPS         */
+-/* PPC          */
+-#elif __i386__ || __sun || __sgi || __ppc__
+-typedef unsigned char           UChar;
+-typedef short                   Int16;
+-typedef unsigned short          UInt16;
+-typedef long                    Int32;
+-typedef unsigned long           UInt32;
+-typedef long long               Int64;
+-typedef unsigned long long      UInt64;
+-
+ /* x86-64 */
+ /* Note that these may be appropriate for other 64-bit machines. */
+-#elif __x86_64__ || __ia64__
++#elif defined(__LP64__)
+ typedef unsigned char           UChar;
+ typedef short                   Int16;
+ typedef unsigned short          UInt16;
+@@ -173,10 +161,18 @@
+ typedef long                    Int64;
+ typedef unsigned long           UInt64;
+ 
++/* I386, 32-bit, non-Windows */
++/* Sparc        */
++/* MIPS         */
++/* PPC          */
+ #else
+-
+-/* yielding an error is preferable to yielding incorrect behavior */
+-#error "Please define the sized types for your platform in chm_lib.c"
++typedef unsigned char           UChar;
++typedef short                   Int16;
++typedef unsigned short          UInt16;
++typedef long                    Int32;
++typedef unsigned long           UInt32;
++typedef long long               Int64;
++typedef unsigned long long      UInt64;
+ #endif
+ 
+ /* GCC */
diff --git a/gnu/packages/patches/cpufrequtils-fix-aclocal.patch b/gnu/packages/patches/cpufrequtils-fix-aclocal.patch
new file mode 100644
index 0000000000..be5767f462
--- /dev/null
+++ b/gnu/packages/patches/cpufrequtils-fix-aclocal.patch
@@ -0,0 +1,46 @@
+Add an extra layer of quoting to ltmain.sh sanity check.
+
+--- a/configure	2005-05-07 14:19:31.000000000 +0200
++++ b/configure	2015-02-10 11:16:32.456146934 +0100
+@@ -6266,7 +6266,7 @@
+   exit 1
+ fi
+ gentoo_lt_version="1.5.16"
+-gentoo_ltmain_version=`grep '^[:space:]*VERSION=' $ltmain | sed -e 's|^[:space:]*VERSION=||'`
++gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'`
+ if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then
+   echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+--- a/aclocal.m4	2005-05-07 14:19:25.000000000 +0200
++++ b/aclocal.m4	2015-02-10 11:16:15.352030318 +0100
+@@ -246,7 +246,7 @@
+   exit 1
+ fi
+ gentoo_lt_version="1.5.16"
+-gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'`
++gentoo_ltmain_version=`[grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||']`
+ if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then
+   AC_MSG_RESULT(no)
+   echo
+--- a/libcpufreq/configure	2005-05-07 14:19:31.000000000 +0200
++++ b/libcpufreq/configure	2015-02-10 11:16:32.456146934 +0100
+@@ -6266,7 +6266,7 @@
+   exit 1
+ fi
+ gentoo_lt_version="1.5.16"
+-gentoo_ltmain_version=`grep '^[:space:]*VERSION=' $ltmain | sed -e 's|^[:space:]*VERSION=||'`
++gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'`
+ if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then
+   echo "$as_me:$LINENO: result: no" >&5
+ echo "${ECHO_T}no" >&6
+--- a/libcpufreq/aclocal.m4	2005-05-07 14:19:25.000000000 +0200
++++ b/libcpufreq/aclocal.m4	2015-02-10 11:16:15.352030318 +0100
+@@ -246,7 +246,7 @@
+   exit 1
+ fi
+ gentoo_lt_version="1.5.16"
+-gentoo_ltmain_version=`grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||'`
++gentoo_ltmain_version=`[grep '^[[:space:]]*VERSION=' $ltmain | sed -e 's|^[[:space:]]*VERSION=||']`
+ if test "$gentoo_lt_version" != "$gentoo_ltmain_version"; then
+   AC_MSG_RESULT(no)
+   echo
diff --git a/gnu/packages/patches/icecat-CVE-2015-0822.patch b/gnu/packages/patches/icecat-CVE-2015-0822.patch
new file mode 100644
index 0000000000..2625151453
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0822.patch
@@ -0,0 +1,154 @@
+From 0922145c255bf2503d3b2dd5f8f1e813338ba990 Mon Sep 17 00:00:00 2001
+From: Mats Palmgren <mats@mozilla.com>
+Date: Sat, 24 Jan 2015 12:37:47 -0500
+Subject: [PATCH] Bug 1110557. r=mak, r=gavin, a=bkerensa
+
+---
+ .../components/satchel/nsFormFillController.cpp    | 67 +++++++++++++++-------
+ toolkit/components/satchel/nsFormFillController.h  |  5 ++
+ 2 files changed, 52 insertions(+), 20 deletions(-)
+
+diff --git a/toolkit/components/satchel/nsFormFillController.cpp b/toolkit/components/satchel/nsFormFillController.cpp
+index 315fc68..676ad84 100644
+--- a/toolkit/components/satchel/nsFormFillController.cpp
++++ b/toolkit/components/satchel/nsFormFillController.cpp
+@@ -61,6 +61,7 @@ nsFormFillController::nsFormFillController() :
+   mSuppressOnInput(false)
+ {
+   mController = do_GetService("@mozilla.org/autocomplete/controller;1");
++  MOZ_ASSERT(mController);
+ }
+ 
+ struct PwmgrInputsEnumData
+@@ -104,6 +105,21 @@ nsFormFillController::AttributeChanged(nsIDocument* aDocument,
+                                        int32_t aNameSpaceID,
+                                        nsIAtom* aAttribute, int32_t aModType)
+ {
++  if ((aAttribute == nsGkAtoms::type || aAttribute == nsGkAtoms::readonly ||
++       aAttribute == nsGkAtoms::autocomplete) &&
++      aNameSpaceID == kNameSpaceID_None) {
++    nsCOMPtr<nsIDOMHTMLInputElement> focusedInput(mFocusedInput);
++    // Reset the current state of the controller, unconditionally.
++    StopControllingInput();
++    // Then restart based on the new values.  We have to delay this
++    // to avoid ending up in an endless loop due to re-registering our
++    // mutation observer (which would notify us again for *this* event).
++    nsCOMPtr<nsIRunnable> event =
++      NS_NewRunnableMethodWithArg<nsCOMPtr<nsIDOMHTMLInputElement>>
++      (this, &nsFormFillController::MaybeStartControllingInput, focusedInput);
++    NS_DispatchToCurrentThread(event);
++  }
++
+   if (mListNode && mListNode->Contains(aElement)) {
+     RevalidateDataList();
+   }
+@@ -841,28 +857,26 @@ nsFormFillController::RemoveForDocumentEnumerator(const nsINode* aKey,
+   return PL_DHASH_NEXT;
+ }
+ 
+-nsresult
+-nsFormFillController::Focus(nsIDOMEvent* aEvent)
++void
++nsFormFillController::MaybeStartControllingInput(nsIDOMHTMLInputElement* aInput)
+ {
+-  nsCOMPtr<nsIDOMHTMLInputElement> input = do_QueryInterface(
+-    aEvent->InternalDOMEvent()->GetTarget());
+-  nsCOMPtr<nsINode> inputNode = do_QueryInterface(input);
++  nsCOMPtr<nsINode> inputNode = do_QueryInterface(aInput);
+   if (!inputNode)
+-    return NS_OK;
++    return;
+ 
+-  nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(input);
++  nsCOMPtr<nsIFormControl> formControl = do_QueryInterface(aInput);
+   if (!formControl || !formControl->IsSingleLineTextControl(true))
+-    return NS_OK;
++    return;
+ 
+   bool isReadOnly = false;
+-  input->GetReadOnly(&isReadOnly);
++  aInput->GetReadOnly(&isReadOnly);
+   if (isReadOnly)
+-    return NS_OK;
++    return;
+ 
+-  bool autocomplete = nsContentUtils::IsAutocompleteEnabled(input);
++  bool autocomplete = nsContentUtils::IsAutocompleteEnabled(aInput);
+ 
+   nsCOMPtr<nsIDOMHTMLElement> datalist;
+-  input->GetList(getter_AddRefs(datalist));
++  aInput->GetList(getter_AddRefs(datalist));
+   bool hasList = datalist != nullptr;
+ 
+   bool dummy;
+@@ -871,9 +885,16 @@ nsFormFillController::Focus(nsIDOMEvent* aEvent)
+       isPwmgrInput = true;
+ 
+   if (isPwmgrInput || hasList || autocomplete) {
+-    StartControllingInput(input);
++    StartControllingInput(aInput);
+   }
++}
+ 
++nsresult
++nsFormFillController::Focus(nsIDOMEvent* aEvent)
++{
++  nsCOMPtr<nsIDOMHTMLInputElement> input = do_QueryInterface(
++    aEvent->InternalDOMEvent()->GetTarget());
++  MaybeStartControllingInput(input);
+   return NS_OK;
+ }
+ 
+@@ -1087,6 +1108,10 @@ nsFormFillController::StartControllingInput(nsIDOMHTMLInputElement *aInput)
+   // Make sure we're not still attached to an input
+   StopControllingInput();
+ 
++  if (!mController) {
++    return;
++  }
++
+   // Find the currently focused docShell
+   nsCOMPtr<nsIDocShell> docShell = GetDocShellForInput(aInput);
+   int32_t index = GetIndexOfDocShell(docShell);
+@@ -1129,13 +1154,15 @@ nsFormFillController::StopControllingInput()
+     mListNode = nullptr;
+   }
+ 
+-  // Reset the controller's input, but not if it has been switched
+-  // to another input already, which might happen if the user switches
+-  // focus by clicking another autocomplete textbox
+-  nsCOMPtr<nsIAutoCompleteInput> input;
+-  mController->GetInput(getter_AddRefs(input));
+-  if (input == this)
+-    mController->SetInput(nullptr);
++  if (mController) {
++    // Reset the controller's input, but not if it has been switched
++    // to another input already, which might happen if the user switches
++    // focus by clicking another autocomplete textbox
++    nsCOMPtr<nsIAutoCompleteInput> input;
++    mController->GetInput(getter_AddRefs(input));
++    if (input == this)
++      mController->SetInput(nullptr);
++  }
+ 
+   if (mFocusedInputNode) {
+     MaybeRemoveMutationObserver(mFocusedInputNode);
+diff --git a/toolkit/components/satchel/nsFormFillController.h b/toolkit/components/satchel/nsFormFillController.h
+index b60d28d..8c3ba26 100644
+--- a/toolkit/components/satchel/nsFormFillController.h
++++ b/toolkit/components/satchel/nsFormFillController.h
+@@ -62,6 +62,11 @@ protected:
+ 
+   void StartControllingInput(nsIDOMHTMLInputElement *aInput);
+   void StopControllingInput();
++  /**
++   * Checks that aElement is a type of element we want to fill, then calls
++   * StartControllingInput on it.
++   */
++  void MaybeStartControllingInput(nsIDOMHTMLInputElement* aElement);
+ 
+   nsresult PerformInputListAutoComplete(nsIAutoCompleteResult* aPreviousResult);
+ 
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch
new file mode 100644
index 0000000000..c57da755d1
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0827-pt-1.patch
@@ -0,0 +1,33 @@
+From 28b6204b1421aa57b3c10c43d90cb516910bc80f Mon Sep 17 00:00:00 2001
+From: Markus Stange <mstange@themasta.com>
+Date: Tue, 6 Jan 2015 12:08:39 +0100
+Subject: [PATCH] Bug 1117304 - Also do the checks at the start of CopyRect in
+ release builds. r=Bas, a=sledru
+
+---
+ gfx/2d/FilterNodeSoftware.cpp | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp
+index 00d790f..396d0da 100644
+--- a/gfx/2d/FilterNodeSoftware.cpp
++++ b/gfx/2d/FilterNodeSoftware.cpp
+@@ -253,9 +253,12 @@ CopyRect(DataSourceSurface* aSrc, DataSourceSurface* aDest,
+     MOZ_CRASH("we should never be getting invalid rects at this point");
+   }
+ 
+-  MOZ_ASSERT(aSrc->GetFormat() == aDest->GetFormat(), "different surface formats");
+-  MOZ_ASSERT(IntRect(IntPoint(), aSrc->GetSize()).Contains(aSrcRect), "source rect too big for source surface");
+-  MOZ_ASSERT(IntRect(IntPoint(), aDest->GetSize()).Contains(aSrcRect - aSrcRect.TopLeft() + aDestPoint), "dest surface too small");
++  MOZ_RELEASE_ASSERT(aSrc->GetFormat() == aDest->GetFormat(),
++                     "different surface formats");
++  MOZ_RELEASE_ASSERT(IntRect(IntPoint(), aSrc->GetSize()).Contains(aSrcRect),
++                     "source rect too big for source surface");
++  MOZ_RELEASE_ASSERT(IntRect(IntPoint(), aDest->GetSize()).Contains(IntRect(aDestPoint, aSrcRect.Size())),
++                     "dest surface too small");
+ 
+   if (aSrcRect.IsEmpty()) {
+     return;
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch
new file mode 100644
index 0000000000..1ff68f4b4c
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0827-pt-2.patch
@@ -0,0 +1,35 @@
+From 5ff75fbe51d5760a96b4e614617c9cbf35f1fbaa Mon Sep 17 00:00:00 2001
+From: Markus Stange <mstange@themasta.com>
+Date: Mon, 5 Jan 2015 18:40:27 +0100
+Subject: [PATCH] Bug 1117304 - Make sure the tile filter doesn't call CopyRect
+ on surfaces with different formats. r=Bas, a=sledru
+
+---
+ gfx/2d/FilterNodeSoftware.cpp | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp
+index 396d0da..10d92c6 100644
+--- a/gfx/2d/FilterNodeSoftware.cpp
++++ b/gfx/2d/FilterNodeSoftware.cpp
+@@ -1568,7 +1568,16 @@ FilterNodeTileSoftware::Render(const IntRect& aRect)
+           return nullptr;
+         }
+       }
+-      MOZ_ASSERT(input->GetFormat() == target->GetFormat(), "different surface formats from the same input?");
++
++      if (input->GetFormat() != target->GetFormat()) {
++        // Different rectangles of the input can have different formats. If
++        // that happens, just convert everything to B8G8R8A8.
++        target = FilterProcessing::ConvertToB8G8R8A8(target);
++        input = FilterProcessing::ConvertToB8G8R8A8(input);
++        if (MOZ2D_WARN_IF(!target) || MOZ2D_WARN_IF(!input)) {
++          return nullptr;
++        }
++      }
+ 
+       CopyRect(input, target, srcRect - srcRect.TopLeft(), destRect.TopLeft() - aRect.TopLeft());
+     }
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch b/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch
new file mode 100644
index 0000000000..8d40126849
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0827-pt-3.patch
@@ -0,0 +1,56 @@
+From c91087708686ae1c47abee65e19536688e5ec8f2 Mon Sep 17 00:00:00 2001
+From: Ryan VanderMeulen <ryanvm@gmail.com>
+Date: Mon, 26 Jan 2015 17:24:46 -0500
+Subject: [PATCH] Bug 1117304 - Add missing MOZ2D_WARN_IF definition to fix
+ bustage. r=milan, a=bustage
+
+---
+ gfx/2d/FilterNodeSoftware.cpp |  1 +
+ gfx/2d/Logging.h              | 19 +++++++++++++++++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/gfx/2d/FilterNodeSoftware.cpp b/gfx/2d/FilterNodeSoftware.cpp
+index 10d92c6..48bf162 100644
+--- a/gfx/2d/FilterNodeSoftware.cpp
++++ b/gfx/2d/FilterNodeSoftware.cpp
+@@ -12,6 +12,7 @@
+ #include "Blur.h"
+ #include <map>
+ #include "FilterProcessing.h"
++#include "Logging.h"
+ #include "mozilla/PodOperations.h"
+ #include "mozilla/DebugOnly.h"
+ 
+diff --git a/gfx/2d/Logging.h b/gfx/2d/Logging.h
+index 85e788c..d7728bb 100644
+--- a/gfx/2d/Logging.h
++++ b/gfx/2d/Logging.h
+@@ -155,6 +155,25 @@ typedef Log<LOG_WARNING> WarningLog;
+ #define gfxWarning if (1) ; else NoLog
+ #endif
+ 
++// See nsDebug.h and the NS_WARN_IF macro
++
++#ifdef __cplusplus
++#ifdef DEBUG
++inline bool MOZ2D_warn_if_impl(bool aCondition, const char* aExpr,
++                               const char* aFile, int32_t aLine)
++{
++  if (MOZ_UNLIKELY(aCondition)) {
++    gfxWarning() << aExpr << " at " << aFile << ":" << aLine;
++  }
++  return aCondition;
++}
++#define MOZ2D_WARN_IF(condition) \
++  MOZ2D_warn_if_impl(condition, #condition, __FILE__, __LINE__)
++#else
++#define MOZ2D_WARN_IF(condition) (bool)(condition)
++#endif
++#endif
++
+ const int INDENT_PER_LEVEL = 2;
+ 
+ class TreeLog
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch b/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch
new file mode 100644
index 0000000000..c04d604923
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0831-pt-1.patch
@@ -0,0 +1,32 @@
+From c8437505a63fc2b2552b8af217d60d79abb92ba3 Mon Sep 17 00:00:00 2001
+From: Ben Turner <bent.mozilla@gmail.com>
+Date: Fri, 6 Feb 2015 15:25:33 -0800
+Subject: [PATCH] Bug 1130541. r=janv, a=sledru
+
+---
+ dom/indexedDB/IDBDatabase.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/dom/indexedDB/IDBDatabase.cpp b/dom/indexedDB/IDBDatabase.cpp
+index 7329cec..c9c7e4f 100644
+--- a/dom/indexedDB/IDBDatabase.cpp
++++ b/dom/indexedDB/IDBDatabase.cpp
+@@ -536,6 +536,7 @@ IDBDatabase::CreateObjectStore(
+   IDBTransaction* transaction = AsyncConnectionHelper::GetCurrentTransaction();
+ 
+   if (!transaction ||
++      transaction->Database() != this ||
+       transaction->GetMode() != IDBTransaction::VERSION_CHANGE) {
+     aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR);
+     return nullptr;
+@@ -577,6 +578,7 @@ IDBDatabase::DeleteObjectStore(const nsAString& aName, ErrorResult& aRv)
+   IDBTransaction* transaction = AsyncConnectionHelper::GetCurrentTransaction();
+ 
+   if (!transaction ||
++      transaction->Database() != this ||
+       transaction->GetMode() != IDBTransaction::VERSION_CHANGE) {
+     aRv.Throw(NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR);
+     return;
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch b/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch
new file mode 100644
index 0000000000..9510cd611f
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0831-pt-2.patch
@@ -0,0 +1,26 @@
+From 4e799e44288c951f8d9acd17e7d8c56c9ee6a7d3 Mon Sep 17 00:00:00 2001
+From: Ben Turner <bent.mozilla@gmail.com>
+Date: Mon, 9 Feb 2015 14:38:26 -0800
+Subject: [PATCH] Bug 1130541 followup a=test-only
+
+--HG--
+extra : amend_source : 23d80353f87897fdac9c99048d12ebe4ed390f76
+---
+ dom/indexedDB/test/browser_quotaPrompt.html | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/dom/indexedDB/test/browser_quotaPrompt.html b/dom/indexedDB/test/browser_quotaPrompt.html
+index c139970..dbeea68 100644
+--- a/dom/indexedDB/test/browser_quotaPrompt.html
++++ b/dom/indexedDB/test/browser_quotaPrompt.html
+@@ -38,6 +38,7 @@
+         let request = indexedDB.open(window.location.pathname, version++);
+         request.onerror = errorHandler;
+         request.onupgradeneeded = function(event) {
++          let db = event.target.result;
+           db.deleteObjectStore("foo");
+           db.onversionchange = function () { db.close(); };
+           request.transaction.oncomplete = function(event) {
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch
new file mode 100644
index 0000000000..f6e2756054
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-01.patch
@@ -0,0 +1,26 @@
+From 4106ffa6ee83b814428bb07948b3595e3fa3847e Mon Sep 17 00:00:00 2001
+From: Jan de Mooij <jdemooij@mozilla.com>
+Date: Tue, 10 Feb 2015 09:40:46 +0100
+Subject: [PATCH] Bug 1128196 - Don't relazify scripts with a TypeScript.
+ r=till, a=lmandel
+
+---
+ js/src/jsscript.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/js/src/jsscript.h b/js/src/jsscript.h
+index 4d548ef..9a0cfbb 100644
+--- a/js/src/jsscript.h
++++ b/js/src/jsscript.h
+@@ -1251,7 +1251,7 @@ class JSScript : public js::gc::BarrieredCell<JSScript>
+     }
+ 
+     bool isRelazifiable() const {
+-        return (selfHosted() || lazyScript) &&
++        return (selfHosted() || lazyScript) && !types &&
+                !isGenerator() && !hasBaselineScript() && !hasAnyIonScript() && !hasBeenInlined();
+     }
+     void setLazyScript(js::LazyScript *lazy) {
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch
new file mode 100644
index 0000000000..c95cf23a29
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-02.patch
@@ -0,0 +1,27 @@
+From 83c4bfeea2d2203f726e3bfcb7ee6fe56b4d9703 Mon Sep 17 00:00:00 2001
+From: Ryan VanderMeulen <ryanvm@gmail.com>
+Date: Thu, 29 Jan 2015 10:31:25 -0500
+Subject: [PATCH] Bug 1111248. r=Waldo, a=sledru
+
+---
+ js/src/jsbool.cpp | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/js/src/jsbool.cpp b/js/src/jsbool.cpp
+index 5d88bd5..8d5d672 100644
+--- a/js/src/jsbool.cpp
++++ b/js/src/jsbool.cpp
+@@ -198,7 +198,8 @@ js::ToBooleanSlow(HandleValue v)
+ bool
+ js::BooleanGetPrimitiveValueSlow(HandleObject wrappedBool)
+ {
+-    JSObject *obj = wrappedBool->as<ProxyObject>().target();
+-    JS_ASSERT(obj);
++    JSObject *obj = CheckedUnwrap(wrappedBool);
++    if (!obj || !obj->is<BooleanObject>())
++        return false;
+     return obj->as<BooleanObject>().unbox();
+ }
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch
new file mode 100644
index 0000000000..115cd76201
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-03.patch
@@ -0,0 +1,220 @@
+From 4e4e34238e5bb5af83a645a5f4d2097e3b30e9dd Mon Sep 17 00:00:00 2001
+From: Tom Schuster <evilpies@gmail.com>
+Date: Sun, 25 Jan 2015 21:42:10 +0100
+Subject: [PATCH] Bug 1111243 - Implement ES6 proxy behavior for IsArray.
+ r=efaust, a=abillings
+
+---
+ browser/devtools/app-manager/app-projects.js |  2 ++
+ js/public/Class.h                            |  5 +++-
+ js/src/jsarray.cpp                           |  9 ++++--
+ js/src/jsobjinlines.h                        | 15 +++++++++-
+ js/src/json.cpp                              | 11 +++----
+ js/src/jsproxy.cpp                           | 45 ++++++++++++++++++++++++++++
+ 6 files changed, 78 insertions(+), 9 deletions(-)
+
+diff --git a/browser/devtools/app-manager/app-projects.js b/browser/devtools/app-manager/app-projects.js
+index d09f72f..77ca67b 100644
+--- a/browser/devtools/app-manager/app-projects.js
++++ b/browser/devtools/app-manager/app-projects.js
+@@ -61,6 +61,8 @@ const IDB = {
+   add: function(project) {
+     let deferred = promise.defer();
+ 
++    project = JSON.parse(JSON.stringify(project));
++
+     if (!project.location) {
+       // We need to make sure this object has a `.location` property.
+       deferred.reject("Missing location property on project object.");
+diff --git a/js/public/Class.h b/js/public/Class.h
+index ff864b1..46f7d39 100644
+--- a/js/public/Class.h
++++ b/js/public/Class.h
+@@ -521,7 +521,10 @@ Valueify(const JSClass *c)
+  */
+ enum ESClassValue {
+     ESClass_Array, ESClass_Number, ESClass_String, ESClass_Boolean,
+-    ESClass_RegExp, ESClass_ArrayBuffer, ESClass_Date
++    ESClass_RegExp, ESClass_ArrayBuffer, ESClass_Date,
++    // Special snowflake for the ES6 IsArray method.
++    // Please don't use it without calling that function.
++    ESClass_IsArray
+ };
+ 
+ /*
+diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp
+index 24da176..46f1c20 100644
+--- a/js/src/jsarray.cpp
++++ b/js/src/jsarray.cpp
+@@ -2645,7 +2645,8 @@ js::array_concat(JSContext *cx, unsigned argc, Value *vp)
+         HandleValue v = HandleValue::fromMarkedLocation(&p[i]);
+         if (v.isObject()) {
+             RootedObject obj(cx, &v.toObject());
+-            if (ObjectClassIs(obj, ESClass_Array, cx)) {
++            // This should be IsConcatSpreadable
++            if (IsArray(obj, cx)) {
+                 uint32_t alength;
+                 if (!GetLengthProperty(cx, obj, &alength))
+                     return false;
+@@ -2870,7 +2871,11 @@ static bool
+ array_isArray(JSContext *cx, unsigned argc, Value *vp)
+ {
+     CallArgs args = CallArgsFromVp(argc, vp);
+-    bool isArray = args.length() > 0 && IsObjectWithClass(args[0], ESClass_Array, cx);
++    bool isArray = false;
++    if (args.get(0).isObject()) {
++        RootedObject obj(cx, &args[0].toObject());
++        isArray = IsArray(obj, cx);
++    }
+     args.rval().setBoolean(isArray);
+     return true;
+ }
+diff --git a/js/src/jsobjinlines.h b/js/src/jsobjinlines.h
+index e848ba7..557dd26 100644
+--- a/js/src/jsobjinlines.h
++++ b/js/src/jsobjinlines.h
+@@ -1032,7 +1032,10 @@ ObjectClassIs(HandleObject obj, ESClassValue classValue, JSContext *cx)
+         return Proxy::objectClassIs(obj, classValue, cx);
+ 
+     switch (classValue) {
+-      case ESClass_Array: return obj->is<ArrayObject>();
++      case ESClass_Array:
++      case ESClass_IsArray:
++        // There difference between those is only relevant for proxies.
++        return obj->is<ArrayObject>();
+       case ESClass_Number: return obj->is<NumberObject>();
+       case ESClass_String: return obj->is<StringObject>();
+       case ESClass_Boolean: return obj->is<BooleanObject>();
+@@ -1053,6 +1056,16 @@ IsObjectWithClass(const Value &v, ESClassValue classValue, JSContext *cx)
+     return ObjectClassIs(obj, classValue, cx);
+ }
+ 
++// ES6 7.2.2
++inline bool
++IsArray(HandleObject obj, JSContext *cx)
++{
++    if (obj->is<ArrayObject>())
++        return true;
++
++    return ObjectClassIs(obj, ESClass_IsArray, cx);
++}
++
+ static MOZ_ALWAYS_INLINE bool
+ NewObjectMetadata(ExclusiveContext *cxArg, JSObject **pmetadata)
+ {
+diff --git a/js/src/json.cpp b/js/src/json.cpp
+index 6e45bfd..81a99a6 100644
+--- a/js/src/json.cpp
++++ b/js/src/json.cpp
+@@ -300,7 +300,7 @@ JO(JSContext *cx, HandleObject obj, StringifyContext *scx)
+     Maybe<AutoIdVector> ids;
+     const AutoIdVector *props;
+     if (scx->replacer && !scx->replacer->isCallable()) {
+-        JS_ASSERT(JS_IsArrayObject(cx, scx->replacer));
++        JS_ASSERT(IsArray(scx->replacer, cx));
+         props = &scx->propertyList;
+     } else {
+         JS_ASSERT_IF(scx->replacer, scx->propertyList.length() == 0);
+@@ -488,7 +488,7 @@ Str(JSContext *cx, const Value &v, StringifyContext *scx)
+ 
+     scx->depth++;
+     bool ok;
+-    if (ObjectClassIs(obj, ESClass_Array, cx))
++    if (IsArray(obj, cx))
+         ok = JA(cx, obj, scx);
+     else
+         ok = JO(cx, obj, scx);
+@@ -510,7 +510,7 @@ js_Stringify(JSContext *cx, MutableHandleValue vp, JSObject *replacer_, Value sp
+     if (replacer) {
+         if (replacer->isCallable()) {
+             /* Step 4a(i): use replacer to transform values.  */
+-        } else if (ObjectClassIs(replacer, ESClass_Array, cx)) {
++        } else if (IsArray(replacer, cx)) {
+             /*
+              * Step 4b: The spec algorithm is unhelpfully vague about the exact
+              * steps taken when the replacer is an array, regarding the exact
+@@ -541,7 +541,8 @@ js_Stringify(JSContext *cx, MutableHandleValue vp, JSObject *replacer_, Value sp
+ 
+             /* Step 4b(ii). */
+             uint32_t len;
+-            JS_ALWAYS_TRUE(GetLengthProperty(cx, replacer, &len));
++            if (!GetLengthProperty(cx, replacer, &len))
++                return false;
+             if (replacer->is<ArrayObject>() && !replacer->isIndexed())
+                 len = Min(len, replacer->getDenseInitializedLength());
+ 
+@@ -678,7 +679,7 @@ Walk(JSContext *cx, HandleObject holder, HandleId name, HandleValue reviver, Mut
+     if (val.isObject()) {
+         RootedObject obj(cx, &val.toObject());
+ 
+-        if (ObjectClassIs(obj, ESClass_Array, cx)) {
++        if (IsArray(obj, cx)) {
+             /* Step 2a(ii). */
+             uint32_t length;
+             if (!GetLengthProperty(cx, obj, &length))
+diff --git a/js/src/jsproxy.cpp b/js/src/jsproxy.cpp
+index 7644da1..7453103 100644
+--- a/js/src/jsproxy.cpp
++++ b/js/src/jsproxy.cpp
+@@ -1108,6 +1108,14 @@ class ScriptedDirectProxyHandler : public DirectProxyHandler {
+     virtual bool isExtensible(JSContext *cx, HandleObject proxy, bool *extensible) MOZ_OVERRIDE;
+ 
+     /* Spidermonkey extensions. */
++    // A scripted proxy should not be treated as generic in most contexts.
++    virtual bool nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
++                            CallArgs args) MOZ_OVERRIDE;
++    virtual bool objectClassIs(HandleObject obj, ESClassValue classValue,
++                               JSContext *cx) MOZ_OVERRIDE;
++    virtual bool regexp_toShared(JSContext *cx, HandleObject proxy,
++                                 RegExpGuard *g) MOZ_OVERRIDE;
++
+     virtual bool call(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
+     virtual bool construct(JSContext *cx, HandleObject proxy, const CallArgs &args) MOZ_OVERRIDE;
+     virtual bool isScripted() MOZ_OVERRIDE { return true; }
+@@ -2350,6 +2358,43 @@ ScriptedDirectProxyHandler::construct(JSContext *cx, HandleObject proxy, const C
+     return true;
+ }
+ 
++bool
++ScriptedDirectProxyHandler::nativeCall(JSContext *cx, IsAcceptableThis test, NativeImpl impl,
++                                       CallArgs args)
++{
++    ReportIncompatible(cx, args);
++    return false;
++}
++
++bool
++ScriptedDirectProxyHandler::objectClassIs(HandleObject proxy, ESClassValue classValue,
++                                          JSContext *cx)
++{
++    // Special case IsArray. In every other instance ES wants to have exactly
++    // one object type and not a proxy around it, so return false.
++    if (classValue != ESClass_IsArray)
++        return false;
++
++    // In ES6 IsArray is supposed to poke at the Proxy target, instead we do this here.
++    // The reason for this is that we have proxies for which looking at the target might
++    // be impossible. So instead we use our little objectClassIs function that just works
++    // already across different wrappers.
++    RootedObject target(cx, proxy->as<ProxyObject>().target());
++    if (!target)
++        return false;
++
++    return IsArray(target, cx);
++}
++
++bool
++ScriptedDirectProxyHandler::regexp_toShared(JSContext *cx, HandleObject proxy,
++                                            RegExpGuard *g)
++{
++    MOZ_CRASH("Should not end up in ScriptedDirectProxyHandler::regexp_toShared");
++    return false;
++}
++
++
+ ScriptedDirectProxyHandler ScriptedDirectProxyHandler::singleton;
+ 
+ #define INVOKE_ON_PROTOTYPE(cx, handler, proxy, protoCall)                   \
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch
new file mode 100644
index 0000000000..58e61d080c
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-04.patch
@@ -0,0 +1,89 @@
+From 97ba04bf95606b409b1b3035504a41c274ecffe2 Mon Sep 17 00:00:00 2001
+From: Shu-yu Guo <shu@rfrn.org>
+Date: Mon, 26 Jan 2015 18:26:25 -0800
+Subject: [PATCH] Bug 1119579 - Don't GC while iterating compartments in
+ findAllGlobals. r=sfink, a=abillings
+
+---
+ js/src/vm/Debugger.cpp | 56 ++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 34 insertions(+), 22 deletions(-)
+
+diff --git a/js/src/vm/Debugger.cpp b/js/src/vm/Debugger.cpp
+index 27e993d..a8decef 100644
+--- a/js/src/vm/Debugger.cpp
++++ b/js/src/vm/Debugger.cpp
+@@ -2825,37 +2825,49 @@ Debugger::findAllGlobals(JSContext *cx, unsigned argc, Value *vp)
+ {
+     THIS_DEBUGGER(cx, argc, vp, "findAllGlobals", args, dbg);
+ 
+-    RootedObject result(cx, NewDenseEmptyArray(cx));
+-    if (!result)
+-        return false;
++    AutoObjectVector globals(cx);
+ 
+-    for (CompartmentsIter c(cx->runtime(), SkipAtoms); !c.done(); c.next()) {
+-        if (c->options().invisibleToDebugger())
+-            continue;
++    {
++        // Accumulate the list of globals before wrapping them, because
++        // wrapping can GC and collect compartments from under us, while
++        // iterating.
+ 
+-        c->zone()->scheduledForDestruction = false;
++        for (CompartmentsIter c(cx->runtime(), SkipAtoms); !c.done(); c.next()) {
++            if (c->options().invisibleToDebugger())
++                continue;
+ 
+-        GlobalObject *global = c->maybeGlobal();
++            c->zone()->scheduledForDestruction = false;
+ 
+-        if (cx->runtime()->isSelfHostingGlobal(global))
+-            continue;
++            GlobalObject *global = c->maybeGlobal();
+ 
+-        if (global) {
+-            /*
+-             * We pulled |global| out of nowhere, so it's possible that it was
+-             * marked gray by XPConnect. Since we're now exposing it to JS code,
+-             * we need to mark it black.
+-             */
+-            JS::ExposeGCThingToActiveJS(global, JSTRACE_OBJECT);
++            if (cx->runtime()->isSelfHostingGlobal(global))
++                continue;
+ 
+-            RootedValue globalValue(cx, ObjectValue(*global));
+-            if (!dbg->wrapDebuggeeValue(cx, &globalValue))
+-                return false;
+-            if (!NewbornArrayPush(cx, result, globalValue))
+-                return false;
++            if (global) {
++                /*
++                 * We pulled |global| out of nowhere, so it's possible that it was
++                 * marked gray by XPConnect. Since we're now exposing it to JS code,
++                 * we need to mark it black.
++                 */
++                JS::ExposeGCThingToActiveJS(global, JSTRACE_OBJECT);
++                if (!globals.append(global))
++                    return false;
++            }
+         }
+     }
+ 
++    RootedObject result(cx, NewDenseEmptyArray(cx));
++    if (!result)
++        return false;
++
++    for (size_t i = 0; i < globals.length(); i++) {
++        RootedValue globalValue(cx, ObjectValue(*globals[i]));
++        if (!dbg->wrapDebuggeeValue(cx, &globalValue))
++            return false;
++        if (!NewbornArrayPush(cx, result, globalValue))
++            return false;
++    }
++
+     args.rval().setObject(*result);
+     return true;
+ }
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch
new file mode 100644
index 0000000000..3e4ed17598
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-05.patch
@@ -0,0 +1,25 @@
+From 746ddf19ff532b8abc90d3a91322a04b462ebfa8 Mon Sep 17 00:00:00 2001
+From: Brian Hackett <bhackett1024@gmail.com>
+Date: Mon, 26 Jan 2015 13:14:34 -0500
+Subject: [PATCH] Bug 1124018 - Null the allocation site table if
+ initialization fails. r=jonco, a=bkerensa
+
+---
+ js/src/jsinfer.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/js/src/jsinfer.cpp b/js/src/jsinfer.cpp
+index b62ad1f..4019b16 100644
+--- a/js/src/jsinfer.cpp
++++ b/js/src/jsinfer.cpp
+@@ -2035,6 +2035,7 @@ TypeCompartment::addAllocationSiteTypeObject(JSContext *cx, AllocationSiteKey ke
+         allocationSiteTable = cx->new_<AllocationSiteTable>();
+         if (!allocationSiteTable || !allocationSiteTable->init()) {
+             js_delete(allocationSiteTable);
++            allocationSiteTable = nullptr;
+             return nullptr;
+         }
+     }
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch
new file mode 100644
index 0000000000..181f9243e3
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-06.patch
@@ -0,0 +1,41 @@
+From 0758363d982b0b3e6cf021c164715a028a345b9e Mon Sep 17 00:00:00 2001
+From: "Byron Campen [:bwc]" <docfaraday@gmail.com>
+Date: Wed, 21 Jan 2015 08:56:36 -0800
+Subject: [PATCH] Bug 1123882 - Fix case where offset != 0. r=derf, a=bkerensa
+
+---
+ content/media/MediaDecoderStateMachine.cpp | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/content/media/MediaDecoderStateMachine.cpp b/content/media/MediaDecoderStateMachine.cpp
+index ce5870f..4ed496c 100644
+--- a/content/media/MediaDecoderStateMachine.cpp
++++ b/content/media/MediaDecoderStateMachine.cpp
+@@ -328,6 +328,8 @@ void MediaDecoderStateMachine::SendStreamAudio(AudioData* aAudio,
+   if (offset >= aAudio->mFrames)
+     return;
+ 
++  size_t framesToWrite = aAudio->mFrames - offset;
++
+   aAudio->EnsureAudioBuffer();
+   nsRefPtr<SharedBuffer> buffer = aAudio->mAudioBuffer;
+   AudioDataValue* bufferData = static_cast<AudioDataValue*>(buffer->Data());
+@@ -335,10 +337,11 @@ void MediaDecoderStateMachine::SendStreamAudio(AudioData* aAudio,
+   for (uint32_t i = 0; i < aAudio->mChannels; ++i) {
+     channels.AppendElement(bufferData + i*aAudio->mFrames + offset);
+   }
+-  aOutput->AppendFrames(buffer.forget(), channels, aAudio->mFrames);
+-  VERBOSE_LOG("writing %d frames of data to MediaStream for AudioData at %lld",
+-              aAudio->mFrames - int32_t(offset), aAudio->mTime);
+-  aStream->mAudioFramesWritten += aAudio->mFrames - int32_t(offset);
++  aOutput->AppendFrames(buffer.forget(), channels, framesToWrite);
++  VERBOSE_LOG("writing %u frames of data to MediaStream for AudioData at %lld",
++              static_cast<unsigned>(framesToWrite),
++              aAudio->mTime);
++  aStream->mAudioFramesWritten += framesToWrite;
+ }
+ 
+ static void WriteVideoToMediaStream(layers::Image* aImage,
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch
new file mode 100644
index 0000000000..818d369b26
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-07.patch
@@ -0,0 +1,54 @@
+From 94899f849e50a765bb26420f5c70d49002d6673f Mon Sep 17 00:00:00 2001
+From: Glenn Randers-Pehrson <glennrp+bmo@gmail.com>
+Date: Mon, 26 Jan 2015 16:07:00 -0500
+Subject: [PATCH] Bug 1117406 - Fix handling of out-of-range PNG tRNS values.
+ r=jmuizelaar, a=abillings
+
+---
+ image/decoders/nsPNGDecoder.cpp | 22 ++++++++++++----------
+ 1 file changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/image/decoders/nsPNGDecoder.cpp b/image/decoders/nsPNGDecoder.cpp
+index acaa835..8e6bc2d 100644
+--- a/image/decoders/nsPNGDecoder.cpp
++++ b/image/decoders/nsPNGDecoder.cpp
+@@ -528,24 +528,26 @@ nsPNGDecoder::info_callback(png_structp png_ptr, png_infop info_ptr)
+     png_set_expand(png_ptr);
+ 
+   if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
+-    int sample_max = (1 << bit_depth);
+     png_color_16p trans_values;
+     png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &trans_values);
+     /* libpng doesn't reject a tRNS chunk with out-of-range samples
+        so we check it here to avoid setting up a useless opacity
+-       channel or producing unexpected transparent pixels when using
+-       libpng-1.2.19 through 1.2.26 (bug #428045) */
+-    if ((color_type == PNG_COLOR_TYPE_GRAY &&
+-       (int)trans_values->gray > sample_max) ||
+-       (color_type == PNG_COLOR_TYPE_RGB &&
+-       ((int)trans_values->red > sample_max ||
+-       (int)trans_values->green > sample_max ||
+-       (int)trans_values->blue > sample_max)))
++       channel or producing unexpected transparent pixels (bug #428045) */
++    if (bit_depth < 16) {
++      png_uint_16 sample_max = (1 << bit_depth) - 1;
++      if ((color_type == PNG_COLOR_TYPE_GRAY &&
++           trans_values->gray > sample_max) ||
++           (color_type == PNG_COLOR_TYPE_RGB &&
++           (trans_values->red > sample_max ||
++           trans_values->green > sample_max ||
++           trans_values->blue > sample_max)))
+       {
+         /* clear the tRNS valid flag and release tRNS memory */
+         png_free_data(png_ptr, info_ptr, PNG_FREE_TRNS, 0);
++        num_trans = 0;
+       }
+-    else
++    }
++    if (num_trans != 0)
+       png_set_expand(png_ptr);
+   }
+ 
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch
new file mode 100644
index 0000000000..685e3a6d43
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-08.patch
@@ -0,0 +1,53 @@
+From 4920c5c447d1153dffa623dd70d8b535b9ca6795 Mon Sep 17 00:00:00 2001
+From: Jan de Mooij <jdemooij@mozilla.com>
+Date: Mon, 26 Jan 2015 12:59:47 +0100
+Subject: [PATCH] Bug 1115776 - Fix LApplyArgsGeneric to always emit the
+ has-script check. r=shu, a=sledru
+
+---
+ js/src/jit/CodeGenerator.cpp | 24 ++++++++----------------
+ 1 file changed, 8 insertions(+), 16 deletions(-)
+
+diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
+index ba14f86..0669692 100644
+--- a/js/src/jit/CodeGenerator.cpp
++++ b/js/src/jit/CodeGenerator.cpp
+@@ -2448,27 +2448,19 @@ CodeGenerator::visitApplyArgsGeneric(LApplyArgsGeneric *apply)
+ 
+     masm.checkStackAlignment();
+ 
+-    // If the function is known to be uncompilable, only emit the call to InvokeFunction.
++    // If the function is native, only emit the call to InvokeFunction.
+     ExecutionMode executionMode = gen->info().executionMode();
+-    if (apply->hasSingleTarget()) {
+-        JSFunction *target = apply->getSingleTarget();
+-        if (target->isNative()) {
+-            if (!emitCallInvokeFunction(apply, copyreg))
+-                return false;
+-            emitPopArguments(apply, copyreg);
+-            return true;
+-        }
++    if (apply->hasSingleTarget() && apply->getSingleTarget()->isNative()) {
++        if (!emitCallInvokeFunction(apply, copyreg))
++            return false;
++        emitPopArguments(apply, copyreg);
++        return true;
+     }
+ 
+     Label end, invoke;
+ 
+-    // Guard that calleereg is an interpreted function with a JSScript:
+-    if (!apply->hasSingleTarget()) {
+-        masm.branchIfFunctionHasNoScript(calleereg, &invoke);
+-    } else {
+-        // Native single targets are handled by LCallNative.
+-        JS_ASSERT(!apply->getSingleTarget()->isNative());
+-    }
++    // Guard that calleereg is an interpreted function with a JSScript.
++    masm.branchIfFunctionHasNoScript(calleereg, &invoke);
+ 
+     // Knowing that calleereg is a non-native function, load the JSScript.
+     masm.loadPtr(Address(calleereg, JSFunction::offsetOfNativeOrScript()), objreg);
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch
new file mode 100644
index 0000000000..d067d8133d
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-09.patch
@@ -0,0 +1,52 @@
+From f7d24f37425d3d9054a7e5657815440a07166d3f Mon Sep 17 00:00:00 2001
+From: Kartikaya Gupta <kgupta@mozilla.com>
+Date: Tue, 20 Jan 2015 10:33:27 -0500
+Subject: [PATCH] Bug 1107009 - Additional locking needed for esr31 backport.
+ r=BenWa a=sledru
+
+---
+ gfx/layers/ipc/CompositorParent.cpp | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp
+index 97c8693..cb03e71 100644
+--- a/gfx/layers/ipc/CompositorParent.cpp
++++ b/gfx/layers/ipc/CompositorParent.cpp
+@@ -1286,13 +1286,19 @@ CrossProcessCompositorParent::ShadowLayersUpdated(
+ {
+   uint64_t id = aLayerTree->GetId();
+   MOZ_ASSERT(id != 0);
++  const CompositorParent::LayerTreeState* state = CompositorParent::GetIndirectShadowTree(id);
++  if (!state) {
++    return;
++  }
++  MOZ_ASSERT(state->mParent);
++
+   Layer* shadowRoot = aLayerTree->GetRoot();
+   if (shadowRoot) {
+     SetShadowProperties(shadowRoot);
+   }
+   UpdateIndirectTree(id, shadowRoot, aTargetConfig);
+ 
+-  sIndirectLayerTrees[id].mParent->NotifyShadowTreeTransaction(id, aIsFirstPaint, aScheduleComposite);
++  state->mParent->NotifyShadowTreeTransaction(id, aIsFirstPaint, aScheduleComposite);
+ }
+ 
+ void
+@@ -1329,7 +1335,12 @@ AsyncCompositionManager*
+ CrossProcessCompositorParent::GetCompositionManager(LayerTransactionParent* aLayerTree)
+ {
+   uint64_t id = aLayerTree->GetId();
+-  return sIndirectLayerTrees[id].mParent->GetCompositionManager(aLayerTree);
++  const CompositorParent::LayerTreeState* state = CompositorParent::GetIndirectShadowTree(id);
++  if (!state) {
++    return nullptr;
++  }
++  MOZ_ASSERT(state->mParent);
++  return state->mParent->GetCompositionManager(aLayerTree);
+ }
+ 
+ void
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch
new file mode 100644
index 0000000000..9a4668b2dc
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-10.patch
@@ -0,0 +1,219 @@
+From 66e65b2138c6db20288ef4cf78d15995f382a7e2 Mon Sep 17 00:00:00 2001
+From: Kartikaya Gupta <kgupta@mozilla.com>
+Date: Tue, 13 Jan 2015 13:26:26 -0500
+Subject: [PATCH] Bug 1107009. r=BenWa, a=sledru
+
+---
+ gfx/layers/ipc/CompositorParent.cpp | 57 ++++++++++++++++++++++++++++++-------
+ 1 file changed, 46 insertions(+), 11 deletions(-)
+
+diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp
+index ce50277..cbbb2ef 100644
+--- a/gfx/layers/ipc/CompositorParent.cpp
++++ b/gfx/layers/ipc/CompositorParent.cpp
+@@ -22,6 +22,7 @@
+ #include "gfxPrefs.h"                   // for gfxPrefs
+ #include "ipc/ShadowLayersManager.h"    // for ShadowLayersManager
+ #include "mozilla/AutoRestore.h"        // for AutoRestore
++#include "mozilla/ClearOnShutdown.h"    // for ClearOnShutdown
+ #include "mozilla/DebugOnly.h"          // for DebugOnly
+ #include "mozilla/gfx/2D.h"          // for DrawTarget
+ #include "mozilla/gfx/Point.h"          // for IntSize
+@@ -70,6 +71,16 @@ CompositorParent::LayerTreeState::LayerTreeState()
+ 
+ typedef map<uint64_t, CompositorParent::LayerTreeState> LayerTreeMap;
+ static LayerTreeMap sIndirectLayerTrees;
++static StaticAutoPtr<mozilla::Monitor> sIndirectLayerTreesLock;
++
++static void EnsureLayerTreeMapReady()
++{
++  MOZ_ASSERT(NS_IsMainThread());
++  if (!sIndirectLayerTreesLock) {
++    sIndirectLayerTreesLock = new Monitor("IndirectLayerTree");
++    mozilla::ClearOnShutdown(&sIndirectLayerTreesLock);
++  }
++}
+ 
+ // FIXME/bug 774386: we're assuming that there's only one
+ // CompositorParent, but that's not always true.  This assumption only
+@@ -132,6 +143,7 @@ void CompositorParent::StartUp()
+     return;
+   }
+   MOZ_ASSERT(!sCompositorLoop);
++  EnsureLayerTreeMapReady();
+   CreateCompositorMap();
+   CreateThread();
+   sMainLoop = MessageLoop::current();
+@@ -206,7 +218,11 @@ CompositorParent::CompositorParent(nsIWidget* aWidget,
+                                                           this, &mCompositorID));
+ 
+   mRootLayerTreeID = AllocateLayerTreeId();
+-  sIndirectLayerTrees[mRootLayerTreeID].mParent = this;
++
++  { // scope lock
++    MonitorAutoLock lock(*sIndirectLayerTreesLock);
++    sIndirectLayerTrees[mRootLayerTreeID].mParent = this;
++  }
+ 
+   mApzcTreeManager = new APZCTreeManager();
+   ++sCompositorThreadRefCount;
+@@ -249,7 +265,10 @@ CompositorParent::Destroy()
+   mCompositionManager = nullptr;
+   mApzcTreeManager->ClearTree();
+   mApzcTreeManager = nullptr;
+-  sIndirectLayerTrees.erase(mRootLayerTreeID);
++  { // scope lock
++    MonitorAutoLock lock(*sIndirectLayerTreesLock);
++    sIndirectLayerTrees.erase(mRootLayerTreeID);
++  }
+ }
+ 
+ void
+@@ -266,6 +285,7 @@ CompositorParent::RecvWillStop()
+ 
+   // Ensure that the layer manager is destroyed before CompositorChild.
+   if (mLayerManager) {
++    MonitorAutoLock lock(*sIndirectLayerTreesLock);
+     for (LayerTreeMap::iterator it = sIndirectLayerTrees.begin();
+          it != sIndirectLayerTrees.end(); it++)
+     {
+@@ -380,7 +400,10 @@ CompositorParent::ActorDestroy(ActorDestroyReason why)
+   if (mLayerManager) {
+     mLayerManager->Destroy();
+     mLayerManager = nullptr;
+-    sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = nullptr;
++    { // scope lock
++      MonitorAutoLock lock(*sIndirectLayerTreesLock);
++      sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = nullptr;
++    }
+     mCompositionManager = nullptr;
+     mCompositor = nullptr;
+   }
+@@ -696,6 +719,7 @@ CompositorParent::DidComposite()
+ {
+   unused << SendDidComposite(0);
+ 
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   for (LayerTreeMap::iterator it = sIndirectLayerTrees.begin();
+        it != sIndirectLayerTrees.end(); it++) {
+     LayerTreeState* lts = &it->second;
+@@ -867,6 +891,7 @@ CompositorParent::InitializeLayerManager(const nsTArray<LayersBackend>& aBackend
+       mLayerManager = layerManager;
+       MOZ_ASSERT(compositor);
+       mCompositor = compositor;
++      MonitorAutoLock lock(*sIndirectLayerTreesLock);
+       sIndirectLayerTrees[mRootLayerTreeID].mLayerManager = layerManager;
+       return;
+     }
+@@ -969,6 +994,7 @@ CompositorParent::RecvNotifyChildCreated(const uint64_t& child)
+ void
+ CompositorParent::NotifyChildCreated(uint64_t aChild)
+ {
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   sIndirectLayerTrees[aChild].mParent = this;
+   sIndirectLayerTrees[aChild].mLayerManager = mLayerManager;
+ }
+@@ -985,6 +1011,7 @@ CompositorParent::AllocateLayerTreeId()
+ static void
+ EraseLayerState(uint64_t aId)
+ {
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   sIndirectLayerTrees.erase(aId);
+ }
+ 
+@@ -1001,6 +1028,7 @@ UpdateControllerForLayersId(uint64_t aLayersId,
+                             GeckoContentController* aController)
+ {
+   // Adopt ref given to us by SetControllerForLayerTree()
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   sIndirectLayerTrees[aLayersId].mController =
+     already_AddRefed<GeckoContentController>(aController);
+ }
+@@ -1010,12 +1038,15 @@ ScopedLayerTreeRegistration::ScopedLayerTreeRegistration(uint64_t aLayersId,
+                                                          GeckoContentController* aController)
+     : mLayersId(aLayersId)
+ {
++  EnsureLayerTreeMapReady();
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   sIndirectLayerTrees[aLayersId].mRoot = aRoot;
+   sIndirectLayerTrees[aLayersId].mController = aController;
+ }
+ 
+ ScopedLayerTreeRegistration::~ScopedLayerTreeRegistration()
+ {
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   sIndirectLayerTrees.erase(mLayersId);
+ }
+ 
+@@ -1175,6 +1206,7 @@ CompositorParent::CloneToplevel(const InfallibleTArray<mozilla::ipc::ProtocolFdM
+ static void
+ UpdateIndirectTree(uint64_t aId, Layer* aRoot, const TargetConfig& aTargetConfig)
+ {
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   sIndirectLayerTrees[aId].mRoot = aRoot;
+   sIndirectLayerTrees[aId].mTargetConfig = aTargetConfig;
+ }
+@@ -1182,6 +1214,7 @@ UpdateIndirectTree(uint64_t aId, Layer* aRoot, const TargetConfig& aTargetConfig
+ /* static */ const CompositorParent::LayerTreeState*
+ CompositorParent::GetIndirectShadowTree(uint64_t aId)
+ {
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   LayerTreeMap::const_iterator cit = sIndirectLayerTrees.find(aId);
+   if (sIndirectLayerTrees.end() == cit) {
+     return nullptr;
+@@ -1189,12 +1222,6 @@ CompositorParent::GetIndirectShadowTree(uint64_t aId)
+   return &cit->second;
+ }
+ 
+-static void
+-RemoveIndirectTree(uint64_t aId)
+-{
+-  sIndirectLayerTrees.erase(aId);
+-}
+-
+ void
+ CrossProcessCompositorParent::ActorDestroy(ActorDestroyReason aWhy)
+ {
+@@ -1211,6 +1238,8 @@ CrossProcessCompositorParent::AllocPLayerTransactionParent(const nsTArray<Layers
+ {
+   MOZ_ASSERT(aId != 0);
+ 
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
++
+   if (sIndirectLayerTrees[aId].mLayerManager) {
+     sIndirectLayerTrees[aId].mCrossProcessParent = this;
+     LayerManagerComposite* lm = sIndirectLayerTrees[aId].mLayerManager;
+@@ -1234,7 +1263,7 @@ bool
+ CrossProcessCompositorParent::DeallocPLayerTransactionParent(PLayerTransactionParent* aLayers)
+ {
+   LayerTransactionParent* slp = static_cast<LayerTransactionParent*>(aLayers);
+-  RemoveIndirectTree(slp->GetId());
++  EraseLayerState(slp->GetId());
+   static_cast<LayerTransactionParent*>(aLayers)->ReleaseIPDLReference();
+   return true;
+ }
+@@ -1242,6 +1271,7 @@ CrossProcessCompositorParent::DeallocPLayerTransactionParent(PLayerTransactionPa
+ bool
+ CrossProcessCompositorParent::RecvNotifyChildCreated(const uint64_t& child)
+ {
++  MonitorAutoLock lock(*sIndirectLayerTreesLock);
+   sIndirectLayerTrees[child].mParent->NotifyChildCreated(child);
+   return true;
+ }
+@@ -1269,7 +1299,12 @@ CrossProcessCompositorParent::ForceComposite(LayerTransactionParent* aLayerTree)
+ {
+   uint64_t id = aLayerTree->GetId();
+   MOZ_ASSERT(id != 0);
+-  sIndirectLayerTrees[id].mParent->ForceComposite(aLayerTree);
++  CompositorParent* parent;
++  { // scope lock
++    MonitorAutoLock lock(*sIndirectLayerTreesLock);
++    parent = sIndirectLayerTrees[id].mParent;
++  }
++  parent->ForceComposite(aLayerTree);
+ }
+ 
+ bool
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch b/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch
new file mode 100644
index 0000000000..869feaf7c6
--- /dev/null
+++ b/gnu/packages/patches/icecat-CVE-2015-0836-pt-11.patch
@@ -0,0 +1,104 @@
+From 3f0f685829445ae82974d61f6017fdb67349c32b Mon Sep 17 00:00:00 2001
+From: Dan Gohman <sunfish@mozilla.com>
+Date: Fri, 9 Jan 2015 09:04:12 -0500
+Subject: [PATCH] Bug 1096138 - IonMonkey: Augment Nops with Mops to avoid
+ collisions with fixed live ranges. r=jandem, a=sledru
+
+---
+ js/src/jit/CodeGenerator.cpp |  6 ++++++
+ js/src/jit/CodeGenerator.h   |  1 +
+ js/src/jit/LIR-Common.h      |  6 ++++++
+ js/src/jit/LOpcodes.h        |  1 +
+ js/src/jit/Lowering.cpp      | 12 ++++++++++++
+ 5 files changed, 26 insertions(+)
+
+diff --git a/js/src/jit/CodeGenerator.cpp b/js/src/jit/CodeGenerator.cpp
+index 4f07524..ba14f86 100644
+--- a/js/src/jit/CodeGenerator.cpp
++++ b/js/src/jit/CodeGenerator.cpp
+@@ -1077,6 +1077,12 @@ CodeGenerator::visitNop(LNop *lir)
+ }
+ 
+ bool
++CodeGenerator::visitMop(LMop *lir)
++{
++    return true;
++}
++
++bool
+ CodeGenerator::visitOsiPoint(LOsiPoint *lir)
+ {
+     // Note: markOsiPoint ensures enough space exists between the last
+diff --git a/js/src/jit/CodeGenerator.h b/js/src/jit/CodeGenerator.h
+index 03677a5..dce095d 100644
+--- a/js/src/jit/CodeGenerator.h
++++ b/js/src/jit/CodeGenerator.h
+@@ -58,6 +58,7 @@ class CodeGenerator : public CodeGeneratorSpecific
+ 
+     bool visitLabel(LLabel *lir);
+     bool visitNop(LNop *lir);
++    bool visitMop(LMop *lir);
+     bool visitOsiPoint(LOsiPoint *lir);
+     bool visitGoto(LGoto *lir);
+     bool visitTableSwitch(LTableSwitch *ins);
+diff --git a/js/src/jit/LIR-Common.h b/js/src/jit/LIR-Common.h
+index c90aef9..e7a0e4c 100644
+--- a/js/src/jit/LIR-Common.h
++++ b/js/src/jit/LIR-Common.h
+@@ -42,6 +42,12 @@ class LNop : public LInstructionHelper<0, 0, 0>
+     LIR_HEADER(Nop)
+ };
+ 
++class LMop : public LInstructionHelper<0, 0, 0>
++{
++  public:
++    LIR_HEADER(Mop)
++};
++
+ // An LOsiPoint captures a snapshot after a call and ensures enough space to
+ // patch in a call to the invalidation mechanism.
+ //
+diff --git a/js/src/jit/LOpcodes.h b/js/src/jit/LOpcodes.h
+index a32d64f..cd7eef8 100644
+--- a/js/src/jit/LOpcodes.h
++++ b/js/src/jit/LOpcodes.h
+@@ -10,6 +10,7 @@
+ #define LIR_COMMON_OPCODE_LIST(_)   \
+     _(Label)                        \
+     _(Nop)                          \
++    _(Mop)                          \
+     _(OsiPoint)                     \
+     _(MoveGroup)                    \
+     _(Integer)                      \
+diff --git a/js/src/jit/Lowering.cpp b/js/src/jit/Lowering.cpp
+index d5f8227..48b7fa9 100644
+--- a/js/src/jit/Lowering.cpp
++++ b/js/src/jit/Lowering.cpp
+@@ -3616,12 +3616,24 @@ LIRGenerator::visitInstruction(MInstruction *ins)
+     ins->setInWorklistUnchecked();
+ #endif
+ 
++    // If we added a Nop for this instruction, we'll also add a Mop, so that
++    // that live-ranges for fixed register defs, which with LSRA extend through
++    // the Nop so that they can extend through the OsiPoint don't, with their
++    // one-extra extension, extend into a position where they use the input
++    // move group for the following instruction.
++    bool needsMop = !current->instructions().empty() && current->rbegin()->isNop();
++
+     // If no safepoint was created, there's no need for an OSI point.
+     if (LOsiPoint *osiPoint = popOsiPoint()) {
+         if (!add(osiPoint))
+             return false;
+     }
+ 
++    if (needsMop) {
++        if (!add(new(alloc()) LMop))
++            return false;
++    }
++
+     return true;
+ }
+ 
+-- 
+2.2.1
+
diff --git a/gnu/packages/patches/luajit-no_ldconfig.patch b/gnu/packages/patches/luajit-no_ldconfig.patch
new file mode 100644
index 0000000000..8000e8e4e5
--- /dev/null
+++ b/gnu/packages/patches/luajit-no_ldconfig.patch
@@ -0,0 +1,31 @@
+From 629200f48e18dc1a3a5229739748bad0e2a6a0a2 Mon Sep 17 00:00:00 2001
+From: =?utf8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= <sleep_walker@suse.cz>
+Date: Wed, 4 Feb 2015 11:37:16 +0100
+Subject: [PATCH] Do not silently and prematurely end install when ldconfig is
+ missing
+
+---
+ Makefile | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 343ecb5..4667146 100644
+--- a/Makefile
++++ b/Makefile
+@@ -112,9 +112,10 @@ install: $(INSTALL_DEP)
+ 	$(RM) $(INSTALL_TSYM) $(INSTALL_DYN) $(INSTALL_SHORT1) $(INSTALL_SHORT2)
+ 	cd src && test -f $(FILE_SO) && \
+ 	  $(INSTALL_X) $(FILE_SO) $(INSTALL_DYN) && \
+-	  $(LDCONFIG) $(INSTALL_LIB) && \
+-	  $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
+-	  $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || :
++	  ( $(LDCONFIG) $(INSTALL_LIB) ; \
++	    $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
++	    $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || : \
++	  )
+ 	cd etc && $(INSTALL_F) $(FILE_MAN) $(INSTALL_MAN)
+ 	cd etc && $(SED_PC) $(FILE_PC) > $(FILE_PC).tmp && \
+ 	  $(INSTALL_F) $(FILE_PC).tmp $(INSTALL_PC) && \
+-- 
+2.2.2
+
diff --git a/gnu/packages/patches/luajit-symlinks.patch b/gnu/packages/patches/luajit-symlinks.patch
new file mode 100644
index 0000000000..2466c34144
--- /dev/null
+++ b/gnu/packages/patches/luajit-symlinks.patch
@@ -0,0 +1,25 @@
+From 0a54a8f125d7ab508c7c88d5ad4ed1b0c63cb5b6 Mon Sep 17 00:00:00 2001
+From: =?utf8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= <sleep_walker@suse.cz>
+Date: Wed, 4 Feb 2015 11:32:55 +0100
+Subject: [PATCH 1/2] Provide two symlinks for dynamic library during install
+
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 0891b71..343ecb5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -56,7 +56,7 @@ INSTALL_PCNAME= luajit.pc
+ INSTALL_STATIC= $(INSTALL_LIB)/$(INSTALL_ANAME)
+ INSTALL_DYN= $(INSTALL_LIB)/$(INSTALL_SONAME)
+ INSTALL_SHORT1= $(INSTALL_LIB)/$(INSTALL_SOSHORT)
+-INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT)
++INSTALL_SHORT2= $(INSTALL_LIB)/$(INSTALL_SOSHORT).$(MAJVER)
+ INSTALL_T= $(INSTALL_BIN)/$(INSTALL_TNAME)
+ INSTALL_TSYM= $(INSTALL_BIN)/$(INSTALL_TSYMNAME)
+ INSTALL_PC= $(INSTALL_PKGCONFIG)/$(INSTALL_PCNAME)
+-- 
+2.2.2
+
diff --git a/gnu/packages/patches/openexr-missing-samples.patch b/gnu/packages/patches/openexr-missing-samples.patch
new file mode 100644
index 0000000000..16cc9bb625
--- /dev/null
+++ b/gnu/packages/patches/openexr-missing-samples.patch
@@ -0,0 +1,23 @@
+This patch comments out tests that rely on files that are missing
+from the source tarball.
+
+--- openexr-2.2.0/IlmImfTest/testSampleImages.cpp	2015-02-25 16:19:21.565105625 +0100
++++ openexr-2.2.0/IlmImfTest/testSampleImages.cpp	2015-02-25 16:21:46.394128206 +0100
+@@ -162,16 +162,6 @@ testSampleImages (const std::string&)
+ 	compareImages (ILM_IMF_TEST_IMAGEDIR "comp_b44.exr",
+ 		       ILM_IMF_TEST_IMAGEDIR "comp_b44_piz.exr");
+ 
+-	compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwaa_v1.exr",
+-		       ILM_IMF_TEST_IMAGEDIR "comp_dwaa_piz.exr");
+-	compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwaa_v2.exr",
+-		       ILM_IMF_TEST_IMAGEDIR "comp_dwaa_piz.exr");
+-
+-	compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwab_v1.exr",
+-		       ILM_IMF_TEST_IMAGEDIR "comp_dwab_piz.exr");
+-	compareImages (ILM_IMF_TEST_IMAGEDIR "comp_dwab_v2.exr",
+-		       ILM_IMF_TEST_IMAGEDIR "comp_dwab_piz.exr");
+-
+ 
+ 	cout << "ok\n" << endl;
+     }
+
diff --git a/gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch b/gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch
new file mode 100644
index 0000000000..53f8fde9de
--- /dev/null
+++ b/gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch
@@ -0,0 +1,16 @@
+Drop SPARQLWrapper from the required install inputs under Python 2, as it
+creates a circular dependency.
+
+diff -u rdflib-4.1.2.alt/setup.py rdflib-4.1.2/setup.py
+--- rdflib-4.1.2.alt/setup.py	2014-03-04 12:40:26.000000000 +0100
++++ rdflib-4.1.2/setup.py	2015-01-23 21:52:59.000000000 +0100
+@@ -52,7 +52,7 @@
+         kwargs['test_suite'] = "nose.collector"
+         kwargs['install_requires'] = [
+             'isodate',
+-            'pyparsing', 'SPARQLWrapper']
++            'pyparsing']
+ 
+         if sys.version_info[1]<7:  # Python 2.6
+             kwargs['install_requires'].append('ordereddict')
+
diff --git a/gnu/packages/patches/weex-vacopy.patch b/gnu/packages/patches/weex-vacopy.patch
new file mode 100644
index 0000000000..f593e86c08
--- /dev/null
+++ b/gnu/packages/patches/weex-vacopy.patch
@@ -0,0 +1,13 @@
+Taken from the Debian 2.8.0 package.
+
+--- weex-2.6.1.5/src/strlib.c	2003-08-18 11:52:38.000000000 +0200
++++ weex-2.8.0/src/strlib.c	2007-12-04 14:22:02.000000000 +0100
+@@ -42,6 +42,8 @@
+ #  define G_VA_COPY(ap1, ap2)     (*(ap1) = *(ap2))
+ #  elif defined (G_VA_COPY_AS_ARRAY)
+ #  define G_VA_COPY(ap1, ap2)     g_memmove ((ap1), (ap2), sizeof (va_list))
++#  elif defined (__x86_64__)
++#  define G_VA_COPY(ap1, ap2)     memmove ((ap1), (ap2), sizeof (va_list))
+ #  else /* va_list is a pointer */
+ #  define G_VA_COPY(ap1, ap2)     ((ap1) = (ap2))
+ #  endif /* va_list is a pointer */
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 1ce4c0cb13..7b4f2ab055 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -33,6 +33,7 @@
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages openssl)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages lua)
@@ -281,3 +282,31 @@ manipulate the list of pages in a PDF file.  It is not a PDF viewer or a
 program capable of converting PDF into other formats.")
    (license license:clarified-artistic)
    (home-page "http://qpdf.sourceforge.net/")))
+
+(define-public xournal
+  (package
+    (name "xournal")
+    (version "0.4.8")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/xournal/xournal-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "0c7gjcqhygiyp0ypaipdaxgkbivg6q45vhsj8v5jsi9nh6iqff13"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("gtk" ,gtk+-2)
+       ("pango" ,pango)
+       ("poppler" ,poppler)
+       ("glib" ,glib)
+       ("libgnomecanvas" ,libgnomecanvas)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://xournal.sourceforge.net/")
+    (synopsis "Notetaking using a stylus")
+    (description
+     "Xournal is an application for notetaking, sketching, keeping a journal
+using a stylus.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm
index 699fe751de..214ab3e951 100644
--- a/gnu/packages/perl.scm
+++ b/gnu/packages/perl.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -208,6 +209,53 @@ but don't want to go all out and profile your code.")
                               "Benchmark-Timer-" version))
     (license gpl2)))
 
+(define-public perl-capture-tiny
+  (package
+    (name "perl-capture-tiny")
+    (version "0.28")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/D/DA/DAGOLDEN/Capture-Tiny-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "117gmwipql1y5xnw9jil3lhdsrf2wsm9wjdzqj66x971n3fwm573"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Capture-Tiny")
+    (synopsis "Capture STDOUT and STDERR from Perl, XS or external programs")
+    (description
+     "Capture::Tiny provides a simple, portable way to capture almost anything
+sent to STDOUT or STDERR, regardless of whether it comes from Perl, from XS
+code or from an external program.  Optionally, output can be teed so that it
+is captured while being passed through to the original file handles.")
+    (license asl2.0)))
+
+(define-public perl-data-optlist
+  (package
+    (name "perl-data-optlist")
+    (version "0.109")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/R/RJ/RJBS/Data-OptList-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1j44rm2spprlq3bc80cxni3dzs3gfjiqv1qc9q7820n1qj0wgmqw"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-sub-install" ,perl-sub-install)))
+    (inputs
+     `(("perl-params-util" ,perl-params-util)))
+    (home-page "http://search.cpan.org/dist/Data-OptList")
+    (synopsis "Parse and validate simple name/value option pairs")
+    (description
+     "Data::OptList provides a simple syntax for name/value option pairs.")
+    (license (package-license perl))))
+
 (define-public perl-exporter-lite
   (package
     (name "perl-exporter-lite")
@@ -229,6 +277,27 @@ import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
                               "Exporter-Lite-" version))
     (license (package-license perl))))
 
+(define-public perl-params-util
+  (package
+    (name "perl-params-util")
+    (version "1.07")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/A/AD/ADAMK/Params-Util-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "0v67sx93yhn7xa0nh9mnbf8mixf54czk6wzrjsp6dzzr5hzyrw9h"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Params-Util")
+    (synopsis "Simple, compact and correct param-checking functions")
+    (description
+     "Params::Util provides a basic set of importable functions that makes
+checking parameters easier.")
+    (license (package-license perl))))
+
 (define-public perl-probe-perl
   (package
     (name "perl-probe-perl")
@@ -274,6 +343,52 @@ Perlish API and none of the bloat and rarely used features of IPC::Run.")
     ;; licenses, any version."
     (license (list bsd-3 gpl3+))))
 
+(define-public perl-sub-exporter
+  (package
+    (name "perl-sub-exporter")
+    (version "0.987")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/R/RJ/RJBS/Sub-Exporter-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1ml3n1ck4ln9qjm2mcgkczj1jb5n1fkscz9c4x23v4db0glb4g2l"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-data-optlist" ,perl-data-optlist)
+       ("perl-params-util" ,perl-params-util)))
+    (home-page "http://search.cpan.org/dist/Sub-Exporter")
+    (synopsis "Sophisticated exporter for custom-built routines")
+    (description
+     "Sub::Exporter provides a sophisticated alternative to Exporter.pm for
+custom-built routines.")
+    (license (package-license perl))))
+
+(define-public perl-sub-install
+  (package
+    (name "perl-sub-install")
+    (version "0.928")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "mirror://cpan/authors/id/R/RJ/RJBS/Sub-Install-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "03zgk1yh128gciyx3q77zxzxg9kf8yy2gm46gdxqi24mcykngrb1"))))
+    (build-system perl-build-system)
+    (home-page "http://search.cpan.org/dist/Sub-Install")
+    (synopsis "Install subroutines into packages easily")
+    (description
+     "Sub::Install makes it easy to install subroutines into packages without
+the unsightly mess of C<no strict> or typeglobs lying about where just anyone
+can see them.")
+    (license (package-license perl))))
+
 (define-public perl-test-deep
   (package
     (name "perl-test-deep")
@@ -365,6 +480,31 @@ bin as is also commonly used) paths of your Perl distribution.")
                               "Test-Simple-" version))
     (license (package-license perl))))
 
+(define-public perl-test-output
+  (package
+    (name "perl-test-output")
+    (version "1.03")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cpan/authors/id/B/BD/BDFOY/"
+                                  "Test-Output-" version ".tar.gz"))
+              (sha256
+               (base32
+                "12991jnzj4cbw9whhprmqvnzd1ayii84g2mh8vxbjngwqrjsy41i"))))
+    (build-system perl-build-system)
+    (propagated-inputs
+     `(("perl-capture-tiny" ,perl-capture-tiny)
+       ("perl-test-tester" ,perl-test-tester)
+       ("perl-sub-exporter" ,perl-sub-exporter)))
+    (synopsis "Utilities to test STDOUT and STDERR messages")
+    (description
+     "Test::Output provides a simple interface for testing output sent to
+STDOUT or STDERR.  A number of different utilities are included to try and be
+as flexible as possible to the tester.")
+    (home-page (string-append "http://search.cpan.org/~bdfoy/"
+                              "Test-Output-" version))
+    (license (package-license perl))))
+
 (define-public perl-test-tester
   (package
     (name "perl-test-tester")
diff --git a/gnu/packages/pumpio.scm b/gnu/packages/pumpio.scm
new file mode 100644
index 0000000000..4a6375f3f2
--- /dev/null
+++ b/gnu/packages/pumpio.scm
@@ -0,0 +1,68 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 David Thompson <davet@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages pumpio)
+  #:use-module (guix licenses)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages aspell)
+  #:use-module (gnu packages kde)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages web))
+
+(define-public pumpa
+  (package
+    (name "pumpa")
+    (version "0.9")
+    (source (origin
+              (method git-fetch) ; no source tarballs
+              (uri (git-reference
+                    (url "https://gitorious.org/pumpa/pumpa.git")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0v55xq17wnc9mvpmrm5r3rjrsg9npnjv1lznbz8ppk77ba8pwimy"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-replace
+                 'configure
+                 (lambda* (#:key inputs outputs #:allow-other-keys)
+                   ;; Fix dependency tests.
+                   (substitute* "pumpa.pro"
+                     (("/usr/include/tidy\\.h")
+                      (string-append (assoc-ref inputs "tidy")
+                                     "/include/tidy.h"))
+                     (("/usr/include/aspell.h")
+                      (string-append (assoc-ref inputs "aspell")
+                                     "/include/aspell.h")))
+                   ;; Run qmake with proper installation prefix.
+                   (let ((prefix (string-append "PREFIX="
+                                                (assoc-ref outputs "out"))))
+                     (zero? (system* "qmake" prefix))))
+                 %standard-phases)))
+    (inputs
+     `(("aspell" ,aspell)
+       ("qt" ,qt)
+       ("qjson" ,qjson)
+       ("tidy" ,tidy)))
+    (synopsis "Qt-based pump.io client")
+    (description "Pumpa is a simple pump.io client written in C++ and Qt.")
+    (home-page "https://pumpa.branchable.com/")
+    (license gpl3+)))
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 36acfc0ed3..bbff241833 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -26,38 +26,37 @@
 
 (define-module (gnu packages python)
   #:use-module ((guix licenses)
-                #:select (asl2.0 bsd-3 bsd-2 bsd-style cc0 expat x11 x11-style
+                #:select (asl2.0 bsd-3 bsd-2 bsd-style cc0 x11 x11-style
                           gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+
-                          psfl public-domain))
-  #:use-module ((guix licenses) #:select (zlib) #:prefix license:)
+                          psfl public-domain x11-style))
+  #:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages elf)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gdbm)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages libffi)
-  #:use-module (gnu packages readline)
-  #:use-module (gnu packages openssl)
-  #:use-module (gnu packages elf)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages ncurses)
-  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages openssl)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
-  #:use-module (gnu packages databases)
-  #:use-module (gnu packages zip)
-  #:use-module (gnu packages ghostscript)
-  #:use-module (gnu packages multiprecision)
+  #:use-module (gnu packages readline)
   #:use-module (gnu packages texlive)
   #:use-module (gnu packages texinfo)
-  #:use-module (gnu packages image)
-  #:use-module (gnu packages imagemagick)
-  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages which)
-  #:use-module (gnu packages perl)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages glib)
-  #:use-module (gnu packages gtk)
-  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages zip)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -343,7 +342,7 @@ etc. ")
     (description
      "The lockfile package exports a LockFile class which provides a simple
 API for locking files.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-lockfile
   (package-with-python2 python-lockfile))
@@ -368,7 +367,7 @@ API for locking files.")
      "Mock is a library for testing in Python.  It allows you to replace parts
 of your system under test with mock objects and make assertions about how they
 have been used.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-mock
   (package-with-python2 python-mock))
@@ -377,7 +376,7 @@ have been used.")
 (define-public python-setuptools
   (package
     (name "python-setuptools")
-    (version "1.1.4")
+    (version "12.1")
     (source
      (origin
       (method url-fetch)
@@ -385,14 +384,12 @@ have been used.")
                           version ".tar.gz"))
       (sha256
        (base32
-        "0hl9sa5xr9bi2ifq51wy1bawsjv5nzvpbac7m9z1ciz778874csf"))))
+        "04bfk7si1pwj3b5k2b1x9b1zkiclybmzpw6alrs5bciri56lg9zs"))))
     (build-system python-build-system)
+    ;; FIXME: Tests require pytest, which itself relies on setuptools.
+    ;; One could bootstrap with an internal untested setuptools.
     (arguments
      `(#:tests? #f))
-         ;;FIXME: test_sdist_with_utf8_encoded_filename fails in
-         ;; /tmp/nix-build-python2-setuptools-1.1.4.drv-0/setuptools-1.1.4/setuptools/tests/test_sdist.py"
-         ;; line 354
-         ;; The tests pass with Python 2.7.5.
     (home-page "https://pypi.python.org/pypi/setuptools")
     (synopsis
      "Library designed to facilitate packaging Python projects")
@@ -510,6 +507,9 @@ Six supports every Python version since 2.5.  It is contained in only one
 Python file, so it can be easily copied into your project.")
     (license x11)))
 
+(define-public python2-six
+  (package-with-python2 python-six))
+
 (define-public python-dateutil-2
   (package
     (name "python-dateutil")
@@ -655,7 +655,7 @@ under several distributions that's hard or impossible to figure out.")
      "Pysam is a Python module for reading and manipulating files in the
 SAM/BAM format.  Pysam is a lightweight wrapper of the SAMtools C API.  It
 also includes an interface for tabix.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-pysam
   (package-with-python2 python-pysam))
@@ -1025,7 +1025,7 @@ software.")
     (synopsis "Useful extensions to the Python standard library")
     (description
      "Extras is a set of extensions to the Python standard library.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-extras
   (package-with-python2 python-extras))
@@ -1054,7 +1054,7 @@ software.")
     (description
      "Mimeparse provides basic functions for parsing MIME type names and
 matching them against a list of media-ranges.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-mimeparse
   (package-with-python2 python-mimeparse))
@@ -1149,7 +1149,7 @@ standard library.")
     (description
      "Py is a Python library for file name parsing, .ini file parsing, I/O,
 code introspection, and logging.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-py
   (package-with-python2 python-py))
@@ -1185,7 +1185,7 @@ code introspection, and logging.")
      "Pytest is a testing tool that provides auto-discovery of test modules
 and functions, detailed info on failing assert statements, modular fixtures,
 and many external plugins.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-pytest
   (package-with-python2 python-pytest))
@@ -1212,7 +1212,7 @@ and many external plugins.")
     (description "Scripttest is a Python helper library for testing
 interactive command-line applications.  With it you can run a script in a
 subprocess and see the output as well as any file modifications.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-scripttest
   (package-with-python2 python-scripttest))
@@ -1600,7 +1600,7 @@ than Python’s urllib2 library.")
     (synopsis "Implementation of JSON Schema for Python")
     (description
      "Jsonschema is an implementation of JSON Schema for Python.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-jsonschema
   (package-with-python2 python-jsonschema))
@@ -1656,7 +1656,7 @@ somewhat intelligeble.")
     (synopsis "JSON Web Token implementation in Python")
     (description
      "PyJWT is a JSON Web Token implementation written in Python.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-pyjwt
   (package-with-python2 python-pyjwt))
@@ -1692,17 +1692,6 @@ OAuth request-signing logic.")
   (let ((base (package-with-python2 python-oauthlib)))
     (package
       (inherit base)
-      (name "python2-oauthlib")
-      (version "0.6.3")
-      (source (origin
-                (method url-fetch)
-                (uri
-                 (string-append
-                  "https://pypi.python.org/packages/source/o/oauthlib/oauthlib-"
-                  version ".tar.gz"))
-                (sha256
-                 (base32
-                  "1yaj3j64la4arwsbhbfmpnickzh3jpg9nlpyg409v8pp24isn48a"))))
       (inputs
        (append (package-inputs base)
                `(("python2-unittest2" ,python2-unittest2)))))))
@@ -1755,7 +1744,7 @@ environments and back.")
     (synopsis "Virtual Python environment builder")
     (description
      "Virtualenv is a tool to create isolated Python environments.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-virtualenv
   (package-with-python2 python-virtualenv))
@@ -1926,7 +1915,7 @@ sources.")
     (home-page "https://github.com/snide/sphinx_rtd_theme/")
     (synopsis "ReadTheDocs.org theme for Sphinx")
     (description "A theme for Sphinx used by ReadTheDocs.org.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-sphinx-rtd-theme
   (package-with-python2 python-sphinx-rtd-theme))
@@ -1997,25 +1986,25 @@ writing C extensions for Python as easy as Python itself.")
         'build 'set-environment-variables
         (lambda* (#:key inputs #:allow-other-keys)
           (let* ((atlas-threaded
-                  (string-append (assoc-ref inputs "atlas") 
+                  (string-append (assoc-ref inputs "atlas")
                                  "/lib/libtatlas.so"))
                  ;; On single core CPUs only the serial library is created.
                  (atlas-lib
                   (if (file-exists? atlas-threaded)
                       atlas-threaded
-                      (string-append (assoc-ref inputs "atlas") 
+                      (string-append (assoc-ref inputs "atlas")
                                      "/lib/libsatlas.so"))))
             (setenv "ATLAS" atlas-lib)))
         ;; Tests can only be run after the library has been installed and not
         ;; within the source directory.
         (alist-cons-after
          'install 'check
-         (lambda _ 
+         (lambda _
            (with-directory-excursion "/tmp"
-             (zero? (system* "python" "-c" 
+             (zero? (system* "python" "-c"
                              "import numpy; numpy.test(verbose=2)"))))
-         (alist-delete 
-          'check 
+         (alist-delete
+          'check
           %standard-phases)))))
     (home-page "http://www.numpy.org/")
     (synopsis "Fundamental package for scientific computing with Python")
@@ -2033,7 +2022,7 @@ capabilities.")
   (package (inherit python-numpy-bootstrap)
     (name "python-numpy")
     (outputs '("out" "doc"))
-    (inputs 
+    (inputs
      `(("which" ,which)
        ("python-setuptools" ,python-setuptools)
        ("python-matplotlib" ,python-matplotlib)
@@ -2048,15 +2037,15 @@ capabilities.")
        ("perl" ,perl)
        ,@(package-native-inputs python-numpy-bootstrap)))
     (arguments
-     `(,@(substitute-keyword-arguments 
+     `(,@(substitute-keyword-arguments
              (package-arguments python-numpy-bootstrap)
            ((#:phases phases)
             `(alist-cons-after
               'install 'install-doc
               (lambda* (#:key outputs #:allow-other-keys)
                 (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
-                       (doc (string-append 
-                             data "/doc/" ,name "-" 
+                       (doc (string-append
+                             data "/doc/" ,name "-"
                              ,(package-version python-numpy-bootstrap)))
                        (info (string-append data "/info"))
                        (html (string-append doc "/html"))
@@ -2065,7 +2054,7 @@ capabilities.")
                     (mkdir-p html)
                     (system* "make" "html" pyver)
                     (system* "make" "latex" "PAPER=a4" pyver)
-                    (system* "make" "-C" "build/latex" 
+                    (system* "make" "-C" "build/latex"
                              "all-pdf" "PAPER=a4" pyver)
                     ;; FIXME: Generation of the info file fails.
                     ;; (system* "make" "info" pyver)
@@ -2094,7 +2083,7 @@ capabilities.")
       ;; import the right version of 'matplotlib' as well.
       (inputs `(("python2-numpydoc" ,python2-numpydoc)
                 ("python2-matplotlib" ,python2-matplotlib)
-                ,@(alist-delete "python-numpydoc" 
+                ,@(alist-delete "python-numpydoc"
                                 (alist-delete "python-matplotlib"
                                               (package-inputs numpy))))))))
 
@@ -2120,15 +2109,15 @@ capabilities.")
        (alist-cons-after
         'install 'install-doc
         (lambda* (#:key outputs #:allow-other-keys)
-          (let* ((doc (string-append (assoc-ref outputs "doc") 
+          (let* ((doc (string-append (assoc-ref outputs "doc")
                                      "/share/doc/" ,name "-" ,version))
                  (html-doc (string-append doc "/html"))
                  (examples (string-append doc "/examples")))
             (mkdir-p html-doc)
             (mkdir-p examples)
-            (for-each 
+            (for-each
              (lambda (dir tgt)
-               (map (lambda (file) 
+               (map (lambda (file)
                       (copy-file file (string-append tgt "/" (basename file))))
                     (find-files dir ".*")))
              (list "docs" "htmldoc" "examples")
@@ -2141,7 +2130,7 @@ capabilities.")
 executing simple grammars, vs. the traditional lex/yacc approach, or the use
 of regular expressions.  The pyparsing module provides a library of classes
 that client code uses to construct the grammar directly in Python code.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-pyparsing
   (package-with-python2 python-pyparsing))
@@ -2153,7 +2142,7 @@ that client code uses to construct the grammar directly in Python code.")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append 
+       (uri (string-append
              "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
              version ".tar.gz"))
        (sha256
@@ -2173,7 +2162,7 @@ that client code uses to construct the grammar directly in Python code.")
     (license bsd-2)))
 
 (define-public python2-numpydoc
-  (package 
+  (package
     (inherit (package-with-python2 python-numpydoc))
     ;; With python-2 1 test (out of 30) fails because it doesn't find
     ;; matplotlib.  With python-3 it seems to detect at run-time the absence
@@ -2262,7 +2251,11 @@ backend = GTK3Agg~%")))))
                   (info (string-append data "/info"))
                   (html (string-append doc "/html")))
              (with-directory-excursion "doc"
-               ;; Without setting this variable we get an encoding error.
+               ;; Install and set UTF-8 locale to avoid an encoding error.
+               (setenv "LOCPATH" (getcwd))
+               (system* "localedef" "--no-archive"
+                        "--prefix" (getcwd) "-i" "en_US"
+                        "-f" "UTF-8" "./en_US.UTF-8")
                (setenv "LANG" "en_US.UTF-8")
                ;; Produce pdf in 'A4' format.
                (substitute* (find-files "." "conf\\.py")
@@ -2296,16 +2289,16 @@ toolkits.")
     (package (inherit matplotlib)
       ;; Make sure we use exactly PYTHON2-NUMPYDOC, which is
       ;; customized for Python 2.
-      (propagated-inputs 
+      (propagated-inputs
        `(("python2-py2cairo" ,python2-py2cairo)
          ("python2-pygobject-2" ,python2-pygobject-2)
          ,@(alist-delete "python-pycairo"
                          (alist-delete "python-pygobject"
-                                       (package-propagated-inputs 
+                                       (package-propagated-inputs
                                         matplotlib)))))
-      (inputs 
+      (inputs
        `(("python2-numpydoc" ,python2-numpydoc)
-         ,@(alist-delete "python-numpydoc" 
+         ,@(alist-delete "python-numpydoc"
                          (package-inputs matplotlib)))))))
 
 (define-public python-scipy
@@ -2339,13 +2332,13 @@ toolkits.")
         'build 'set-environment-variables
         (lambda* (#:key inputs #:allow-other-keys)
           (let* ((atlas-threaded
-                  (string-append (assoc-ref inputs "atlas") 
+                  (string-append (assoc-ref inputs "atlas")
                                  "/lib/libtatlas.so"))
                  ;; On single core CPUs only the serial library is created.
                  (atlas-lib
                   (if (file-exists? atlas-threaded)
                       atlas-threaded
-                      (string-append (assoc-ref inputs "atlas") 
+                      (string-append (assoc-ref inputs "atlas")
                                      "/lib/libsatlas.so"))))
             (setenv "ATLAS" atlas-lib)))
         (alist-cons-after
@@ -2356,7 +2349,11 @@ toolkits.")
                   (html (string-append doc "/html"))
                   (pyver ,(string-append "PYVER=")))
              (with-directory-excursion "doc"
-               ;; Without setting this variable we get an encoding error.
+               ;; Install and set UTF-8 locale to avoid an encoding error.
+               (setenv "LOCPATH" (getcwd))
+               (system* "localedef" "--no-archive"
+                        "--prefix" (getcwd) "-i" "en_US"
+                        "-f" "UTF-8" "./en_US.UTF-8")
                (setenv "LANG" "en_US.UTF-8")
                ;; Fix generation of images for mathematical expressions.
                (substitute* (find-files "source" "conf\\.py")
@@ -2380,11 +2377,11 @@ toolkits.")
          ;; within the source directory.
          (alist-cons-after
           'install 'check
-          (lambda _ 
+          (lambda _
             (with-directory-excursion "/tmp"
               (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
-          (alist-delete 
-           'check 
+          (alist-delete
+           'check
            %standard-phases))))))
     (home-page "http://www.scipy.org/")
     (synopsis "The Scipy library provides efficient numerical routines")
@@ -2399,8 +2396,8 @@ routines such as routines for numerical integration and optimization.")
       ;; Use packages customized for python-2.
       (inputs `(("python2-matplotlib" ,python2-matplotlib)
                 ("python2-numpy" ,python2-numpy)
-                ,@(alist-delete "python-matplotlib" 
-                                (alist-delete "python-numpy" 
+                ,@(alist-delete "python-matplotlib"
+                                (alist-delete "python-numpy"
                                               (package-inputs scipy))))))))
 
 (define-public python-sqlalchemy
@@ -2567,7 +2564,7 @@ a general image processing tool.")
      `(("pkg-config" ,pkg-config)
        ("python-setuptools" ,python-setuptools)))
     (arguments
-     `(#:phases 
+     `(#:phases
        (alist-replace
         'check
         (lambda _
@@ -2606,7 +2603,7 @@ a front-end for C compilers or analysis tools.")
       (method url-fetch)
       (uri (string-append "https://pypi.python.org/packages/source/c/"
                           "cffi/cffi-" version ".tar.gz"))
-      (sha256 
+      (sha256
        (base32 "0406j3sgndmx88idv5zxkkrwfqxmjl18pj8gf47nsg4ymzixjci5"))))
     (build-system python-build-system)
     (outputs '("out" "doc"))
@@ -2620,7 +2617,7 @@ a front-end for C compilers or analysis tools.")
        ("python-setuptools" ,python-setuptools)))
     (arguments
      `(#:tests? #f ; FIXME: requires pytest
-       #:phases 
+       #:phases
        (alist-cons-after
         'install 'install-doc
         (lambda* (#:key outputs #:allow-other-keys)
@@ -2637,7 +2634,7 @@ a front-end for C compilers or analysis tools.")
     (synopsis "Foreign function interface for Python")
     (description
      "Foreign Function Interface for Python calling C code.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-cffi
   (package-with-python2 python-cffi))
@@ -2663,7 +2660,7 @@ a front-end for C compilers or analysis tools.")
     (propagated-inputs
      `(("python-cffi" ,python-cffi))) ; used at run time
     (arguments
-     `(#:phases 
+     `(#:phases
        (alist-cons-after
         'install 'install-doc
         (lambda* (#:key outputs #:allow-other-keys)
@@ -2678,7 +2675,7 @@ a front-end for C compilers or analysis tools.")
     (description
      "Xcffib is a replacement for xpyb, an XCB Python bindings.  It adds
 support for Python 3 and PyPy.  It is based on cffi.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-xcffib
   (package-with-python2 python-xcffib))
@@ -2709,14 +2706,14 @@ support for Python 3 and PyPy.  It is based on cffi.")
     (propagated-inputs
      `(("python-xcffib" ,python-xcffib))) ; used at run time
     (arguments
-     `(#:phases 
+     `(#:phases
        (alist-cons-after
         'install 'install-doc
         (lambda* (#:key inputs outputs #:allow-other-keys)
           (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
                  (doc (string-append data "/doc/" ,name "-" ,version))
                  (html (string-append doc "/html")))
-            (setenv "LD_LIBRARY_PATH" 
+            (setenv "LD_LIBRARY_PATH"
                     (string-append (assoc-ref inputs "cairo") "/lib" ":"
                                    (assoc-ref inputs "gdk-pixbuf") "/lib"))
             (setenv "LANG" "en_US.UTF-8")
@@ -2767,7 +2764,7 @@ PNG, PostScript, PDF, and SVG file output.")
        ("texinfo" ,texinfo)
        ("python-setuptools" ,python-setuptools)))
     (arguments
-     `(#:phases 
+     `(#:phases
        (alist-cons-after
         'install 'install-doc
         (lambda* (#:key inputs outputs #:allow-other-keys)
@@ -2803,8 +2800,8 @@ PNG, PostScript, PDF, and SVG file output.")
            ;;   (zero? (system* (string-append (assoc-ref outputs "out")
            ;;                                  "/bin/iptest"))))
            #t)
-         (alist-delete 
-          'check 
+         (alist-delete
+          'check
           %standard-phases)))))
     (home-page "http://ipython.org")
     (synopsis "IPython is a tool for interactive computing in Python")
@@ -2819,7 +2816,7 @@ computing.")
   (let ((ipython (package-with-python2 python-ipython)))
     (package (inherit ipython)
       ;; Make sure we use custom python2-NAME packages.
-      (inputs 
+      (inputs
        `(("python2-numpydoc" ,python2-numpydoc)
          ("python2-matplotlib" ,python2-matplotlib)
          ,@(alist-delete "python-numpydoc"
@@ -2870,6 +2867,8 @@ ISO 8601 dates, time and duration.")
           (base32
             "1l5i6xzckzx4hnh9qzv9q3kyhkgjx2hsi2k9srgci3qizjmvp6ln"))))
     (build-system python-build-system)
+    (propagated-inputs
+      `(("python-six" ,python-six))) ; required to "import html5lib"
     (inputs
       `(("python-setuptools" ,python-setuptools)))
     (arguments
@@ -2881,7 +2880,7 @@ ISO 8601 dates, time and duration.")
     (description
       "Html5lib is an HTML parser based on the WHATWG HTML specifcation
 and written in Python.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-html5lib
   (package-with-python2 python-html5lib))
@@ -2935,7 +2934,7 @@ features useful for text console applications.")
     (description "python-dbus provides bindings for libdbus, the reference
 implementation of D-Bus.")
     (home-page "http://www.freedesktop.org/wiki/Software/DBusBindings/")
-    (license expat)))
+    (license license:expat)))
 
 (define-public python2-dbus
   (package (inherit python-dbus)
@@ -2947,3 +2946,264 @@ implementation of D-Bus.")
     ;; FIXME: on Python 2, the test_utf8 fails with:
     ;; "ValueError: unichr() arg not in range(0x10000) (narrow Python build)"
     (arguments `(#:tests? #f))))
+
+(define-public python-apsw
+  (package
+    (name "python-apsw")
+    (version "3.8.7.3-r1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "https://pypi.python.org/packages/source/a/apsw/apsw-"
+              version
+              ".tar.gz"))
+        (sha256
+          (base32
+            "1rgxdypg7hym0qny15rx5khrghx9fkppfgsfa2s8lg917924mv7l"))))
+    (build-system python-build-system)
+    (inputs
+      `(("python-setuptools" ,python-setuptools)
+        ("sqlite" ,sqlite)))
+    (arguments
+     `(#:phases
+        ;; swap check and install phases
+        (alist-cons-after
+         'install 'check
+         (assoc-ref %standard-phases 'check)
+         (alist-delete
+          'check
+          %standard-phases))))
+    (home-page "https://github.com/rogerbinns/apsw/")
+    (synopsis "Another Python SQLite Wrapper")
+    (description "APSW is a Python wrapper for the SQLite
+embedded relational database engine.  In contrast to other wrappers such as
+pysqlite it focuses on being a minimal layer over SQLite attempting just to
+translate the complete SQLite API into Python.")
+    (license license:zlib)))
+
+(define-public python2-apsw
+  (package-with-python2 python-apsw))
+
+(define-public python-lxml
+  (package
+    (name "python-lxml")
+    (version "3.4.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "https://pypi.python.org/packages/source/l/lxml/lxml-"
+              version
+              ".tar.gz"))
+        (sha256
+          (base32
+            "0pd23qz8vms1mgm41p96h4vac5y91igs4wr9640gnvxgk019kmf7"))))
+    (build-system python-build-system)
+    (inputs
+      `(("libxml2" ,libxml2)
+        ("libxslt" ,libxslt)
+        ("python-setuptools" ,python-setuptools)))
+    (home-page "http://lxml.de/")
+    (synopsis
+      "Python XML processing library")
+    (description
+      "The lxml XML toolkit is a Pythonic binding for the C libraries
+libxml2 and libxslt.")
+    (license bsd-3))) ; and a few more, see LICENSES.txt
+
+(define-public python2-lxml
+  (package-with-python2 python-lxml))
+
+(define-public python-pillow
+  (package
+    (name "python-pillow")
+    (version "2.7.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "https://pypi.python.org/packages/source/P/Pillow/Pillow-"
+              version
+              ".tar.gz"))
+        (sha256
+          (base32
+            "1y0rysgd7vqpl5lh0lsra7j2k30azwxqlh5jnqk1i0pmfc735s96"))))
+    (build-system python-build-system)
+    (inputs
+      `(("freetype" ,freetype)
+        ("lcms" ,lcms)
+        ("libjpeg" ,libjpeg)
+        ("libtiff" ,libtiff)
+        ("openjpeg" ,openjpeg)
+        ("python-setuptools" ,python-setuptools)
+        ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f)) ; no check target
+    (home-page "http://python-pillow.github.io/")
+    (synopsis "Pillow fork of Python Imaging Library")
+    (description "Pillow is a fork of the Python Imaging Library (PIL).")
+    ;; PIL license, see
+    ;; http://www.pythonware.com/products/pil/license.htm
+    (license (x11-style
+               "file://PKG-INFO"
+               "See http://www.pythonware.com/products/pil/license.htm"))))
+
+(define-public python2-pillow
+  (package-with-python2 python-pillow))
+
+(define-public python2-pil
+  (package
+    (name "python2-pil")
+    (version "1.1.7")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "http://effbot.org/downloads/Imaging-"
+              version ".tar.gz"))
+        (sha256
+          (base32
+            "04aj80jhfbmxqzvmq40zfi4z3cw6vi01m3wkk6diz3lc971cfnw9"))))
+    (build-system python-build-system)
+    (inputs
+      `(("freetype" ,freetype)
+        ("libjpeg" ,libjpeg)
+        ("libtiff" ,libtiff)
+        ("python-setuptools" ,python-setuptools)
+        ("zlib" ,zlib)))
+    (arguments
+     ;; Only the fork python-pillow works with Python 3.
+     `(#:python ,python-2
+       #:tests? #f ; no check target
+       #:phases
+         (alist-cons-before
+          'build 'configure
+          ;; According to README and setup.py, manual configuration is
+          ;; the preferred way of "searching" for inputs.
+          ;; lcms is not found, TCL_ROOT refers to the unavailable tkinter.
+          (lambda* (#:key inputs #:allow-other-keys)
+            (let ((jpeg (assoc-ref inputs "libjpeg"))
+                  (zlib (assoc-ref inputs "zlib"))
+                  (tiff (assoc-ref inputs "libtiff"))
+                  (freetype (assoc-ref inputs "freetype")))
+              (substitute* "setup.py"
+                (("JPEG_ROOT = None")
+                 (string-append "JPEG_ROOT = libinclude(\"" jpeg "\")"))
+                (("ZLIB_ROOT = None")
+                 (string-append "ZLIB_ROOT = libinclude(\"" zlib "\")"))
+                (("TIFF_ROOT = None")
+                 (string-append "TIFF_ROOT = libinclude(\"" tiff "\")"))
+                (("FREETYPE_ROOT = None")
+                 (string-append "FREETYPE_ROOT = libinclude(\""
+                                freetype "\")")))))
+          %standard-phases)))
+    (home-page "http://www.pythonware.com/products/pil/")
+    (synopsis "Python Imaging Library")
+    (description "The Python Imaging Library (PIL) adds image processing
+capabilities to the Python interpreter.")
+    (license (x11-style
+               "file://README"
+               "See 'README' in the distribution."))))
+
+(define-public python2-cssutils
+  (package
+    (name "python2-cssutils")
+    (version "1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "https://pypi.python.org/packages/source/c/cssutils/cssutils-"
+              version
+              ".zip"))
+        (sha256
+          (base32
+            "1bwim1353r4hqiir73sn4sc43y7ymh09qx0kly7vj048blppc125"))))
+    (build-system python-build-system)
+    (native-inputs
+      `(("python2-mock" ,python2-mock) ; for the tests
+        ("unzip" ,unzip))) ; for unpacking the source
+    (inputs
+      `(("python2-setuptools" ,python2-setuptools)))
+    (arguments
+     `(#:python ,python-2 ; Otherwise tests fail with a syntax error.
+       #:tests? #f ; The tests apparently download an external URL.
+       #:phases
+       (alist-replace
+        'unpack
+        (lambda* (#:key source #:allow-other-keys)
+          (and (zero? (system* "unzip" source))
+               (chdir "cssutils-1.0")))
+        %standard-phases)))
+    (home-page "http://cthedot.de/cssutils/")
+    (synopsis
+      "CSS Cascading Style Sheets library for Python")
+    (description
+      "Cssutils is a Python package for parsing and building CSS
+Cascading Style Sheets.  Currently it provides a DOM only and no rendering
+options.")
+    (license lgpl3+)))
+
+(define-public python-cssselect
+  (package
+    (name "python-cssselect")
+    (version "0.9.1")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "https://pypi.python.org/packages/source/c/cssselect/cssselect-"
+              version
+              ".tar.gz"))
+        (sha256
+          (base32
+            "10h623qnp6dp1191jri7lvgmnd4yfkl36k9smqklp1qlf3iafd85"))))
+    (build-system python-build-system)
+    (inputs
+      `(("python-setuptools" ,python-setuptools)))
+    (arguments
+     ;; tests fail with message
+     ;; AttributeError: 'module' object has no attribute 'tests'
+     `(#:tests? #f))
+    (home-page
+      "https://pythonhosted.org/cssselect/")
+    (synopsis
+      "CSS3 selector parser and translator to XPath 1.0")
+    (description
+      "Cssselect ia a Python module that parses CSS3 Selectors and translates
+them to XPath 1.0 expressions.  Such expressions can be used in lxml or
+another XPath engine to find the matching elements in an XML or HTML document.")
+    (license bsd-3)))
+
+(define-public python2-cssselect
+  (package-with-python2 python-cssselect))
+
+(define-public python-netifaces
+  (package
+    (name "python-netifaces")
+    (version "0.10.4")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append
+              "https://pypi.python.org/packages/source/n/netifaces/netifaces-"
+              version
+              ".tar.gz"))
+        (sha256
+          (base32
+            "1plw237a4zib4z8s62g0mrs8gm3kjfrp5sxh6bbk9nl3rdls2mln"))))
+    (build-system python-build-system)
+    (inputs
+      `(("python-setuptools" ,python-setuptools)))
+    (home-page
+      "https://bitbucket.org/al45tair/netifaces")
+    (synopsis
+      "Python module for portable network interface information")
+    (description
+      "Netifaces is a Python module providing information on network
+interfaces in an easy and portable manner.")
+    (license license:expat)))
+
+(define-public python2-netifaces
+  (package-with-python2 python-netifaces))
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index cb7e367c5a..725ac8a2fa 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -18,7 +18,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages qt)
-  #:use-module ((guix licenses) #:select (gpl3 lgpl2.1 x11-style))
+  #:use-module ((guix licenses) #:select (gpl2 gpl3 lgpl2.1 x11-style))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build utils)
@@ -398,3 +398,53 @@ contain over 620 classes.")
        ("qt" ,qt)))
     (inputs
      `(("python" ,python-2)))))
+
+(define-public python-pyqt-4
+  (package (inherit python-pyqt)
+    (name "python-pyqt")
+    (version "4.11.3")
+    (source
+      (origin
+        (method url-fetch)
+        (uri
+          (string-append "mirror://sourceforge/pyqt/PyQt4/"
+                         "PyQt-" version "/PyQt-x11-gpl-"
+                         version ".tar.gz"))
+        (sha256
+         (base32
+          "11jnfjw79s0b0qdd9s6kd69w87vf16dhagbhbmwbmrp2vgf80dw5"))))
+    (native-inputs
+     `(("python-sip" ,python-sip)
+       ("qt" ,qt-4)))
+    (arguments
+     `(#:tests? #f ; no check target
+       #:phases
+         (alist-replace
+         'configure
+         (lambda* (#:key inputs outputs #:allow-other-keys)
+           (let* ((out (assoc-ref outputs "out"))
+                  (bin (string-append out "/bin"))
+                  (sip (string-append out "/share/sip"))
+                  (python-version
+                    (string-take
+                      (string-take-right (assoc-ref inputs "python") 5)
+                      3))
+                  (lib (string-append out "/lib/python"
+                                      python-version
+                                      "/site-packages")))
+             (zero? (system* "python" "configure.py"
+                             "--confirm-license"
+                             "--bindir" bin
+                             "--destdir" lib
+                             "--sipdir" sip))))
+         %standard-phases)))
+    (license (list gpl2 gpl3)))) ; choice of either license
+
+(define-public python2-pyqt-4
+  (package (inherit python-pyqt-4)
+    (name "python2-pyqt")
+    (native-inputs
+     `(("python-sip" ,python2-sip)
+       ("qt" ,qt-4)))
+    (inputs
+     `(("python" ,python-2)))))
diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm
index ff74b2f08b..5102ebe921 100644
--- a/gnu/packages/rdf.scm
+++ b/gnu/packages/rdf.scm
@@ -19,12 +19,13 @@
 
 (define-module (gnu packages rdf)
   #:use-module ((guix licenses)
-                #:select (bsd-style gpl2 lgpl2.0+ lgpl2.1 lgpl2.1+))
+                #:select (bsd-style isc gpl2 lgpl2.0+ lgpl2.1 lgpl2.1+))
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system waf)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages databases)
@@ -88,7 +89,7 @@ HTML and JSON.")
              (sha256
               (base32
                "1arffdwivig88kkx685pldr784njm0249k0rb1f1plwavlrw9zfx"))
-             (patches (list 
+             (patches (list
                        (search-patch "clucene-pkgconfig.patch")
                        (search-patch "clucene-contribs-lib.patch")))))
     (build-system cmake-build-system)
@@ -228,6 +229,55 @@ Turtle/N3 and read them in SPARQL XML, RDF/XML and Turtle/N3.")
 and triple stores.")
     (license lgpl2.1+))) ; or any choice of gpl2+ or asl2.0
 
+(define-public serd
+  (package
+    (name "serd")
+    (version "0.20.0")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.drobilla.net/serd-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "1gxbzqsm212wmn8qkdd3lbl6wbv7fwmaf9qh2nxa4yxjbr7mylb4"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (home-page "http://drobilla.net/software/serd/")
+    (synopsis "Library for RDF syntax supporting Turtle and NTriples")
+    (description
+     "Serd is a lightweight C library for RDF syntax which supports reading
+and writing Turtle and NTriples.  Serd is not intended to be a swiss-army
+knife of RDF syntax, but rather is suited to resource limited or performance
+critical applications (e.g. converting many gigabytes of NTriples to Turtle),
+or situations where a simple reader/writer with minimal dependencies is
+ideal (e.g. in LV2 implementations or embedded applications).")
+    (license isc)))
+
+(define-public sord
+  (package
+    (name "sord")
+    (version "0.12.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "http://download.drobilla.net/sord-"
+                                 version
+                                 ".tar.bz2"))
+             (sha256
+              (base32
+               "0rq7vafdv4vsxi6xk9zf5shr59w3kppdhqbj78185rz5gp9kh1dx"))))
+    (build-system waf-build-system)
+    (arguments `(#:tests? #f)) ; no check target
+    (inputs
+     `(("serd" ,serd)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://drobilla.net/software/sord/")
+    (synopsis "C library for storing RDF data in memory")
+    (description
+     "Sord is a lightweight C library for storing RDF data in memory.")
+    (license isc)))
+
 (define-public soprano
   (package
     (name "soprano")
@@ -269,12 +319,15 @@ system.")
               "https://pypi.python.org/packages/source/r/rdflib/rdflib-"
               version
               ".tar.gz"))
+        (patches
+          ;; The patch has no effect under Python 3.
+          (list (search-patch "python2-rdflib-drop-sparqlwrapper.patch")))
         (sha256
           (base32
             "0kvaf332cqbi47rqzlpdx4mbkvw12mkrzkj8n9l19wk713d4py9w"))))
     (build-system python-build-system)
     (inputs
-      `(("python-htm5lib" ,python-html5lib)
+      `(("python-html5lib" ,python-html5lib)
         ("python-isodate" ,python-isodate)
         ("python-pyparsing" ,python-pyparsing)
         ("python-setuptools" ,python-setuptools)))
@@ -286,3 +339,14 @@ system.")
 powerful language for representing information.")
     (license (bsd-style "file://LICENSE"
                         "See LICENSE in the distribution."))))
+
+(define-public python2-rdflib
+  (let ((base (package-with-python2 python-rdflib)))
+    (package
+      (inherit base)
+      (inputs
+        (append (package-inputs base)
+                `(("python2-nose" ,python2-nose))))
+      (arguments
+        `(#:python ,python-2
+          #:tests? #f))))) ; 3 tests fail, also outside Guix
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index f8276db698..7fc799311c 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -37,7 +37,7 @@
 (define-public ruby
   (package
     (name "ruby")
-    (version "2.1.5")
+    (version "2.2.0")
     (source
      (origin
        (method url-fetch)
@@ -46,7 +46,7 @@
                            "/ruby-" version ".tar.xz"))
        (sha256
         (base32
-         "18z9mwhzgh4gqc0c6ydbjg0a87jc0j38sha10mzfvjbmsjw1xfi2"))))
+         "1jpq7r48pmkll5lfw933013ijv750sr61c63p96v8pzwh3i191w4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index c6fef6154d..46b97215ba 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -94,14 +95,14 @@ anywhere.")
 (define-public samba
   (package
     (name "samba")
-    (version "3.6.8")
+    (version "3.6.25")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://us3.samba.org/samba/ftp/stable/samba-"
+             (uri (string-append "https://www.samba.org/samba/ftp/stable/samba-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1phl6mmrc72jyvbyrw6cv6b92cxq3v2pbn1fh97nnb4hild1fnjg"))))
+               "0l9pz2m67vf398q3c2dwn8jwdxsjb20igncf4byhv6yq5dzqlb4g"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-cons-before
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index 8afc0ab425..4d759fa11a 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,6 +22,7 @@
   #:use-module (guix licenses)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages m4)
   #:use-module (gnu packages multiprecision)
@@ -428,3 +430,82 @@ R6RS) and related languages, such as Typed Racket.  It features a compiler and
 a virtual machine with just-in-time native compilation, as well as a large set
 of libraries.")
     (license lgpl2.0+)))
+
+(define-public gambit-c
+  (package
+    (name "gambit-c")
+    (version "4.7.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://www.iro.umontreal.ca/~gambit/download/gambit/v"
+             (version-major+minor version) "/source/gambc-v"
+             (string-map (lambda (c) (if (char=? c #\.) #\_ c)) version)
+             ".tgz"))
+       (sha256
+        (base32 "0y2pklh4k65yrmxv63ass76xckrk9wqimbdad2gha35v2mi7blhs"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       ;; According to the ./configure script, this makes the build slower and
+       ;; use >= 1 GB memory, but makes Gambit much faster.
+       '("--enable-single-host")
+       #:phases
+       (alist-cons-before
+        'check 'fix-tests
+        (lambda _
+          (substitute* '("tests/makefile")
+            ;; '-:' is how run-time options are set.  'tl' sets some terminal
+            ;; option, which makes it fail in our build environment.  It
+            ;; recommends using 'd-' as a solution, which sets the REPL
+            ;; interaction channel to stdin/stdout.
+            (("gsi -:tl") "gsi -:d-,tl")))
+        %standard-phases)))
+    (home-page "http://www.iro.umontreal.ca/~gambit/")
+    (synopsis "Efficient Scheme interpreter and compiler")
+    (description
+     "Gambit consists of two main programs: gsi, the Gambit Scheme
+interpreter, and gsc, the Gambit Scheme compiler.  The interpreter contains
+the complete execution and debugging environment.  The compiler is the
+interpreter extended with the capability of generating executable files.  The
+compiler can produce standalone executables or compiled modules which can be
+loaded at run time.  Interpreted code and compiled code can be freely
+mixed.")
+    ;; Dual license.
+    (license (list lgpl2.1+ asl2.0))))
+
+(define-public chibi-scheme
+  (package
+    (name "chibi-scheme")
+    (version "0.7.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://abrek.synthcode.com/chibi-scheme-" version ".tgz"))
+       (sha256
+        (base32 "0h6k2gdb4xk2pzhdipffcg2w3kfr4zh1va556k1hvng2did6prds"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (alist-delete
+        'configure
+        (alist-cons-before
+         'build 'set-cc
+         (lambda _
+           (setenv "CC" "gcc"))
+         %standard-phases))
+       #:make-flags (let ((out (assoc-ref %outputs "out")))
+                      (list (string-append "PREFIX=" out)
+                            (string-append "LDFLAGS=-Wl,-rpath=" out "/lib")))
+       #:test-target "test"))
+    (home-page "https://code.google.com/p/chibi-scheme/")
+    (synopsis "Small embeddable Scheme implementation")
+    (description
+     "Chibi-Scheme is a very small library with no external dependencies
+intended for use as an extension and scripting language in C programs.  In
+addition to support for lightweight VM-based threads, each VM itself runs in
+an isolated heap allowing multiple VMs to run simultaneously in different OS
+threads.")
+    (license bsd-3)))
diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm
index ee18c1b5d0..c9b82f4b62 100644
--- a/gnu/packages/sdl.scm
+++ b/gnu/packages/sdl.scm
@@ -158,6 +158,12 @@ other supporting functions for SDL.")
               (base32
                "16an9slbb8ci7d89wakkmyfvp7c0cval8xw4hkg0842nhhlp540b"))))
     (build-system gnu-build-system)
+    (arguments
+     ;; Explicitly link against shared libraries instead of dlopening them.
+     '(#:configure-flags '("--disable-jpg-shared"
+                           "--disable-png-shared"
+                           "--disable-tif-shared"
+                           "--disable-webp-shared")))
     (native-inputs `(("pkg-config" ,pkg-config)))
     ;; FIXME: Add webp
     ;;
@@ -191,8 +197,14 @@ WEBP, XCF, XPM, and XV.")
     (build-system gnu-build-system)
     ;; no check target
     ;; use libmad instead of smpeg
+    ;; explicitly link against shared libraries instead of dlopening them
     (arguments `(#:tests? #f
-                 #:configure-flags '("--enable-music-mp3-mad-gpl")))
+                 #:configure-flags '("--enable-music-mp3-mad-gpl"
+                                     "--disable-music-mod-shared"
+                                     "--disable-music-fluidsynth-shared"
+                                     "--disable-music-ogg-shared"
+                                     "--disable-music-flac-shared"
+                                     "--disable-music-mp3-shared")))
     (inputs `(("libvorbis" ,libvorbis)
               ("libflac" ,flac)
               ("libmad" ,libmad)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
new file mode 100644
index 0000000000..acf7b7851d
--- /dev/null
+++ b/gnu/packages/statistics.scm
@@ -0,0 +1,108 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages statistics)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages icu4c)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages java)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages texlive)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages which)
+  #:use-module (gnu packages xorg))
+
+(define-public r
+  (package
+    (name "r")
+    (version "3.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://cran/src/base/R-"
+                                  (version-prefix version 1) "/R-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0ypsm11c7n49pgh2ricyhhpfhas3famscdazzdp2zq70rapm1ldw"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (alist-cons-before
+        'check 'set-timezone
+        ;; Some tests require the timezone to be set.
+        (lambda _ (setenv "TZ" "UTC"))
+        %standard-phases)
+       #:configure-flags
+       '("--with-blas"
+         "--with-lapack"
+         "--with-cairo"
+         "--with-libpng"
+         "--with-jpeglib"
+         "--with-libtiff"
+         "--with-ICU"
+         "--enable-R-shlib"
+         "--enable-BLAS-shlib"
+         "--with-system-zlib"
+         "--with-system-bzlib"
+         "--with-system-pcre"
+         "--with-system-tre"
+         "--with-system-xz")))
+    (native-inputs
+     `(("bzip2" ,bzip2)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("texlive" ,texlive) ; needed to make vignettes
+       ("texinfo" ,texinfo) ; for building HTML manuals
+       ("which" ,which) ; for tests/Examples/base-Ex.R
+       ("xz" ,xz)))
+    (inputs
+     `(("atlas" ,atlas) ; --with-blas
+       ("cairo" ,cairo)
+       ("gfortran" ,gfortran-4.8)
+       ("icu4c" ,icu4c)
+       ("icedtea6" ,icedtea6)
+       ("lapack" ,lapack)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("libxt" ,libxt)
+       ("pcre" ,pcre)
+       ("readline" ,readline)
+       ("zlib" ,zlib)))
+    (home-page "http://www.r-project.org/")
+    (synopsis "Environment for statistical computing and graphics")
+    (description
+     "R is a language and environment for statistical computing and graphics.
+It provides a variety of statistical techniques, such as linear and nonlinear
+modeling, classical statistical tests, time-series analysis, classification
+and clustering.  It also provides robust support for producing
+publication-quality data plots.  A large amount of 3rd-party packages are
+available, greatly increasing its breadth and scope.")
+    (license license:gpl3+)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 31e5d708b8..ee86b67a44 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -24,21 +24,26 @@
                 #:select (gpl2 gpl2+ gpl3+ bsd-3 public-domain))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages avahi)
   #:use-module (gnu packages cdrom)
   #:use-module (gnu packages compression)
-  #:use-module (gnu packages zip)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages fribidi)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages gnupg)
   #:use-module (gnu packages gnutls)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages lua)
@@ -55,19 +60,20 @@
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg)
-  #:use-module (gnu packages yasm))
+  #:use-module (gnu packages yasm)
+  #:use-module (gnu packages zip))
 
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "2.5.3")
+    (version "2.5.4")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "06j1cgw9h9ya5z8gpcf9v9zik3l4xz7sr4wshj06kznzz5z3sf4x"))))
+               "11m2hbhdgphjxjp6hk438cxmipqjg5ixbr1kqnn9mbdhq9kc34fc"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -78,7 +84,9 @@
        ("libvorbis" ,libvorbis)
        ("libvpx" ,libvpx)
        ("patchelf" ,patchelf)
+       ("soxr" ,soxr)
        ("speex" ,speex)
+       ("twolame" ,twolame)
        ("zlib", zlib)))
     (native-inputs
      `(("bc" ,bc)
@@ -128,7 +136,6 @@
 ;;   --enable-libiec61883     enable iec61883 via libiec61883 [no]
 ;;   --enable-libilbc         enable iLBC de/encoding via libilbc [no]
 ;;   --enable-libmodplug      enable ModPlug via libmodplug [no]
-;;   --enable-libmp3lame      enable MP3 encoding via libmp3lame [no]
 ;;   --enable-libnut          enable NUT (de)muxing via libnut,
 ;;                            native (de)muxer exists [no]
 ;;   --enable-libopencore-amrnb enable AMR-NB de/encoding via libopencore-amrnb [no]
@@ -140,11 +147,9 @@
 ;;   --enable-librtmp         enable RTMP[E] support via librtmp [no]
 ;;   --enable-libschroedinger enable Dirac de/encoding via libschroedinger [no]
 ;;   --enable-libshine        enable fixed-point MP3 encoding via libshine [no]
-;;   --enable-libsoxr         enable Include libsoxr resampling [no]
 ;;   --enable-libssh          enable SFTP protocol via libssh [no]
 ;;                            (libssh2 does not work)
 ;;   --enable-libstagefright-h264  enable H.264 decoding via libstagefright [no]
-;;   --enable-libtwolame      enable MP2 encoding via libtwolame [no]
 ;;   --enable-libutvideo      enable Ut Video encoding and decoding via libutvideo [no]
 ;;   --enable-libv4l2         enable libv4l2/v4l-utils [no]
 ;;   --enable-libvidstab      enable video stabilization using vid.stab [no]
@@ -170,8 +175,10 @@
                       "--enable-libfreetype"
                       "--enable-libmp3lame"
                       "--enable-libopus"
+                      "--enable-libsoxr"
                       "--enable-libspeex"
                       "--enable-libtheora"
+                      "--enable-libtwolame"
                       "--enable-libvorbis"
                       "--enable-libvpx"
 
@@ -204,14 +211,14 @@ audio/video codec library.")
 ;; We need this older ffmpeg because vlc-2.1.5 doesn't work with ffmpeg-2.4.
 (define-public ffmpeg-2.2
   (package (inherit ffmpeg)
-    (version "2.2.11")
+    (version "2.2.13")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://www.ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "06sli7xvihh97ss6a2mkdq4dcj3rg1w8zffrmjfc1hvyjxhc8f2r"))))))
+               "1vva8ffwxi3rg44byy09qlbiqrrd1h4rmsl5b1mbmvzvwl1lq1l0"))))))
 
 (define-public vlc
   (package
@@ -514,3 +521,208 @@ encapsulated.")
 for use with HTML5 video.")
     (home-page "http://dthompson.us/pages/software/srt2vtt")
     (license gpl3+)))
+
+(define-public avidemux
+  (package
+    (name "avidemux")
+    (version "2.6.8")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "mirror://sourceforge/avidemux/avidemux_"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "10p60wjkzf1bxqcb6i7bx4hbqy3vqg598p3l9lc4v2c9b8iqr682"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    ;; FIXME: Once packaged, add libraries not found during the build.
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("fontconfig" ,fontconfig)
+       ("freetype" ,freetype)
+       ("fribidi" ,fribidi)
+       ("glu" ,glu)
+       ("gtk+" ,gtk+)
+       ("jack" ,jack-1)
+       ("lame" ,lame)
+       ("libvorbis" ,libvorbis)
+       ("libvpx" ,libvpx)
+       ("libxv" ,libxv)
+       ("perl" ,perl)
+       ("pulseaudio" ,pulseaudio)
+       ("python" ,python-wrapper)
+       ("qt" ,qt-4)
+       ("sdl" ,sdl)
+       ("sqlite" ,sqlite)
+       ("yasm" ,yasm)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f ; no check target
+       #:phases
+       ;; Make sure files inside the included ffmpeg tarball are
+       ;; patch-shebanged.
+       (alist-cons-before
+        'patch-source-shebangs 'unpack-ffmpeg
+        (lambda _
+          (with-directory-excursion "avidemux_core/ffmpeg_package"
+            (system* "tar" "xf" "ffmpeg-1.2.1.tar.bz2")
+            (delete-file "ffmpeg-1.2.1.tar.bz2")))
+        (alist-cons-after
+         'patch-source-shebangs 'repack-ffmpeg
+         (lambda _
+           (with-directory-excursion "avidemux_core/ffmpeg_package"
+             (substitute* "ffmpeg-1.2.1/configure"
+               (("#! /bin/sh") (string-append "#!" (which "bash"))))
+             (system* "tar" "cjf" "ffmpeg-1.2.1.tar.bz2" "ffmpeg-1.2.1")
+             (delete-file-recursively "ffmpeg-1.2.1")))
+         (alist-replace 'configure
+          (lambda _
+            ;; Copy-paste settings from the cmake build system.
+            (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
+            (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH")))
+          (alist-replace 'build
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let*
+                ((out (assoc-ref outputs "out"))
+                 (lib (string-append out "/lib64"))
+                 (top (getcwd))
+                 (sdl (assoc-ref inputs "sdl"))
+                 (build_component
+                   (lambda* (component srcdir #:optional (args '()))
+                     (let ((builddir (string-append "build_" component)))
+                       (mkdir builddir)
+                       (with-directory-excursion builddir
+                        (zero? (and
+                          (apply system* "cmake"
+                                 "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
+                                 (string-append "-DCMAKE_INSTALL_PREFIX=" out)
+                                 (string-append "-DCMAKE_INSTALL_RPATH=" lib)
+                                 (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
+                                 (string-append "-DSDL_INCLUDE_DIR="
+                                                sdl "/include/SDL")
+                                 (string-append "../" srcdir)
+                                 args)
+                          (system* "make" "-j"
+                                   (number->string (parallel-job-count)))
+                          (system* "make" "install"))))))))
+                (mkdir out)
+                (and (build_component "core" "avidemux_core")
+                     (build_component "cli" "avidemux/cli")
+                     (build_component "qt4" "avidemux/qt4")
+                     (build_component "gtk" "avidemux/gtk")
+                     (build_component "plugins_common" "avidemux_plugins"
+                                     '("-DPLUGIN_UI=COMMON"))
+                     (build_component "plugins_cli" "avidemux_plugins"
+                                     '("-DPLUGIN_UI=CLI"))
+                     (build_component "plugins_qt4" "avidemux_plugins"
+                                     '("-DPLUGIN_UI=QT4"))
+                     (build_component "plugins_gtk" "avidemux_plugins"
+                                     '("-DPLUGIN_UI=GTK"))
+                     (build_component "plugins_settings" "avidemux_plugins"
+                                     '("-DPLUGIN_UI=SETTINGS")))
+                ;; Remove .exe and .dll file.
+                (delete-file-recursively
+                  (string-append out "/share/ADM6_addons"))))
+            (alist-delete 'install
+               %standard-phases)))))))
+    (home-page "http://fixounet.free.fr/avidemux/")
+    (synopsis "Video editor")
+    (description "Avidemux is a video editor designed for simple cutting,
+filtering and encoding tasks.  It supports many file types, including AVI,
+DVD compatible MPEG files, MP4 and ASF, using a variety of codecs.  Tasks
+can be automated using projects, job queue and powerful scripting
+capabilities.")
+    ;; Software with various licenses is included, see License.txt.
+    (license gpl2+)))
+
+(define-public avidemux-2.5
+  (package (inherit avidemux)
+    (version "2.5.6")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append
+                   "mirror://sourceforge/avidemux/avidemux_"
+                   version ".tar.gz"))
+             (sha256
+              (base32
+               "12wvxz0n2g85f079d8mdkkp2zm279d34m9v7qgcqndh48cn7znnn"))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("gettext" ,gnu-gettext)
+       ("gtk+" ,gtk+-2)
+       ("jack" ,jack-1)
+       ("lame" ,lame)
+       ("libvorbis" ,libvorbis)
+       ("libvpx" ,libvpx)
+       ("libxml2" ,libxml2)
+       ("libxslt" ,libxslt)
+       ("libxv" ,libxv)
+       ("perl" ,perl)
+       ("pulseaudio" ,pulseaudio)
+       ("qt" ,qt-4)
+       ("sdl" ,sdl)
+       ("yasm" ,yasm)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:tests? #f
+       #:phases
+       (alist-cons-before
+        'patch-source-shebangs 'unpack-ffmpeg
+        (lambda _
+          (with-directory-excursion "avidemux/ADM_libraries"
+            (system* "tar" "xf" "ffmpeg-0.9.tar.bz2")
+            (delete-file "ffmpeg-0.9.tar.bz2")))
+        (alist-cons-after
+         'patch-source-shebangs 'repack-ffmpeg
+         (lambda _
+           (with-directory-excursion "avidemux/ADM_libraries"
+             (substitute* "ffmpeg-0.9/configure"
+               (("#! /bin/sh") (string-append "#!" (which "bash"))))
+             (system* "tar" "cjf" "ffmpeg-0.9.tar.bz2" "ffmpeg-0.9")
+             (delete-file-recursively "ffmpeg-0.9")))
+         (alist-replace 'configure
+          (lambda _
+            (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
+            (setenv "CMAKE_INCLUDE_PATH" (getenv "CPATH")))
+          (alist-replace 'build
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let*
+                ((out (assoc-ref outputs "out"))
+                 (lib (string-append out "/lib"))
+                 (top (getcwd))
+                 (sdl (assoc-ref inputs "sdl"))
+                 (build_component
+                   (lambda* (component srcdir)
+                     (let ((builddir (string-append "build_" component)))
+                       (mkdir builddir)
+                       (with-directory-excursion builddir
+                        (zero? (and
+                          (system* "cmake"
+                                   "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
+                                   (string-append "-DCMAKE_INSTALL_PREFIX="
+                                                  out)
+                                   (string-append "-DCMAKE_INSTALL_RPATH="
+                                                  lib)
+                                   (string-append "-DAVIDEMUX_SOURCE_DIR="
+                                                  top)
+                                   (string-append "-DAVIDEMUX_CORECONFIG_DIR="
+                                                  top "/build_main/config")
+                                   (string-append "-DAVIDEMUX_INSTALL_PREFIX="
+                                                  out)
+                                   (string-append "-DSDL_INCLUDE_DIR="
+                                                  sdl "/include/SDL")
+                                   (string-append "../" srcdir))
+                          (system* "make" "-j"
+                                   (number->string (parallel-job-count)))
+                          (system* "make" "install"))))))))
+                (mkdir out)
+                (and (build_component "main" ".")
+                     (build_component "plugins" "plugins"))
+                (delete-file-recursively
+                  (string-append out "/share/ADM_addons"))))
+            (alist-delete 'install
+               %standard-phases)))))))))
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 419e531fb6..5296c43c53 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
 ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
@@ -49,14 +49,14 @@
 (define-public httpd
   (package
     (name "httpd")
-    (version "2.4.6")
+    (version "2.4.12")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://apache/httpd/httpd-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1sig08xxq1kqxr2a42ndwr9g4mm6zdqnxldhxraym2y0xcjkd7yw"))))
+               "1r7a63ka41vlswrqbb21vall6sc7svwgd497kb6dh8a6zvnkjvdd"))))
     (build-system gnu-build-system)
     (inputs `(("apr" ,apr)
               ("apr-util" ,apr-util)
@@ -799,3 +799,23 @@ select or poll.")
 server).  It was primarily designed to be used by one person or a small group
 of people.")
     (license l:expat)))
+
+(define-public libyaml
+  (package
+    (name "libyaml")
+    (version "0.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "http://pyyaml.org/download/libyaml/yaml-"
+             version ".tar.gz"))
+       (sha256
+        (base32
+         "1vrv5ly58bkmcyc049ad180f2m8iav6l9h3v8l2fqdmrny7yx1zs"))))
+    (build-system gnu-build-system)
+    (home-page "http://pyyaml.org/wiki/LibYAML")
+    (synopsis "YAML 1.1 parser and emitter written in C")
+    (description
+     "LibYAML is a YAML 1.1 parser and emitter written in C.")
+    (license l:expat)))
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
new file mode 100644
index 0000000000..5406aedc6e
--- /dev/null
+++ b/gnu/packages/wxwidgets.scm
@@ -0,0 +1,97 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages wxwidgets)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix l:)
+  #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build utils)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages gl)
+  #:use-module (gnu packages gstreamer)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages sdl)
+  #:use-module (gnu packages xorg))
+
+(define-public wxwidgets
+  (package
+    (name "wxwidgets")
+    (version "3.0.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/wxwindows/" version
+                           "/wxWidgets-" version ".tar.bz2"))
+       (sha256
+        (base32 "0paq27brw4lv8kspxh9iklpa415mxi8zc117vbbbhfjgapf7js1l"))))
+    (build-system glib-or-gtk-build-system)
+    ;; TODO: add WebKit
+    (inputs
+     `(("glu" ,glu)
+       ;; XXX gstreamer-0.10 builds fail
+       ;; ("gstreamer" ,gstreamer-0.10)
+       ("gtk" ,gtk+)
+       ("libjpeg" ,libjpeg)
+       ("libmspack" ,libmspack)
+       ("libsm" ,libsm)
+       ("libtiff" ,libtiff)
+       ("mesa" ,mesa)
+       ("sdl" ,sdl)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (arguments
+     '(#:configure-flags
+       '("--with-regex=sys" "--with-libmspack" "--with-sdl")
+       ;; No 'check' target.
+       #:tests? #f))
+    (home-page "https://www.wxwidgets.org/")
+    (synopsis "Widget toolkit for creating graphical user interfaces")
+    (description
+     "wxWidgets is a C++ library that lets developers create applications with
+a graphical user interface.  It has language bindings for Python, Perl, Ruby
+and many other languages.")
+    (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt")))))
+
+(define-public wxwidgets-2
+  (package
+    (inherit wxwidgets)
+    (version "2.8.12")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://sourceforge.net/projects/wxwindows/files/"
+                           version "/wxGTK-" version ".tar.gz"))
+       (sha256
+        (base32 "1gjs9vfga60mk4j4ngiwsk9h6c7j22pw26m3asxr1jwvqbr8kkqk"))))
+    (inputs
+     `(("gtk" ,gtk+-2)
+       ("libjpeg" ,libjpeg)
+       ("libtiff" ,libtiff)
+       ("libmspack" ,libmspack)
+       ("sdl" ,sdl)
+       ("unixodbc" ,unixodbc)))
+    (arguments
+     `(#:configure-flags
+       '("--enable-unicode" "--with-regex=sys" "--with-sdl")
+       ;; No 'check' target.
+       #:tests? #f))))
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index b48563227c..d0c983dc78 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -392,3 +392,31 @@ X Window System.")
     (license (license:bsd-style #f "See xlock.c.")
              ;; + GPLv2 in modes/glx/biof.c.
              )))
+
+(define-public xosd
+  (package
+    (name "xosd")
+    (version "2.2.14")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://sourceforge/libxosd/xosd-"
+                    version ".tar.gz"))
+              (sha256
+               (base32
+                "025m7ha89q29swkc7s38knnbn8ysl24g2h5s7imfxflm91psj7sg"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:configure-flags
+       (list (string-append "--mandir=" %output "/share/man"))))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxt" ,libxt)
+       ("libxext" ,libxext)
+       ("libxinerama" ,libxinerama)))
+    (home-page "http://sourceforge.net/projects/libxosd/")
+    (synopsis "X On Screen Display")
+    (description
+     "XOSD provides a C library and a simple utility (osd_cat) for displaying
+transparent text on your screen.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 10801fe52c..2f5d59a54e 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -4451,7 +4451,7 @@ graphics cards.")
 (define-public xorg-server
   (package
     (name "xorg-server")
-    (version "1.16.3")
+    (version "1.16.4")
     (source
       (origin
         (method url-fetch)
@@ -4460,7 +4460,7 @@ graphics cards.")
               name "-" version ".tar.bz2"))
         (sha256
          (base32
-          "1yxhc3aw2cadf77w48d2glc5j6w6hairiskfiys7h45g70r483sy"))))
+          "0wf8xykcjhvpk9ppjcixvf60p6kkyrpmfj0z29d93a8kjb6f3dmb"))))
     (build-system gnu-build-system)
     (propagated-inputs
       `(("dri2proto" ,dri2proto)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 94abef65c8..40d4740d46 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -506,7 +506,8 @@ given @var{config}---an @code{<nscd-configuration>} object.  Optionally,
 
              (activate #~(begin
                            (use-modules (guix build utils))
-                           (mkdir-p "/var/run/nscd")))
+                           (mkdir-p "/var/run/nscd")
+                           (mkdir-p "/var/db/nscd"))) ;for the persistent cache
 
              (start #~(make-forkexec-constructor
                        (list (string-append #$glibc "/sbin/nscd")
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 7cb9012b68..69a89584e0 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -207,23 +207,33 @@ which should be passed to this script as the first argument.  If not, the
   (list %windowmaker-session-type %ratpoison-session-type))
 
 (define (xsessions-directory sessions)
-  "Return a directory containing SESSIONS, a list of <session-type> objects."
+  "Return a directory containing SESSIONS, a list of <session-type> objects.
+The alphabetical order of the files in that directory match the order of the
+elements in SESSIONS."
   (define builder
     #~(begin
+        (use-modules (srfi srfi-1)
+                     (ice-9 format))
+
         (mkdir #$output)
         (chdir #$output)
-        (for-each (lambda (name executable)
-                    (let ((file (string-append (string-downcase name)
-                                               ".desktop")))
-                      (call-with-output-file file
-                        (lambda (port)
-                          (format port "[Desktop Entry]
+        (fold (lambda (name executable number)
+                ;; Create file names such that the order of the items in
+                ;; SESSION is respected.  SLiM gets them in lexicographic
+                ;; order and uses the first one as the default session.
+                (let ((file (format #f "~2,'0d-~a.desktop"
+                                    number (string-downcase name))))
+                  (call-with-output-file file
+                    (lambda (port)
+                      (format port "[Desktop Entry]
 Name=~a
 Exec=~a
 Type=Application~%"
-                                  name executable)))))
-                  '#$(map session-type-name sessions)
-                  (list #$@(map session-type-executable sessions)))))
+                              name executable)))
+                  (+ 1 number)))
+              1
+              '#$(map session-type-name sessions)
+              (list #$@(map session-type-executable sessions)))))
 
   (gexp->derivation "xsessions-dir" builder))
 
@@ -260,7 +270,8 @@ theme to use.  In that case, @var{theme-name} specifies the name of the
 theme.
 
 Last, @var{session} is a list of @code{<session-type>} objects denoting the
-available session types that can be chosen from the log-in screen."
+available session types that can be chosen from the log-in screen.  The first
+one is chosen by default."
 
   (define (slim.cfg)
     (mlet %store-monad ((startx  (or startx (xorg-start-command)))
@@ -278,6 +289,7 @@ authfile /var/run/slim.auth
 # of the names specified in the 'sessions' setting: 'wmaker', 'xfce', etc.
 login_cmd  exec " xinitrc " %session
 sessiondir " sessiondir "
+session_msg session (F1 to change):
 
 halt_cmd " dmd "/sbin/halt
 reboot_cmd " dmd "/sbin/reboot
diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
index ecffee3112..17b08aa9b7 100644
--- a/gnu/system/grub.scm
+++ b/gnu/system/grub.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -80,13 +80,13 @@
 (define %background-image
   (grub-image
    (aspect-ratio 4/3)
-   (file #~(string-append #$%artwork-repository "/grub/guix-4-3.svg"))))
+   (file #~(string-append #$%artwork-repository "/grub/GuixSD-4-3.svg"))))
 
 (define %default-theme
   ;; Default theme contributed by Felipe López.
   (grub-theme
    (images (list %background-image))
-   (color-highlight '((fg . cyan) (bg . black)))  ;XXX: fg should be #x3bb7f5
+   (color-highlight '((fg . yellow) (bg . black)))
    (color-normal    '((fg . light-gray) (bg . black))))) ;XXX: #x303030
 
 (define-record-type* <grub-configuration>
diff --git a/guix/build-system/perl.scm b/guix/build-system/perl.scm
index c488adb500..e0f86438a8 100644
--- a/guix/build-system/perl.scm
+++ b/guix/build-system/perl.scm
@@ -75,7 +75,9 @@
                      (tests? #t)
                      (parallel-build? #t)
                      (parallel-tests? #t)
+                     (make-maker? #f)
                      (make-maker-flags ''())
+                     (module-build-flags ''())
                      (phases '(@ (guix build perl-build-system)
                                  %standard-phases))
                      (outputs '("out"))
@@ -101,7 +103,9 @@ provides a `Makefile.PL' file as its build system."
                                 source))
                    #:search-paths ',(map search-path-specification->sexp
                                          search-paths)
+                   #:make-maker? ,make-maker?
                    #:make-maker-flags ,make-maker-flags
+                   #:module-build-flags ,module-build-flags
                    #:phases ,phases
                    #:system ,system
                    #:test-target "test"
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 5928ccd154..e8d61e0d92 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,7 @@
   #:use-module (ice-9 match)
   #:use-module (ice-9 format)
   #:export (open-connection-for-uri
+            resolve-uri-reference
             maybe-expand-mirrors
             url-fetch
             progress-proc
@@ -204,6 +206,86 @@ which is not available during bootstrap."
 (module-define! (resolve-module '(web client))
                 'shutdown (const #f))
 
+;; XXX: Work around <http://bugs.gnu.org/19840>, present in Guile
+;; up to 2.0.11.
+(unless (or (> (string->number (major-version)) 2)
+            (> (string->number (minor-version)) 0)
+            (> (string->number (micro-version)) 11))
+  (let ((var (module-variable (resolve-module '(web http))
+                              'declare-relative-uri-header!)))
+    ;; If 'declare-relative-uri-header!' doesn't exist, forget it.
+    (when (and var (variable-bound? var))
+      (let ((declare-relative-uri-header! (variable-ref var)))
+        (declare-relative-uri-header! "Location")))))
+
+(define (resolve-uri-reference ref base)
+  "Resolve the URI reference REF, interpreted relative to the BASE URI, into a
+target URI, according to the algorithm specified in RFC 3986 section 5.2.2.
+Return the resulting target URI."
+
+  (define (merge-paths base-path rel-path)
+    (let* ((base-components (string-split base-path #\/))
+           (base-directory-components (match base-components
+                                        ((components ... last) components)
+                                        (() '())))
+           (base-directory (string-join base-directory-components "/")))
+      (string-append base-directory "/" rel-path)))
+
+  (define (remove-dot-segments path)
+    (let loop ((in
+                ;; Drop leading "." and ".." components from a relative path.
+                ;; (absolute paths will start with a "" component)
+                (drop-while (match-lambda
+                              ((or "." "..") #t)
+                              (_ #f))
+                            (string-split path #\/)))
+               (out '()))
+      (match in
+        (("." . rest)
+         (loop rest out))
+        ((".." . rest)
+         (match out
+           ((or () (""))
+            (error "remove-dot-segments: too many '..' components" path))
+           (_
+            (loop rest (cdr out)))))
+        ((component . rest)
+         (loop rest (cons component out)))
+        (()
+         (string-join (reverse out) "/")))))
+
+  (cond ((or (uri-scheme ref)
+             (uri-host   ref))
+         (build-uri (or (uri-scheme ref)
+                        (uri-scheme base))
+                    #:userinfo (uri-userinfo ref)
+                    #:host     (uri-host     ref)
+                    #:port     (uri-port     ref)
+                    #:path     (remove-dot-segments (uri-path ref))
+                    #:query    (uri-query    ref)
+                    #:fragment (uri-fragment ref)))
+        ((string-null? (uri-path ref))
+         (build-uri (uri-scheme base)
+                    #:userinfo (uri-userinfo base)
+                    #:host     (uri-host     base)
+                    #:port     (uri-port     base)
+                    #:path     (remove-dot-segments (uri-path base))
+                    #:query    (or (uri-query ref)
+                                   (uri-query base))
+                    #:fragment (uri-fragment ref)))
+        (else
+         (build-uri (uri-scheme base)
+                    #:userinfo (uri-userinfo base)
+                    #:host     (uri-host     base)
+                    #:port     (uri-port     base)
+                    #:path     (remove-dot-segments
+                                (if (string-prefix? "/" (uri-path ref))
+                                    (uri-path ref)
+                                    (merge-paths (uri-path base)
+                                                 (uri-path ref))))
+                    #:query    (uri-query    ref)
+                    #:fragment (uri-fragment ref)))))
+
 (define (http-fetch uri file)
   "Fetch data from URI and write it to FILE.  Return FILE on success."
 
@@ -260,7 +342,7 @@ which is not available during bootstrap."
          file))
       ((301                                       ; moved permanently
         302)                                      ; found (redirection)
-       (let ((uri (response-location resp)))
+       (let ((uri (resolve-uri-reference (response-location resp) uri)))
          (format #t "following redirection to `~a'...~%"
                  (uri->string uri))
          (close connection)
diff --git a/guix/build/perl-build-system.scm b/guix/build/perl-build-system.scm
index 904daf7ac2..7eb944ccd1 100644
--- a/guix/build/perl-build-system.scm
+++ b/guix/build/perl-build-system.scm
@@ -29,22 +29,57 @@
 ;;
 ;; Code:
 
-(define* (configure #:key outputs (make-maker-flags '())
+(define* (configure #:key outputs make-maker?
+                    (make-maker-flags '()) (module-build-flags '())
                     #:allow-other-keys)
   "Configure the given Perl package."
-  (let ((out (assoc-ref outputs "out")))
-    (if (file-exists? "Makefile.PL")
-        (let ((args `("Makefile.PL" ,(string-append "PREFIX=" out)
-                      "INSTALLDIRS=site" ,@make-maker-flags)))
-          (format #t "running `perl' with arguments ~s~%" args)
-          (zero? (apply system* "perl" args)))
-        (error "no Makefile.PL found"))))
+  (let* ((out (assoc-ref outputs "out"))
+         (args (cond
+                ;; Prefer to use Module::Build unless otherwise told
+                ((and (file-exists? "Build.PL")
+                      (not make-maker?))
+                 `("Build.PL" ,(string-append "--prefix=" out)
+                   "--installdirs=site" ,@module-build-flags))
+                ((file-exists? "Makefile.PL")
+                 `("Makefile.PL" ,(string-append "PREFIX=" out)
+                   "INSTALLDIRS=site" ,@make-maker-flags))
+                (else (error "no Build.PL or Makefile.PL found")))))
+    (format #t "running `perl' with arguments ~s~%" args)
+    (zero? (apply system* "perl" args))))
+
+(define-syntax-rule (define-w/gnu-fallback* (name args ...) body ...)
+  (define* (name args ... #:rest rest)
+    (if (access? "Build" X_OK)
+        (begin body ...)
+        (apply (assoc-ref gnu:%standard-phases 'name) rest))))
+
+(define-w/gnu-fallback* (build)
+  (zero? (system* "./Build")))
+
+(define-w/gnu-fallback* (check #:key target
+                               (tests? (not target)) (test-flags '())
+                               #:allow-other-keys)
+  (if tests?
+      (zero? (apply system* "./Build" "test" test-flags))
+      (begin
+        (format #t "test suite not run~%")
+        #t)))
+
+(define-w/gnu-fallback* (install)
+  (zero? (system* "./Build" "install")))
 
 (define %standard-phases
-  ;; Everything is as with the GNU Build System except for the `configure'
-  ;; phase.
-  (alist-replace 'configure configure
-                 gnu:%standard-phases))
+  ;; Everything is as with the GNU Build System except for the `configure',
+  ;; `build', `check', and `install' phases.
+  (alist-replace
+   'configure configure
+   (alist-replace
+    'build build
+    (alist-replace
+     'check check
+     (alist-replace
+      'install install
+      gnu:%standard-phases)))))
 
 (define* (perl-build #:key inputs (phases %standard-phases)
                      #:allow-other-keys #:rest args)
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 678550a39e..e5922365a0 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -96,11 +96,8 @@
 
             build-derivations
             built-derivations
-            imported-modules
-            compiled-modules
 
-            build-expression->derivation
-            imported-files)
+            build-expression->derivation)
 
   ;; Re-export it from here for backward compatibility.
   #:re-export (%guile-for-build))
@@ -942,7 +939,7 @@ recursively."
            (remove (cut string=? <> ".")
                    (string-tokenize (dirname file-name) not-slash))))))
 
-(define* (imported-files store files
+(define* (imported-files store files              ;deprecated
                          #:key (name "file-import")
                          (system (%current-system))
                          (guile (%guile-for-build)))
@@ -982,7 +979,7 @@ system, imported, and appears under FINAL-PATH in the resulting store path."
   ;; up looking for the same files over and over again.
   (memoize search-path))
 
-(define* (%imported-modules store modules
+(define* (%imported-modules store modules         ;deprecated
                             #:key (name "module-import")
                             (system (%current-system))
                             (guile (%guile-for-build))
@@ -1001,7 +998,7 @@ search path."
     (imported-files store files #:name name #:system system
                     #:guile guile)))
 
-(define* (%compiled-modules store modules
+(define* (%compiled-modules store modules         ;deprecated
                             #:key (name "module-import-compiled")
                             (system (%current-system))
                             (guile (%guile-for-build))
@@ -1124,7 +1121,7 @@ applied."
                                      #:outputs output-names
                                      #:local-build? #t)))))
 
-(define* (build-expression->derivation store name exp
+(define* (build-expression->derivation store name exp ;deprecated
                                        #:key
                                        (system (%current-system))
                                        (inputs '())
@@ -1290,9 +1287,3 @@ ALLOWED-REFERENCES, and LOCAL-BUILD?."
 
 (define built-derivations
   (store-lift build-derivations))
-
-(define imported-modules
-  (store-lift %imported-modules))
-
-(define compiled-modules
-  (store-lift %compiled-modules))
diff --git a/guix/download.scm b/guix/download.scm
index 9a1897525b..d87d02e2af 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -164,6 +164,16 @@
        "ftp://ftp.nara.wide.ad.jp/pub/CPAN/"
        "http://mirrors.163.com/cpan/"
        "ftp://cpan.mirror.ac.za/")
+      (cran
+       ;; Arbitrary mirrors from http://cran.r-project.org/mirrors.html
+       ;; This one automatically redirects to servers worldwide
+       "http://cran.rstudio.com/"
+       "http://cran.univ-lyon1.fr/"
+       "http://cran.r-mirror.de/"
+       "http://cran.ism.ac.jp/"
+       "http://cran.stat.auckland.ac.nz/"
+       "http://cran.mirror.ac.za/"
+       "http://cran.csie.ntu.edu.tw/")
       (imagemagick
        ;; from http://www.imagemagick.org/script/download.php
        ;; (without mirrors that are unavailable or not up to date)
diff --git a/guix/gexp.scm b/guix/gexp.scm
index fa712a8b9b..a8349c7d6e 100644
--- a/guix/gexp.scm
+++ b/guix/gexp.scm
@@ -21,6 +21,7 @@
   #:use-module (guix monads)
   #:use-module (guix derivations)
   #:use-module (guix packages)
+  #:use-module (guix utils)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-9)
   #:use-module (srfi srfi-9 gnu)
@@ -31,7 +32,10 @@
             gexp->derivation
             gexp->file
             gexp->script
-            text-file*))
+            text-file*
+            imported-files
+            imported-modules
+            compiled-modules))
 
 ;;; Commentary:
 ;;;
@@ -149,6 +153,7 @@ names and file names suitable for the #:allowed-references argument to
                            (modules '())
                            (module-path %load-path)
                            (guile-for-build (%guile-for-build))
+                           (graft? (%graft?))
                            references-graphs
                            allowed-references
                            local-build?)
@@ -161,6 +166,9 @@ names of Guile modules searched in MODULE-PATH to be copied in the store,
 compiled, and made available in the load path during the execution of
 EXP---e.g., '((guix build utils) (guix build gnu-build-system)).
 
+GRAFT? determines whether packages referred to by EXP should be grafted when
+applicable.
+
 When REFERENCES-GRAPHS is true, it must be a list of tuples of one of the
 following forms:
 
@@ -194,10 +202,10 @@ The other arguments are as for 'derivation'."
             (cons file-name thing)))
          graphs))
 
-  (mlet* %store-monad (;; The following binding is here to force
-                       ;; '%current-system' and '%current-target-system' to be
-                       ;; looked up at >>= time.
-                       (unused    (return #f))
+  (mlet* %store-monad (;; The following binding forces '%current-system' and
+                       ;; '%current-target-system' to be looked up at >>=
+                       ;; time.
+                       (graft?    (set-grafting graft?))
 
                        (system -> (or system (%current-system)))
                        (target -> (if (eq? target 'current)
@@ -241,30 +249,32 @@ The other arguments are as for 'derivation'."
                                      (return guile-for-build)
                                      (package->derivation (default-guile)
                                                           system))))
-    (raw-derivation name
-                    (string-append (derivation->output-path guile)
-                                   "/bin/guile")
-                    `("--no-auto-compile"
-                      ,@(if (pair? %modules)
-                            `("-L" ,(derivation->output-path modules)
-                              "-C" ,(derivation->output-path compiled))
-                            '())
-                      ,builder)
-                    #:outputs outputs
-                    #:env-vars env-vars
-                    #:system system
-                    #:inputs `((,guile)
-                               (,builder)
-                               ,@(if modules
-                                     `((,modules) (,compiled) ,@inputs)
-                                     inputs)
-                               ,@(match graphs
-                                   (((_ . inputs) ...) inputs)
-                                   (_ '())))
-                    #:hash hash #:hash-algo hash-algo #:recursive? recursive?
-                    #:references-graphs (and=> graphs graphs-file-names)
-                    #:allowed-references allowed
-                    #:local-build? local-build?)))
+    (mbegin %store-monad
+      (set-grafting graft?)                       ;restore the initial setting
+      (raw-derivation name
+                      (string-append (derivation->output-path guile)
+                                     "/bin/guile")
+                      `("--no-auto-compile"
+                        ,@(if (pair? %modules)
+                              `("-L" ,(derivation->output-path modules)
+                                "-C" ,(derivation->output-path compiled))
+                              '())
+                        ,builder)
+                      #:outputs outputs
+                      #:env-vars env-vars
+                      #:system system
+                      #:inputs `((,guile)
+                                 (,builder)
+                                 ,@(if modules
+                                       `((,modules) (,compiled) ,@inputs)
+                                       inputs)
+                                 ,@(match graphs
+                                     (((_ . inputs) ...) inputs)
+                                     (_ '())))
+                      #:hash hash #:hash-algo hash-algo #:recursive? recursive?
+                      #:references-graphs (and=> graphs graphs-file-names)
+                      #:allowed-references allowed
+                      #:local-build? local-build?))))
 
 (define* (gexp-inputs exp #:optional (references gexp-references))
   "Return the input list for EXP, using REFERENCES to get its list of
@@ -502,6 +512,157 @@ package/derivation references."
 
 
 ;;;
+;;; Module handling.
+;;;
+
+(define %mkdir-p-definition
+  ;; The code for 'mkdir-p' is copied from (guix build utils).  We use it in
+  ;; derivations that cannot use the #:modules argument of 'gexp->derivation'
+  ;; precisely because they implement that functionality.
+  (gexp
+   (define (mkdir-p dir)
+     (define absolute?
+       (string-prefix? "/" dir))
+
+     (define not-slash
+       (char-set-complement (char-set #\/)))
+
+     (let loop ((components (string-tokenize dir not-slash))
+                (root       (if absolute? "" ".")))
+       (match components
+         ((head tail ...)
+          (let ((path (string-append root "/" head)))
+            (catch 'system-error
+              (lambda ()
+                (mkdir path)
+                (loop tail path))
+              (lambda args
+                (if (= EEXIST (system-error-errno args))
+                    (loop tail path)
+                    (apply throw args))))))
+         (() #t))))))
+
+(define* (imported-files files
+                         #:key (name "file-import")
+                         (system (%current-system))
+                         (guile (%guile-for-build)))
+  "Return a derivation that imports FILES into STORE.  FILES must be a list
+of (FINAL-PATH . FILE-NAME) pairs; each FILE-NAME is read from the file
+system, imported, and appears under FINAL-PATH in the resulting store path."
+  (define file-pair
+    (match-lambda
+     ((final-path . file-name)
+      (mlet %store-monad ((file (interned-file file-name
+                                               (basename final-path))))
+        (return (list final-path file))))))
+
+  (mlet %store-monad ((files (sequence %store-monad
+                                       (map file-pair files))))
+    (define build
+      (gexp
+       (begin
+         (use-modules (ice-9 match))
+
+         (ungexp %mkdir-p-definition)
+
+         (mkdir (ungexp output)) (chdir (ungexp output))
+         (for-each (match-lambda
+                    ((final-path store-path)
+                     (mkdir-p (dirname final-path))
+                     (symlink store-path final-path)))
+                   '(ungexp files)))))
+
+    ;; TODO: Pass FILES as an environment variable so that BUILD remains
+    ;; exactly the same regardless of FILES: less disk space, and fewer
+    ;; 'add-to-store' RPCs.
+    (gexp->derivation name build
+                      #:system system
+                      #:guile-for-build guile
+                      #:local-build? #t)))
+
+(define search-path*
+  ;; A memoizing version of 'search-path' so 'imported-modules' does not end
+  ;; up looking for the same files over and over again.
+  (memoize search-path))
+
+(define* (imported-modules modules
+                           #:key (name "module-import")
+                           (system (%current-system))
+                           (guile (%guile-for-build))
+                           (module-path %load-path))
+  "Return a derivation that contains the source files of MODULES, a list of
+module names such as `(ice-9 q)'.  All of MODULES must be in the MODULE-PATH
+search path."
+  ;; TODO: Determine the closure of MODULES, build the `.go' files,
+  ;; canonicalize the source files through read/write, etc.
+  (let ((files (map (lambda (m)
+                      (let ((f (string-append
+                                (string-join (map symbol->string m) "/")
+                                ".scm")))
+                        (cons f (search-path* module-path f))))
+                    modules)))
+    (imported-files files #:name name #:system system
+                    #:guile guile)))
+
+(define* (compiled-modules modules
+                           #:key (name "module-import-compiled")
+                           (system (%current-system))
+                           (guile (%guile-for-build))
+                           (module-path %load-path))
+  "Return a derivation that builds a tree containing the `.go' files
+corresponding to MODULES.  All the MODULES are built in a context where
+they can refer to each other."
+  (mlet %store-monad ((modules (imported-modules modules
+                                                 #:system system
+                                                 #:guile guile
+                                                 #:module-path
+                                                 module-path)))
+    (define build
+      (gexp
+       (begin
+         (use-modules (ice-9 ftw)
+                      (ice-9 match)
+                      (srfi srfi-26)
+                      (system base compile))
+
+         (ungexp %mkdir-p-definition)
+
+         (define (regular? file)
+           (not (member file '("." ".."))))
+
+         (define (process-directory directory output)
+           (let ((entries (map (cut string-append directory "/" <>)
+                               (scandir directory regular?))))
+             (for-each (lambda (entry)
+                         (if (file-is-directory? entry)
+                             (let ((output (string-append output "/"
+                                                          (basename entry))))
+                               (mkdir-p output)
+                               (process-directory entry output))
+                             (let* ((base   (string-drop-right
+                                             (basename entry)
+                                             4)) ;.scm
+                                    (output (string-append output "/" base
+                                                           ".go")))
+                               (compile-file entry
+                                             #:output-file output
+                                             #:opts
+                                             %auto-compilation-options))))
+                       entries)))
+
+         (set! %load-path (cons (ungexp modules) %load-path))
+         (mkdir (ungexp output))
+         (chdir (ungexp modules))
+         (process-directory "." (ungexp output)))))
+
+    ;; TODO: Pass MODULES as an environment variable.
+    (gexp->derivation name build
+                      #:system system
+                      #:guile-for-build guile
+                      #:local-build? #t)))
+
+
+;;;
 ;;; Convenience procedures.
 ;;;
 
@@ -562,7 +723,6 @@ and store file names; the resulting store file holds references to all these."
 
   (gexp->derivation name builder))
 
-
 
 ;;;
 ;;; Syntactic sugar.
diff --git a/guix/http-client.scm b/guix/http-client.scm
index 4770628e45..aad7656e19 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2012 Free Software Foundation, Inc.
 ;;;
 ;;; This file is part of GNU Guix.
@@ -29,6 +30,7 @@
   #:use-module (rnrs bytevectors)
   #:use-module (guix ui)
   #:use-module (guix utils)
+  #:use-module ((guix build download) #:select (resolve-uri-reference))
   #:export (&http-get-error
             http-get-error?
             http-get-error-uri
@@ -227,7 +229,7 @@ Raise an '&http-get-error' condition if downloading fails."
                     (values data len)))))
           ((301                                   ; moved permanently
             302)                                  ; found (redirection)
-           (let ((uri (response-location resp)))
+           (let ((uri (resolve-uri-reference (response-location resp) uri)))
              (close-port port)
              (format #t (_ "following redirection to `~a'...~%")
                      (uri->string uri))
diff --git a/guix/import/cpan.scm b/guix/import/cpan.scm
index 5f4602a8d2..37dd3b162c 100644
--- a/guix/import/cpan.scm
+++ b/guix/import/cpan.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -19,6 +20,8 @@
 (define-module (guix import cpan)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
+  #:use-module ((ice-9 popen) #:select (open-pipe* close-pipe))
+  #:use-module ((ice-9 rdelim) #:select (read-line))
   #:use-module (srfi srfi-1)
   #:use-module (json)
   #:use-module (guix hash)
@@ -27,6 +30,9 @@
   #:use-module ((guix download) #:select (download-to-store))
   #:use-module (guix import utils)
   #:use-module (guix import json)
+  #:use-module (guix packages)
+  #:use-module (guix derivations)
+  #:use-module (gnu packages perl)
   #:export (cpan->guix-package))
 
 ;;; Commentary:
@@ -44,7 +50,7 @@
    ;; apache_1_1
    ("apache_2_0" 'asl2.0)
    ;; artistic_1_0
-   ;; artistic_2_0
+   ("artistic_2_0" 'artistic2.0)
    ("bsd" 'bsd-3)
    ("freebsd" 'bsd-2)
    ;; gfdl_1_2
@@ -58,7 +64,7 @@
    ;; mozilla_1_0
    ("mozilla_1_1" 'mpl1.1)
    ("openssl" 'openssl)
-   ("perl_5" 'gpl1+)                    ;and Artistic 1
+   ("perl_5" '(package-license perl))   ;GPL1+ and Artistic 1
    ("qpl_1_0" 'qpl)
    ;; ssleay
    ;; sun
@@ -71,6 +77,14 @@
   "Transform a 'module' name into a 'release' name"
   (regexp-substitute/global #f "::" module 'pre "-" 'post))
 
+(define (module->dist-name module)
+  "Return the base distribution module for a given module.  E.g. the 'ok'
+module is distributed with 'Test::Simple', so (module->dist-name \"ok\") would
+return \"Test-Simple\""
+  (assoc-ref (json-fetch (string-append "http://api.metacpan.org/module/"
+                                        module))
+             "distribution"))
+
 (define (cpan-fetch module)
   "Return an alist representation of the CPAN metadata for the perl module MODULE,
 or #f on failure.  MODULE should be e.g. \"Test::Script\""
@@ -84,6 +98,15 @@ or #f on failure.  MODULE should be e.g. \"Test::Script\""
 (define (cpan-home name)
   (string-append "http://search.cpan.org/dist/" name))
 
+(define %corelist
+  (delay
+    (let* ((perl (with-store store
+                   (derivation->output-path
+                    (package-derivation store perl))))
+           (core (string-append perl "/bin/corelist")))
+      (and (access? core X_OK)
+           core))))
+
 (define (cpan-module->sexp meta)
   "Return the `package' s-expression for a CPAN module from the metadata in
 META."
@@ -98,6 +121,17 @@ META."
   (define version
     (assoc-ref meta "version"))
 
+  (define (core-module? name)
+    (and (force %corelist)
+         (parameterize ((current-error-port (%make-void-port "w")))
+           (let* ((corelist (open-pipe* OPEN_READ (force %corelist) name)))
+             (let loop ((line (read-line corelist)))
+               (if (eof-object? line)
+                   (begin (close-pipe corelist) #f)
+                   (if (string-contains line "first released with perl")
+                       (begin (close-pipe corelist) #t)
+                       (loop (read-line corelist)))))))))
+
   (define (convert-inputs phases)
     ;; Convert phase dependencies into a list of name/variable pairs.
     (match (flatten
@@ -109,19 +143,22 @@ META."
       (#f
        '())
       ((inputs ...)
-       (delete-duplicates
-        ;; Listed dependencies may include core modules.  Filter those out.
-        (filter-map (match-lambda
-                     ((or (module . "0") ("perl" . _))
-                      ;; TODO: A stronger test might to run MODULE through
-                      ;; `corelist' from our perl package.  This current test
-                      ;; seems to be only a loose convention.
-                      #f)
-                     ((module . _)
-                      (let ((name (guix-name (module->name module))))
-                        (list name
-                              (list 'unquote (string->symbol name))))))
-                    inputs)))))
+       (sort
+        (delete-duplicates
+         ;; Listed dependencies may include core modules.  Filter those out.
+         (filter-map (match-lambda
+                      (("perl" . _)     ;implicit dependency
+                       #f)
+                      ((module . _)
+                       (and (not (core-module? module))
+                            (let ((name (guix-name (module->dist-name module))))
+                              (list name
+                                    (list 'unquote (string->symbol name)))))))
+                     inputs))
+        (lambda args
+          (match args
+            (((a _ ...) (b _ ...))
+             (string<? a b))))))))
 
   (define (maybe-inputs guix-name inputs)
     (match inputs
@@ -132,7 +169,9 @@ META."
                    (list 'quasiquote inputs))))))
 
   (define source-url
-    (assoc-ref meta "download_url"))
+    (regexp-substitute/global #f "http://cpan.metacpan.org"
+                              (assoc-ref meta "download_url")
+                              'pre "mirror://cpan" 'post))
 
   (let ((tarball (with-store store
                    (download-to-store store source-url))))
@@ -147,12 +186,12 @@ META."
                    ,(bytevector->nix-base32-string (file-sha256 tarball))))))
        (build-system perl-build-system)
        ,@(maybe-inputs 'native-inputs
-                       ;; "runtime" and "test" may also be needed here.  See
+                       ;; "runtime" may also be needed here.  See
                        ;; https://metacpan.org/pod/CPAN::Meta::Spec#Phases,
                        ;; which says they are required during building.  We
                        ;; have not yet had a need for cross-compiled perl
-                       ;; modules, however, so we leave them out.
-                       (convert-inputs '("configure" "build")))
+                       ;; modules, however, so we leave it out.
+                       (convert-inputs '("configure" "build" "test")))
        ,@(maybe-inputs 'inputs
                        (convert-inputs '("runtime")))
        (home-page ,(string-append "http://search.cpan.org/dist/" name))
diff --git a/guix/licenses.scm b/guix/licenses.scm
index 86f3ae4e82..157e74bf37 100644
--- a/guix/licenses.scm
+++ b/guix/licenses.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -28,7 +28,7 @@
             cc0
             cddl1.0
             cecill-c
-            clarified-artistic
+            artistic2.0 clarified-artistic
             cpl1.0
             epl1.0
             expat
@@ -39,6 +39,7 @@
             ijg
             ibmpl1.0
             imlib2
+            ipa
             lgpl2.0 lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3 lgpl3+
             mpl1.1 mpl2.0
             ncsa
@@ -129,6 +130,11 @@ which may be a file:// URI pointing the package's tree."
            "http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html"
            "https://www.gnu.org/licenses/license-list.html#CeCILL"))
 
+(define artistic2.0
+  (license "Artistic License 2.0"
+           "http://www.perlfoundation.org/artistic_license_2_0"
+           "http://www.gnu.org/licenses/license-list.html#ArtisticLicense2"))
+
 (define clarified-artistic
   (license "Clarified Artistic"
            ;; http://directory.fsf.org/wiki/User:Jgay/license-categorization#Clarified_Artistic_License
@@ -210,6 +216,11 @@ which may be a file:// URI pointing the package's tree."
            "http://directory.fsf.org/wiki/License:Imlib2"
            "https://www.gnu.org/licenses/license-list#imlib"))
 
+(define ipa
+  (license "IPA Font License"
+           "http://directory.fsf.org/wiki/License:IPA_Font_License"
+           "https://www.gnu.org/licenses/license-list#IPAFONT"))
+
 (define lgpl2.0
   (license "LGPL 2.0"
            "https://www.gnu.org/licenses/old-licenses/lgpl-2.0.html"
diff --git a/guix/packages.scm b/guix/packages.scm
index 96f3adfc32..5b686a122f 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -114,6 +114,7 @@
             default-guile
 
             set-guile-for-build
+            set-grafting
             package-file
             package->derivation
             package->cross-derivation
@@ -906,6 +907,12 @@ code of derivations to GUILE, a package object."
     (let ((guile (package-derivation store guile)))
       (values (%guile-for-build guile) store))))
 
+(define (set-grafting enable?)
+  "This monadic procedure enables grafting when ENABLE? is true, and disables
+it otherwise.  It returns the previous setting."
+  (lambda (store)
+    (values (%graft? enable?) store)))
+
 (define* (package-file package
                        #:optional file
                        #:key
diff --git a/guix/scripts/archive.scm b/guix/scripts/archive.scm
index b85119a0ff..ea6801a6eb 100644
--- a/guix/scripts/archive.scm
+++ b/guix/scripts/archive.scm
@@ -297,20 +297,6 @@ the input port."
         (cut write-acl acl <>)))))
 
 (define (guix-archive . args)
-  (define (parse-options)
-    ;; Return the alist of option values.
-    (append (parse-options-from args)
-            (parse-options-from (environment-build-options))))
-
-  (define (parse-options-from args)
-    ;; Actual parsing takes place here.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (_ "~A: unrecognized option~%") name))
-                (lambda (arg result)
-                  (alist-cons 'argument arg result))
-                %default-options))
-
   (define (lines port)
     ;; Return lines read from PORT.
     (let loop ((line   (read-line port))
@@ -324,7 +310,7 @@ the input port."
     ;; Ask for absolute file names so that .drv file names passed from the
     ;; user to 'read-derivation' are absolute when it returns.
     (with-fluids ((%file-port-name-canonicalization 'absolute))
-      (let ((opts (parse-options)))
+      (let ((opts (parse-command-line args %options (list %default-options))))
         (cond ((assoc-ref opts 'generate-key)
                =>
                generate-key-pair)
diff --git a/guix/scripts/build.scm b/guix/scripts/build.scm
index 07ced30484..370c2a37ff 100644
--- a/guix/scripts/build.scm
+++ b/guix/scripts/build.scm
@@ -405,25 +405,12 @@ arguments with packages that use the specified source."
 ;;;
 
 (define (guix-build . args)
-  (define (parse-options)
-    ;; Return the alist of option values.
-    (append (parse-options-from args)
-            (parse-options-from (environment-build-options))))
-
-  (define (parse-options-from args)
-    ;; Actual parsing takes place here.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (_ "~A: unrecognized option~%") name))
-                (lambda (arg result)
-                  (alist-cons 'argument arg result))
-                %default-options))
-
   (with-error-handling
     ;; Ask for absolute file names so that .drv file names passed from the
     ;; user to 'read-derivation' are absolute when it returns.
     (with-fluids ((%file-port-name-canonicalization 'absolute))
-      (let* ((opts  (parse-options))
+      (let* ((opts  (parse-command-line args %options
+                                        (list %default-options)))
              (store (open-connection))
              (drv   (options->derivations store opts))
              (roots (filter-map (match-lambda
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index bb2ce53caf..c96ca351c4 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -217,22 +217,12 @@ packages."
 
 ;; Entry point.
 (define (guix-environment . args)
-  (define (parse-options)
-    ;; Return the alist of option values.
-    (append (parse-options-from args)
-            (parse-options-from (environment-build-options))))
-
-  (define (parse-options-from args)
-    ;; Actual parsing takes place here.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (_ "~A: unrecognized option~%") name))
-                (lambda (arg result)
-                  (alist-cons 'package arg result))
-                %default-options))
+  (define (handle-argument arg result)
+    (alist-cons 'package arg result))
 
   (with-store store
-    (let* ((opts (parse-options))
+    (let* ((opts  (parse-command-line args %options (list %default-options)
+                                      #:argument-handler handle-argument))
            (pure? (assoc-ref opts 'pure))
            (command (assoc-ref opts 'exec))
            (inputs (packages->transitive-inputs
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index fc116d8f6c..c27207f29a 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -692,22 +692,11 @@ doesn't need it."
 ;;;
 
 (define (guix-package . args)
-  (define (parse-options)
-    ;; Return the alist of option values.
-    (append (parse-options-from args)
-            (parse-options-from (environment-build-options))))
-
-  (define (parse-options-from args)
-    ;; Actual parsing takes place here.
-    (args-fold* args %options
-                (lambda (opt name arg result arg-handler)
-                  (leave (_ "~A: unrecognized option~%") name))
-                (lambda (arg result arg-handler)
-                  (if arg-handler
-                      (arg-handler arg result)
-                      (leave (_ "~A: extraneous argument~%") arg)))
-                %default-options
-                #f))
+  (define (handle-argument arg result arg-handler)
+    ;; Process non-option argument ARG by calling back ARG-HANDLER.
+    (if arg-handler
+        (arg-handler arg result)
+        (leave (_ "~A: extraneous argument~%") arg)))
 
   (define (ensure-default-profile)
     ;; Ensure the default profile symlink and directory exist and are
@@ -987,7 +976,8 @@ more information.~%"))
 
         (_ #f))))
 
-  (let ((opts (parse-options)))
+  (let ((opts (parse-command-line args %options (list %default-options #f)
+                                  #:argument-handler handle-argument)))
     (with-error-handling
       (or (process-query opts)
           (parameterize ((%store (open-connection)))
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 3eea872fe8..1b64e6fb92 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -446,7 +446,7 @@ Build the operating system declared in FILE according to ACTION.\n"))
                                result)))
          (option '("no-grub") #f #f
                  (lambda (opt name arg result)
-                   (alist-delete 'install-grub? result)))
+                   (alist-cons 'install-grub? #f result)))
          (option '("full-boot") #f #f
                  (lambda (opt name arg result)
                    (alist-cons 'full-boot? #t result)))
@@ -487,26 +487,15 @@ Build the operating system declared in FILE according to ACTION.\n"))
 ;;;
 
 (define (guix-system . args)
-  (define (parse-options)
-    ;; Return the alist of option values.
-    (append (parse-options-from args)
-            (parse-options-from (environment-build-options))))
-
-  (define (parse-options-from args)
-    ;; Actual parsing takes place here.
-    (args-fold* args %options
-                (lambda (opt name arg result)
-                  (leave (_ "~A: unrecognized option~%") name))
-                (lambda (arg result)
-                  (if (assoc-ref result 'action)
-                      (alist-cons 'argument arg result)
-                      (let ((action (string->symbol arg)))
-                        (case action
-                          ((build vm vm-image disk-image reconfigure init)
-                           (alist-cons 'action action result))
-                          (else (leave (_ "~a: unknown action~%")
-                                       action))))))
-                %default-options))
+  (define (parse-sub-command arg result)
+    ;; Parse sub-command ARG and augment RESULT accordingly.
+    (if (assoc-ref result 'action)
+        (alist-cons 'argument arg result)
+        (let ((action (string->symbol arg)))
+          (case action
+            ((build vm vm-image disk-image reconfigure init)
+             (alist-cons 'action action result))
+            (else (leave (_ "~a: unknown action~%") action))))))
 
   (define (match-pair car)
     ;; Return a procedure that matches a pair with CAR.
@@ -534,7 +523,10 @@ Build the operating system declared in FILE according to ACTION.\n"))
       args))
 
   (with-error-handling
-    (let* ((opts     (parse-options))
+    (let* ((opts     (parse-command-line args %options
+                                         (list %default-options)
+                                         #:argument-handler
+                                         parse-sub-command))
            (args     (option-arguments opts))
            (file     (first args))
            (action   (assoc-ref opts 'action))
diff --git a/guix/store.scm b/guix/store.scm
index 02d84eb517..d88fb3ea54 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -890,11 +890,13 @@ taking the store as its first argument."
 ;; Store monad operators.
 ;;
 
-(define* (text-file name text)
+(define* (text-file name text
+                    #:optional (references '()))
   "Return as a monadic value the absolute file name in the store of the file
-containing TEXT, a string."
+containing TEXT, a string.  REFERENCES is a list of store items that the
+resulting text file refers to; it defaults to the empty list."
   (lambda (store)
-    (values (add-text-to-store store name text '())
+    (values (add-text-to-store store name text references)
             store)))
 
 (define* (interned-file file #:optional name
diff --git a/guix/tests.scm b/guix/tests.scm
index 451c1ba4bb..0896e842da 100644
--- a/guix/tests.scm
+++ b/guix/tests.scm
@@ -23,6 +23,7 @@
   #:use-module (guix base32)
   #:use-module (guix serialization)
   #:use-module (guix hash)
+  #:use-module (guix build-system gnu)
   #:use-module (gnu packages bootstrap)
   #:use-module (srfi srfi-34)
   #:use-module (rnrs bytevectors)
@@ -30,6 +31,8 @@
   #:export (open-connection-for-tests
             random-text
             random-bytevector
+            network-reachable?
+            shebang-too-long?
             mock
             %substitute-directory
             with-derivation-narinfo
@@ -76,6 +79,10 @@
             (loop (1+ i)))
           bv))))
 
+(define (network-reachable?)
+  "Return true if we can reach the Internet."
+  (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)))
+
 (define-syntax-rule (mock (module proc replacement) body ...)
   "Within BODY, replace the definition of PROC from MODULE with the definition
 given by REPLACEMENT."
@@ -179,6 +186,17 @@ CONTENTS."
       (delete-file (string-append dir "/example.out"))
       (delete-file (string-append dir "/example.nar")))))
 
+(define (shebang-too-long?)
+  "Return true if the typical shebang in the current store would exceed
+Linux's static limit---the BINPRM_BUF_SIZE constant, normally 128 characters
+all included."
+  (define shebang
+    (string-append "#!" (%store-prefix) "/"
+                   (make-string 32 #\a)
+                   "-bootstrap-binaries-0/bin/bash\0"))
+
+  (> (string-length shebang) 128))
+
 (define-syntax with-derivation-substitute
   (syntax-rules (sha256 =>)
     "Evaluate BODY in a context where DRV is substitutable with the given
diff --git a/guix/ui.scm b/guix/ui.scm
index 382b5b1e0d..ae37c8e6ca 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2014 Deck Pickard <deck.r.pickard@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -66,7 +67,7 @@
             string->generations
             string->duration
             args-fold*
-            environment-build-options
+            parse-command-line
             run-guix-command
             program-name
             guix-warning-port
@@ -754,6 +755,36 @@ reporting."
   "Return additional build options passed as environment variables."
   (arguments-from-environment-variable "GUIX_BUILD_OPTIONS"))
 
+(define %default-argument-handler
+  ;; The default handler for non-option command-line arguments.
+  (lambda (arg result)
+    (alist-cons 'argument arg result)))
+
+(define* (parse-command-line args options seeds
+                             #:key
+                             (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'.
+
+ARGUMENT-HANDLER is called for non-option arguments, like the 'operand-proc'
+parameter of 'args-fold'."
+  (define (parse-options-from args seeds)
+    ;; Actual parsing takes place here.
+    (apply args-fold* args options
+           (lambda (opt name arg . rest)
+             (leave (_ "~A: unrecognized option~%") name))
+           argument-handler
+           seeds))
+
+  (call-with-values
+      (lambda ()
+        (parse-options-from (environment-build-options) seeds))
+    (lambda seeds
+      ;; ARGS take precedence over what the environment variable specifies.
+      (parse-options-from args seeds))))
+
 (define (show-guix-usage)
   (format (current-error-port)
           (_ "Try `guix --help' for more information.~%"))
diff --git a/m4/guix.m4 b/m4/guix.m4
index d4415598b0..445ce857dd 100644
--- a/m4/guix.m4
+++ b/m4/guix.m4
@@ -1,5 +1,5 @@
 dnl GNU Guix --- Functional package management for GNU
-dnl Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+dnl Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 dnl Copyright © 2014 Mark H Weaver <mhw@netris.org>
 dnl
 dnl This file is part of GNU Guix.
@@ -162,3 +162,59 @@ AC_DEFUN([GUIX_CHECK_UNBUFFERED_CBIP], [
        ac_cv_guix_cbips_support_setvbuf=no
      fi])
 ])
+
+dnl GUIX_TEST_ROOT_DIRECTORY
+AC_DEFUN([GUIX_TEST_ROOT_DIRECTORY], [
+  AC_CACHE_CHECK([for unit test root directory],
+    [ac_cv_guix_test_root],
+    [ac_cv_guix_test_root="`pwd`/test-tmp"])
+])
+
+dnl 'BINPRM_BUF_SIZE' constant in Linux.  The Hurd has a limit
+dnl of about a page (see exec/hashexec.c.)
+m4_define([LINUX_HASH_BANG_LIMIT], 128)
+
+dnl Hardcoded 'sun_path' length in <sys/un.h>.
+m4_define([SOCKET_FILE_NAME_LIMIT], 108)
+
+dnl GUIX_SOCKET_FILE_NAME_LENGTH
+AC_DEFUN([GUIX_SOCKET_FILE_NAME_LENGTH], [
+  AC_CACHE_CHECK([the length of the installed socket file name],
+    [ac_cv_guix_socket_file_name_length],
+    [ac_cv_guix_socket_file_name_length="`echo -n "$guix_localstatedir/guix/daemon-socket/socket" | wc -c`"])
+])
+
+dnl GUIX_TEST_SOCKET_FILE_NAME_LENGTH
+AC_DEFUN([GUIX_TEST_SOCKET_FILE_NAME_LENGTH], [
+  AC_REQUIRE([GUIX_TEST_ROOT_DIRECTORY])
+  AC_CACHE_CHECK([the length of the socket file name used in tests],
+    [ac_cv_guix_test_socket_file_name_length],
+    [ac_cv_guix_test_socket_file_name_length="`echo -n "$ac_cv_guix_test_root/var/123456/daemon-socket/socket" | wc -c`"])
+])
+
+dnl GUIX_HASH_BANG_LENGTH
+AC_DEFUN([GUIX_HASH_BANG_LENGTH], [
+  AC_CACHE_CHECK([the length of a typical hash bang line],
+    [ac_cv_guix_hash_bang_length],
+    [ac_cv_guix_hash_bang_length=`echo -n "$storedir/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bootstrap-binaries-0/bin/bash" | wc -c`])
+])
+
+dnl GUIX_CHECK_FILE_NAME_LIMITS
+dnl
+dnl GNU/Linux has a couple of silly limits that we can easily run into.
+dnl Make sure everything is fine with the current settings.
+AC_DEFUN([GUIX_CHECK_FILE_NAME_LIMITS], [
+  AC_REQUIRE([GUIX_SOCKET_FILE_NAME_LENGTH])
+  AC_REQUIRE([GUIX_TEST_SOCKET_FILE_NAME_LENGTH])
+  AC_REQUIRE([GUIX_HASH_BANG_LENGTH])
+
+  if test "$ac_cv_guix_socket_file_name_length" -ge ]SOCKET_FILE_NAME_LIMIT[; then
+    AC_MSG_ERROR([socket file name would exceed the maxium allowed length])
+  fi
+  if test "$ac_cv_guix_test_socket_file_name_length" -ge ]SOCKET_FILE_NAME_LIMIT[; then
+    AC_MSG_WARN([socket file name limit may be exceeded when running tests])
+  fi
+  if test "$ac_cv_guix_hash_bang_length" -ge ]LINUX_HASH_BANG_LIMIT[; then
+    AC_MSG_ERROR([store directory '$storedir' would lead to overly long hash-bang lines])
+  fi
+])
diff --git a/test-env.in b/test-env.in
index f66a0db555..a7f506ec19 100644
--- a/test-env.in
+++ b/test-env.in
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 #
 # This file is part of GNU Guix.
 #
@@ -52,6 +52,13 @@ then
     # Currently, in Nix builds, we're at ~106 chars...
     NIX_STATE_DIR="@GUIX_TEST_ROOT@/var/$$"
 
+    # We can't exit when we reach the limit, because perhaps the test doesn't
+    # actually rely on the daemon, but at least warn.
+    if test "`echo -n "$NIX_STATE_DIR/daemon-socket/socket" | wc -c`" -ge 108
+    then
+	echo "warning: exceeding socket file name limit; test may fail!" >&2
+    fi
+
     # The configuration directory, for import/export signing keys.
     NIX_CONF_DIR="@GUIX_TEST_ROOT@/etc"
     if [ ! -d "$NIX_CONF_DIR" ]
diff --git a/tests/builders.scm b/tests/builders.scm
index e5acc3e038..a7c3e42830 100644
--- a/tests/builders.scm
+++ b/tests/builders.scm
@@ -56,16 +56,13 @@
                 (package-native-search-paths package)))
               (@@ (gnu packages commencement) %boot0-inputs)))
 
-(define network-reachable?
-  (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)))
-
 (define url-fetch*
   (store-lower url-fetch))
 
 
 (test-begin "builders")
 
-(unless network-reachable? (test-skip 1))
+(unless (network-reachable?) (test-skip 1))
 (test-assert "url-fetch"
   (let* ((url      '("http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"
                      "ftp://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz"))
@@ -97,7 +94,8 @@
 (test-assert "gnu-build-system"
   (build-system? gnu-build-system))
 
-(unless network-reachable? (test-skip 1))
+(when (or (not (network-reachable?)) (shebang-too-long?))
+  (test-skip 1))
 (test-assert "gnu-build"
   (let* ((url      "http://ftp.gnu.org/gnu/hello/hello-2.8.tar.gz")
          (hash     (nix-base32-string->bytevector
diff --git a/tests/cpan.scm b/tests/cpan.scm
index af7b36e684..2f9513519e 100644
--- a/tests/cpan.scm
+++ b/tests/cpan.scm
@@ -28,15 +28,8 @@
   "{
   \"metadata\" : {
     \"prereqs\" : {
-      \"configure\" : {
-        \"requires\" : {
-          \"ExtUtils::MakeMaker\" : \"0\",
-          \"Module::Build\" : \"0.28\"
-        }
-      },
       \"runtime\" : {
         \"requires\" : {
-          \"Getopt::Std\" : \"0\",
           \"Test::Script\" : \"1.05\",
         }
       }
@@ -70,6 +63,8 @@
                 (match url
                   ("http://api.metacpan.org/release/Foo-Bar"
                    test-json)
+                  ("http://api.metacpan.org/module/Test::Script"
+                   "{ \"distribution\" : \"Test-Script\" }")
                   ("http://example.com/Foo-Bar-0.1.tar.gz"
                    test-source)
                   (_ (error "Unexpected URL: " url))))))))
@@ -85,16 +80,13 @@
                      ('base32
                       (? string? hash)))))
          ('build-system 'perl-build-system)
-         ('native-inputs
-          ('quasiquote
-           (("perl-module-build" ('unquote 'perl-module-build)))))
          ('inputs
           ('quasiquote
            (("perl-test-script" ('unquote 'perl-test-script)))))
          ('home-page "http://search.cpan.org/dist/Foo-Bar")
          ('synopsis "Fizzle Fuzz")
          ('description 'fill-in-yourself!)
-         ('license 'gpl1+))
+         ('license (package-license perl)))
        (string=? (bytevector->nix-base32-string
                   (call-with-input-string test-source port-sha256))
                  hash))
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 80aabad3a8..72d253c465 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -463,7 +463,7 @@
 
 (define %coreutils
   (false-if-exception
-   (and (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)
+   (and (network-reachable?)
         (or (package-derivation %store %bootstrap-coreutils&co)
             (nixpkgs-derivation "coreutils")))))
 
@@ -670,23 +670,6 @@
          (let ((p (derivation->output-path drv)))
            (string-contains (call-with-input-file p read-line) "GNU")))))
 
-(test-assert "imported-files"
-  (let* ((files    `(("x"     . ,(search-path %load-path "ice-9/q.scm"))
-                     ("a/b/c" . ,(search-path %load-path
-                                              "guix/derivations.scm"))
-                     ("p/q"   . ,(search-path %load-path "guix.scm"))
-                     ("p/z"   . ,(search-path %load-path "guix/store.scm"))))
-         (drv      (imported-files %store files)))
-    (and (build-derivations %store (list drv))
-         (let ((dir (derivation->output-path drv)))
-           (every (match-lambda
-                   ((path . source)
-                    (equal? (call-with-input-file (string-append dir "/" path)
-                              get-bytevector-all)
-                            (call-with-input-file source
-                              get-bytevector-all))))
-                  files)))))
-
 (test-assert "build-expression->derivation with modules"
   (let* ((builder  `(begin
                       (use-modules (guix build utils))
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 03722e4669..0b189b570b 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -249,6 +249,23 @@
                  (equal? refs (list (dirname (dirname guile))))
                  (equal? refs2 (list file))))))
 
+(test-assertm "gexp->derivation vs. grafts"
+  (mlet* %store-monad ((p0 ->   (dummy-package "dummy"
+                                               (arguments
+                                                '(#:implicit-inputs? #f))))
+                       (r  ->   (package (inherit p0) (name "DuMMY")))
+                       (p1 ->   (package (inherit p0) (replacement r)))
+                       (exp0 -> (gexp (frob (ungexp p0) (ungexp output))))
+                       (exp1 -> (gexp (frob (ungexp p1) (ungexp output))))
+                       (void    (set-guile-for-build %bootstrap-guile))
+                       (drv0    (gexp->derivation "t" exp0))
+                       (drv1    (gexp->derivation "t" exp1))
+                       (drv1*   (gexp->derivation "t" exp1 #:graft? #f)))
+    (return (and (not (string=? (derivation->output-path drv0)
+                                (derivation->output-path drv1)))
+                 (string=? (derivation->output-path drv0)
+                           (derivation->output-path drv1*))))))
+
 (test-assertm "gexp->derivation, composed gexps"
   (mlet* %store-monad ((exp0 -> (gexp (begin
                                         (mkdir (ungexp output))
@@ -360,6 +377,40 @@
                      (string=? (readlink (string-append out "/" two "/one"))
                                one)))))))
 
+(test-assertm "imported-files"
+  (mlet* %store-monad
+      ((files -> `(("x"     . ,(search-path %load-path "ice-9/q.scm"))
+                   ("a/b/c" . ,(search-path %load-path
+                                            "guix/derivations.scm"))
+                   ("p/q"   . ,(search-path %load-path "guix.scm"))
+                   ("p/z"   . ,(search-path %load-path "guix/store.scm"))))
+       (drv (imported-files files)))
+    (mbegin %store-monad
+      (built-derivations (list drv))
+      (let ((dir (derivation->output-path drv)))
+        (return
+         (every (match-lambda
+                 ((path . source)
+                  (equal? (call-with-input-file (string-append dir "/" path)
+                            get-bytevector-all)
+                          (call-with-input-file source
+                            get-bytevector-all))))
+                files))))))
+
+(test-assertm "gexp->derivation #:modules"
+  (mlet* %store-monad
+      ((build ->  #~(begin
+                      (use-modules (guix build utils))
+                      (mkdir-p (string-append #$output "/guile/guix/nix"))
+                      #t))
+       (drv       (gexp->derivation "test-with-modules" build
+                                    #:modules '((guix build utils)))))
+    (mbegin %store-monad
+      (built-derivations (list drv))
+      (let* ((p (derivation->output-path drv))
+             (s (stat (string-append p "/guile/guix/nix"))))
+        (return (eq? (stat:type s) 'directory))))))
+
 (test-assertm "gexp->derivation #:references-graphs"
   (mlet* %store-monad
       ((one (text-file "one" "hello, world"))
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index d4917bbf90..94cf927420 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -28,6 +28,14 @@ readlink_base ()
     basename `readlink "$1"`
 }
 
+# Return true if a typical shebang in the store would not exceed Linux's
+# default static limit.
+shebang_not_too_long ()
+{
+    test `echo $NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bootstrap-binaries-0/bin/bash | wc -c` \
+	 -lt 128
+}
+
 module_dir="t-guix-package-$$"
 profile="t-profile-$$"
 rm -f "$profile"
@@ -55,8 +63,9 @@ test -f "$profile/bin/guile"
 guix package --search-paths -p "$profile"
 test "`guix package --search-paths -p "$profile" | wc -l`" = 0
 
-# Check whether we have network access.
-if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null
+# Check whether we have network access and an acceptable shebang length.
+if guile -c '(getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)' 2> /dev/null \
+	 && shebang_not_too_long
 then
     boot_make="(@@ (gnu packages commencement) gnu-make-boot0)"
     boot_make_drv="`guix build -e "$boot_make" | grep -v -e -debug`"
diff --git a/tests/packages.scm b/tests/packages.scm
index 851520b343..d6371b3b49 100644
--- a/tests/packages.scm
+++ b/tests/packages.scm
@@ -176,8 +176,7 @@
     (and (direct-store-path? source)
          (string-suffix? "utils.scm" source))))
 
-(unless (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV))
-  (test-skip 1))
+(unless (network-reachable?) (test-skip 1))
 (test-equal "package-source-derivation, snippet"
   "OK"
   (let* ((file   (search-bootstrap-binary "guile-2.0.9.tar.xz"
@@ -532,7 +531,7 @@
                      (%current-target-system "foo64-linux-gnu"))
         (equal? drv (bag->derivation %store bag))))))
 
-(unless (false-if-exception (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV))
+(when (or (not (network-reachable?)) (shebang-too-long?))
   (test-skip 1))
 (test-assert "GNU Make, bootstrap"
   ;; GNU Make is the first program built during bootstrap; we choose it
diff --git a/tests/ui.scm b/tests/ui.scm
index 25fc709431..1478fe213e 100644
--- a/tests/ui.scm
+++ b/tests/ui.scm
@@ -22,6 +22,8 @@
   #:use-module (guix profiles)
   #:use-module (guix store)
   #:use-module (guix derivations)
+  #:use-module ((guix scripts build)
+                #:select (%standard-build-options))
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-19)
@@ -52,9 +54,43 @@ interface, and powerful string processing.")
     (item "/gnu/store/...")
     (output "out")))
 
+(define-syntax-rule (with-environment-variable variable value body ...)
+  "Run BODY with VARIABLE set to VALUE."
+  (let ((orig (getenv variable)))
+    (dynamic-wind
+      (lambda ()
+        (setenv variable value))
+      (lambda ()
+        body ...)
+      (lambda ()
+        (if orig
+            (setenv variable orig)
+            (unsetenv variable))))))
+
 
 (test-begin "ui")
 
+(test-equal "parse-command-line"
+  '((argument . "bar") (argument . "foo")
+    (cores . 10)                                  ;takes precedence
+    (substitutes? . #f) (keep-failed? . #t)
+    (max-jobs . 77) (cores . 42))
+
+  (with-environment-variable "GUIX_BUILD_OPTIONS" "-c 42 -M 77"
+    (parse-command-line '("--keep-failed" "--no-substitutes"
+                          "--cores=10" "foo" "bar")
+                        %standard-build-options
+                        (list '()))))
+
+(test-equal "parse-command-line and --no options"
+  '((argument . "foo")
+    (substitutes? . #f))                          ;takes precedence
+
+  (with-environment-variable "GUIX_BUILD_OPTIONS" "--no-substitutes"
+    (parse-command-line '("foo")
+                        %standard-build-options
+                        (list '((substitutes? . #t))))))
+
 (test-assert "fill-paragraph"
   (every (lambda (column)
            (every (lambda (width)
@@ -246,3 +282,7 @@ Second line" 24))
 
 
 (exit (= (test-runner-fail-count (test-runner-current)) 0))
+
+;;; Local Variables:
+;;; eval: (put 'with-environment-variable 'scheme-indent-function 2)
+;;; End:
diff --git a/tests/union.scm b/tests/union.scm
index 7e55670b86..22ba67ce99 100644
--- a/tests/union.scm
+++ b/tests/union.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -84,9 +84,7 @@
                           (call-with-input-file "bar/two" get-string-all))
                 (not (file-exists? "bar/one")))))))
 
-(test-skip (if (and %store
-                    (false-if-exception
-                     (getaddrinfo "www.gnu.org" "80" AI_NUMERICSERV)))
+(test-skip (if (and %store (network-reachable?))
                0
                1))