summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--Makefile.am45
-rw-r--r--build-aux/hydra/guix.scm28
-rw-r--r--configure.ac5
-rw-r--r--daemon.am6
-rw-r--r--doc.am16
-rw-r--r--doc/guix.texi91
-rw-r--r--doc/images/bootstrap-packages.dot105
-rw-r--r--emacs/guix-command.el1
-rw-r--r--emacs/guix-emacs.el21
-rw-r--r--emacs/guix-init.el13
-rw-r--r--emacs/guix-main.scm1
-rw-r--r--emacs/guix-pcomplete.el7
-rw-r--r--emacs/guix-ui-package.el19
-rw-r--r--gnu-system.am17
-rw-r--r--gnu/build/linux-boot.scm3
-rw-r--r--gnu/build/linux-modules.scm2
-rw-r--r--gnu/packages/admin.scm13
-rw-r--r--gnu/packages/algebra.scm6
-rw-r--r--gnu/packages/audio.scm24
-rw-r--r--gnu/packages/bdw-gc.scm2
-rw-r--r--gnu/packages/bioinformatics.scm692
-rw-r--r--gnu/packages/boost.scm56
-rw-r--r--gnu/packages/code.scm28
-rw-r--r--gnu/packages/commencement.scm5
-rw-r--r--gnu/packages/ebook.scm6
-rw-r--r--gnu/packages/emacs.scm45
-rw-r--r--gnu/packages/gnome.scm4
-rw-r--r--gnu/packages/gnuzilla.scm9
-rw-r--r--gnu/packages/graphics.scm3
-rw-r--r--gnu/packages/gtk.scm18
-rw-r--r--gnu/packages/java.scm127
-rw-r--r--gnu/packages/julia.scm129
-rw-r--r--gnu/packages/kodi.scm2
-rw-r--r--gnu/packages/ldc.scm118
-rw-r--r--gnu/packages/libreoffice.scm15
-rw-r--r--gnu/packages/linux-libre-i686.conf220
-rw-r--r--gnu/packages/linux-libre-x86_64.conf252
-rw-r--r--gnu/packages/linux.scm12
-rw-r--r--gnu/packages/man.scm15
-rw-r--r--gnu/packages/maths.scm14
-rw-r--r--gnu/packages/package-management.scm6
-rw-r--r--gnu/packages/patches/asymptote-gsl2.patch33
-rw-r--r--gnu/packages/patches/bedtools-32bit-compilation.patch171
-rw-r--r--gnu/packages/patches/boost-mips-avoid-m32.patch15
-rw-r--r--gnu/packages/patches/csound-header-ordering.patch20
-rw-r--r--gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch46
-rw-r--r--gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch38
-rw-r--r--gnu/packages/patches/julia-0.3.10-fix-empty-array.patch13
-rw-r--r--gnu/packages/patches/ldc-disable-tests.patch90
-rw-r--r--gnu/packages/patches/libcmis-fix-test-onedrive.patch35
-rw-r--r--gnu/packages/patches/nss-pkgconfig.patch27
-rw-r--r--gnu/packages/patches/openimageio-boost-1.60.patch47
-rw-r--r--gnu/packages/patches/sudo-CVE-2015-5602.patch372
-rw-r--r--gnu/packages/patches/w3m-disable-sslv2-and-sslv3.patch24
-rw-r--r--gnu/packages/patches/w3m-disable-weak-ciphers.patch24
-rw-r--r--gnu/packages/patches/w3m-fix-compile.patch15
-rw-r--r--gnu/packages/patches/w3m-force-ssl_verify_server-on.patch24
-rw-r--r--gnu/packages/patches/w3m-libgc.patch28
-rw-r--r--gnu/packages/plotutils.scm71
-rw-r--r--gnu/packages/ruby.scm42
-rw-r--r--gnu/packages/samba.scm8
-rw-r--r--gnu/packages/skribilo.scm9
-rw-r--r--gnu/packages/statistics.scm450
-rw-r--r--gnu/packages/texlive.scm119
-rw-r--r--gnu/packages/textutils.scm46
-rw-r--r--gnu/packages/video.scm6
-rw-r--r--gnu/packages/w3m.scm7
-rw-r--r--gnu/packages/webkit.scm6
-rw-r--r--gnu/packages/xml.scm25
-rw-r--r--gnu/packages/xorg.scm5
-rw-r--r--gnu/services.scm69
-rw-r--r--gnu/system.scm8
-rw-r--r--guix/build-system/gnu.scm16
-rw-r--r--guix/build-system/python.scm9
-rw-r--r--guix/build/git.scm43
-rw-r--r--guix/build/pull.scm149
-rw-r--r--guix/build/ruby-build-system.scm19
-rw-r--r--guix/http-client.scm26
-rw-r--r--guix/import/cran.scm46
-rw-r--r--guix/monad-repl.scm22
-rw-r--r--guix/scripts/lint.scm13
-rw-r--r--guix/scripts/package.scm33
-rw-r--r--guix/ui.scm4
-rw-r--r--guix/utils.scm42
-rw-r--r--m4/guix.m427
-rw-r--r--tests/guix-package.sh20
-rw-r--r--tests/utils.scm10
88 files changed, 3582 insertions, 994 deletions
diff --git a/.gitignore b/.gitignore
index 412d09ca11..098c9bb65c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -134,3 +134,6 @@ GTAGS
 /doc/images/service-graph.eps
 /doc/images/service-graph.pdf
 /doc/images/dmd-graph.png
+/doc/images/bootstrap-packages.png
+/doc/images/bootstrap-packages.eps
+/doc/images/bootstrap-packages.pdf
diff --git a/Makefile.am b/Makefile.am
index 760caed859..6e9deeb3d8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2013 Andreas Enge <andreas@enge.fr>
 # Copyright © 2015 Alex Kost <alezost@gmail.com>
 #
@@ -135,6 +135,18 @@ MODULES =					\
   guix.scm					\
   $(GNU_SYSTEM_MODULES)
 
+if HAVE_GUILE_JSON
+
+MODULES +=					\
+  guix/import/json.scm				\
+  guix/import/pypi.scm				\
+  guix/scripts/import/pypi.scm			\
+  guix/import/cpan.scm				\
+  guix/scripts/import/gem.scm			\
+  guix/import/gem.scm
+
+endif
+
 if BUILD_SYSCALLS_MODULE
 
 MODULES +=					\
@@ -191,6 +203,11 @@ clean-go:
 	-$(RM) -f $(GOBJECTS)
 
 
+# Test extensions; has to be unconditional.
+TEST_EXTENSIONS = .scm .sh
+
+if CAN_RUN_TESTS
+
 SCM_TESTS =					\
   tests/base32.scm				\
   tests/base64.scm				\
@@ -233,14 +250,6 @@ SCM_TESTS =					\
 
 if HAVE_GUILE_JSON
 
-MODULES +=					\
-  guix/import/json.scm				\
-  guix/import/pypi.scm				\
-  guix/scripts/import/pypi.scm			\
-  guix/import/cpan.scm				\
-  guix/scripts/import/gem.scm			\
-  guix/import/gem.scm
-
 SCM_TESTS += 					\
   tests/pypi.scm				\
   tests/cpan.scm				\
@@ -272,8 +281,6 @@ endif BUILD_DAEMON
 
 TESTS = $(SCM_TESTS) $(SH_TESTS)
 
-TEST_EXTENSIONS = .scm .sh
-
 AM_TESTS_ENVIRONMENT = abs_top_srcdir="$(abs_top_srcdir)"
 
 SCM_LOG_COMPILER = $(top_builddir)/test-env $(GUILE)
@@ -289,6 +296,22 @@ tests/guix-gc.log:							\
   $(patsubst %.sh,%.log,$(filter-out tests/guix-gc.sh,$(SH_TESTS)))	\
   $(SCM_TESTS:%.scm=%.log)
 
+else !CAN_RUN_TESTS
+
+TESTS =
+SH_TESTS =
+SCM_TESTS =
+
+# Automake always generates a 'check' target, so better not override it.
+check-local:
+	@echo
+	@echo "Cannot run tests because file name limits would be exceeded." >&2
+	@echo "Look for 'length' in the 'config.log' file for details." >&2
+	@echo
+	@exit 1
+
+endif !CAN_RUN_TESTS
+
 # Public key used to sign substitutes from hydra.gnu.org.
 dist_pkgdata_DATA = hydra.gnu.org.pub
 
diff --git a/build-aux/hydra/guix.scm b/build-aux/hydra/guix.scm
index a6f7923fb8..f496357562 100644
--- a/build-aux/hydra/guix.scm
+++ b/build-aux/hydra/guix.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -47,6 +47,7 @@
              (guix build-system gnu)
              (gnu packages version-control)
              (gnu packages package-management)
+             (gnu packages imagemagick)
              (gnu packages graphviz)
              (gnu packages man)
              (srfi srfi-1)
@@ -72,12 +73,25 @@
 (define (tarball-package checkout)
   "Return a package that does `make distcheck' from CHECKOUT, a directory
 containing a Git checkout of Guix."
-  (dist-package (package
-                  (inherit guix)
-                  (native-inputs `(("graphviz" ,graphviz)
-                                   ("help2man" ,help2man)
-                                   ,@(package-native-inputs guix))))
-                checkout))
+  (let ((guix (@@ (gnu packages package-management) guix)))
+    (dist-package (package
+                    (inherit guix)
+                    (arguments (package-arguments guix))
+                    (native-inputs `(("imagemagick" ,imagemagick)
+                                     ,@(package-native-inputs guix))))
+                  checkout
+
+                  #:phases
+                  '(modify-phases %dist-phases
+                     (add-before 'build 'build-daemon
+                       ;; Build 'guix-daemon' first so that help2man
+                       ;; successfully creates 'guix-daemon.1'.
+                       (lambda _
+                         (let ((n (number->string
+                                   (parallel-job-count))))
+                           (zero? (system* "make"
+                                           "nix/libstore/schema.sql.hh"
+                                           "guix-daemon" "-j" n)))))))))
 
 (define (hydra-jobs store arguments)
   "Return Hydra jobs."
diff --git a/configure.ac b/configure.ac
index 19efd08e64..f61c04cac8 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.9.0], [bug-guix@gnu.org], [guix],
+AC_INIT([GNU Guix], [0.9.1], [bug-guix@gnu.org], [guix],
   [http://www.gnu.org/software/guix/])
 AC_CONFIG_AUX_DIR([build-aux])
 
@@ -60,7 +60,8 @@ AC_SUBST([guix_localstatedir])
 AC_SUBST([guix_sysconfdir])
 AC_SUBST([guix_sbindir])
 
-GUIX_CHECK_FILE_NAME_LIMITS
+GUIX_CHECK_FILE_NAME_LIMITS([can_run_tests])
+AM_CONDITIONAL([CAN_RUN_TESTS], [test "x$can_run_tests" = "xyes"])
 
 dnl We require pkg.m4 (from pkg-config) and guile.m4 (from Guile.)
 dnl Make sure they are available.
diff --git a/daemon.am b/daemon.am
index 324164359c..ba4be50068 100644
--- a/daemon.am
+++ b/daemon.am
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 #
 # This file is part of GNU Guix.
 #
@@ -208,12 +208,16 @@ EXTRA_DIST +=					\
   etc/guix-daemon.service.in	\
   etc/guix-daemon.conf.in
 
+if CAN_RUN_TESTS
+
 AM_TESTS_ENVIRONMENT +=				\
   top_builddir="$(abs_top_builddir)"
 
 TESTS +=					\
   tests/guix-daemon.sh
 
+endif CAN_RUN_TESTS
+
 clean-local:
 	-if test -d "$(GUIX_TEST_ROOT)"; then		\
 	  find "$(GUIX_TEST_ROOT)" | xargs chmod +w;	\
diff --git a/doc.am b/doc.am
index e3a91cc36d..f15efcc33c 100644
--- a/doc.am
+++ b/doc.am
@@ -1,6 +1,7 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2013 Andreas Enge <andreas@enge.fr>
+# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 #
 # This file is part of GNU Guix.
 #
@@ -21,6 +22,7 @@ info_TEXINFOS = doc/guix.texi
 
 DOT_FILES =					\
   doc/images/bootstrap-graph.dot		\
+  doc/images/bootstrap-packages.dot		\
   doc/images/coreutils-graph.dot		\
   doc/images/coreutils-bag-graph.dot		\
   doc/images/service-graph.dot			\
@@ -65,16 +67,16 @@ DOT_OPTIONS =					\
   -Nfontsize=9 -Nheight=.1 -Nwidth=.1
 
 .dot.png:
-	$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$@.tmp"
-	mv "$@.tmp" "$@"
+	$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
+	mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .dot.pdf:
-	$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$@.tmp"
-	mv "$@.tmp" "$@"
+	$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
+	mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .dot.eps:
-	$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$@.tmp"
-	mv "$@.tmp" "$@"
+	$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
+	mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
 
 .png.eps:
 	convert "$<" "$@-tmp.eps"
diff --git a/doc/guix.texi b/doc/guix.texi
index f155fbe818..e583e8c389 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10,7 +10,7 @@
 @include version.texi
 
 @copying
-Copyright @copyright{} 2012, 2013, 2014, 2015 Ludovic Courtès@*
+Copyright @copyright{} 2012, 2013, 2014, 2015, 2016 Ludovic Courtès@*
 Copyright @copyright{} 2013, 2014 Andreas Enge@*
 Copyright @copyright{} 2013 Nikita Karetnikov@*
 Copyright @copyright{} 2015 Mathieu Lirzin@*
@@ -1016,7 +1016,7 @@ Manual}).  There are two important differences though:
 @item
 @code{GUIX_LOCPATH} is honored only by Guix's libc, and not by the libc
 provided by foreign distros.  Thus, using @code{GUIX_LOCPATH} allows you
-to make sure the the foreign distro's programs will not end up loading
+to make sure the foreign distro's programs will not end up loading
 incompatible locale data.
 
 @item
@@ -1434,6 +1434,7 @@ availability of packages:
 
 @item --search=@var{regexp}
 @itemx -s @var{regexp}
+@cindex searching for packages
 List the available packages whose name, synopsis, or description matches
 @var{regexp}.  Print all the meta-data of matching packages in
 @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils,
@@ -1462,6 +1463,34 @@ name: gmp
 @dots{}
 @end example
 
+It is also possible to refine search results using several @code{-s}
+flags.  For example, the following command returns a list of board
+games:
+
+@example
+$ guix package -s '\<board\>' -s game | recsel -p name
+name: gnubg
+@dots{}
+@end example
+
+If we were to omit @code{-s game}, we would also get software packages
+that deal with printed circuit boards; removing the angle brackets
+around @code{board} would further add packages that have to do with
+keyboards.
+
+And now for a more elaborate example.  The following command searches
+for cryptographic libraries, filters out Haskell, Perl, Python, and Ruby
+libraries, and prints the name and synopsis of the matching packages:
+
+@example
+$ guix package -s crypto -s library | \
+    recsel -e '! (name ~ "^(ghc|perl|python|ruby)")' -p name,synopsis
+@end example
+
+@noindent
+@xref{Selection Expressions,,, recutils, GNU recutils manual}, for more
+information on @dfn{selection expressions} for @code{recsel -e}.
+
 @item --show=@var{package}
 Show details about @var{package}, taken from the list of available packages, in
 @code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU
@@ -2527,7 +2556,7 @@ by the @code{#:configure-flags} argument.
 
 @item build
 Run @code{make} with the list of flags specified with
-@code{#:make-flags}.  If the @code{#:parallel-builds?} argument is true
+@code{#:make-flags}.  If the @code{#:parallel-build?} argument is true
 (the default), build with @code{make -j}.
 
 @item check
@@ -6464,7 +6493,7 @@ A file-like object containing the ``message of the day''.
 
 @item @code{auto-login} (default: @code{#f})
 When true, this field must be a string denoting the user name under
-which the the system automatically logs in.  When it is @code{#f}, a
+which the system automatically logs in.  When it is @code{#f}, a
 user name and password must be entered to log in.
 
 @item @code{login-program} (default: @code{#f})
@@ -6685,6 +6714,13 @@ several commands to interact with the daemon and configure networking:
 and @command{wicd-curses} user interfaces.
 @end deffn
 
+@cindex NetworkManager
+@deffn {Scheme Procedure} network-manager-service @
+       [#:network-manager @var{network-manager}]
+Return a service that runs NetworkManager, a network connection manager
+that attempting to keep active network connectivity when available.
+@end deffn
+
 @deffn {Scheme Procedure} ntp-service [#:ntp @var{ntp}] @
   [#:name-service @var{%ntp-servers}]
 Return a service that runs the daemon from @var{ntp}, the
@@ -7261,7 +7297,7 @@ Defaults to @samp{"0600"}.
 @end deftypevr
 
 @deftypevr {@code{unix-listener-configuration} parameter} string user
-The user to own the the socket.
+The user to own the socket.
 Defaults to @samp{""}.
 @end deftypevr
 
@@ -7283,7 +7319,7 @@ Defaults to @samp{"0600"}.
 @end deftypevr
 
 @deftypevr {@code{fifo-listener-configuration} parameter} string user
-The user to own the the socket.
+The user to own the socket.
 Defaults to @samp{""}.
 @end deftypevr
 
@@ -10131,7 +10167,16 @@ re-create them if needed (more on that later).
 
 The figure above shows the very beginning of the dependency graph of the
 distribution, corresponding to the package definitions of the @code{(gnu
-packages bootstrap)} module.  At this level of detail, things are
+packages bootstrap)} module.  A similar figure can be generated with
+@command{guix graph} (@pxref{Invoking guix graph}), along the lines of:
+
+@example
+guix graph -t derivation \
+  -e '(@@@@ (gnu packages bootstrap) %bootstrap-gcc)' \
+  | dot -Tps > t.ps
+@end example
+
+At this level of detail, things are
 slightly complex.  First, Guile itself consists of an ELF executable,
 along with many source and compiled Scheme files that are dynamically
 loaded when it runs.  This gets stored in the @file{guile-2.0.7.tar.xz}
@@ -10167,9 +10212,6 @@ etc., at which point we have a working C tool chain.
 
 @unnumberedsubsec Building the Build Tools
 
-@c TODO: Add a package-level dependency graph generated from (gnu
-@c packages base).
-
 Bootstrapping is complete when we have a full tool chain that does not
 depend on the pre-built bootstrap tools discussed above.  This
 no-dependency requirement is verified by checking whether the files of
@@ -10178,17 +10220,40 @@ directories of the bootstrap inputs.  The process that leads to this
 ``final'' tool chain is described by the package definitions found in
 the @code{(gnu packages commencement)} module.
 
+The @command{guix graph} command allows us to ``zoom out'' compared to
+the graph above, by looking at the level of package objects instead of
+individual derivations---remember that a package may translate to
+several derivations, typically one derivation to download its source,
+one to build the Guile modules it needs, and one to actually build the
+package from source.  The command:
+
+@example
+guix graph -t bag \
+  -e '(@@@@ (gnu packages commencement)
+          glibc-final-with-bootstrap-bash)' | dot -Tps > t.ps
+@end example
+
+@noindent
+produces the dependency graph leading to the ``final'' C
+library@footnote{You may notice the @code{glibc-intermediate} label,
+suggesting that it is not @emph{quite} final, but as a good
+approximation, we will consider it final.}, depicted below.
+
+@image{images/bootstrap-packages,6in,,Dependency graph of the early packages}
+
 @c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>.
 The first tool that gets built with the bootstrap binaries is
-GNU Make, which is a prerequisite for all the following packages.
-From there Findutils and Diffutils get built.
+GNU@tie{}Make---noted @code{make-boot0} above---which is a prerequisite
+for all the following packages.  From there Findutils and Diffutils get
+built.
 
 Then come the first-stage Binutils and GCC, built as pseudo cross
 tools---i.e., with @code{--target} equal to @code{--host}.  They are
 used to build libc.  Thanks to this cross-build trick, this libc is
 guaranteed not to hold any reference to the initial tool chain.
 
-From there the final Binutils and GCC are built.  GCC uses @code{ld}
+From there the final Binutils and GCC (not shown above) are built.
+GCC uses @code{ld}
 from the final Binutils, and links programs against the just-built libc.
 This tool chain is used to build the other packages used by Guix and by
 the GNU Build System: Guile, Bash, Coreutils, etc.
diff --git a/doc/images/bootstrap-packages.dot b/doc/images/bootstrap-packages.dot
new file mode 100644
index 0000000000..3d64521edf
--- /dev/null
+++ b/doc/images/bootstrap-packages.dot
@@ -0,0 +1,105 @@
+digraph "Guix bag" {
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" [label = "glibc-intermediate-2.22", shape = box, fontname = Helvetica];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/rkm2xr9581hfvcimz6a8xav2s5vfjciv-glibc-intermediate-2.22.drv" -> "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" [label = "texinfo-6.0", shape = box, fontname = Helvetica];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/r5bbwfhkj6c65mlfki4vgb0xczm3qmlg-texinfo-6.0.drv" -> "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" [color = red];
+  "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [label = "make-boot0-4.1", shape = box, fontname = Helvetica];
+  "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0", shape = box, fontname = Helvetica];
+  "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0", shape = box, fontname = Helvetica];
+  "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [label = "binutils-bootstrap-0", shape = box, fontname = Helvetica];
+  "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [label = "bootstrap-binaries-0", shape = box, fontname = Helvetica];
+  "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [label = "diffutils-boot0-3.3", shape = box, fontname = Helvetica];
+  "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" [label = "findutils-boot0-4.6.0", shape = box, fontname = Helvetica];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" -> "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [color = red];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" [label = "file-boot0-5.25", shape = box, fontname = Helvetica];
+  "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" [label = "perl-boot0-5.22.0", shape = box, fontname = Helvetica];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" [label = "gcc-cross-boot0-4.9.3", shape = box, fontname = Helvetica];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/fxzy6h3c9ls97lw9wgv9m5w2ga7mw0kk-gcc-cross-boot0-4.9.3.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" [label = "binutils-cross-boot0-2.25.1", shape = box, fontname = Helvetica];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/bhv3jml5s1llmsswnw3wvw57dj44lgjc-binutils-cross-boot0-2.25.1.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" [label = "linux-libre-headers-3.14.37", shape = box, fontname = Helvetica];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/w88h2mp610hy4i8758bhq6nrjlilzsym-perl-boot0-5.22.0.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/yzr9lpl44ixp4k2g7r6sh4fhsx2qx9vd-make-boot0-4.1.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/hwk4rrydk5amqw5xws5p34gi77j0m7m2-diffutils-boot0-3.3.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/xf07iqpsiygw2z8rvwdf19zjdlhrl03q-findutils-boot0-4.6.0.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/b33cj0h9ii7lnk233sy5q4hlz36cx5x3-file-boot0-5.25.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/dmj22s341y334xwwkimrz4d3d0a4mzdp-glibc-bootstrap-0.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/wp4gm50d3jyzxr9pj5b43j05ildh4mfq-gcc-bootstrap-0.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/sd2k1ljlzpkp3n5rk5y3dp2l73h3qkpp-binutils-bootstrap-0.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+  "/gnu/store/2m0i57ad07cmgxh3ij89d4lmf7lngpdz-linux-libre-headers-3.14.37.drv" -> "/gnu/store/xyzv7w42bxs5zhs6b5a9s7gbiq571psm-bootstrap-binaries-0.drv" [color = red];
+
+}
diff --git a/emacs/guix-command.el b/emacs/guix-command.el
index 9cb7032abc..cf72b0ea15 100644
--- a/emacs/guix-command.el
+++ b/emacs/guix-command.el
@@ -192,6 +192,7 @@ to be modified."
 (guix-command-define-argument-improver
     guix-command-improve-build-argument
   '(("--no-grafts"   :char ?g)
+    ("--file"        :fun guix-read-file-name)
     ("--root"        :fun guix-read-file-name)
     ("--sources"     :char ?S :fun guix-read-source-type :switch? nil)
     ("--with-source" :fun guix-read-file-name)))
diff --git a/emacs/guix-emacs.el b/emacs/guix-emacs.el
index 2f809ed16e..37a0bb26d3 100644
--- a/emacs/guix-emacs.el
+++ b/emacs/guix-emacs.el
@@ -1,6 +1,6 @@
 ;;; guix-emacs.el --- Emacs packages installed with Guix
 
-;; Copyright © 2014 Alex Kost <alezost@gmail.com>
+;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
 
 ;; This file is part of GNU Guix.
 
@@ -24,8 +24,17 @@
 
 ;;; Code:
 
-(require 'guix-profiles)
 (require 'cl-lib)
+(unless (require 'guix-profiles nil t)
+  (defvar guix-user-profile (expand-file-name "~/.guix-profile")))
+
+(defcustom guix-package-enable-at-startup t
+  "If non-nil, activate Emacs packages installed in a user profile.
+Set this variable to nil before requiring `guix-emacs' file to
+avoid loading autoloads of Emacs packages installed in
+`guix-user-profile'."
+  :type 'boolean
+  :group 'guix)
 
 (defcustom guix-emacs-activate-after-operation t
   "Activate Emacs packages after installing.
@@ -90,7 +99,9 @@ Return nil if there are no emacs packages installed in PROFILE."
   "Load autoloads for Emacs packages installed in PROFILE.
 If PROFILE is nil, use `guix-user-profile'.
 Add autoloads directories to `load-path'."
-  (interactive (list (guix-profile-prompt)))
+  (interactive (list (if (fboundp 'guix-profile-prompt)
+                         (funcall 'guix-profile-prompt)
+                       guix-user-profile)))
   (let* ((autoloads     (guix-emacs-find-autoloads profile))
          (new-autoloads (cl-nset-difference autoloads
                                             guix-emacs-autoloads
@@ -114,6 +125,10 @@ See `guix-emacs-activate-after-operation' for details."
        ;; profile will not be loaded).
        (guix-emacs-load-autoloads guix-current-profile)))
 
+(when guix-package-enable-at-startup
+  (add-to-list 'load-path (guix-emacs-directory))
+  (guix-emacs-load-autoloads))
+
 (provide 'guix-emacs)
 
 ;;; guix-emacs.el ends here
diff --git a/emacs/guix-init.el b/emacs/guix-init.el
index 1da607034f..47ced6abaa 100644
--- a/emacs/guix-init.el
+++ b/emacs/guix-init.el
@@ -1,19 +1,6 @@
 (require 'guix-autoloads)
 (require 'guix-emacs)
 
-(defcustom guix-package-enable-at-startup t
-  "If non-nil, activate Emacs packages installed in a user profile.
-Set this variable to nil before requiring `guix-init' file to
-avoid loading autoloads of Emacs packages installed in
-`guix-user-profile'."
-  :type 'boolean
-  :group 'guix)
-
-(add-to-list 'load-path (guix-emacs-directory))
-
-(when guix-package-enable-at-startup
-  (guix-emacs-load-autoloads))
-
 (add-hook 'scheme-mode-hook 'guix-devel-activate-mode-maybe)
 (add-hook 'shell-mode-hook 'guix-build-log-minor-mode-activate-maybe)
 
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index 6f9eb422e0..8c38e7cae3 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -307,6 +307,7 @@ Example:
     (description       . ,package-description-string)
     (home-url          . ,package-home-page)
     (outputs           . ,package-outputs)
+    (systems           . ,package-supported-systems)
     (non-unique        . ,(negate package-unique?))
     (inputs            . ,(lambda (pkg)
                             (package-inputs-names
diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el
index 85b267a78d..785e54ef6d 100644
--- a/emacs/guix-pcomplete.el
+++ b/emacs/guix-pcomplete.el
@@ -262,7 +262,8 @@ INPUT is the current partially completed string."
         (complete (guix-pcomplete-all-packages)))
        ((option? "-p" "--profile")
         (complete* (pcomplete-dirs)))
-       ((option? "-m" "--manifest")
+       ((or (option? "-f" "--install-from-file")
+            (option? "-m" "--manifest"))
         (complete* (pcomplete-entries)))))
 
      ((and (command? "archive" "build" "size")
@@ -270,7 +271,9 @@ INPUT is the current partially completed string."
       (complete* guix-help-system-types))
 
      ((and (command? "build")
-           (option? "-r" "--root"))
+           (or (option? "-f" "--file")
+               (option? "-r" "--root")
+               (string= "--with-source" option)))
       (complete* (pcomplete-entries)))
 
      ((and (command? "graph")
diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el
index e0c98eaed6..12bfaeef68 100644
--- a/emacs/guix-ui-package.el
+++ b/emacs/guix-ui-package.el
@@ -221,11 +221,13 @@ ENTRIES is a list of package entries to get info about packages."
             (location format (format guix-package-location))
             (home-url format (format guix-url))
             (license format (format guix-package-info-license))
+            (systems format guix-package-info-insert-systems)
             (inputs format (format guix-package-input))
             (native-inputs format (format guix-package-native-input))
             (propagated-inputs format
                                (format guix-package-propagated-input)))
-  :titles '((home-url . "Home page"))
+  :titles '((home-url . "Home page")
+            (systems . "Supported systems"))
   :required '(id name version installed non-unique))
 
 (guix-info-define-interface installed-output
@@ -363,6 +365,20 @@ formatted with this string, an action button is inserted.")
    'guix-package-name
    'face 'guix-package-info-heading))
 
+(defun guix-package-info-insert-systems (systems entry)
+  "Insert supported package SYSTEMS at point."
+  (guix-info-insert-value-format
+   systems 'guix-hydra-build-system
+   'action (lambda (btn)
+             (let ((args (guix-hydra-build-latest-prompt-args
+                          :job (button-get btn 'job-name)
+                          :system (button-label btn))))
+               (apply #'guix-hydra-build-get-display
+                      'latest args)))
+   'job-name (guix-package-name-specification
+              (guix-entry-value entry 'name)
+              (guix-entry-value entry 'version))))
+
 (defmacro guix-package-info-define-insert-inputs (&optional type)
   "Define a face and a function for inserting package inputs.
 TYPE is a type of inputs.
@@ -749,6 +765,7 @@ for all ARGS."
             (location format (format guix-package-location))
             (home-url format (format guix-url))
             (license format (format guix-package-info-license))
+            (systems format guix-package-info-insert-systems)
             (inputs format (format guix-package-input))
             (native-inputs format (format guix-package-native-input))
             (propagated-inputs format
diff --git a/gnu-system.am b/gnu-system.am
index 112e404ffb..0ce1a3f015 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -174,6 +174,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/key-mon.scm			\
   gnu/packages/kodi.scm				\
   gnu/packages/language.scm			\
+  gnu/packages/ldc.scm				\
   gnu/packages/less.scm				\
   gnu/packages/lesstif.scm			\
   gnu/packages/libcanberra.scm			\
@@ -405,6 +406,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/agg-am_c_prototype.patch			\
   gnu/packages/patches/alsa-lib-mips-atomic-fix.patch		\
   gnu/packages/patches/apr-skip-getservbyname-test.patch	\
+  gnu/packages/patches/asymptote-gsl2.patch			\
   gnu/packages/patches/ath9k-htc-firmware-binutils.patch	\
   gnu/packages/patches/ath9k-htc-firmware-gcc.patch		\
   gnu/packages/patches/ath9k-htc-firmware-objcopy.patch		\
@@ -414,13 +416,11 @@ dist_patch_DATA =						\
   gnu/packages/patches/avidemux-install-to-lib.patch		\
   gnu/packages/patches/avrdude-fix-libusb.patch			\
   gnu/packages/patches/bash-completion-directories.patch	\
-  gnu/packages/patches/bedtools-32bit-compilation.patch         \
   gnu/packages/patches/bowtie-fix-makefile.patch		\
   gnu/packages/patches/bigloo-gc-shebangs.patch			\
   gnu/packages/patches/binutils-ld-new-dtags.patch		\
   gnu/packages/patches/binutils-loongson-workaround.patch	\
   gnu/packages/patches/bitlbee-configure-doc-fix.patch		\
-  gnu/packages/patches/boost-mips-avoid-m32.patch		\
   gnu/packages/patches/byobu-writable-status.patch		\
   gnu/packages/patches/calibre-drop-unrar.patch			\
   gnu/packages/patches/calibre-no-updates-dialog.patch		\
@@ -433,6 +433,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/cpufrequtils-fix-aclocal.patch		\
   gnu/packages/patches/crda-optional-gcrypt.patch		\
   gnu/packages/patches/crossmap-allow-system-pysam.patch	\
+  gnu/packages/patches/csound-header-ordering.patch		\
   gnu/packages/patches/cssc-gets-undeclared.patch               \
   gnu/packages/patches/cssc-missing-include.patch               \
   gnu/packages/patches/clucene-contribs-lib.patch               \
@@ -505,6 +506,8 @@ dist_patch_DATA =						\
   gnu/packages/patches/guile-present-coding.patch		\
   gnu/packages/patches/guile-relocatable.patch			\
   gnu/packages/patches/guile-rsvg-pkgconfig.patch		\
+  gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch	\
+  gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch	\
   gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
   gnu/packages/patches/hop-bigloo-4.0b.patch			\
   gnu/packages/patches/hop-linker-flags.patch			\
@@ -518,8 +521,8 @@ dist_patch_DATA =						\
   gnu/packages/patches/irrlicht-mesa-10.patch			\
   gnu/packages/patches/jasper-CVE-2008-3522.patch		\
   gnu/packages/patches/jbig2dec-ignore-testtest.patch		\
-  gnu/packages/patches/julia-0.3.10-fix-empty-array.patch	\
   gnu/packages/patches/kmod-module-directory.patch		\
+  gnu/packages/patches/ldc-disable-tests.patch			\
   gnu/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
   gnu/packages/patches/liba52-enable-pic.patch			\
   gnu/packages/patches/liba52-link-with-libm.patch		\
@@ -531,6 +534,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/libarchive-mtree-filename-length-fix.patch \
   gnu/packages/patches/libbonobo-activation-test-race.patch	\
   gnu/packages/patches/libcanberra-sound-theme-freedesktop.patch \
+  gnu/packages/patches/libcmis-fix-test-onedrive.patch		\
   gnu/packages/patches/libdrm-symbol-check.patch		\
   gnu/packages/patches/libevent-dns-tests.patch			\
   gnu/packages/patches/libmtp-devices.patch			\
@@ -602,6 +606,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/nvi-dbpagesize-binpower.patch		\
   gnu/packages/patches/nvi-db4.patch				\
   gnu/packages/patches/openexr-missing-samples.patch		\
+  gnu/packages/patches/openimageio-boost-1.60.patch		\
   gnu/packages/patches/openjpeg-CVE-2015-6581.patch		\
   gnu/packages/patches/openjpeg-use-after-free-fix.patch	\
   gnu/packages/patches/openssl-runpath.patch			\
@@ -664,6 +669,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/slim-config.patch			\
   gnu/packages/patches/slim-sigusr1.patch			\
   gnu/packages/patches/soprano-find-clucene.patch		\
+  gnu/packages/patches/sudo-CVE-2015-5602.patch			\
   gnu/packages/patches/superlu-dist-scotchmetis.patch		\
   gnu/packages/patches/synfig-build-fix.patch			\
   gnu/packages/patches/tar-d_ino_in_dirent-fix.patch		\
@@ -698,7 +704,10 @@ dist_patch_DATA =						\
   gnu/packages/patches/valgrind-enable-arm.patch		\
   gnu/packages/patches/vpnc-script.patch			\
   gnu/packages/patches/vtk-mesa-10.patch			\
-  gnu/packages/patches/w3m-fix-compile.patch			\
+  gnu/packages/patches/w3m-libgc.patch				\
+  gnu/packages/patches/w3m-force-ssl_verify_server-on.patch	\
+  gnu/packages/patches/w3m-disable-sslv2-and-sslv3.patch	\
+  gnu/packages/patches/w3m-disable-weak-ciphers.patch		\
   gnu/packages/patches/webkitgtk-2.4-sql-init-string.patch	\
   gnu/packages/patches/weechat-python.patch			\
   gnu/packages/patches/weex-vacopy.patch			\
diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm
index 30d6570b04..0fc90af6a3 100644
--- a/gnu/build/linux-boot.scm
+++ b/gnu/build/linux-boot.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -381,7 +381,6 @@ to it are lost."
          (start-repl))
 
        (display "loading kernel modules...\n")
-       (current-module-debugging-port (current-output-port))
        (for-each (cut load-linux-module* <>
                       #:lookup-module lookup-module)
                  (map lookup-module linux-modules))
diff --git a/gnu/build/linux-modules.scm b/gnu/build/linux-modules.scm
index a3bc7d6e33..e6552fdb67 100644
--- a/gnu/build/linux-modules.scm
+++ b/gnu/build/linux-modules.scm
@@ -144,7 +144,7 @@ true, load its dependencies first (à la 'modprobe'.)  The actual files
 containing modules depended on are obtained by calling LOOKUP-MODULE with the
 module name."
   (define (slurp module)
-    ;; TODO: Use 'mmap' to reduce memory usage.
+    ;; TODO: Use 'finit_module' to reduce memory usage.
     (call-with-input-file file get-bytevector-all))
 
   (when recursive?
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 4f335a27d4..6e3024dffd 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
-;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;; Copyright © 2015 Alex Sassmannshausen <alex.sassmannshausen@gmail.com>
@@ -402,14 +402,14 @@ connection alive.")
                                       bind-release-version)))
     (package
       (name "isc-dhcp")
-      (version "4.3.3")
+      (version "4.3.3-P1")
       (source (origin
                 (method url-fetch)
                 (uri (string-append "http://ftp.isc.org/isc/dhcp/"
                                     version "/dhcp-" version ".tar.gz"))
                 (sha256
                  (base32
-                  "1pjy4lylx7dww1fp2mk5ikya5vxaf97z70279j81n74vn12ljg2m"))))
+                  "08crcsmg4dm2v533aq3883ik8mf4vvvd6r998r4vrgx1zxnqj7n1"))))
       (build-system gnu-build-system)
       (arguments
        `(#:parallel-build? #f
@@ -700,12 +700,13 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "0263gi6i19fyzzc488n0qw3m518i39f6a7qmrfvahk9j10bkh5j3"))))
+                "0263gi6i19fyzzc488n0qw3m518i39f6a7qmrfvahk9j10bkh5j3"))
+              (patches (list (search-patch "sudo-CVE-2015-5602.patch")))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
        (list "--with-logpath=/var/log/sudo.log"
-             "--with-rundir=/run/sudo"
+             "--with-rundir=/var/run/sudo"    ;must be cleaned up at boot time
              "--with-vardir=/var/db/sudo"
              "--with-iologdir=/var/log/sudo-io"
 
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 25e1af1750..dd6838140b 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -157,7 +157,7 @@ PARI is also available as a C library to allow for faster computations.")
 (define-public gp2c
   (package
    (name "gp2c")
-   (version "0.0.9pl4")
+   (version "0.0.9pl5")
    (source (origin
             (method url-fetch)
             (uri (string-append
@@ -165,7 +165,7 @@ PARI is also available as a C library to allow for faster computations.")
                   version ".tar.gz"))
             (sha256
               (base32
-                "079qq4yyxpc53a2kn08gg9pcfgdyffbl14c2hqsic11q8pnsr08z"))))
+                "1q003mkagc5ib6lqb2xfay7j4ffkwv7xlnznp6wdrq2sbqq4vyak"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)))
    (inputs `(("pari-gp" ,pari-gp)))
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index df1f67bddd..3cc5cebc2c 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -320,7 +320,8 @@ tools (analyzer, mono/stereo tools, crossovers).")
                     version "/Csound" version ".tar.gz"))
               (sha256
                (base32
-                "0a1sni6lr7qpwywpggbkp0ia3h9bwwgf9i87gsag8ra2h30v82hd"))))
+                "0a1sni6lr7qpwywpggbkp0ia3h9bwwgf9i87gsag8ra2h30v82hd"))
+              (patches (list (search-patch "csound-header-ordering.patch")))))
     (build-system cmake-build-system)
     (arguments
      ;; Work around this error on x86_64 with libc 2.22+:
@@ -1081,7 +1082,16 @@ software.")
        #:configure-flags
        (list (string-append "--boost-includes="
                             (assoc-ref %build-inputs "boost")
-                            "/include"))))
+                            "/include"))
+       #:phases (modify-phases %standard-phases
+                  (add-before
+                   'configure 'set-flags
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     ;; See e.g. https://github.com/lvtk/lvtk/issues/21
+                     (setenv "LDFLAGS"
+                             (string-append
+                              "-L" (assoc-ref inputs "boost") "/lib "
+                              "-lboost_system")))))))
     (inputs
      `(("boost" ,boost)
        ("lv2" ,lv2)))
@@ -1839,6 +1849,11 @@ result.")
                     "http://kokkinizita.linuxaudio.org"
                     "/linuxaudio/downloads/zita-convolver-"
                     version ".tar.bz2"))
+              (snippet
+               ;; Don't optimize for a specific processor architecture.
+               '(substitute* "libs/Makefile"
+                  (("^CXXFLAGS \\+= -march=native") "")))
+              (modules '((guix build utils)))
               (sha256
                (base32
                 "14qrnczhp5mbwhky64il7kxc4hl1mmh495v60va7i2qnhasr6zmz"))))
@@ -1881,6 +1896,11 @@ engine.")
                     "http://kokkinizita.linuxaudio.org"
                     "/linuxaudio/downloads/zita-resampler-"
                     version ".tar.bz2"))
+              (snippet
+               ;; Don't optimize for a specific processor architecture.
+               '(substitute* '("apps/Makefile" "libs/Makefile")
+                  (("^CXXFLAGS \\+= -march=native") "")))
+              (modules '((guix build utils)))
               (sha256
                (base32
                 "0r9ary5sc3y8vba5pad581ha7mgsrlyai83w7w4x2fmhfy64q0wq"))))
diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm
index 0a483ef864..992a11bac0 100644
--- a/gnu/packages/bdw-gc.scm
+++ b/gnu/packages/bdw-gc.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, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 76a1c17737..c6531d669f 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2015, 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;;
@@ -41,12 +41,14 @@
   #:use-module (gnu packages cpio)
   #:use-module (gnu packages file)
   #:use-module (gnu packages gawk)
+  #:use-module (gnu packages gcc)
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages machine-learning)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages mpi)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
@@ -56,6 +58,7 @@
   #:use-module (gnu packages statistics)
   #:use-module (gnu packages tbb)
   #:use-module (gnu packages textutils)
+  #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages vim)
   #:use-module (gnu packages web)
@@ -205,7 +208,7 @@ computational cluster.")
 (define-public bedtools
   (package
     (name "bedtools")
-    (version "2.24.0")
+    (version "2.25.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/arq5x/bedtools2/archive/v"
@@ -213,8 +216,7 @@ computational cluster.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0lnxrjvs3nnmb4bmskag1wg3h2hd80przz5q3xd0bvs7vyxrvpbl"))
-              (patches (list (search-patch "bedtools-32bit-compilation.patch")))))
+                "1ywcy3yfwzhl905b51l0ffjia55h75vv3mw5xkvib04pp6pj548m"))))
     (build-system gnu-build-system)
     (native-inputs `(("python" ,python-2)))
     (inputs `(("samtools" ,samtools)
@@ -222,25 +224,15 @@ computational cluster.")
     (arguments
      '(#:test-target "test"
        #:phases
-       (alist-cons-after
-        'unpack 'patch-makefile-SHELL-definition
-        (lambda _
-          ;; patch-makefile-SHELL cannot be used here as it does not
-          ;; yet patch definitions with `:='.  Since changes to
-          ;; patch-makefile-SHELL result in a full rebuild, features
-          ;; of patch-makefile-SHELL are reimplemented here.
-          (substitute* "Makefile"
-            (("^SHELL := .*$") (string-append "SHELL := " (which "bash") " -e \n"))))
-        (alist-delete
-         'configure
-         (alist-replace
-          'install
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
-              (for-each (lambda (file)
-                          (install-file file bin))
-                        (find-files "bin" ".*"))))
-          %standard-phases)))))
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((bin (string-append (assoc-ref outputs "out") "/bin/")))
+               (for-each (lambda (file)
+                           (install-file file bin))
+                         (find-files "bin" ".*")))
+             #t)))))
     (home-page "https://github.com/arq5x/bedtools2")
     (synopsis "Tools for genome analysis and arithmetic")
     (description
@@ -1064,14 +1056,14 @@ data and settings.")
 (define-public edirect
   (package
     (name "edirect")
-    (version "2.50")
+    (version "3.50")
     (source (origin
               (method url-fetch)
               ;; Note: older versions are not retained.
-              (uri "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.zip")
+              (uri "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect/edirect.tar.gz")
               (sha256
                (base32
-                "08afhz2ph66h8h381hl1mqyxkdi5nbvzsyj9gfw3jfbdijnpi4qj"))))
+                "1cr3gzcs3flmgnnbj5iz93vh9w0fca1ilzi2q82cl63ln3mwvpz0"))))
     (build-system perl-build-system)
     (arguments
      `(#:tests? #f ;no "check" target
@@ -1111,8 +1103,6 @@ data and settings.")
        ("perl-uri" ,perl-uri)
        ("perl-www-robotrules" ,perl-www-robotrules)
        ("perl" ,perl)))
-    (native-inputs
-     `(("unzip" ,unzip)))
     (home-page "http://www.ncbi.nlm.nih.gov/books/NBK179288/")
     (synopsis "Tools for accessing the NCBI's set of databases")
     (description
@@ -1436,6 +1426,71 @@ genes in incomplete assemblies or complete genomes.")
     ;; GPL3+ according to private correspondense with the authors.
     (license license:gpl3+)))
 
+(define-public fxtract
+  (let ((util-commit "776ca85a18a47492af3794745efcb4a905113115"))
+    (package
+      (name "fxtract")
+      (version "2.3")
+      (source
+       (origin
+         (method url-fetch)
+         (uri (string-append
+               "https://github.com/ctSkennerton/fxtract/archive/"
+               version ".tar.gz"))
+         (file-name (string-append "ctstennerton-util-"
+                                   (string-take util-commit 7)
+                                   "-checkout"))
+         (sha256
+          (base32
+           "0275cfdhis8517hm01is62062swmi06fxzifq7mr3knbbxjlaiwj"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags (list
+                       (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                       "CC=gcc")
+         #:test-target "fxtract_test"
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-before 'build 'copy-util
+             (lambda* (#:key inputs #:allow-other-keys)
+               (rmdir "util")
+               (copy-recursively (assoc-ref inputs "ctskennerton-util") "util")
+               #t))
+           ;; Do not use make install as this requires additional dependencies.
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out"/bin")))
+                 (install-file "fxtract" bin)
+                 #t))))))
+      (inputs
+       `(("pcre" ,pcre)
+         ("zlib" ,zlib)))
+      (native-inputs
+       ;; ctskennerton-util is licensed under GPL2.
+       `(("ctskennerton-util"
+          ,(origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/ctSkennerton/util.git")
+                   (commit util-commit)))
+             (file-name (string-append
+                         "ctstennerton-util-" util-commit "-checkout"))
+             (sha256
+              (base32
+               "0cls1hd4vgj3f36fpzzg4xc77d6f3hpc60cbpfmn2gdr7ykzzad7"))))))
+      (home-page "https://github.com/ctSkennerton/fxtract")
+      (synopsis "Extract sequences from FASTA and FASTQ files")
+      (description
+       "Fxtract extracts sequences from a protein or nucleotide fastx (FASTA
+or FASTQ) file given a subsequence.  It uses a simple substring search for
+basic tasks but can change to using POSIX regular expressions, PCRE, hash
+lookups or multi-pattern searching as required.  By default fxtract looks in
+the sequence of each record but can also be told to look in the header,
+comment or quality sections.")
+      (license license:expat))))
+
 (define-public grit
   (package
     (name "grit")
@@ -1643,7 +1698,7 @@ from high-throughput sequencing assays.")
                        '(configure install check)))))
     (native-inputs
      `(("ant" ,ant)
-       ("jdk" ,icedtea6 "jdk")))
+       ("jdk" ,icedtea "jdk")))
     (home-page "http://samtools.github.io/htsjdk/")
     (synopsis "Java API for high-throughput sequencing data (HTS) formats")
     (description
@@ -1738,6 +1793,55 @@ to measure the reproducibility of findings identified from replicate
 experiments and provide highly stable thresholds based on reproducibility.")
     (license license:gpl3+)))
 
+(define-public jellyfish
+  (package
+    (name "jellyfish")
+    (version "2.2.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/gmarcais/Jellyfish/"
+                                  "releases/download/v" version
+                                  "/jellyfish-" version ".tar.gz"))
+              (sha256
+               (base32
+                "0a6xnynqy2ibfbfz86b9g2m2dgm7f1469pmymkpam333gi3p26nk"))))
+    (build-system gnu-build-system)
+    (outputs '("out"      ;for library
+               "ruby"     ;for Ruby bindings
+               "python")) ;for Python bindings
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--enable-ruby-binding="
+                            (assoc-ref %outputs "ruby"))
+             (string-append "--enable-python-binding="
+                            (assoc-ref %outputs "python")))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'set-SHELL-variable
+           (lambda _
+             ;; generator_manager.hpp either uses /bin/sh or $SHELL
+             ;; to run tests.
+             (setenv "SHELL" (which "bash"))
+             #t)))))
+    (native-inputs
+     `(("bc" ,bc)
+       ("time" ,time)
+       ("ruby" ,ruby)
+       ("python" ,python-2)))
+    (synopsis "Tool for fast counting of k-mers in DNA")
+    (description
+     "Jellyfish is a tool for fast, memory-efficient counting of k-mers in
+DNA.  A k-mer is a substring of length k, and counting the occurrences of all
+such substrings is a central step in many analyses of DNA sequence.  Jellyfish
+is a command-line program that reads FASTA and multi-FASTA files containing
+DNA sequences.  It outputs its k-mer counts in a binary format, which can be
+translated into a human-readable text format using the @code{jellyfish dump}
+command, or queried for specific k-mers with @code{jellyfish query}.")
+    (home-page "http://www.genome.umd.edu/jellyfish.html")
+    ;; The combined work is published under the GPLv3 or later.  Individual
+    ;; files such as lib/jsoncpp.cpp are released under the Expat license.
+    (license (list license:gpl3+ license:expat))))
+
 (define-public macs
   (package
     (name "macs")
@@ -2284,7 +2388,7 @@ distribution, coverage uniformity, strand specificity, etc.")
 (define-public samtools
   (package
     (name "samtools")
-    (version "1.2")
+    (version "1.3")
     (source
      (origin
        (method url-fetch)
@@ -2293,38 +2397,23 @@ distribution, coverage uniformity, strand specificity, etc.")
                        version "/samtools-" version ".tar.bz2"))
        (sha256
         (base32
-         "1akdqb685pk9xk1nb6sa9aq8xssjjhvvc06kp4cpdqvz2157l3j2"))))
+         "03mnf0mhbfwhqlqfslrhfnw68s3g0fs1as354i9a584mqw1l1smy"))))
     (build-system gnu-build-system)
     (arguments
-     `(;; There are 87 test failures when building on non-64-bit architectures
-       ;; due to invalid test data.  This has since been fixed upstream (see
-       ;; <https://github.com/samtools/samtools/pull/307>), but as there has
-       ;; not been a new release we disable the tests for all non-64-bit
-       ;; systems.
-       #:tests? ,(string=? (or (%current-system) (%current-target-system))
-                           "x86_64-linux")
-       #:modules ((ice-9 ftw)
+     `(#:modules ((ice-9 ftw)
                   (ice-9 regex)
                   (guix build gnu-build-system)
                   (guix build utils))
-       #:make-flags (list "LIBCURSES=-lncurses"
-                          (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
+       #:configure-flags (list "--with-ncurses")
        #:phases
        (alist-cons-after
-        'unpack
-        'patch-tests
-        (lambda* (#:key inputs #:allow-other-keys)
-          (let ((bash (assoc-ref inputs "bash")))
-            (substitute* "test/test.pl"
-              ;; The test script calls out to /bin/bash
-              (("/bin/bash")
-               (string-append bash "/bin/bash"))
-              ;; There are two failing tests upstream relating to the "stats"
-              ;; subcommand in test_usage_subcommand ("did not have Usage"
-              ;; and "usage did not mention samtools stats"), so we disable
-              ;; them.
-              (("(test_usage_subcommand\\(.*\\);)" cmd)
-               (string-append "unless ($subcommand eq 'stats') {" cmd "};")))))
+        'unpack 'patch-tests
+        (lambda _
+          (substitute* "test/test.pl"
+            ;; The test script calls out to /bin/bash
+            (("/bin/bash") (which "bash")))
+          #t)
         (alist-cons-after
          'install 'install-library
          (lambda* (#:key outputs #:allow-other-keys)
@@ -2339,7 +2428,7 @@ distribution, coverage uniformity, strand specificity, etc.")
                           (install-file file include))
                         (scandir "." (lambda (name) (string-match "\\.h$" name))))
               #t))
-          (alist-delete 'configure %standard-phases))))))
+          %standard-phases)))))
     (native-inputs `(("pkg-config" ,pkg-config)))
     (inputs `(("ncurses" ,ncurses)
               ("perl" ,perl)
@@ -2489,7 +2578,7 @@ simultaneously.")
             `(modify-phases ,phases
                (replace 'enter-dir (lambda _ (chdir "ngs-java") #t)))))))
     (inputs
-     `(("jdk" ,icedtea6 "jdk")
+     `(("jdk" ,icedtea "jdk")
        ("ngs-sdk" ,ngs-sdk)))
     (synopsis "Java bindings for NGS SDK")))
 
@@ -3418,6 +3507,495 @@ GenomicRanges package defines general purpose containers for storing and
 manipulating genomic intervals and variables defined along a genome.")
     (license license:artistic2.0)))
 
+(define-public r-biobase
+  (package
+    (name "r-biobase")
+    (version "2.30.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "Biobase" version))
+              (sha256
+               (base32
+                "1qasjpq3kw8h7qw8cin3bjvv1256hqr1mm24fq3v0ymxzlb66szi"))))
+    (properties
+     `((upstream-name . "Biobase")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)))
+    (home-page "http://bioconductor.org/packages/Biobase")
+    (synopsis "Base functions for Bioconductor")
+    (description
+     "This package provides functions that are needed by many other packages
+on Bioconductor or which replace R functions.")
+    (license license:artistic2.0)))
+
+(define-public r-annotationdbi
+  (package
+    (name "r-annotationdbi")
+    (version "1.32.2")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "AnnotationDbi" version))
+              (sha256
+               (base32
+                "08ncdjvq0l44kqyiv32kn9wnbw1xgfb6qjfzfbjpqrcfp1jygz9j"))))
+    (properties
+     `((upstream-name . "AnnotationDbi")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-dbi" ,r-dbi)
+       ("r-iranges" ,r-iranges)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "http://bioconductor.org/packages/AnnotationDbi")
+    (synopsis "Annotation database interface")
+    (description
+     "This package provides user interface and database connection code for
+annotation data packages using SQLite data storage.")
+    (license license:artistic2.0)))
+
+(define-public r-biomart
+  (package
+    (name "r-biomart")
+    (version "2.26.1")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "biomaRt" version))
+              (sha256
+               (base32
+                "1s709055abj2gd35g6nnk5d2ai5ii09iir270l2xika6pi62gj3f"))))
+    (properties
+     `((upstream-name . "biomaRt")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-rcurl" ,r-rcurl)
+       ("r-xml" ,r-xml)))
+    (home-page "http://bioconductor.org/packages/biomaRt")
+    (synopsis "Interface to BioMart databases")
+    (description
+     "biomaRt provides an interface to a growing collection of databases
+implementing the @url{BioMart software suite, http://www.biomart.org}.  The
+package enables retrieval of large amounts of data in a uniform way without
+the need to know the underlying database schemas or write complex SQL queries.
+Examples of BioMart databases are Ensembl, COSMIC, Uniprot, HGNC, Gramene,
+Wormbase and dbSNP mapped to Ensembl.  These major databases give biomaRt
+users direct access to a diverse set of data and enable a wide range of
+powerful online queries from gene annotation to database mining.")
+    (license license:artistic2.0)))
+
+(define-public r-biocparallel
+  (package
+    (name "r-biocparallel")
+    (version "1.4.3")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "BiocParallel" version))
+              (sha256
+               (base32
+                "1f5mndx66vampcsq0n66afg6x851crl0h3nyv2nyp9bsgzj9cdzq"))))
+    (properties
+     `((upstream-name . "BiocParallel")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-futile-logger" ,r-futile-logger)
+       ("r-snow" ,r-snow)))
+    (home-page "http://bioconductor.org/packages/BiocParallel")
+    (synopsis "Bioconductor facilities for parallel evaluation")
+    (description
+     "This package provides modified versions and novel implementation of
+functions for parallel evaluation, tailored to use with Bioconductor
+objects.")
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public r-biostrings
+  (package
+    (name "r-biostrings")
+    (version "2.38.2")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "Biostrings" version))
+              (sha256
+               (base32
+                "1afp9szc8ci6jn0m3hrrqh6df65cpw3v1dcnl6xir3d3m3lwwmk4"))))
+    (properties
+     `((upstream-name . "Biostrings")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-iranges" ,r-iranges)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xvector" ,r-xvector)))
+    (home-page "http://bioconductor.org/packages/Biostrings")
+    (synopsis "String objects and algorithms for biological sequences")
+    (description
+     "This package provides memory efficient string containers, string
+matching algorithms, and other utilities, for fast manipulation of large
+biological sequences or sets of sequences.")
+    (license license:artistic2.0)))
+
+(define-public r-rsamtools
+  (package
+    (name "r-rsamtools")
+    (version "1.22.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "Rsamtools" version))
+              (sha256
+               (base32
+                "1yc3nzzms3igjwr4l9yd3wdac95glcs08b4cfp7disyly0wcskjd"))))
+    (properties
+     `((upstream-name . "Rsamtools")))
+    (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-system-zlib
+           (lambda _
+             (substitute* "DESCRIPTION"
+               (("zlibbioc, ") ""))
+             (substitute* "NAMESPACE"
+               (("import\\(zlibbioc\\)") ""))
+             #t)))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-biostrings" ,r-biostrings)
+       ("r-bitops" ,r-bitops)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xvector" ,r-xvector)))
+    (home-page "http://bioconductor.org/packages/release/bioc/html/Rsamtools.html")
+    (synopsis "Interface to samtools, bcftools, and tabix")
+    (description
+     "This package provides an interface to the 'samtools', 'bcftools', and
+'tabix' utilities for manipulating SAM (Sequence Alignment / Map), FASTA,
+binary variant call (BCF) and compressed indexed tab-delimited (tabix)
+files.")
+    (license license:expat)))
+
+(define-public r-summarizedexperiment
+  (package
+    (name "r-summarizedexperiment")
+    (version "1.0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "SummarizedExperiment" version))
+              (sha256
+               (base32
+                "0w1dwp99p6i7sc3cn0ir3dr8ksgxwjf16675h5i8n6gbv4rl9lz6"))))
+    (properties
+     `((upstream-name . "SummarizedExperiment")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-s4vectors" ,r-s4vectors)))
+    (home-page "http://bioconductor.org/packages/SummarizedExperiment")
+    (synopsis "Container for representing genomic ranges by sample")
+    (description
+     "The SummarizedExperiment container contains one or more assays, each
+represented by a matrix-like object of numeric or other mode.  The rows
+typically represent genomic ranges of interest and the columns represent
+samples.")
+    (license license:artistic2.0)))
+
+(define-public r-genomicalignments
+  (package
+    (name "r-genomicalignments")
+    (version "1.6.1")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "GenomicAlignments" version))
+              (sha256
+               (base32
+                "03pxzkmwcpl0d7a09ahan0nllfv7qw2i7w361w6af2s4n3xwrniz"))))
+    (properties
+     `((upstream-name . "GenomicAlignments")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biocparallel" ,r-biocparallel)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-summarizedexperiment" ,r-summarizedexperiment)))
+    (home-page "http://bioconductor.org/packages/GenomicAlignments")
+    (synopsis "Representation and manipulation of short genomic alignments")
+    (description
+     "This package provides efficient containers for storing and manipulating
+short genomic alignments (typically obtained by aligning short reads to a
+reference genome).  This includes read counting, computing the coverage,
+junction detection, and working with the nucleotide content of the
+alignments.")
+    (license license:artistic2.0)))
+
+(define-public r-rtracklayer
+  (package
+    (name "r-rtracklayer")
+    (version "1.30.1")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "rtracklayer" version))
+              (sha256
+               (base32
+                "1if31hg56islx5vwydpgs5gkyas26kyvv2ljv1c7jikpm62w14qv"))))
+    (build-system r-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'use-system-zlib
+           (lambda _
+             (substitute* "DESCRIPTION"
+               (("zlibbioc, ") ""))
+             (substitute* "NAMESPACE"
+               (("import\\(zlibbioc\\)") ""))
+             #t)))))
+    (inputs
+     `(("zlib" ,zlib)))
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rcurl" ,r-rcurl)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xml" ,r-xml)
+       ("r-xvector" ,r-xvector)))
+    (home-page "http://bioconductor.org/packages/rtracklayer")
+    (synopsis "R interface to genome browsers and their annotation tracks")
+    (description
+     "rtracklayer is an extensible framework for interacting with multiple
+genome browsers (currently UCSC built-in) and manipulating annotation tracks
+in various formats (currently GFF, BED, bedGraph, BED15, WIG, BigWig and 2bit
+built-in).  The user may export/import tracks to/from the supported browsers,
+as well as query and modify the browser state, such as the current viewport.")
+    (license license:artistic2.0)))
+
+(define-public r-genomicfeatures
+  (package
+    (name "r-genomicfeatures")
+    (version "1.22.7")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "GenomicFeatures" version))
+              (sha256
+               (base32
+                "1jb4s49ar5j9qslpd3kfdg2wrl4q7ciysd55h9a7zvspymxcngq8"))))
+    (properties
+     `((upstream-name . "GenomicFeatures")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-biomart" ,r-biomart)
+       ("r-biostrings" ,r-biostrings)
+       ("r-dbi" ,r-dbi)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rcurl" ,r-rcurl)
+       ("r-rsqlite" ,r-rsqlite)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xvector" ,r-xvector)))
+    (home-page "http://bioconductor.org/packages/GenomicFeatures")
+    (synopsis "Tools for working with transcript centric annotations")
+    (description
+     "This package provides a set of tools and methods for making and
+manipulating transcript centric annotations.  With these tools the user can
+easily download the genomic locations of the transcripts, exons and cds of a
+given organism, from either the UCSC Genome Browser or a BioMart
+database (more sources will be supported in the future).  This information is
+then stored in a local database that keeps track of the relationship between
+transcripts, exons, cds and genes.  Flexible methods are provided for
+extracting the desired features in a convenient format.")
+    (license license:artistic2.0)))
+
+(define-public r-go-db
+  (package
+    (name "r-go-db")
+    (version "3.2.2")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "GO.db" version))
+              (sha256
+               (base32
+                "00gariag9ampz82dh0xllrc26r85d7vdcwc0vca5zdy147rwxr7f"))))
+    (properties
+     `((upstream-name . "GO.db")))
+    (build-system r-build-system)
+    (home-page "http://bioconductor.org/packages/GO.db")
+    (synopsis "Annotation maps describing the entire Gene Ontology")
+    (description
+     "The purpose of this GO.db annotation package is to provide detailed
+information about the latest version of the Gene Ontologies.")
+    (license license:artistic2.0)))
+
+(define-public r-topgo
+  (package
+    (name "r-topgo")
+    (version "2.22.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "topGO" version))
+              (sha256
+               (base32
+                "029j9nb39b8l9xlzsp83pmjr8ap247aia387yzaa1yyw8klapdaf"))))
+    (properties
+     `((upstream-name . "topGO")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-annotationdbi" ,r-annotationdbi)
+       ("r-biobase" ,r-biobase)
+       ("r-biocgenerics" ,r-biocgenerics)
+       ("r-go-db" ,r-go-db)
+       ("r-sparsem" ,r-sparsem)))
+    (home-page "http://bioconductor.org/packages/topGO")
+    (synopsis "Enrichment analysis for gene ontology")
+    (description
+     "The topGO package provides tools for testing @dfn{gene ontology} (GO)
+terms while accounting for the topology of the GO graph.  Different test
+statistics and different methods for eliminating local similarities and
+dependencies between GO terms can be implemented and applied.")
+    ;; Any version of the LGPL applies.
+    (license license:lgpl2.1+)))
+
+(define-public r-bsgenome
+  (package
+    (name "r-bsgenome")
+    (version "1.38.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "BSgenome" version))
+              (sha256
+               (base32
+                "130w0m6q8kkca7gyz1aqj5jjhalwvwi6rk2yvbjrnj4gpnncyrd2"))))
+    (properties
+     `((upstream-name . "BSgenome")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biocgenerics" ,r-biocgenerics)
+       ("r-biostrings" ,r-biostrings)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-s4vectors" ,r-s4vectors)
+       ("r-xvector" ,r-xvector)))
+    (home-page "http://bioconductor.org/packages/BSgenome")
+    (synopsis "Infrastructure for Biostrings-based genome data packages")
+    (description
+     "This package provides infrastructure shared by all Biostrings-based
+genome data packages and support for efficient SNP representation.")
+    (license license:artistic2.0)))
+
+(define-public r-impute
+  (package
+    (name "r-impute")
+    (version "1.44.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "impute" version))
+              (sha256
+               (base32
+                "0y4x5jk7gsf4xn56jrkdcdnxpcfll4h6ivncd7n4snmzixldvmvw"))))
+    (inputs
+     `(("gfortran" ,gfortran)))
+    (build-system r-build-system)
+    (home-page "http://bioconductor.org/packages/impute")
+    (synopsis "Imputation for microarray data")
+    (description
+     "This package provides a function to impute missing gene expression
+microarray data, using nearest neighbor averaging.")
+    (license license:gpl2+)))
+
+(define-public r-seqpattern
+  (package
+    (name "r-seqpattern")
+    (version "1.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "seqPattern" version))
+              (sha256
+               (base32
+                "0p9zj6bic7sa0hb2bjm988kkk5n9r1kvlbqkzvy702f642n0j53i"))))
+    (properties
+     `((upstream-name . "seqPattern")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-iranges" ,r-iranges)
+       ("r-plotrix" ,r-plotrix)))
+    (home-page "http://bioconductor.org/packages/seqPattern")
+    (synopsis "Visualising oligonucleotide patterns and motif occurrences")
+    (description
+     "This package provides tools to visualize oligonucleotide patterns and
+sequence motif occurrences across a large set of sequences centred at a common
+reference point and sorted by a user defined feature.")
+    (license license:gpl3+)))
+
+(define-public r-genomation
+  (package
+    (name "r-genomation")
+    (version "1.2.1")
+    (source (origin
+              (method url-fetch)
+              (uri (bioconductor-uri "genomation" version))
+              (sha256
+               (base32
+                "1mzs995snwim13qk9kz4q3nczpnbsy1allwp4whfq0cflg2mndfr"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-biostrings" ,r-biostrings)
+       ("r-bsgenome" ,r-bsgenome)
+       ("r-data-table" ,r-data-table)
+       ("r-genomeinfodb" ,r-genomeinfodb)
+       ("r-genomicalignments" ,r-genomicalignments)
+       ("r-genomicranges" ,r-genomicranges)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-gridbase" ,r-gridbase)
+       ("r-impute" ,r-impute)
+       ("r-iranges" ,r-iranges)
+       ("r-matrixstats" ,r-matrixstats)
+       ("r-plotrix" ,r-plotrix)
+       ("r-plyr" ,r-plyr)
+       ("r-readr" ,r-readr)
+       ("r-reshape2" ,r-reshape2)
+       ("r-rsamtools" ,r-rsamtools)
+       ("r-rtracklayer" ,r-rtracklayer)
+       ("r-seqpattern" ,r-seqpattern)))
+    (home-page "http://bioinformatics.mdc-berlin.de/genomation/")
+    (synopsis "Summary, annotation and visualization of genomic data")
+    (description
+     "This package provides a package for summary and annotation of genomic
+intervals.  Users can visualize and quantify genomic intervals over
+pre-defined functional regions, such as promoters, exons, introns, etc.  The
+genomic intervals represent regions with a defined chromosome position, which
+may be associated with a score, such as aligned reads from HT-seq experiments,
+TF binding sites, methylation scores, etc.  The package can use any tabular
+genomic feature data as long as it has minimal information on the locations of
+genomic intervals.  In addition, it can use BAM or BigWig files as input.")
+    (license license:artistic2.0)))
+
 (define-public r-qtl
  (package
   (name "r-qtl")
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index d3b171245d..0a644e8940 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -33,7 +34,7 @@
 (define-public boost
   (package
     (name "boost")
-    (version "1.58.0")
+    (version "1.60.0")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -42,8 +43,7 @@
                     ".tar.bz2"))
               (sha256
                (base32
-                "1rfkqxns60171q62cppiyzj8pmsbwp1l8jd7p6crriryqd7j1z7x"))
-              (patches (list (search-patch "boost-mips-avoid-m32.patch")))))
+                "0fzx6dwqbrkd4bcd8pjv0fpapwmrxxwr8yx9g67lihlsk3zzysk8"))))
     (build-system gnu-build-system)
     (inputs `(("zlib" ,zlib)))
     (native-inputs
@@ -63,38 +63,38 @@
               ;; so we disable that too.
               ,@(if (string-prefix? "mips64" (or (%current-target-system)
                                                  (%current-system)))
-                    '("--without-context" "--without-coroutine")
+                    '("--without-context"
+                      "--without-coroutine" "--without-coroutine2")
                     '()))))
        `(#:tests? #f
          #:phases
-         (alist-replace
-          'configure
-          (lambda* (#:key outputs #:allow-other-keys)
-            (let ((out (assoc-ref outputs "out")))
-              (substitute* '("libs/config/configure"
-                             "libs/spirit/classic/phoenix/test/runtest.sh"
-                             "tools/build/doc/bjam.qbk"
-                             "tools/build/src/engine/execunix.c"
-                             "tools/build/src/engine/Jambase"
-                             "tools/build/src/engine/jambase.c")
-                (("/bin/sh") (which "sh")))
-
-              (setenv "SHELL" (which "sh"))
-              (setenv "CONFIG_SHELL" (which "sh"))
+         (modify-phases %standard-phases
+           (replace
+            'configure
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((out (assoc-ref outputs "out")))
+                (substitute* '("libs/config/configure"
+                               "libs/spirit/classic/phoenix/test/runtest.sh"
+                               "tools/build/doc/bjam.qbk"
+                               "tools/build/src/engine/execunix.c"
+                               "tools/build/src/engine/Jambase"
+                               "tools/build/src/engine/jambase.c")
+                  (("/bin/sh") (which "sh")))
 
-              (zero? (system* "./bootstrap.sh"
-                              (string-append "--prefix=" out)
-                              "--with-toolset=gcc"))))
-          (alist-replace
-           'build
-           (lambda* (#:key outputs #:allow-other-keys)
-             (zero? (system* "./b2" ,@build-flags)))
+                (setenv "SHELL" (which "sh"))
+                (setenv "CONFIG_SHELL" (which "sh"))
 
-           (alist-replace
+                (zero? (system* "./bootstrap.sh"
+                                (string-append "--prefix=" out)
+                                "--with-toolset=gcc")))))
+           (replace
+            'build
+            (lambda* (#:key outputs #:allow-other-keys)
+              (zero? (system* "./b2" ,@build-flags))))
+           (replace
             'install
             (lambda* (#:key outputs #:allow-other-keys)
-              (zero? (system* "./b2" "install" ,@build-flags)))
-            %standard-phases))))))
+              (zero? (system* "./b2" "install" ,@build-flags))))))))
 
     (home-page "http://boost.org")
     (synopsis "Peer-reviewed portable C++ source libraries")
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index e8c936849a..754a435347 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -91,14 +92,14 @@ highlighting your own code that seemed comprehensible when you wrote it.")
 (define-public global                             ; a global variable
   (package
     (name "global")
-    (version "6.5.1")
+    (version "6.5.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/global/global-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "1y34nbazsw2p6r2jhv27z15qvm9mhy5xjchpz8pwps00shkm578f"))))
+               "07qx3dbjwkbd1dn42qs7zgj77rxdj2psfrf7bx7yx9al38f87z60"))))
     (build-system gnu-build-system)
     (inputs `(("ncurses" ,ncurses)
               ("libltdl" ,libltdl)
@@ -110,18 +111,17 @@ highlighting your own code that seemed comprehensible when you wrote it.")
              (string-append "--with-sqlite3="
                             (assoc-ref %build-inputs "sqlite")))
 
-       #:phases (alist-cons-after
-                 'install 'post-install
-                 (lambda* (#:key outputs #:allow-other-keys)
-                   ;; Install the Emacs Lisp file in the right place.
-                   (let* ((out  (assoc-ref outputs "out"))
-                          (data (string-append out "/share/gtags"))
-                          (lisp (string-append out "/share/emacs/site-lisp")))
-                     (install-file (string-append data "/gtags.el")
-                                   lisp)
-                     (delete-file (string-append data "/gtags.el"))
-                     #t))
-                 %standard-phases)))
+       #:phases
+       (modify-phases %standard-phases
+        (add-after 'install 'post-install
+          (lambda* (#:key outputs #:allow-other-keys)
+            ;; Install the Emacs Lisp file in the right place.
+            (let* ((out  (assoc-ref outputs "out"))
+                   (data (string-append out "/share/gtags"))
+                   (lisp (string-append out "/share/emacs/site-lisp")))
+              (install-file (string-append data "/gtags.el") lisp)
+              (delete-file (string-append data "/gtags.el"))
+              #t))))))
     (home-page "http://www.gnu.org/software/global/")
     (synopsis "Cross-environment source code tag system")
     (description
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index d758913859..1928360e2e 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
@@ -462,7 +462,8 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
     (package
       (inherit (package-with-bootstrap-guile
                 (package-with-explicit-inputs bash inputs
-                                              (current-source-location))))
+                                              (current-source-location)
+                                              #:guile %bootstrap-guile)))
       (native-inputs `(("bison" ,bison-boot1))))))
 
 (define gettext-boot0
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index 258294f6c8..718e8b3e50 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -60,7 +60,7 @@
 (define-public calibre
   (package
     (name "calibre")
-    (version "2.41.0")
+    (version "2.48.0")
     (source
       (origin
         (method url-fetch)
@@ -69,7 +69,7 @@
                             version ".tar.xz"))
         (sha256
           (base32
-           "069fkcsx7kaazs7f095nkz4jw9jrm0k9zq16ayx41lxjbd1r97ik"))
+           "0bjzw806czqxkhq9qqkhff8bhfc428pijkidb1h6gr47jqdp4hpg"))
         ;; Remove non-free or doubtful code, see
         ;; https://lists.gnu.org/archive/html/guix-devel/2015-02/msg00478.html
         (modules '((guix build utils)))
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 947c7e282c..ba7bd49901 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
@@ -74,14 +74,20 @@
                             (search-patch "emacs-source-date-epoch.patch")))))
     (build-system glib-or-gtk-build-system)
     (arguments
-     '(#:phases (alist-cons-before
-                 'configure 'fix-/bin/pwd
-                 (lambda _
-                   ;; Use `pwd', not `/bin/pwd'.
-                   (substitute* (find-files "." "^Makefile\\.in$")
-                     (("/bin/pwd")
-                      "pwd")))
-                 %standard-phases)))
+     '(#:phases (modify-phases %standard-phases
+                  (add-before 'configure 'fix-/bin/pwd
+                    (lambda _
+                      ;; Use `pwd', not `/bin/pwd'.
+                      (substitute* (find-files "." "^Makefile\\.in$")
+                        (("/bin/pwd")
+                         "pwd"))))
+                  (add-after 'install 'remove-info.info
+                    (lambda* (#:key outputs #:allow-other-keys)
+                      ;; Remove 'info.info', which is provided by Texinfo.
+                      (let ((out (assoc-ref outputs "out")))
+                        (delete-file
+                         (string-append out "/share/info/info.info.gz"))
+                        #t))))))
     (inputs
      `(("gnutls" ,gnutls)
        ("ncurses" ,ncurses)
@@ -1008,6 +1014,27 @@ and stored in memory.")
     (description "This package provides a modern list API library for Emacs.")
     (license license:gpl3+)))
 
+(define-public emacs-undo-tree
+  (package
+    (name "emacs-undo-tree")
+    (version "0.6.4")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "http://dr-qubit.org/git/undo-tree.git")
+                    (commit "release/0.6.4")))
+              (file-name (string-append name "-" version "-checkout"))
+              (sha256
+                (base32
+                  "0b6hnv6bq1g5np5q2yw9r9aj1cxpp14akm21br7vpb7wp01fv4b3"))))
+    (build-system emacs-build-system)
+    (home-page "http://www.dr-qubit.org/emacs.php")
+    (synopsis "Treat undo history as a tree")
+    (description "Tree-like interface to Emacs undo system, providing
+graphical tree presentation of all previous states of buffer that
+allows easily move between them.")
+    (license license:gpl3+)))
+
 (define-public emacs-s
   (package
     (name "emacs-s")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index aa9fb6fded..e88ee8d904 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3396,7 +3396,7 @@ work and the interface is well tested.")
 (define-public epiphany
   (package
     (name "epiphany")
-    (version "3.16.3")
+    (version "3.18.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://gnome/sources/" name "/"
@@ -3404,7 +3404,7 @@ work and the interface is well tested.")
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "1cch4c7gh6lq1i4g0gs39qa2csl4i8a3pcdfapcj5v3r0xvz29ym"))))
+                "1hm6bpdcc6nf3zamzkvjhpvxnpaxzbnxnacfgl5v8swn643ifdl4"))))
     (build-system glib-or-gtk-build-system)
     (arguments
      ;; FIXME: tests run under Xvfb, but fail with:
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 40a13e7939..6fac8ced40 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -167,7 +167,7 @@ in the Mozilla clients.")
 (define-public nss
   (package
     (name "nss")
-    (version "3.20.2")
+    (version "3.21")
     (source (origin
               (method url-fetch)
               (uri (let ((version-with-underscores
@@ -178,7 +178,7 @@ in the Mozilla clients.")
                       "nss-" version ".tar.gz")))
               (sha256
                (base32
-                "11pjjcp0mvcyx0ildyz20s9jlqzxsb6a9jlvcq5x1g3zsmckl6hl"))
+                "0fbjx3xsdm4gjc1gyzy2z315cvyw7yilsm7p9w75rpbwgl15nyiz"))
               ;; Create nss.pc and nss-config.
               (patches (list (search-patch "nss-pkgconfig.patch")))))
     (build-system gnu-build-system)
@@ -205,6 +205,7 @@ in the Mozilla clients.")
        (alist-replace
         'configure
         (lambda* (#:key system inputs #:allow-other-keys)
+          (setenv "CC" "gcc")
           ;; Tells NSS to build for the 64-bit ABI if we are 64-bit system.
           (when (string-prefix? "x86_64" system)
             (setenv "USE_64" "1"))
@@ -266,7 +267,7 @@ standards.")
 (define-public icecat
   (package
     (name "icecat")
-    (version "38.5.0-gnu1")
+    (version "38.5.2-gnu1")
     (source
      (origin
       (method url-fetch)
@@ -275,7 +276,7 @@ standards.")
                           name "-" version ".tar.bz2"))
       (sha256
        (base32
-        "1bf20mpvx84jsa0dan2hhfc49f30v0wasikv7sh3cg8mwp62faj6"))
+        "0m18xyb0rd02yaw9xd5z4bab1wr2599iszzqhm86c134jv5vk6cg"))
       (patches (map search-patch '("icecat-avoid-bundled-includes.patch")))
       (modules '((guix build utils)))
       (snippet
diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm
index 4e15b814c8..560febe958 100644
--- a/gnu/packages/graphics.scm
+++ b/gnu/packages/graphics.scm
@@ -143,7 +143,8 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
               (file-name (string-append name "-" version ".tar.gz"))
               (sha256
                (base32
-                "0mn7cz19mn8dcrhkq15h25gl20ammr1wz0j2j3c2vxs6ph7zn8jy"))))
+                "0mn7cz19mn8dcrhkq15h25gl20ammr1wz0j2j3c2vxs6ph7zn8jy"))
+              (patches (list (search-patch "openimageio-boost-1.60.patch")))))
     (build-system cmake-build-system)
     ;; FIXME: To run all tests successfully, test image sets from multiple
     ;; third party sources have to be present.  For details see
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index f85ea1970a..916873b356 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -522,7 +522,8 @@ is part of the GNOME accessibility project.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "0mj6xn40py9r9lvzg633fal81xfwfm89d9mvz7jk4lmwk0g49imj"))))
+              "0mj6xn40py9r9lvzg633fal81xfwfm89d9mvz7jk4lmwk0g49imj"))
+            (patches (list (search-patch "gtk2-respect-GUIX_GTK2_PATH.patch")))))
    (build-system gnu-build-system)
    (outputs '("out" "doc"))
    (propagated-inputs
@@ -557,7 +558,11 @@ is part of the GNOME accessibility project.")
          ;; FIXME: re-enable tests requiring an X server
          (substitute* "gtk/Makefile.in"
            (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits .")))
-      %standard-phases)))
+       %standard-phases)))
+   (native-search-paths
+    (list (search-path-specification
+           (variable "GUIX_GTK2_PATH")
+           (files '("lib/gtk-2.0")))))
    (synopsis "Cross-platform toolkit for creating graphical user interfaces")
    (description
     "GTK+, or the GIMP Toolkit, is a multi-platform toolkit for creating
@@ -578,7 +583,8 @@ application suites.")
                                 name "-" version ".tar.xz"))
             (sha256
              (base32
-              "0lp1hn0qydxx03bianzzr0a4maqzsvylrkzr7c3p0050qihwbgjx"))))
+              "0lp1hn0qydxx03bianzzr0a4maqzsvylrkzr7c3p0050qihwbgjx"))
+            (patches (list (search-patch "gtk3-respect-GUIX_GTK3_PATH.patch")))))
    (propagated-inputs
     `(("at-spi2-atk" ,at-spi2-atk)
       ("atk" ,atk)
@@ -637,7 +643,11 @@ application suites.")
                  (loaders.cache (find-files librsvg "^loaders\\.cache$")))
             (wrap-program prog
               `("GDK_PIXBUF_MODULE_FILE" = ,loaders.cache))))
-        %standard-phases))))))
+        %standard-phases))))
+   (native-search-paths
+    (list (search-path-specification
+           (variable "GUIX_GTK3_PATH")
+           (files '("lib/gtk-3.0")))))))
 
 ;;;
 ;;; Guile bindings.
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 60439d1534..3a5b1e1a44 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -81,7 +81,7 @@
          'build
          (lambda* (#:key inputs outputs #:allow-other-keys)
            (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
-             (setenv "JAVA_HOME" (assoc-ref inputs "icedtea6"))
+             (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
 
              ;; Build shared libraries.  Users of SWT have to set the system
              ;; property swt.library.path to the "lib" directory of this
@@ -115,7 +115,7 @@
     (native-inputs
      `(("pkg-config" ,pkg-config)
        ("unzip" ,unzip)
-       ("icedtea6" ,icedtea6 "jdk")))
+       ("jdk" ,icedtea "jdk")))
     (home-page "https://www.eclipse.org/swt/")
     (synopsis "Widget toolkit for Java")
     (description
@@ -184,9 +184,9 @@ 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
+(define-public icedtea-6
   (package
-    (name "icedtea6")
+    (name "icedtea")
     (version "1.13.9")
     (source (origin
               (method url-fetch)
@@ -265,7 +265,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
            "--without-rhino"
            "--disable-downloading"
            "--disable-tests" ;they are run in the check phase instead
-           ,(string-append "--with-openjdk-src-dir=" "./openjdk")
+           "--with-openjdk-src-dir=./openjdk.src"
            ,(string-append "--with-javac=" jdk "/bin/javac")
            ,(string-append "--with-ecj-jar=" ecj)
            ,(string-append "--with-gcj=" gcj)
@@ -277,9 +277,9 @@ build process and its dependencies, whereas Make uses Makefile format.")
         (lambda* (#:key source inputs #:allow-other-keys)
           (and (zero? (system* "tar" "xvf" source))
                (begin
-                 (chdir (string-append ,name "-" ,version))
-                 (mkdir "openjdk")
-                 (with-directory-excursion "openjdk"
+                 (chdir (string-append "icedtea6-" ,version))
+                 (mkdir "openjdk.src")
+                 (with-directory-excursion "openjdk.src"
                    (copy-file (assoc-ref inputs "openjdk6-src")
                               "openjdk6-src.tar.xz")
                    (zero? (system* "tar" "xvf" "openjdk6-src.tar.xz"))))))
@@ -302,7 +302,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
           (lambda _
             ;; buildtree.make generates shell scripts, so we need to replace
             ;; the generated shebang
-            (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make")
+            (substitute* '("openjdk.src/hotspot/make/linux/makefiles/buildtree.make")
               (("/bin/sh") (which "bash")))
 
             (let ((corebin (string-append
@@ -311,8 +311,8 @@ build process and its dependencies, whereas Make uses Makefile format.")
                             (assoc-ref %build-inputs "binutils") "/bin/"))
                   (grepbin (string-append
                             (assoc-ref %build-inputs "grep") "/bin/")))
-              (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk"
-                             "openjdk/corba/make/common/shared/Defs-linux.gmk")
+              (substitute* '("openjdk.src/jdk/make/common/shared/Defs-linux.gmk"
+                             "openjdk.src/corba/make/common/shared/Defs-linux.gmk")
                 (("UNIXCOMMAND_PATH  = /bin/")
                  (string-append "UNIXCOMMAND_PATH = " corebin))
                 (("USRBIN_PATH  = /usr/bin/")
@@ -326,8 +326,8 @@ build process and its dependencies, whereas Make uses Makefile format.")
                  (string-append "DEF_OBJCOPY = " (which "objcopy"))))
 
               ;; fix hard-coded utility paths
-              (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk"
-                             "openjdk/corba/make/common/shared/Defs-utils.gmk")
+              (substitute* '("openjdk.src/jdk/make/common/shared/Defs-utils.gmk"
+                             "openjdk.src/corba/make/common/shared/Defs-utils.gmk")
                 (("ECHO *=.*echo")
                  (string-append "ECHO = " (which "echo")))
                 (("^GREP *=.*grep")
@@ -370,7 +370,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
               ;; Some of these timestamps cause problems as they are more than
               ;; 10 years ago, failing the build process.
               (substitute*
-                  "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties"
+                  "openjdk.src/jdk/src/share/classes/java/util/CurrencyData.properties"
                 (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN")
                 (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN")
                 (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON")
@@ -417,7 +417,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
             (alist-cons-before
              'check 'fix-hotspot-tests
              (lambda _
-               (with-directory-excursion "openjdk/hotspot/test/"
+               (with-directory-excursion "openjdk.src/hotspot/test/"
                  (substitute* "jprt.config"
                    (("PATH=\"\\$\\{path4sdk\\}\"")
                     (string-append "PATH=" (getenv "PATH")))
@@ -432,7 +432,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
              (alist-cons-before
               'check 'fix-jdk-tests
               (lambda _
-                (with-directory-excursion "openjdk/jdk/test/"
+                (with-directory-excursion "openjdk.src/jdk/test/"
                   (substitute* "com/sun/jdi/JdbReadTwiceTest.sh"
                     (("/bin/pwd") (which "pwd")))
                   (substitute* "com/sun/jdi/ShellScaffold.sh"
@@ -514,7 +514,8 @@ build process and its dependencies, whereas Make uses Makefile format.")
                (alist-replace
                 'install
                 (lambda* (#:key outputs #:allow-other-keys)
-                  (let ((doc (string-append (assoc-ref outputs "doc") "/share/doc/" ,name))
+                  (let ((doc (string-append (assoc-ref outputs "doc")
+                                            "/share/doc/icedtea"))
                         (jre (assoc-ref outputs "out"))
                         (jdk (assoc-ref outputs "jdk")))
                     (copy-recursively "openjdk.build/docs" doc)
@@ -575,7 +576,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
     ;; same license as both GNU Classpath and OpenJDK.
     (license license:gpl2+)))
 
-(define-public icedtea7
+(define-public icedtea-7
   (let* ((version "2.6.3")
          (drop (lambda (name hash)
                  (origin
@@ -584,8 +585,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
                          "http://icedtea.classpath.org/download/drops/"
                          "/icedtea7/" version "/" name ".tar.bz2"))
                    (sha256 (base32 hash))))))
-    (package (inherit icedtea6)
-      (name "icedtea7")
+    (package (inherit icedtea-6)
       (version version)
       (source (origin
                 (method url-fetch)
@@ -616,51 +616,42 @@ build process and its dependencies, whereas Make uses Makefile format.")
          #:tests? #f
          ;; Apparently, the C locale is needed for some of the tests.
          #:locale "C"
-         ,@(substitute-keyword-arguments (package-arguments icedtea6)
+         ,@(substitute-keyword-arguments (package-arguments icedtea-6)
+             ((#:modules modules)
+              `((ice-9 match)
+                (srfi srfi-26)
+                ,@modules))
              ((#:configure-flags flags)
-              `(delete "--with-openjdk-src-dir=./openjdk"
-                       ;; TODO: package pcsc and sctp, and add to inputs
-                       (append '("--disable-system-pcsc"
-                                 "--disable-system-sctp")
-                               ,flags)))
+              ;; TODO: package pcsc and sctp, and add to inputs
+              `(append '("--disable-system-pcsc"
+                         "--disable-system-sctp")
+                       ,flags))
              ((#:phases phases)
               `(modify-phases ,phases
-                 (replace
-                  'unpack
-                  (lambda* (#:key source inputs #:allow-other-keys)
-                    (let ((target (string-append "icedtea-" ,version))
-                          (unpack (lambda (drop dir)
-                                    (mkdir dir)
-                                    (zero? (system* "tar" "xvjf"
-                                                    (assoc-ref inputs drop)
-                                                    "-C" dir
-                                                    "--strip-components=1")))))
-                      (and (zero? (system* "tar" "xvf" source))
-                           (chdir target)
-                           (unpack "openjdk-drop" "openjdk")
-                           (unpack "corba-drop"   "openjdk/corba")
-                           (unpack "jdk-drop"     "openjdk/jdk")
-                           (unpack "hotspot-drop" "openjdk/hotspot")
-
-                           ;; The build framework checks the tarballs, so we
-                           ;; need to keep them around even though we have
-                           ;; already unpacked some of them for patching.
-                           (begin
-                             (copy-file (assoc-ref inputs "openjdk-drop")
-                                        "openjdk.tar.bz2")
-                             (copy-file (assoc-ref inputs "corba-drop")
-                                        "corba.tar.bz2")
-                             (copy-file (assoc-ref inputs "hotspot-drop")
-                                        "hotspot.tar.bz2")
-                             (copy-file (assoc-ref inputs "jaxp-drop")
-                                        "jaxp.tar.bz2")
-                             (copy-file (assoc-ref inputs "jaxws-drop")
-                                        "jaxws.tar.bz2")
-                             (copy-file (assoc-ref inputs "jdk-drop")
-                                        "jdk.tar.bz2")
-                             (copy-file (assoc-ref inputs "langtools-drop")
-                                        "langtools.tar.bz2")
-                             #t)))))
+                 (replace 'unpack
+                   (lambda* (#:key source inputs #:allow-other-keys)
+                     (let ((target (string-append "icedtea-" ,version))
+                           (unpack (lambda* (name #:optional dir)
+                                     (let ((dir (or dir
+                                                    (string-drop-right name 5))))
+                                       (mkdir dir)
+                                       (zero? (system* "tar" "xvf"
+                                                       (assoc-ref inputs name)
+                                                       "-C" dir
+                                                       "--strip-components=1"))))))
+                       (mkdir target)
+                       (and
+                        (zero? (system* "tar" "xvf" source
+                                        "-C" target "--strip-components=1"))
+                        (chdir target)
+                        (unpack "openjdk-src" "openjdk.src")
+                        (with-directory-excursion "openjdk.src"
+                          (for-each unpack
+                                    (filter (cut string-suffix? "-drop" <>)
+                                            (map (match-lambda
+                                                   ((name . _) name))
+                                                 inputs))))
+                        #t))))
                  (replace
                   'set-additional-paths
                   (lambda* (#:key inputs #:allow-other-keys)
@@ -670,7 +661,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
                                              (str  (read-line port)))
                                         (close-pipe port)
                                         str)))
-                      (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk"
+                      (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
                         (("ALSA_INCLUDE=/usr/include/alsa/version.h")
                          (string-append "ALSA_INCLUDE="
                                         (assoc-ref inputs "alsa-lib")
@@ -698,7 +689,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
                  (add-after
                   'unpack 'fix-x11-extension-include-path
                   (lambda* (#:key inputs #:allow-other-keys)
-                    (substitute* "openjdk/jdk/make/sun/awt/mawt.gmk"
+                    (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
                       (((string-append "\\$\\(firstword \\$\\(wildcard "
                                        "\\$\\(OPENWIN_HOME\\)"
                                        "/include/X11/extensions\\).*$"))
@@ -719,14 +710,14 @@ build process and its dependencies, whereas Make uses Makefile format.")
                        (string-append "PATH=" (getenv "PATH"))))
                     (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java"
                       (("/usr/bin/env") (which "env")))
-                    (substitute* "openjdk/hotspot/test/test_env.sh"
+                    (substitute* "openjdk.src/hotspot/test/test_env.sh"
                       (("/bin/rm") (which "rm"))
                       (("/bin/cp") (which "cp"))
                       (("/bin/mv") (which "mv")))
                     #t))
                  (delete 'patch-patches))))))
       (native-inputs
-       `(("openjdk-drop"
+       `(("openjdk-src"
           ,(drop "openjdk"
                  "0vflz0hhq4arykvvmsv3yas4yk9i0jm57287iqvs3a4832xjcpcy"))
          ("corba-drop"
@@ -747,5 +738,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
          ("hotspot-drop"
           ,(drop "hotspot"
                  "03pggsrhkzpjnj939vhr3b7mcrhfp22b7yg3hkx52kcv8dqkg3yx"))
-         ,@(fold alist-delete (package-native-inputs icedtea6)
+         ,@(fold alist-delete (package-native-inputs icedtea-6)
                  '("openjdk6-src")))))))
+
+(define-public icedtea icedtea-7)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index fc152c8720..4e6b87116a 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +20,8 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages algebra)
@@ -27,6 +29,7 @@
   #:use-module (gnu packages elf)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages llvm)
+  #:use-module (gnu packages libevent)
   #:use-module (gnu packages libunwind)
   #:use-module (gnu packages maths)
   #:use-module (gnu packages multiprecision) ; mpfr
@@ -36,21 +39,44 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages version-control)
+  #:use-module (gnu packages wget)
   #:use-module (ice-9 match))
 
+(define libuv-julia
+  (let ((commit "07730c4bd595b4d45a498a8ee0bcd53878ff7c10")
+        (revision "2"))
+    (package (inherit libuv)
+      (name "libuv-julia")
+      (version (string-append "0.11.26." revision "-" (string-take commit 8)))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/JuliaLang/libuv.git")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1r0d4wb41w8k3bi9sjr7kapk1ag131ss2fbqa4jz4gnrzvw94sqx"))))
+      (build-system gnu-build-system)
+      (arguments
+       (substitute-keyword-arguments (package-arguments libuv)
+         ((#:phases phases)
+          `(modify-phases ,phases
+             (delete 'autogen)))))
+      (home-page "https://github.com/JuliaLang/libuv"))))
+
 (define-public julia
   (package
     (name "julia")
-    (version "0.3.10")
+    (version "0.4.3")
     (source (origin
               (method url-fetch)
               (uri (string-append
                     "https://github.com/JuliaLang/julia/releases/download/v"
-                    version "/julia-" version "_c8ceeefcc1.tar.gz"))
+                    version "/julia-" version "-full.tar.gz"))
               (sha256
                (base32
-                "0j6mw6wr35lxid10nh9gz7k6wck3a90ic92w99n1r052325gl9r7"))
-              (patches (list (search-patch "julia-0.3.10-fix-empty-array.patch")))))
+                "1i8k847d8n9v37xg69grpl51dysx36p0phwf0d1qxpsqixdg579b"))))
     (build-system gnu-build-system)
     (arguments
      `(#:test-target "test"
@@ -66,8 +92,7 @@
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
-         (add-after
-          'unpack 'hardcode-soname-map
+         (add-after 'unpack 'hardcode-soname-map
           ;; ./src/ccall.cpp creates a map from library names to paths using the
           ;; output of "/sbin/ldconfig -p".  Since ldconfig is not used in Guix,
           ;; we patch ccall.cpp to contain a static map.
@@ -82,46 +107,70 @@
                          "sonameMap[\"" libname "\"] = "
                          "\"" (assoc-ref inputs input) "/lib/" soname "\";")))
                      '(("libc"        "libc"           "libc.so.6")
-                       ("pcre"        "libpcre"        "libpcre.so")
+                       ("pcre2"       "libpcre2-8"     "libpcre2-8.so")
                        ("mpfr"        "libmpfr"        "libmpfr.so")
                        ("openblas"    "libblas"        "libopenblas.so")
                        ("arpack-ng"   "libarpack"      "libarpack.so")
                        ("lapack"      "liblapack"      "liblapack.so")
+                       ("libgit2"     "libgit2"        "libgit2.so")
                        ("gmp"         "libgmp"         "libgmp.so")
                        ("openlibm"    "libopenlibm"    "libopenlibm.so")
                        ("openspecfun" "libopenspecfun" "libopenspecfun.so")
                        ("fftw"        "libfftw3"       "libfftw3.so")
                        ("fftwf"       "libfftw3f"      "libfftw3f.so"))))))
             #t))
-         ;; This phase will no longer be necessary in 0.3.11; see
-         ;; https://github.com/JuliaLang/julia/issues/12028
-         (add-before
-          'build 'fix-building-with-mcjit-llvm
-          (lambda _
-            (substitute* "src/cgutils.cpp"
-              (("addComdat\\(gv\\);") ""))
-            #t))
-         (add-before
-          'build 'patch-include-path
-          (lambda _
+         (add-before 'build 'fix-include-and-link-paths
+          (lambda* (#:key inputs #:allow-other-keys)
+            ;; LIBUTF8PROC is a linker flag, not a build target.  It is
+            ;; included in the LIBFILES_* variable which is used as a
+            ;; collection of build targets and a list of libraries to link
+            ;; against.
+            (substitute* "src/flisp/Makefile"
+              (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\): \\$\\(OBJS\\) \\$\\(LIBFILES_release\\)")
+               "$(BUILDDIR)/$(EXENAME): $(OBJS) $(LLT_release)")
+              (("\\$\\(BUILDDIR\\)/\\$\\(EXENAME\\)-debug: \\$\\(DOBJS\\) \\$\\(LIBFILES_debug\\)")
+               "$(BUILDDIR)/$(EXENAME)-debug: $(DOBJS) $(LLT_debug)"))
+
+            ;; The REPL must be linked with libuv.
+            (substitute* "ui/Makefile"
+              (("JLDFLAGS \\+= ")
+               (string-append "JLDFLAGS += "
+                              (assoc-ref %build-inputs "libuv")
+                              "/lib/libuv.so ")))
+
             (substitute* "deps/Makefile"
               (("/usr/include/double-conversion")
                (string-append (assoc-ref %build-inputs "double-conversion")
                               "/include/double-conversion")))
+            (substitute* "base/Makefile"
+              (("\\$\\(build_includedir\\)/uv-errno.h")
+               (string-append (assoc-ref inputs "libuv")
+                              "/include/uv-errno.h")))
             #t))
-         (add-before
-          'build 'replace-default-shell
+         (add-before 'build 'replace-default-shell
           (lambda _
             (substitute* "base/client.jl"
               (("/bin/sh") (which "sh")))
             #t))
-         (add-before
-          'check 'disable-broken-test
-          ;; One test fails because it produces slightly different output.
-          (lambda _
-            (substitute* "test/repl.jl"
-              (("@test output") "# @test output"))
-            #t)))
+         (add-after 'unpack 'hardcode-paths
+           (lambda _
+             (substitute* "base/interactiveutil.jl"
+               (("`which") (string-append "`" (which "which")))
+               (("`wget")  (string-append "`" (which "wget"))))
+             #t))
+         (add-before 'check 'disable-broken-tests
+           (lambda _
+             (substitute* "test/choosetests.jl"
+               ;; These tests time out.  See
+               ;; https://github.com/JuliaLang/julia/issues/14374 for ongoing
+               ;; discussion.
+               (("\"replcompletions\",") "")
+               (("\"repl\",") ""))
+             (substitute* "test/repl.jl"
+               ;; This test fails because we cannot escape the build
+               ;; directory.
+               (("@test pwd\\(\\) == homedir\\(\\)") "#"))
+             #t)))
        #:make-flags
        (list
         (string-append "prefix=" (assoc-ref %outputs "out"))
@@ -137,7 +186,6 @@
            (_ "MARCH=UNSUPPORTED"))
 
         "CONFIG_SHELL=bash"     ;needed to build bundled libraries
-        "USE_SYSTEM_LIBUV=0"    ;Julia expects a modified libuv
         "USE_SYSTEM_DSFMT=0"    ;not packaged for Guix and upstream has no
                                 ;build system for a shared library.
         "USE_SYSTEM_RMATH=0"    ;Julia uses a bundled version of R's math
@@ -158,10 +206,22 @@
         ;;                (assoc-ref %build-inputs "suitesparse")
         ;;                "/include")
 
+        "USE_GPL_LIBS=1"        ;proudly
         "USE_SYSTEM_GRISU=1"    ;for double-conversion
         "USE_SYSTEM_UTF8PROC=1"
+        (string-append "UTF8PROC_INC="
+                       (assoc-ref %build-inputs "utf8proc")
+                       "/include")
         "USE_SYSTEM_LLVM=1"
         "USE_SYSTEM_LIBUNWIND=1"
+        "USE_SYSTEM_LIBUV=1"
+        (string-append "LIBUV="
+                       (assoc-ref %build-inputs "libuv")
+                       "/lib/libuv.so")
+        (string-append "LIBUV_INC="
+                       (assoc-ref %build-inputs "libuv")
+                       "/include")
+        "USE_SYSTEM_PATCHELF=1"
         "USE_SYSTEM_PCRE=1"
         "USE_SYSTEM_OPENLIBM=1"
         "USE_SYSTEM_GMP=1"
@@ -172,26 +232,29 @@
     (inputs
      `(("llvm" ,llvm-3.5)
        ("arpack-ng" ,arpack-ng)
+       ("coreutils" ,coreutils) ;for bindings to "mkdir" and the like
        ("lapack" ,lapack)
        ("openblas" ,openblas) ;Julia does not build with Atlas
        ("libunwind" ,libunwind)
        ("openlibm" ,openlibm)
        ("openspecfun" ,openspecfun)
        ("double-conversion" ,double-conversion)
+       ("libgit2" ,libgit2)
        ("fftw" ,fftw)
        ("fftwf" ,fftwf)
        ("fortran" ,gfortran)
-       ("pcre" ,pcre)
+       ("libuv" ,libuv-julia)
+       ("pcre2" ,pcre2)
        ("utf8proc" ,utf8proc)
-       ("git" ,git)
        ("mpfr" ,mpfr)
+       ("wget" ,wget)
+       ("which" ,which)
        ("gmp" ,gmp)))
     (native-inputs
      `(("perl" ,perl)
        ("patchelf" ,patchelf)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2)
-       ("which" ,which)))
+       ("python" ,python-2)))
     ;; Julia is not officially released for ARM and MIPS.
     ;; See https://github.com/JuliaLang/julia/issues/10639
     (supported-systems '("i686-linux" "x86_64-linux"))
diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm
index f0c372bc29..4a9cebde01 100644
--- a/gnu/packages/kodi.scm
+++ b/gnu/packages/kodi.scm
@@ -149,7 +149,7 @@
        ("doxygen" ,doxygen)
        ("gawk" ,gawk)
        ("gettext" ,gnu-gettext)
-       ("icedtea7" ,icedtea7) ; needed at build-time only, mandatory
+       ("icedtea" ,icedtea) ; needed at build-time only, mandatory
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)
        ("swig" ,swig)
diff --git a/gnu/packages/ldc.scm b/gnu/packages/ldc.scm
new file mode 100644
index 0000000000..1981bc115d
--- /dev/null
+++ b/gnu/packages/ldc.scm
@@ -0,0 +1,118 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
+;;; Copyright © 2015 Pjotr Prins <pjotr.guix@thebird.nl>
+;;;
+;;; 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 ldc)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system cmake)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages libedit)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages zip))
+
+(define-public ldc
+  (package
+    (name "ldc")
+    (version "0.16.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "https://github.com/ldc-developers/ldc/archive/v"
+                    version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "1jvilxx0rpqmkbja4m69fhd5g09697xq7vyqp2hz4hvxmmmv4j40"))))
+    (build-system cmake-build-system)
+    ;; LDC currently only supports the x86_64 and i686 architectures.
+    (supported-systems '("x86_64-linux" "i686-linux"))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unpack-submodule-sources
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((unpack (lambda (source target)
+                             (with-directory-excursion target
+                               (zero? (system* "tar" "xvf"
+                                               (assoc-ref inputs source)
+                                               "--strip-components=1"))))))
+               (and (unpack "phobos-src" "runtime/phobos")
+                    (unpack "druntime-src" "runtime/druntime")
+                    (unpack "dmd-testsuite-src" "tests/d2/dmd-testsuite")))))
+         (add-after 'unpack-submodule-sources 'patch-phobos
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "runtime/phobos/std/process.d"
+               (("/bin/sh") (which "sh"))
+               (("echo") (which "echo")))
+             (substitute* "runtime/phobos/std/datetime.d"
+               (("/usr/share/zoneinfo/")
+                (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")))
+             (substitute* "tests/d2/dmd-testsuite/Makefile"
+               (("/bin/bash") (which "bash")))
+             #t)))))
+    (inputs
+     `(("libconfig" ,libconfig)
+       ("libedit" ,libedit)
+       ("tzdata" ,tzdata)))
+    (native-inputs
+     `(("llvm" ,llvm)
+       ("clang" ,clang)
+       ("unzip" ,unzip)
+       ("phobos-src"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://github.com/ldc-developers/phobos/archive/ldc-v"
+                 version ".tar.gz"))
+           (sha256
+            (base32
+             "0sgdj0536c4nb118yiw1f8lqy5d3g3lpg9l99l165lk9xy45l9z4"))
+           (patches (list (search-patch "ldc-disable-tests.patch")))))
+       ("druntime-src"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://github.com/ldc-developers/druntime/archive/ldc-v"
+                 version ".tar.gz"))
+           (sha256
+            (base32
+             "0z4mkyddx6c4sy1vqgqvavz55083dsxws681qkh93jh1rpby9yg6"))))
+       ("dmd-testsuite-src"
+        ,(origin
+           (method url-fetch)
+           (uri (string-append
+                 "https://github.com/ldc-developers/dmd-testsuite/archive/ldc-v"
+                 version ".tar.gz"))
+           (sha256
+            (base32
+             "0yc6miidzgl9k33ygk7xcppmfd6kivqj02cvv4fmkbs3qz4yy3z1"))))))
+    (home-page "http://wiki.dlang.org/LDC")
+    (synopsis "LLVM compiler for the D programming language")
+    (description
+     "LDC is a compiler for the D programming language.  It is based on the
+latest DMD frontend and uses LLVM as backend.")
+    ;; Most of the code is released under BSD-3, except for code originally
+    ;; written for GDC, which is released under GPLv2+, and the DMD frontend,
+    ;; which is released under the "Boost Software License version 1.0".
+    (license (list license:bsd-3
+                   license:gpl2+
+                   license:boost1.0))))
diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm
index 7496a6c8b9..a82cde7d0a 100644
--- a/gnu/packages/libreoffice.scm
+++ b/gnu/packages/libreoffice.scm
@@ -25,6 +25,7 @@
                           non-copyleft x11-style))
   #:use-module (guix packages)
   #:use-module (guix utils)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bison)
@@ -130,15 +131,18 @@ CSV, CSS and XML.")
                "03ygxyb0vfjv8raif5q62sl33b54wkr5rzgadb8slijm6k281wpn"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("boost" ,boost)
-       ("cppunit" ,cppunit)
+     `(("cppunit" ,cppunit)
        ("doxygen" ,doxygen)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("zlib" ,zlib)))
+    (propagated-inputs                  ; Referenced by .la files
+     `(("boost" ,boost)))
     (arguments
      ;; avoid triggering configure errors by simple inclusion of boost headers
-     `(#:configure-flags '("--disable-werror")))
+     `(#:configure-flags '("--disable-werror"
+                           ;; Avoid undefined library references
+                           "LDFLAGS=-lboost_system")))
     (home-page "http://sourceforge.net/p/libwpd/wiki/librevenge/")
     (synopsis "Document importer for office suites")
     (description "Librevenge is a base library for writing document import
@@ -244,7 +248,8 @@ working with graphics in the WPG (WordPerfect Graphics) format.")
       (uri (string-append "mirror://sourceforge/" name "/" name "-"
                           version ".tar.gz"))
       (sha256 (base32
-               "1dprvk4fibylv24l7gr49gfqbkfgmxynvgssvdcycgpf7n8h4zm8"))))
+               "1dprvk4fibylv24l7gr49gfqbkfgmxynvgssvdcycgpf7n8h4zm8"))
+      (patches (list (search-patch "libcmis-fix-test-onedrive.patch")))))
     (build-system gnu-build-system)
     (native-inputs
      `(("cppunit" ,cppunit)
@@ -805,6 +810,8 @@ and to return information on pronunciations, meanings and synonyms.")
           "--with-system-libs" ; enable all --with-system-* flags
           (string-append "--with-boost-libdir="
                          (assoc-ref %build-inputs "boost") "/lib")
+          ;; Avoid undefined symbols required by boost::spirit
+          "LDFLAGS=-lboost_system"
           ;; Avoid a dependency on ucpp.
           "--with-idlc-cpp=cpp"
           ;; The fonts require an external tarball (crosextrafonts).
diff --git a/gnu/packages/linux-libre-i686.conf b/gnu/packages/linux-libre-i686.conf
index aae4dfe61c..e877f195af 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 4.3.0-gnu Kernel Configuration
+# Linux/x86 4.4.0-gnu Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -274,8 +274,8 @@ CONFIG_SECCOMP_FILTER=y
 CONFIG_HAVE_CC_STACKPROTECTOR=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
 CONFIG_HAVE_ARCH_HUGE_VMAP=y
@@ -309,7 +309,6 @@ CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG_SHA512 is not set
 # CONFIG_MODULE_COMPRESS is not set
 CONFIG_MODULES_TREE_LOOKUP=y
-CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
@@ -386,7 +385,7 @@ CONFIG_X86_INTEL_MID=y
 # CONFIG_X86_INTEL_QUARK is not set
 CONFIG_X86_INTEL_LPSS=y
 CONFIG_X86_AMD_PLATFORM_DEVICE=y
-CONFIG_IOSF_MBI=m
+CONFIG_IOSF_MBI=y
 CONFIG_IOSF_MBI_DEBUG=y
 # CONFIG_X86_RDC321X is not set
 # CONFIG_X86_32_NON_STANDARD is not set
@@ -482,9 +481,6 @@ CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_MICROCODE_INTEL_EARLY=y
-CONFIG_MICROCODE_AMD_EARLY=y
-CONFIG_MICROCODE_EARLY=y
 CONFIG_X86_MSR=m
 CONFIG_X86_CPUID=m
 # CONFIG_NOHIGHMEM is not set
@@ -622,6 +618,7 @@ CONFIG_ACPI=y
 CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
 CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
 CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
+# CONFIG_ACPI_DEBUGGER is not set
 CONFIG_ACPI_SLEEP=y
 # CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
@@ -991,7 +988,7 @@ CONFIG_NF_CONNTRACK_TFTP=m
 CONFIG_NF_CT_NETLINK=m
 CONFIG_NF_CT_NETLINK_TIMEOUT=m
 CONFIG_NF_CT_NETLINK_HELPER=m
-CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
 CONFIG_NF_NAT=m
 CONFIG_NF_NAT_NEEDED=y
 CONFIG_NF_NAT_PROTO_DCCP=m
@@ -1360,6 +1357,7 @@ CONFIG_6LOWPAN_NHC_MOBILITY=m
 CONFIG_6LOWPAN_NHC_ROUTING=m
 CONFIG_6LOWPAN_NHC_UDP=m
 CONFIG_IEEE802154=m
+CONFIG_IEEE802154_NL802154_EXPERIMENTAL=y
 CONFIG_IEEE802154_SOCKET=m
 CONFIG_IEEE802154_6LOWPAN=m
 CONFIG_MAC802154=m
@@ -1458,6 +1456,7 @@ CONFIG_MPLS_ROUTING=m
 CONFIG_MPLS_IPTUNNEL=m
 CONFIG_HSR=m
 # CONFIG_NET_SWITCHDEV is not set
+CONFIG_NET_L3_MASTER_DEV=y
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
@@ -1670,6 +1669,7 @@ CONFIG_CFG80211=m
 CONFIG_CFG80211_DEFAULT_PS=y
 CONFIG_CFG80211_DEBUGFS=y
 # CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
 CONFIG_CFG80211_WEXT=y
 CONFIG_CFG80211_WEXT_EXPORT=y
 CONFIG_LIB80211=m
@@ -1711,7 +1711,7 @@ CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y
 CONFIG_NFC=m
 CONFIG_NFC_DIGITAL=m
 CONFIG_NFC_NCI=m
-CONFIG_NFC_NCI_SPI=y
+CONFIG_NFC_NCI_SPI=m
 CONFIG_NFC_NCI_UART=m
 CONFIG_NFC_HCI=m
 CONFIG_NFC_SHDLC=y
@@ -1725,6 +1725,8 @@ CONFIG_NFC_TRF7970A=m
 CONFIG_NFC_MEI_PHY=m
 CONFIG_NFC_SIM=m
 CONFIG_NFC_PORT100=m
+CONFIG_NFC_FDP=m
+CONFIG_NFC_FDP_I2C=m
 CONFIG_NFC_PN544=m
 CONFIG_NFC_PN544_I2C=m
 CONFIG_NFC_PN544_MEI=m
@@ -1734,6 +1736,8 @@ CONFIG_NFC_MICROREAD_MEI=m
 CONFIG_NFC_MRVL=m
 CONFIG_NFC_MRVL_USB=m
 CONFIG_NFC_MRVL_UART=m
+CONFIG_NFC_MRVL_I2C=m
+CONFIG_NFC_MRVL_SPI=m
 CONFIG_NFC_ST21NFCA=m
 CONFIG_NFC_ST21NFCA_I2C=m
 CONFIG_NFC_ST_NCI=m
@@ -1996,7 +2000,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
 CONFIG_BLK_DEV_DRBD=m
 # CONFIG_DRBD_FAULT_INJECTION is not set
 CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_NVME=m
 CONFIG_BLK_DEV_OSD=m
 CONFIG_BLK_DEV_SX8=m
 CONFIG_BLK_DEV_RAM=y
@@ -2013,6 +2016,7 @@ CONFIG_VIRTIO_BLK=y
 # CONFIG_BLK_DEV_HD is not set
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
+CONFIG_BLK_DEV_NVME=m
 
 #
 # Misc devices
@@ -2100,6 +2104,10 @@ CONFIG_VMWARE_VMCI=m
 #
 # SCIF Driver
 #
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
 CONFIG_ECHO=m
 # CONFIG_CXL_BASE is not set
 # CONFIG_CXL_KERNEL_API is not set
@@ -2190,12 +2198,10 @@ CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_LEGACY=m
 CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
 CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_UFSHCD=m
 CONFIG_SCSI_UFSHCD_PCI=m
 CONFIG_SCSI_UFSHCD_PLATFORM=m
@@ -2580,6 +2586,8 @@ CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
 CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
 CONFIG_NET_CADENCE=y
 CONFIG_MACB=m
 CONFIG_NET_VENDOR_BROADCOM=y
@@ -2594,6 +2602,8 @@ CONFIG_TIGON3=m
 CONFIG_BNX2X=m
 CONFIG_BNX2X_SRIOV=y
 CONFIG_BNX2X_VXLAN=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
 CONFIG_NET_VENDOR_CAVIUM=y
@@ -2663,7 +2673,6 @@ CONFIG_I40EVF=m
 CONFIG_FM10K=m
 CONFIG_FM10K_VXLAN=y
 CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MVMDIO=m
@@ -2690,6 +2699,7 @@ CONFIG_KSZ884X_PCI=m
 CONFIG_NET_VENDOR_MICROCHIP=y
 CONFIG_ENC28J60=m
 # CONFIG_ENC28J60_WRITEVERIFY is not set
+CONFIG_ENCX24J600=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
 CONFIG_FEALNX=m
@@ -2720,6 +2730,8 @@ CONFIG_QLCNIC_VXLAN=y
 CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QEDE=m
 CONFIG_NET_VENDOR_QUALCOMM=y
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_ATP=m
@@ -2804,6 +2816,7 @@ CONFIG_CICADA_PHY=m
 CONFIG_VITESSE_PHY=m
 CONFIG_TERANETICS_PHY=m
 CONFIG_SMSC_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
 CONFIG_BROADCOM_PHY=m
 CONFIG_BCM7XXX_PHY=m
 CONFIG_BCM87XX_PHY=m
@@ -2813,7 +2826,7 @@ CONFIG_NATIONAL_PHY=m
 CONFIG_STE10XP=m
 CONFIG_LSI_ET1011C_PHY=m
 CONFIG_MICREL_PHY=m
-# CONFIG_DP83848_PHY is not set
+CONFIG_DP83848_PHY=m
 CONFIG_DP83867_PHY=m
 CONFIG_MICROCHIP_PHY=m
 CONFIG_FIXED_PHY=y
@@ -2897,10 +2910,10 @@ CONFIG_PCMCIA_WL3501=m
 # CONFIG_PRISM54 is not set
 CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_ADM8211=m
 CONFIG_RTL8180=m
 CONFIG_RTL8187=m
 CONFIG_RTL8187_LEDS=y
-CONFIG_ADM8211=m
 CONFIG_MAC80211_HWSIM=m
 CONFIG_MWL8K=m
 CONFIG_ATH_COMMON=m
@@ -2954,7 +2967,6 @@ CONFIG_B43_BUSES_BCMA_AND_SSB=y
 # CONFIG_B43_BUSES_SSB is not set
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43_PCICORE_AUTOSELECT=y
-# CONFIG_B43_PCMCIA is not set
 # CONFIG_B43_SDIO is not set
 CONFIG_B43_BCMA_PIO=y
 CONFIG_B43_PIO=y
@@ -3096,6 +3108,8 @@ CONFIG_RTLWIFI_USB=m
 CONFIG_RTL8192C_COMMON=m
 CONFIG_RTL8723_COMMON=m
 CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
 CONFIG_WL_TI=y
 CONFIG_WL1251=m
 CONFIG_WL1251_SPI=m
@@ -3157,6 +3171,7 @@ CONFIG_SBNI=m
 CONFIG_IEEE802154_DRIVERS=m
 CONFIG_IEEE802154_FAKELB=m
 CONFIG_IEEE802154_AT86RF230=m
+CONFIG_IEEE802154_AT86RF230_DEBUGFS=y
 CONFIG_IEEE802154_MRF24J40=m
 CONFIG_IEEE802154_CC2520=m
 CONFIG_IEEE802154_ATUSB=m
@@ -3312,6 +3327,10 @@ CONFIG_MISDN_NETJET=m
 CONFIG_MISDN_IPAC=m
 CONFIG_MISDN_ISAR=m
 CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
 
 #
 # Input device support
@@ -3451,6 +3470,7 @@ CONFIG_TOUCHSCREEN_DA9052=m
 CONFIG_TOUCHSCREEN_DYNAPRO=m
 CONFIG_TOUCHSCREEN_HAMPSHIRE=m
 CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_FT6236=m
 CONFIG_TOUCHSCREEN_FUJITSU=m
 CONFIG_TOUCHSCREEN_GOODIX=m
 CONFIG_TOUCHSCREEN_ILI210X=m
@@ -3502,6 +3522,8 @@ CONFIG_TOUCHSCREEN_USB_NEXIO=y
 CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
 CONFIG_TOUCHSCREEN_TOUCHIT213=m
 CONFIG_TOUCHSCREEN_TSC_SERIO=m
+CONFIG_TOUCHSCREEN_TSC200X_CORE=m
+CONFIG_TOUCHSCREEN_TSC2004=m
 CONFIG_TOUCHSCREEN_TSC2005=m
 CONFIG_TOUCHSCREEN_TSC2007=m
 CONFIG_TOUCHSCREEN_PCAP=m
@@ -3510,6 +3532,7 @@ CONFIG_TOUCHSCREEN_SUR40=m
 CONFIG_TOUCHSCREEN_SX8654=m
 CONFIG_TOUCHSCREEN_TPS6507X=m
 CONFIG_TOUCHSCREEN_ZFORCE=m
+CONFIG_TOUCHSCREEN_ROHM_BU21023=m
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_88PM860X_ONKEY=m
 CONFIG_INPUT_88PM80X_ONKEY=m
@@ -3586,6 +3609,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 CONFIG_SERIO_PS2MULT=m
 CONFIG_SERIO_ARC_PS2=m
 CONFIG_HYPERV_KEYBOARD=m
+CONFIG_USERIO=m
 CONFIG_GAMEPORT=m
 CONFIG_GAMEPORT_NS558=m
 CONFIG_GAMEPORT_L4=m
@@ -3647,8 +3671,11 @@ CONFIG_SERIAL_8250_HUB6=m
 CONFIG_SERIAL_8250_SHARE_IRQ=y
 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
+# CONFIG_SERIAL_8250_FSL is not set
 CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_RT288X=y
 CONFIG_SERIAL_8250_FINTEK=m
+CONFIG_SERIAL_8250_MID=m
 
 #
 # Non-8250 serial port support
@@ -3806,6 +3833,7 @@ CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
 CONFIG_I2C_DESIGNWARE_PLATFORM=m
 CONFIG_I2C_DESIGNWARE_PCI=m
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
 CONFIG_I2C_EG20T=m
 CONFIG_I2C_EMEV2=m
 CONFIG_I2C_GPIO=m
@@ -3925,6 +3953,7 @@ CONFIG_PINCTRL_AMD=y
 CONFIG_PINCTRL_BAYTRAIL=y
 CONFIG_PINCTRL_CHERRYVIEW=m
 CONFIG_PINCTRL_INTEL=m
+CONFIG_PINCTRL_BROXTON=m
 CONFIG_PINCTRL_SUNRISEPOINT=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIOLIB=y
@@ -3939,15 +3968,22 @@ CONFIG_GPIO_MAX730X=m
 #
 # Memory mapped GPIO drivers
 #
+CONFIG_GPIO_AMDPT=m
 CONFIG_GPIO_DWAPB=m
-CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_GENERIC_PLATFORM=m
 CONFIG_GPIO_ICH=m
-CONFIG_GPIO_IT8761E=m
 CONFIG_GPIO_LYNXPOINT=y
+CONFIG_GPIO_VX855=m
+CONFIG_GPIO_ZX=y
+
+#
+# Port-mapped I/O GPIO drivers
+#
+CONFIG_GPIO_104_IDIO_16=m
+CONFIG_GPIO_F7188X=m
+CONFIG_GPIO_IT87=m
 CONFIG_GPIO_SCH=m
 CONFIG_GPIO_SCH311X=m
-CONFIG_GPIO_VX855=m
 
 #
 # I2C GPIO expanders
@@ -3999,9 +4035,12 @@ CONFIG_GPIO_RDC321X=m
 # SPI GPIO expanders
 #
 CONFIG_GPIO_MAX7301=m
-CONFIG_GPIO_MCP23S08=m
 CONFIG_GPIO_MC33880=m
-CONFIG_GPIO_ZX=y
+
+#
+# SPI or I2C GPIO expanders
+#
+CONFIG_GPIO_MCP23S08=m
 
 #
 # USB GPIO expanders
@@ -4052,12 +4091,13 @@ CONFIG_BATTERY_DS2780=m
 CONFIG_BATTERY_DS2781=m
 CONFIG_BATTERY_DS2782=m
 CONFIG_BATTERY_SBS=m
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_BATTERY_BQ27X00_I2C=y
-CONFIG_BATTERY_BQ27X00_PLATFORM=y
+CONFIG_BATTERY_BQ27XXX=m
+CONFIG_BATTERY_BQ27XXX_I2C=y
+CONFIG_BATTERY_BQ27XXX_PLATFORM=y
 CONFIG_BATTERY_DA9030=m
 CONFIG_BATTERY_DA9052=m
 CONFIG_CHARGER_DA9150=m
+CONFIG_BATTERY_DA9150=m
 CONFIG_AXP288_CHARGER=m
 CONFIG_AXP288_FUEL_GAUGE=m
 CONFIG_BATTERY_MAX17040=m
@@ -4085,9 +4125,11 @@ CONFIG_CHARGER_BQ24735=m
 CONFIG_CHARGER_BQ25890=m
 CONFIG_CHARGER_SMB347=m
 CONFIG_CHARGER_TPS65090=m
+CONFIG_CHARGER_TPS65217=m
 CONFIG_BATTERY_GAUGE_LTC2941=m
 CONFIG_BATTERY_RT5033=m
 CONFIG_CHARGER_RT9455=m
+CONFIG_AXP20X_POWER=m
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET_RESTART=y
 CONFIG_POWER_AVS=y
@@ -4165,6 +4207,7 @@ CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
 CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX31790=m
 CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_MCP3021=m
 CONFIG_SENSORS_MENF21BMC_HWMON=m
@@ -4338,6 +4381,7 @@ CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_BCM7038_WDT=m
 CONFIG_MEN_A21_WDT=m
 CONFIG_XEN_WDT=m
 
@@ -4373,6 +4417,7 @@ CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
 # CONFIG_SSB_PCMCIAHOST is not set
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
+CONFIG_SSB_HOST_SOC=y
 # CONFIG_SSB_SILENT is not set
 # CONFIG_SSB_DEBUG is not set
 CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
@@ -4904,6 +4949,7 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
 CONFIG_V4L_TEST_DRIVERS=y
 CONFIG_VIDEO_VIVID=m
+CONFIG_VIDEO_VIVID_MAX_DEVS=64
 CONFIG_VIDEO_VIM2M=m
 CONFIG_DVB_PLATFORM_DRIVERS=y
 
@@ -5306,7 +5352,7 @@ CONFIG_DRM_RADEON=m
 # CONFIG_DRM_RADEON_USERPTR is not set
 # CONFIG_DRM_RADEON_UMS is not set
 CONFIG_DRM_AMDGPU=m
-CONFIG_DRM_AMDGPU_CIK=y
+# CONFIG_DRM_AMDGPU_CIK is not set
 CONFIG_DRM_AMDGPU_USERPTR=y
 CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
@@ -5449,6 +5495,7 @@ CONFIG_FB_GEODE_GX1=m
 CONFIG_FB_SM501=m
 CONFIG_FB_SMSCUFX=m
 CONFIG_FB_UDL=m
+CONFIG_FB_IBM_GXT4500=m
 # CONFIG_FB_VIRTUAL is not set
 CONFIG_XEN_FBDEV_FRONTEND=m
 CONFIG_FB_METRONOME=m
@@ -5541,7 +5588,9 @@ CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
 CONFIG_SND_OSSEMUL=y
 CONFIG_SND_MIXER_OSS=m
-# CONFIG_SND_PCM_OSS is not set
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
 # CONFIG_SND_SEQUENCER_OSS is not set
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
@@ -5717,6 +5766,7 @@ CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDA_CORE=m
 CONFIG_SND_HDA_DSP_LOADER=y
 CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_EXT_CORE=m
 CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_SPI=y
 CONFIG_SND_USB=y
@@ -5742,12 +5792,16 @@ CONFIG_SND_ISIGHT=m
 CONFIG_SND_SCS1X=m
 CONFIG_SND_FIREWORKS=m
 CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
 CONFIG_SND_PCMCIA=y
 CONFIG_SND_VXPOCKET=m
 CONFIG_SND_PDAUDIOCF=m
 CONFIG_SND_SOC=m
 CONFIG_SND_SOC_AC97_BUS=y
 CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+CONFIG_SND_SOC_COMPRESS=y
+CONFIG_SND_SOC_TOPOLOGY=y
 CONFIG_SND_ATMEL_SOC=m
 CONFIG_SND_DESIGNWARE_I2S=m
 
@@ -5781,6 +5835,13 @@ CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
 CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
 CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m
 CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m
+CONFIG_SND_SOC_INTEL_SKYLAKE=m
+CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m
+
+#
+# Allwinner SoC Audio support
+#
+CONFIG_SND_SUN4I_CODEC=m
 CONFIG_SND_SOC_XTFPGA_I2S=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 
@@ -5791,6 +5852,7 @@ CONFIG_SND_SOC_AC97_CODEC=m
 CONFIG_SND_SOC_ADAU1701=m
 CONFIG_SND_SOC_AK4104=m
 CONFIG_SND_SOC_AK4554=m
+CONFIG_SND_SOC_AK4613=m
 CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
@@ -5808,7 +5870,7 @@ CONFIG_SND_SOC_CS4271_SPI=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_CS4349=m
-CONFIG_SND_SOC_HDMI_CODEC=m
+CONFIG_SND_SOC_DMIC=m
 CONFIG_SND_SOC_ES8328=m
 CONFIG_SND_SOC_GTM601=m
 CONFIG_SND_SOC_MAX98090=m
@@ -5894,6 +5956,7 @@ CONFIG_HID_BELKIN=m
 CONFIG_HID_BETOP_FF=m
 CONFIG_HID_CHERRY=m
 CONFIG_HID_CHICONY=m
+CONFIG_HID_CORSAIR=m
 CONFIG_HID_PRODIKEYS=m
 CONFIG_HID_CP2112=m
 CONFIG_HID_CYPRESS=m
@@ -5904,6 +5967,7 @@ CONFIG_HID_ELECOM=m
 CONFIG_HID_ELO=m
 CONFIG_HID_EZKEY=m
 CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GFRM=m
 CONFIG_HID_HOLTEK=m
 CONFIG_HOLTEK_FF=y
 CONFIG_HID_GT683R=m
@@ -6002,7 +6066,6 @@ CONFIG_USB_DYNAMIC_MINORS=y
 # CONFIG_USB_OTG is not set
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_OTG_FSM is not set
 CONFIG_USB_ULPI_BUS=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
@@ -6024,7 +6087,6 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y
 CONFIG_USB_OXU210HP_HCD=m
 CONFIG_USB_ISP116X_HCD=m
 CONFIG_USB_ISP1362_HCD=m
-CONFIG_USB_FUSBH200_HCD=m
 CONFIG_USB_FOTG210_HCD=m
 CONFIG_USB_MAX3421_HCD=m
 CONFIG_USB_OHCI_HCD=y
@@ -6346,7 +6408,6 @@ CONFIG_UWB_WHCI=m
 CONFIG_UWB_I1480U=m
 CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_CLKGATE is not set
 
 #
 # MMC/SD/SDIO Card Drivers
@@ -6412,10 +6473,11 @@ CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_LP5562 is not set
-# CONFIG_LEDS_LP8501 is not set
+CONFIG_LEDS_LP55XX_COMMON=m
+CONFIG_LEDS_LP5521=m
+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
@@ -6573,6 +6635,7 @@ CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
 CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
 CONFIG_RTC_DRV_S5M=m
 
 #
@@ -6646,7 +6709,7 @@ CONFIG_DMADEVICES=y
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_VIRTUAL_CHANNELS=m
 CONFIG_DMA_ACPI=y
-CONFIG_IDMA64=m
+CONFIG_INTEL_IDMA64=m
 CONFIG_PCH_DMA=m
 CONFIG_TIMB_DMA=m
 CONFIG_DW_DMAC_CORE=m
@@ -6683,6 +6746,7 @@ CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
 CONFIG_VFIO_PCI_MMAP=y
 CONFIG_VFIO_PCI_INTX=y
+CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -6771,7 +6835,6 @@ CONFIG_COMEDI_DT2815=m
 CONFIG_COMEDI_DT2817=m
 CONFIG_COMEDI_DT282X=m
 CONFIG_COMEDI_DMM32AT=m
-CONFIG_COMEDI_UNIOXX5=m
 CONFIG_COMEDI_FL512=m
 CONFIG_COMEDI_AIO_AIO12_8=m
 CONFIG_COMEDI_AIO_IIRO_16=m
@@ -6990,9 +7053,6 @@ CONFIG_IIO_SIMPLE_DUMMY=m
 # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set
 CONFIG_FB_SM750=m
 CONFIG_FB_XGI=m
-CONFIG_FT1000=m
-CONFIG_FT1000_USB=m
-CONFIG_FT1000_PCMCIA=m
 
 #
 # Speakup console speech
@@ -7028,7 +7088,7 @@ CONFIG_LIRC_SERIAL=m
 CONFIG_LIRC_SERIAL_TRANSMITTER=y
 CONFIG_LIRC_SIR=m
 CONFIG_LIRC_ZILOG=m
-CONFIG_STAGING_RDMA=y
+CONFIG_STAGING_RDMA=m
 CONFIG_INFINIBAND_AMSO1100=m
 # CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
 
@@ -7048,14 +7108,7 @@ CONFIG_FWTTY_MAX_TOTAL_PORTS=64
 CONFIG_FWTTY_MAX_CARD_PORTS=32
 CONFIG_MTD_SPINAND_MT29F=m
 CONFIG_MTD_SPINAND_ONDIEECC=y
-CONFIG_LUSTRE_FS=m
-CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER=8192
-# CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK is not set
-CONFIG_LUSTRE_LLITE_LLOOP=m
-CONFIG_LNET=m
-CONFIG_LNET_MAX_PAYLOAD=1048576
-CONFIG_LNET_SELFTEST=m
-CONFIG_LNET_XPRT_IB=m
+# CONFIG_LUSTRE_FS is not set
 CONFIG_DGNC=m
 CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
@@ -7082,6 +7135,7 @@ CONFIG_FB_TFT_SSD1306=m
 CONFIG_FB_TFT_SSD1331=m
 CONFIG_FB_TFT_SSD1351=m
 CONFIG_FB_TFT_ST7735R=m
+CONFIG_FB_TFT_ST7789V=m
 CONFIG_FB_TFT_TINYLCD=m
 CONFIG_FB_TFT_TLS8204=m
 CONFIG_FB_TFT_UC1611=m
@@ -7090,6 +7144,7 @@ CONFIG_FB_TFT_UPD161704=m
 CONFIG_FB_TFT_WATTEROTT=m
 CONFIG_FB_FLEX=m
 CONFIG_FB_TFT_FBTFT_DEVICE=m
+# CONFIG_WILC1000_DRIVER is not set
 CONFIG_MOST=m
 CONFIG_MOSTCORE=m
 CONFIG_AIM_CDEV=m
@@ -7142,6 +7197,7 @@ CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
 CONFIG_TOSHIBA_HAPS=m
+CONFIG_TOSHIBA_WMI=m
 CONFIG_ACPI_CMPC=m
 CONFIG_INTEL_SCU_IPC=y
 CONFIG_INTEL_SCU_IPC_UTIL=m
@@ -7211,6 +7267,7 @@ CONFIG_IOMMU_SUPPORT=y
 CONFIG_IOMMU_IOVA=y
 CONFIG_DMAR_TABLE=y
 CONFIG_INTEL_IOMMU=y
+CONFIG_INTEL_IOMMU_SVM=y
 # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
 CONFIG_INTEL_IOMMU_FLOPPY_WA=y
 
@@ -7263,17 +7320,20 @@ CONFIG_EXTCON_USB_GPIO=m
 CONFIG_MEMORY=y
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
 CONFIG_IIO_KFIFO_BUF=m
 CONFIG_IIO_TRIGGERED_BUFFER=m
 CONFIG_IIO_TRIGGER=y
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+CONFIG_IIO_TRIGGERED_EVENT=m
 
 #
 # Accelerometers
 #
 CONFIG_BMA180=m
 CONFIG_BMC150_ACCEL=m
+CONFIG_BMC150_ACCEL_I2C=m
+CONFIG_BMC150_ACCEL_SPI=m
 CONFIG_HID_SENSOR_ACCEL_3D=m
 CONFIG_IIO_ST_ACCEL_3AXIS=m
 CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
@@ -7284,6 +7344,7 @@ CONFIG_MMA8452=m
 CONFIG_MMA9551_CORE=m
 CONFIG_MMA9551=m
 CONFIG_MMA9553=m
+CONFIG_MXC4005=m
 CONFIG_STK8312=m
 CONFIG_STK8BA50=m
 
@@ -7301,8 +7362,9 @@ CONFIG_AD7887=m
 CONFIG_AD7923=m
 CONFIG_AD799X=m
 CONFIG_AXP288_ADC=m
-CONFIG_DA9150_GPADC=m
 CONFIG_CC10001_ADC=m
+CONFIG_DA9150_GPADC=m
+CONFIG_HI8435=m
 CONFIG_LP8788_ADC=m
 CONFIG_MAX1027=m
 CONFIG_MAX1363=m
@@ -7325,10 +7387,16 @@ CONFIG_VIPERBOARD_ADC=m
 CONFIG_AD8366=m
 
 #
+# Chemical Sensors
+#
+CONFIG_VZ89X=m
+
+#
 # Hid Sensor IIO Common
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
+CONFIG_IIO_MS_SENSORS_I2C=m
 
 #
 # SSP Sensor Common
@@ -7383,6 +7451,8 @@ CONFIG_ADIS16136=m
 CONFIG_ADIS16260=m
 CONFIG_ADXRS450=m
 CONFIG_BMG160=m
+CONFIG_BMG160_I2C=m
+CONFIG_BMG160_SPI=m
 CONFIG_HID_SENSOR_GYRO_3D=m
 CONFIG_IIO_ST_GYRO_3AXIS=m
 CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
@@ -7393,6 +7463,8 @@ CONFIG_ITG3200=m
 # Humidity sensors
 #
 CONFIG_DHT11=m
+CONFIG_HDC100X=m
+CONFIG_HTU21=m
 CONFIG_SI7005=m
 CONFIG_SI7020=m
 
@@ -7413,6 +7485,7 @@ CONFIG_ACPI_ALS=m
 CONFIG_ADJD_S311=m
 CONFIG_AL3320A=m
 CONFIG_APDS9300=m
+CONFIG_APDS9960=m
 CONFIG_BH1750=m
 CONFIG_CM32181=m
 CONFIG_CM3232=m
@@ -7433,6 +7506,7 @@ CONFIG_TCS3414=m
 CONFIG_TCS3472=m
 CONFIG_SENSORS_TSL2563=m
 CONFIG_TSL4531=m
+CONFIG_US5182D=m
 CONFIG_VCNL4000=m
 
 #
@@ -7440,13 +7514,13 @@ CONFIG_VCNL4000=m
 #
 CONFIG_AK8975=m
 CONFIG_AK09911=m
+CONFIG_BMC150_MAGN=m
 CONFIG_MAG3110=m
 CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
 CONFIG_MMC35240=m
 CONFIG_IIO_ST_MAGN_3AXIS=m
 CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
 CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
-CONFIG_BMC150_MAGN=m
 
 #
 # Inclinometer sensors
@@ -7461,6 +7535,11 @@ CONFIG_IIO_INTERRUPT_TRIGGER=m
 CONFIG_IIO_SYSFS_TRIGGER=m
 
 #
+# Digital potentiometers
+#
+CONFIG_MCP4531=m
+
+#
 # Pressure sensors
 #
 CONFIG_BMP280=m
@@ -7470,6 +7549,7 @@ CONFIG_MPL3115=m
 CONFIG_MS5611=m
 CONFIG_MS5611_I2C=m
 CONFIG_MS5611_SPI=m
+CONFIG_MS5637=m
 CONFIG_IIO_ST_PRESS=m
 CONFIG_IIO_ST_PRESS_I2C=m
 CONFIG_IIO_ST_PRESS_SPI=m
@@ -7483,6 +7563,7 @@ CONFIG_AS3935=m
 #
 # Proximity sensors
 #
+CONFIG_LIDAR_LITE_V2=m
 CONFIG_SX9500=m
 
 #
@@ -7490,6 +7571,8 @@ CONFIG_SX9500=m
 #
 CONFIG_MLX90614=m
 CONFIG_TMP006=m
+CONFIG_TSYS01=m
+CONFIG_TSYS02D=m
 CONFIG_NTB=m
 CONFIG_NTB_PINGPONG=m
 CONFIG_NTB_TOOL=m
@@ -7519,6 +7602,7 @@ CONFIG_PWM_LP3943=m
 CONFIG_PWM_LPSS=m
 CONFIG_PWM_LPSS_PCI=m
 CONFIG_PWM_LPSS_PLATFORM=m
+CONFIG_PWM_PCA9685=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
 CONFIG_IPACK_BUS=m
@@ -7566,6 +7650,22 @@ CONFIG_ND_CLAIM=y
 CONFIG_ND_BTT=m
 CONFIG_BTT=y
 CONFIG_NVMEM=m
+CONFIG_STM=m
+CONFIG_STM_DUMMY=m
+CONFIG_STM_SOURCE_CONSOLE=m
+CONFIG_INTEL_TH=m
+CONFIG_INTEL_TH_PCI=m
+CONFIG_INTEL_TH_GTH=m
+CONFIG_INTEL_TH_STH=m
+CONFIG_INTEL_TH_MSU=m
+CONFIG_INTEL_TH_PTI=m
+# CONFIG_INTEL_TH_DEBUG is not set
+
+#
+# FPGA Configuration Support
+#
+CONFIG_FPGA=m
+CONFIG_FPGA_MGR_ZYNQ_FPGA=m
 
 #
 # Firmware Drivers
@@ -7590,6 +7690,7 @@ CONFIG_EFI_ESRT=y
 CONFIG_EFI_VARS_PSTORE=m
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
 CONFIG_EFI_RUNTIME_MAP=y
+# CONFIG_EFI_FAKE_MEMMAP is not set
 CONFIG_EFI_RUNTIME_WRAPPERS=y
 CONFIG_UEFI_CPER=y
 
@@ -7756,6 +7857,7 @@ CONFIG_UBIFS_FS=m
 # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
 CONFIG_UBIFS_FS_LZO=y
 CONFIG_UBIFS_FS_ZLIB=y
+CONFIG_UBIFS_ATIME_SUPPORT=y
 # CONFIG_LOGFS is not set
 CONFIG_CRAMFS=m
 CONFIG_SQUASHFS=m
@@ -7766,7 +7868,7 @@ 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_LZ4=y
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
@@ -7951,6 +8053,7 @@ CONFIG_UNUSED_SYMBOLS=y
 CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -8090,6 +8193,7 @@ CONFIG_MMIOTRACE=y
 # CONFIG_RING_BUFFER_BENCHMARK is not set
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
 # CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
 
 #
 # Runtime Testing
@@ -8106,6 +8210,7 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_STRING_HELPERS=m
 CONFIG_TEST_KSTRTOX=m
+CONFIG_TEST_PRINTF=m
 # CONFIG_TEST_RHASHTABLE is not set
 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_DMA_API_DEBUG is not set
@@ -8131,9 +8236,12 @@ CONFIG_STRICT_DEVMEM=y
 CONFIG_EARLY_PRINTK=y
 CONFIG_EARLY_PRINTK_DBGP=y
 CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
 # CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
 CONFIG_DEBUG_RODATA=y
 # CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_WX is not set
 CONFIG_DEBUG_SET_MODULE_RONX=y
 # CONFIG_DEBUG_NX_TEST is not set
 CONFIG_DOUBLEFAULT=y
@@ -8286,6 +8394,7 @@ CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_LRW=m
 CONFIG_CRYPTO_PCBC=m
 CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_KEYWRAP=m
 
 #
 # Hash modes
@@ -8408,6 +8517,7 @@ CONFIG_HAVE_KVM_MSI=y
 CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
 CONFIG_KVM_VFIO=y
 CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
diff --git a/gnu/packages/linux-libre-x86_64.conf b/gnu/packages/linux-libre-x86_64.conf
index 6c233c079a..406053ab7a 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 4.3.0-gnu Kernel Configuration
+# Linux/x86 4.4.0-gnu Kernel Configuration
 #
 CONFIG_64BIT=y
 CONFIG_X86_64=y
@@ -284,8 +284,8 @@ CONFIG_SECCOMP_FILTER=y
 CONFIG_HAVE_CC_STACKPROTECTOR=y
 CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
 CONFIG_HAVE_CONTEXT_TRACKING=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -322,7 +322,6 @@ CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG_SHA512 is not set
 # CONFIG_MODULE_COMPRESS is not set
 CONFIG_MODULES_TREE_LOOKUP=y
-CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
@@ -388,7 +387,7 @@ CONFIG_FREEZER=y
 #
 # Processor type and features
 #
-CONFIG_ZONE_DMA=y
+# CONFIG_ZONE_DMA is not set
 CONFIG_SMP=y
 CONFIG_X86_FEATURE_NAMES=y
 CONFIG_X86_X2APIC=y
@@ -400,7 +399,7 @@ CONFIG_X86_NUMACHIP=y
 # CONFIG_X86_GOLDFISH is not set
 CONFIG_X86_INTEL_LPSS=y
 CONFIG_X86_AMD_PLATFORM_DEVICE=y
-CONFIG_IOSF_MBI=m
+CONFIG_IOSF_MBI=y
 CONFIG_IOSF_MBI_DEBUG=y
 CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
 CONFIG_SCHED_OMIT_FRAME_POINTER=y
@@ -469,9 +468,6 @@ CONFIG_MICROCODE=y
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_MICROCODE_INTEL_EARLY=y
-CONFIG_MICROCODE_AMD_EARLY=y
-CONFIG_MICROCODE_EARLY=y
 CONFIG_X86_MSR=m
 CONFIG_X86_CPUID=m
 CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
@@ -507,7 +503,6 @@ CONFIG_HAVE_BOOTMEM_INFO_NODE=y
 CONFIG_MEMORY_HOTPLUG=y
 CONFIG_MEMORY_HOTPLUG_SPARSE=y
 CONFIG_MEMORY_HOTREMOVE=y
-CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
 CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
 CONFIG_MEMORY_BALLOON=y
@@ -516,8 +511,7 @@ CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
 CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
 CONFIG_PHYS_ADDR_T_64BIT=y
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_BOUNCE=y
+CONFIG_ZONE_DMA_FLAG=0
 CONFIG_VIRT_TO_BUS=y
 CONFIG_MMU_NOTIFIER=y
 CONFIG_KSM=y
@@ -545,6 +539,7 @@ CONFIG_GENERIC_EARLY_IOREMAP=y
 CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
 # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set
 CONFIG_IDLE_PAGE_TRACKING=y
+CONFIG_ZONE_DEVICE=y
 CONFIG_FRAME_VECTOR=y
 CONFIG_X86_PMEM_LEGACY_DEVICE=y
 CONFIG_X86_PMEM_LEGACY=y
@@ -586,6 +581,9 @@ CONFIG_HOTPLUG_CPU=y
 # CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set
 # CONFIG_DEBUG_HOTPLUG_CPU0 is not set
 # CONFIG_COMPAT_VDSO is not set
+# CONFIG_LEGACY_VSYSCALL_NATIVE is not set
+CONFIG_LEGACY_VSYSCALL_EMULATE=y
+# CONFIG_LEGACY_VSYSCALL_NONE is not set
 # CONFIG_CMDLINE_BOOL is not set
 CONFIG_MODIFY_LDT_SYSCALL=y
 CONFIG_HAVE_LIVEPATCH=y
@@ -624,6 +622,7 @@ CONFIG_ACPI=y
 CONFIG_ACPI_LEGACY_TABLES_LOOKUP=y
 CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC=y
 CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT=y
+# CONFIG_ACPI_DEBUGGER is not set
 CONFIG_ACPI_SLEEP=y
 # CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_REV_OVERRIDE_POSSIBLE=y
@@ -967,7 +966,7 @@ CONFIG_NF_CONNTRACK_TFTP=m
 CONFIG_NF_CT_NETLINK=m
 CONFIG_NF_CT_NETLINK_TIMEOUT=m
 CONFIG_NF_CT_NETLINK_HELPER=m
-CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
 CONFIG_NF_NAT=m
 CONFIG_NF_NAT_NEEDED=y
 CONFIG_NF_NAT_PROTO_DCCP=m
@@ -1332,6 +1331,7 @@ CONFIG_6LOWPAN_NHC_MOBILITY=m
 CONFIG_6LOWPAN_NHC_ROUTING=m
 CONFIG_6LOWPAN_NHC_UDP=m
 CONFIG_IEEE802154=m
+CONFIG_IEEE802154_NL802154_EXPERIMENTAL=y
 CONFIG_IEEE802154_SOCKET=m
 CONFIG_IEEE802154_6LOWPAN=m
 CONFIG_MAC802154=m
@@ -1430,6 +1430,7 @@ CONFIG_MPLS_ROUTING=m
 CONFIG_MPLS_IPTUNNEL=m
 CONFIG_HSR=m
 # CONFIG_NET_SWITCHDEV is not set
+CONFIG_NET_L3_MASTER_DEV=y
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
@@ -1636,6 +1637,7 @@ CONFIG_CFG80211=m
 CONFIG_CFG80211_DEFAULT_PS=y
 CONFIG_CFG80211_DEBUGFS=y
 # CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
 CONFIG_CFG80211_WEXT=y
 CONFIG_CFG80211_WEXT_EXPORT=y
 CONFIG_LIB80211=m
@@ -1677,7 +1679,7 @@ CONFIG_CEPH_LIB_USE_DNS_RESOLVER=y
 CONFIG_NFC=m
 CONFIG_NFC_DIGITAL=m
 CONFIG_NFC_NCI=m
-CONFIG_NFC_NCI_SPI=y
+CONFIG_NFC_NCI_SPI=m
 CONFIG_NFC_NCI_UART=m
 CONFIG_NFC_HCI=m
 CONFIG_NFC_SHDLC=y
@@ -1691,6 +1693,8 @@ CONFIG_NFC_TRF7970A=m
 CONFIG_NFC_MEI_PHY=m
 CONFIG_NFC_SIM=m
 CONFIG_NFC_PORT100=m
+CONFIG_NFC_FDP=m
+CONFIG_NFC_FDP_I2C=m
 CONFIG_NFC_PN544=m
 CONFIG_NFC_PN544_I2C=m
 CONFIG_NFC_PN544_MEI=m
@@ -1700,6 +1704,8 @@ CONFIG_NFC_MICROREAD_MEI=m
 CONFIG_NFC_MRVL=m
 CONFIG_NFC_MRVL_USB=m
 CONFIG_NFC_MRVL_UART=m
+CONFIG_NFC_MRVL_I2C=m
+CONFIG_NFC_MRVL_SPI=m
 CONFIG_NFC_ST21NFCA=m
 CONFIG_NFC_ST21NFCA_I2C=m
 CONFIG_NFC_ST_NCI=m
@@ -1957,7 +1963,6 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
 CONFIG_BLK_DEV_DRBD=m
 # CONFIG_DRBD_FAULT_INJECTION is not set
 CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_NVME=m
 CONFIG_BLK_DEV_SKD=m
 CONFIG_BLK_DEV_OSD=m
 CONFIG_BLK_DEV_SX8=m
@@ -1975,6 +1980,7 @@ CONFIG_VIRTIO_BLK=y
 # CONFIG_BLK_DEV_HD is not set
 CONFIG_BLK_DEV_RBD=m
 CONFIG_BLK_DEV_RSXX=m
+CONFIG_BLK_DEV_NVME=m
 
 #
 # Misc devices
@@ -2064,6 +2070,11 @@ CONFIG_INTEL_MIC_CARD=m
 # SCIF Driver
 #
 CONFIG_SCIF=m
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
+CONFIG_MIC_COSM=m
 CONFIG_GENWQE=m
 CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
 CONFIG_ECHO=m
@@ -2151,12 +2162,10 @@ CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
 CONFIG_MEGARAID_LEGACY=m
 CONFIG_MEGARAID_SAS=m
-CONFIG_SCSI_MPT2SAS=m
-CONFIG_SCSI_MPT2SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT2SAS_LOGGING is not set
 CONFIG_SCSI_MPT3SAS=m
+CONFIG_SCSI_MPT2SAS_MAX_SGE=128
 CONFIG_SCSI_MPT3SAS_MAX_SGE=128
-# CONFIG_SCSI_MPT3SAS_LOGGING is not set
+CONFIG_SCSI_MPT2SAS=m
 CONFIG_SCSI_UFSHCD=m
 CONFIG_SCSI_UFSHCD_PCI=m
 CONFIG_SCSI_UFSHCD_PLATFORM=m
@@ -2511,6 +2520,8 @@ CONFIG_ATL1=m
 CONFIG_ATL1E=m
 CONFIG_ATL1C=m
 CONFIG_ALX=m
+CONFIG_NET_VENDOR_AURORA=y
+CONFIG_AURORA_NB8800=m
 CONFIG_NET_CADENCE=y
 CONFIG_MACB=m
 CONFIG_NET_VENDOR_BROADCOM=y
@@ -2525,6 +2536,8 @@ CONFIG_TIGON3=m
 CONFIG_BNX2X=m
 CONFIG_BNX2X_SRIOV=y
 CONFIG_BNX2X_VXLAN=y
+CONFIG_BNXT=m
+CONFIG_BNXT_SRIOV=y
 CONFIG_NET_VENDOR_BROCADE=y
 CONFIG_BNA=m
 CONFIG_NET_VENDOR_CAVIUM=y
@@ -2597,7 +2610,6 @@ CONFIG_I40EVF=m
 CONFIG_FM10K=m
 CONFIG_FM10K_VXLAN=y
 CONFIG_NET_VENDOR_I825XX=y
-CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MVMDIO=m
@@ -2624,6 +2636,7 @@ CONFIG_KSZ884X_PCI=m
 CONFIG_NET_VENDOR_MICROCHIP=y
 CONFIG_ENC28J60=m
 # CONFIG_ENC28J60_WRITEVERIFY is not set
+CONFIG_ENCX24J600=m
 CONFIG_NET_VENDOR_MYRI=y
 CONFIG_MYRI10GE=m
 CONFIG_MYRI10GE_DCA=y
@@ -2651,6 +2664,8 @@ CONFIG_QLCNIC_VXLAN=y
 CONFIG_QLCNIC_HWMON=y
 CONFIG_QLGE=m
 CONFIG_NETXEN_NIC=m
+CONFIG_QED=m
+CONFIG_QEDE=m
 CONFIG_NET_VENDOR_QUALCOMM=y
 CONFIG_NET_VENDOR_REALTEK=y
 CONFIG_ATP=m
@@ -2734,6 +2749,7 @@ CONFIG_CICADA_PHY=m
 CONFIG_VITESSE_PHY=m
 CONFIG_TERANETICS_PHY=m
 CONFIG_SMSC_PHY=m
+CONFIG_BCM_NET_PHYLIB=m
 CONFIG_BROADCOM_PHY=m
 CONFIG_BCM7XXX_PHY=m
 CONFIG_BCM87XX_PHY=m
@@ -2743,7 +2759,7 @@ CONFIG_NATIONAL_PHY=m
 CONFIG_STE10XP=m
 CONFIG_LSI_ET1011C_PHY=m
 CONFIG_MICREL_PHY=m
-# CONFIG_DP83848_PHY is not set
+CONFIG_DP83848_PHY=m
 CONFIG_DP83867_PHY=m
 CONFIG_MICROCHIP_PHY=m
 CONFIG_FIXED_PHY=y
@@ -2828,10 +2844,10 @@ CONFIG_PCMCIA_WL3501=m
 # CONFIG_PRISM54 is not set
 CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_ADM8211=m
 CONFIG_RTL8180=m
 CONFIG_RTL8187=m
 CONFIG_RTL8187_LEDS=y
-CONFIG_ADM8211=m
 CONFIG_MAC80211_HWSIM=m
 CONFIG_MWL8K=m
 CONFIG_ATH_COMMON=m
@@ -2885,7 +2901,6 @@ CONFIG_B43_BUSES_BCMA_AND_SSB=y
 # CONFIG_B43_BUSES_SSB is not set
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43_PCICORE_AUTOSELECT=y
-# CONFIG_B43_PCMCIA is not set
 # CONFIG_B43_SDIO is not set
 CONFIG_B43_BCMA_PIO=y
 CONFIG_B43_PIO=y
@@ -3027,6 +3042,8 @@ CONFIG_RTLWIFI_USB=m
 CONFIG_RTL8192C_COMMON=m
 CONFIG_RTL8723_COMMON=m
 CONFIG_RTLBTCOEXIST=m
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
 CONFIG_WL_TI=y
 CONFIG_WL1251=m
 CONFIG_WL1251_SPI=m
@@ -3082,6 +3099,7 @@ CONFIG_SBNI=m
 CONFIG_IEEE802154_DRIVERS=m
 CONFIG_IEEE802154_FAKELB=m
 CONFIG_IEEE802154_AT86RF230=m
+CONFIG_IEEE802154_AT86RF230_DEBUGFS=y
 CONFIG_IEEE802154_MRF24J40=m
 CONFIG_IEEE802154_CC2520=m
 CONFIG_IEEE802154_ATUSB=m
@@ -3221,6 +3239,10 @@ CONFIG_MISDN_NETJET=m
 CONFIG_MISDN_IPAC=m
 CONFIG_MISDN_ISAR=m
 CONFIG_ISDN_HDLC=m
+CONFIG_NVM=y
+# CONFIG_NVM_DEBUG is not set
+CONFIG_NVM_GENNVM=m
+CONFIG_NVM_RRPC=m
 
 #
 # Input device support
@@ -3357,6 +3379,7 @@ CONFIG_TOUCHSCREEN_DA9052=m
 CONFIG_TOUCHSCREEN_DYNAPRO=m
 CONFIG_TOUCHSCREEN_HAMPSHIRE=m
 CONFIG_TOUCHSCREEN_EETI=m
+CONFIG_TOUCHSCREEN_FT6236=m
 CONFIG_TOUCHSCREEN_FUJITSU=m
 CONFIG_TOUCHSCREEN_GOODIX=m
 CONFIG_TOUCHSCREEN_ILI210X=m
@@ -3406,6 +3429,8 @@ CONFIG_TOUCHSCREEN_USB_NEXIO=y
 CONFIG_TOUCHSCREEN_USB_EASYTOUCH=y
 CONFIG_TOUCHSCREEN_TOUCHIT213=m
 CONFIG_TOUCHSCREEN_TSC_SERIO=m
+CONFIG_TOUCHSCREEN_TSC200X_CORE=m
+CONFIG_TOUCHSCREEN_TSC2004=m
 CONFIG_TOUCHSCREEN_TSC2005=m
 CONFIG_TOUCHSCREEN_TSC2007=m
 CONFIG_TOUCHSCREEN_PCAP=m
@@ -3414,6 +3439,7 @@ CONFIG_TOUCHSCREEN_SUR40=m
 CONFIG_TOUCHSCREEN_SX8654=m
 CONFIG_TOUCHSCREEN_TPS6507X=m
 CONFIG_TOUCHSCREEN_ZFORCE=m
+CONFIG_TOUCHSCREEN_ROHM_BU21023=m
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_88PM860X_ONKEY=m
 CONFIG_INPUT_88PM80X_ONKEY=m
@@ -3489,6 +3515,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 CONFIG_SERIO_PS2MULT=m
 CONFIG_SERIO_ARC_PS2=m
 CONFIG_HYPERV_KEYBOARD=m
+CONFIG_USERIO=m
 CONFIG_GAMEPORT=m
 CONFIG_GAMEPORT_NS558=m
 CONFIG_GAMEPORT_L4=m
@@ -3545,8 +3572,11 @@ CONFIG_SERIAL_8250_MANY_PORTS=y
 CONFIG_SERIAL_8250_SHARE_IRQ=y
 # CONFIG_SERIAL_8250_DETECT_IRQ is not set
 CONFIG_SERIAL_8250_RSA=y
+# CONFIG_SERIAL_8250_FSL is not set
 CONFIG_SERIAL_8250_DW=m
+CONFIG_SERIAL_8250_RT288X=y
 CONFIG_SERIAL_8250_FINTEK=m
+CONFIG_SERIAL_8250_MID=m
 
 #
 # Non-8250 serial port support
@@ -3696,6 +3726,7 @@ CONFIG_I2C_CBUS_GPIO=m
 CONFIG_I2C_DESIGNWARE_CORE=m
 CONFIG_I2C_DESIGNWARE_PLATFORM=m
 CONFIG_I2C_DESIGNWARE_PCI=m
+CONFIG_I2C_DESIGNWARE_BAYTRAIL=y
 CONFIG_I2C_EMEV2=m
 CONFIG_I2C_GPIO=m
 CONFIG_I2C_KEMPLD=m
@@ -3810,6 +3841,7 @@ CONFIG_PINCTRL_AMD=y
 CONFIG_PINCTRL_BAYTRAIL=y
 CONFIG_PINCTRL_CHERRYVIEW=m
 CONFIG_PINCTRL_INTEL=m
+CONFIG_PINCTRL_BROXTON=m
 CONFIG_PINCTRL_SUNRISEPOINT=m
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_GPIOLIB=y
@@ -3824,15 +3856,22 @@ CONFIG_GPIO_MAX730X=m
 #
 # Memory mapped GPIO drivers
 #
+CONFIG_GPIO_AMDPT=m
 CONFIG_GPIO_DWAPB=m
-CONFIG_GPIO_F7188X=m
 CONFIG_GPIO_GENERIC_PLATFORM=m
 CONFIG_GPIO_ICH=m
-CONFIG_GPIO_IT8761E=m
 CONFIG_GPIO_LYNXPOINT=y
+CONFIG_GPIO_VX855=m
+CONFIG_GPIO_ZX=y
+
+#
+# Port-mapped I/O GPIO drivers
+#
+CONFIG_GPIO_104_IDIO_16=m
+CONFIG_GPIO_F7188X=m
+CONFIG_GPIO_IT87=m
 CONFIG_GPIO_SCH=m
 CONFIG_GPIO_SCH311X=m
-CONFIG_GPIO_VX855=m
 
 #
 # I2C GPIO expanders
@@ -3880,9 +3919,12 @@ CONFIG_GPIO_RDC321X=m
 # SPI GPIO expanders
 #
 CONFIG_GPIO_MAX7301=m
-CONFIG_GPIO_MCP23S08=m
 CONFIG_GPIO_MC33880=m
-CONFIG_GPIO_ZX=y
+
+#
+# SPI or I2C GPIO expanders
+#
+CONFIG_GPIO_MCP23S08=m
 
 #
 # USB GPIO expanders
@@ -3933,12 +3975,13 @@ CONFIG_BATTERY_DS2780=m
 CONFIG_BATTERY_DS2781=m
 CONFIG_BATTERY_DS2782=m
 CONFIG_BATTERY_SBS=m
-CONFIG_BATTERY_BQ27x00=m
-CONFIG_BATTERY_BQ27X00_I2C=y
-CONFIG_BATTERY_BQ27X00_PLATFORM=y
+CONFIG_BATTERY_BQ27XXX=m
+CONFIG_BATTERY_BQ27XXX_I2C=y
+CONFIG_BATTERY_BQ27XXX_PLATFORM=y
 CONFIG_BATTERY_DA9030=m
 CONFIG_BATTERY_DA9052=m
 CONFIG_CHARGER_DA9150=m
+CONFIG_BATTERY_DA9150=m
 CONFIG_AXP288_CHARGER=m
 CONFIG_AXP288_FUEL_GAUGE=m
 CONFIG_BATTERY_MAX17040=m
@@ -3965,9 +4008,11 @@ CONFIG_CHARGER_BQ24735=m
 CONFIG_CHARGER_BQ25890=m
 CONFIG_CHARGER_SMB347=m
 CONFIG_CHARGER_TPS65090=m
+CONFIG_CHARGER_TPS65217=m
 CONFIG_BATTERY_GAUGE_LTC2941=m
 CONFIG_BATTERY_RT5033=m
 CONFIG_CHARGER_RT9455=m
+CONFIG_AXP20X_POWER=m
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET_RESTART=y
 CONFIG_POWER_AVS=y
@@ -4045,6 +4090,7 @@ CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
 CONFIG_SENSORS_MAX6697=m
+CONFIG_SENSORS_MAX31790=m
 CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_MCP3021=m
 CONFIG_SENSORS_MENF21BMC_HWMON=m
@@ -4213,6 +4259,7 @@ CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_BCM7038_WDT=m
 CONFIG_MEN_A21_WDT=m
 CONFIG_XEN_WDT=m
 
@@ -4241,6 +4288,7 @@ CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
 # CONFIG_SSB_PCMCIAHOST is not set
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
 CONFIG_SSB_SDIOHOST=y
+CONFIG_SSB_HOST_SOC=y
 # CONFIG_SSB_SILENT is not set
 # CONFIG_SSB_DEBUG is not set
 CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
@@ -4767,6 +4815,7 @@ CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
 CONFIG_V4L_TEST_DRIVERS=y
 CONFIG_VIDEO_VIVID=m
+CONFIG_VIDEO_VIVID_MAX_DEVS=64
 CONFIG_VIDEO_VIM2M=m
 CONFIG_DVB_PLATFORM_DRIVERS=y
 
@@ -5147,7 +5196,7 @@ CONFIG_DRM_RADEON=m
 # CONFIG_DRM_RADEON_USERPTR is not set
 # CONFIG_DRM_RADEON_UMS is not set
 CONFIG_DRM_AMDGPU=m
-CONFIG_DRM_AMDGPU_CIK=y
+# CONFIG_DRM_AMDGPU_CIK is not set
 CONFIG_DRM_AMDGPU_USERPTR=y
 CONFIG_DRM_NOUVEAU=m
 CONFIG_NOUVEAU_DEBUG=5
@@ -5284,6 +5333,7 @@ CONFIG_FB_CARMINE_DRAM_EVAL=y
 CONFIG_FB_SM501=m
 CONFIG_FB_SMSCUFX=m
 CONFIG_FB_UDL=m
+CONFIG_FB_IBM_GXT4500=m
 # CONFIG_FB_VIRTUAL is not set
 CONFIG_XEN_FBDEV_FRONTEND=m
 CONFIG_FB_METRONOME=m
@@ -5375,7 +5425,9 @@ CONFIG_SND_SEQUENCER=m
 CONFIG_SND_SEQ_DUMMY=m
 CONFIG_SND_OSSEMUL=y
 CONFIG_SND_MIXER_OSS=m
-# CONFIG_SND_PCM_OSS is not set
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
 # CONFIG_SND_SEQUENCER_OSS is not set
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
@@ -5392,7 +5444,7 @@ CONFIG_SND_RAWMIDI_SEQ=m
 CONFIG_SND_OPL3_LIB_SEQ=m
 # CONFIG_SND_OPL4_LIB_SEQ is not set
 # CONFIG_SND_SBAWE_SEQ is not set
-CONFIG_SND_EMU10K1_SEQ=m
+# CONFIG_SND_EMU10K1_SEQ is not set
 CONFIG_SND_MPU401_UART=m
 CONFIG_SND_OPL3_LIB=m
 CONFIG_SND_VX_LIB=m
@@ -5412,9 +5464,7 @@ CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
 CONFIG_SND_SB_COMMON=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
-CONFIG_SND_ALS300=m
 CONFIG_SND_ALS4000=m
-CONFIG_SND_ALI5451=m
 CONFIG_SND_ASIHPI=m
 CONFIG_SND_ATIIXP=m
 CONFIG_SND_ATIIXP_MODEM=m
@@ -5422,7 +5472,6 @@ CONFIG_SND_AU8810=m
 CONFIG_SND_AU8820=m
 CONFIG_SND_AU8830=m
 CONFIG_SND_AW2=m
-CONFIG_SND_AZT3328=m
 CONFIG_SND_BT87X=m
 # CONFIG_SND_BT87X_OVERCLOCK is not set
 CONFIG_SND_CA0106=m
@@ -5447,27 +5496,18 @@ CONFIG_SND_INDIGOIO=m
 CONFIG_SND_INDIGODJ=m
 CONFIG_SND_INDIGOIOX=m
 CONFIG_SND_INDIGODJX=m
-CONFIG_SND_EMU10K1=m
-CONFIG_SND_EMU10K1X=m
 CONFIG_SND_ENS1370=m
 CONFIG_SND_ENS1371=m
-CONFIG_SND_ES1938=m
-CONFIG_SND_ES1968=m
-CONFIG_SND_ES1968_INPUT=y
-CONFIG_SND_ES1968_RADIO=y
 CONFIG_SND_FM801=m
 CONFIG_SND_FM801_TEA575X_BOOL=y
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
-CONFIG_SND_ICE1712=m
 CONFIG_SND_ICE1724=m
 CONFIG_SND_INTEL8X0=m
 CONFIG_SND_INTEL8X0M=m
 CONFIG_SND_KORG1212=m
 CONFIG_SND_LOLA=m
 CONFIG_SND_LX6464ES=m
-CONFIG_SND_MAESTRO3=m
-CONFIG_SND_MAESTRO3_INPUT=y
 CONFIG_SND_MIXART=m
 CONFIG_SND_NM256=m
 CONFIG_SND_PCXHR=m
@@ -5475,8 +5515,6 @@ CONFIG_SND_RIPTIDE=m
 CONFIG_SND_RME32=m
 CONFIG_SND_RME96=m
 CONFIG_SND_RME9652=m
-CONFIG_SND_SONICVIBES=m
-CONFIG_SND_TRIDENT=m
 CONFIG_SND_VIA82XX=m
 CONFIG_SND_VIA82XX_MODEM=m
 CONFIG_SND_VIRTUOSO=m
@@ -5510,6 +5548,7 @@ CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDA_CORE=m
 CONFIG_SND_HDA_DSP_LOADER=y
 CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_EXT_CORE=m
 CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_SPI=y
 CONFIG_SND_USB=y
@@ -5535,12 +5574,16 @@ CONFIG_SND_ISIGHT=m
 CONFIG_SND_SCS1X=m
 CONFIG_SND_FIREWORKS=m
 CONFIG_SND_BEBOB=m
+CONFIG_SND_FIREWIRE_DIGI00X=m
+CONFIG_SND_FIREWIRE_TASCAM=m
 CONFIG_SND_PCMCIA=y
 CONFIG_SND_VXPOCKET=m
 CONFIG_SND_PDAUDIOCF=m
 CONFIG_SND_SOC=m
 CONFIG_SND_SOC_AC97_BUS=y
 CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+CONFIG_SND_SOC_COMPRESS=y
+CONFIG_SND_SOC_TOPOLOGY=y
 CONFIG_SND_ATMEL_SOC=m
 CONFIG_SND_DESIGNWARE_I2S=m
 
@@ -5572,6 +5615,13 @@ CONFIG_SND_SOC_INTEL_BYTCR_RT5640_MACH=m
 CONFIG_SND_SOC_INTEL_CHT_BSW_RT5672_MACH=m
 CONFIG_SND_SOC_INTEL_CHT_BSW_RT5645_MACH=m
 CONFIG_SND_SOC_INTEL_CHT_BSW_MAX98090_TI_MACH=m
+CONFIG_SND_SOC_INTEL_SKYLAKE=m
+CONFIG_SND_SOC_INTEL_SKL_RT286_MACH=m
+
+#
+# Allwinner SoC Audio support
+#
+CONFIG_SND_SUN4I_CODEC=m
 CONFIG_SND_SOC_XTFPGA_I2S=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
 
@@ -5582,6 +5632,7 @@ CONFIG_SND_SOC_AC97_CODEC=m
 CONFIG_SND_SOC_ADAU1701=m
 CONFIG_SND_SOC_AK4104=m
 CONFIG_SND_SOC_AK4554=m
+CONFIG_SND_SOC_AK4613=m
 CONFIG_SND_SOC_AK4642=m
 CONFIG_SND_SOC_AK5386=m
 CONFIG_SND_SOC_ALC5623=m
@@ -5599,7 +5650,7 @@ CONFIG_SND_SOC_CS4271_SPI=m
 CONFIG_SND_SOC_CS42XX8=m
 CONFIG_SND_SOC_CS42XX8_I2C=m
 CONFIG_SND_SOC_CS4349=m
-CONFIG_SND_SOC_HDMI_CODEC=m
+CONFIG_SND_SOC_DMIC=m
 CONFIG_SND_SOC_ES8328=m
 CONFIG_SND_SOC_GTM601=m
 CONFIG_SND_SOC_MAX98090=m
@@ -5684,6 +5735,7 @@ CONFIG_HID_BELKIN=m
 CONFIG_HID_BETOP_FF=m
 CONFIG_HID_CHERRY=m
 CONFIG_HID_CHICONY=m
+CONFIG_HID_CORSAIR=m
 CONFIG_HID_PRODIKEYS=m
 CONFIG_HID_CP2112=m
 CONFIG_HID_CYPRESS=m
@@ -5694,6 +5746,7 @@ CONFIG_HID_ELECOM=m
 CONFIG_HID_ELO=m
 CONFIG_HID_EZKEY=m
 CONFIG_HID_GEMBIRD=m
+CONFIG_HID_GFRM=m
 CONFIG_HID_HOLTEK=m
 CONFIG_HOLTEK_FF=y
 CONFIG_HID_GT683R=m
@@ -5792,7 +5845,6 @@ CONFIG_USB_DYNAMIC_MINORS=y
 # CONFIG_USB_OTG is not set
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_OTG_FSM is not set
 CONFIG_USB_ULPI_BUS=m
 CONFIG_USB_MON=m
 CONFIG_USB_WUSB=m
@@ -5814,7 +5866,6 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y
 CONFIG_USB_OXU210HP_HCD=m
 CONFIG_USB_ISP116X_HCD=m
 CONFIG_USB_ISP1362_HCD=m
-CONFIG_USB_FUSBH200_HCD=m
 CONFIG_USB_FOTG210_HCD=m
 CONFIG_USB_MAX3421_HCD=m
 CONFIG_USB_OHCI_HCD=y
@@ -6136,7 +6187,6 @@ CONFIG_UWB_WHCI=m
 CONFIG_UWB_I1480U=m
 CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_CLKGATE is not set
 
 #
 # MMC/SD/SDIO Card Drivers
@@ -6201,10 +6251,11 @@ CONFIG_LEDS_PCA9532=m
 CONFIG_LEDS_PCA9532_GPIO=y
 CONFIG_LEDS_GPIO=m
 CONFIG_LEDS_LP3944=m
-# CONFIG_LEDS_LP5521 is not set
-# CONFIG_LEDS_LP5523 is not set
-# CONFIG_LEDS_LP5562 is not set
-# CONFIG_LEDS_LP8501 is not set
+CONFIG_LEDS_LP55XX_COMMON=m
+CONFIG_LEDS_LP5521=m
+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
@@ -6359,6 +6410,7 @@ CONFIG_RTC_DRV_RX8581=m
 CONFIG_RTC_DRV_RX8025=m
 CONFIG_RTC_DRV_EM3027=m
 CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV8803=m
 CONFIG_RTC_DRV_S5M=m
 
 #
@@ -6431,14 +6483,13 @@ CONFIG_DMADEVICES=y
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_VIRTUAL_CHANNELS=m
 CONFIG_DMA_ACPI=y
-CONFIG_IDMA64=m
+CONFIG_INTEL_IDMA64=m
 CONFIG_INTEL_IOATDMA=m
 CONFIG_INTEL_MIC_X100_DMA=m
 CONFIG_DW_DMAC_CORE=m
 CONFIG_DW_DMAC=m
 CONFIG_DW_DMAC_PCI=m
 CONFIG_HSU_DMA=m
-CONFIG_HSU_DMA_PCI=m
 
 #
 # DMA Clients
@@ -6470,6 +6521,7 @@ CONFIG_VFIO_PCI=m
 CONFIG_VFIO_PCI_VGA=y
 CONFIG_VFIO_PCI_MMAP=y
 CONFIG_VFIO_PCI_INTX=y
+CONFIG_IRQ_BYPASS_MANAGER=m
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
 
@@ -6559,7 +6611,6 @@ CONFIG_COMEDI_DT2815=m
 CONFIG_COMEDI_DT2817=m
 CONFIG_COMEDI_DT282X=m
 CONFIG_COMEDI_DMM32AT=m
-CONFIG_COMEDI_UNIOXX5=m
 CONFIG_COMEDI_FL512=m
 CONFIG_COMEDI_AIO_AIO12_8=m
 CONFIG_COMEDI_AIO_IIRO_16=m
@@ -6778,9 +6829,6 @@ CONFIG_IIO_SIMPLE_DUMMY=m
 # CONFIG_IIO_SIMPLE_DUMMY_BUFFER is not set
 CONFIG_FB_SM750=m
 CONFIG_FB_XGI=m
-CONFIG_FT1000=m
-CONFIG_FT1000_USB=m
-CONFIG_FT1000_PCMCIA=m
 
 #
 # Speakup console speech
@@ -6812,7 +6860,7 @@ CONFIG_LIRC_SERIAL=m
 CONFIG_LIRC_SERIAL_TRANSMITTER=y
 CONFIG_LIRC_SIR=m
 CONFIG_LIRC_ZILOG=m
-CONFIG_STAGING_RDMA=y
+CONFIG_STAGING_RDMA=m
 CONFIG_INFINIBAND_AMSO1100=m
 # CONFIG_INFINIBAND_AMSO1100_DEBUG is not set
 CONFIG_INFINIBAND_HFI1=m
@@ -6838,14 +6886,7 @@ CONFIG_FWTTY_MAX_TOTAL_PORTS=64
 CONFIG_FWTTY_MAX_CARD_PORTS=32
 CONFIG_MTD_SPINAND_MT29F=m
 CONFIG_MTD_SPINAND_ONDIEECC=y
-CONFIG_LUSTRE_FS=m
-CONFIG_LUSTRE_OBD_MAX_IOCTL_BUFFER=8192
-# CONFIG_LUSTRE_DEBUG_EXPENSIVE_CHECK is not set
-CONFIG_LUSTRE_LLITE_LLOOP=m
-CONFIG_LNET=m
-CONFIG_LNET_MAX_PAYLOAD=1048576
-CONFIG_LNET_SELFTEST=m
-CONFIG_LNET_XPRT_IB=m
+# CONFIG_LUSTRE_FS is not set
 CONFIG_DGNC=m
 CONFIG_DGAP=m
 CONFIG_GS_FPGABOOT=m
@@ -6853,6 +6894,8 @@ CONFIG_CRYPTO_SKEIN=y
 CONFIG_UNISYSSPAR=y
 CONFIG_UNISYS_VISORBUS=m
 CONFIG_UNISYS_VISORNIC=m
+CONFIG_UNISYS_VISORINPUT=m
+CONFIG_UNISYS_VISORHBA=m
 CONFIG_FB_TFT=m
 CONFIG_FB_TFT_AGM1264K_FL=m
 CONFIG_FB_TFT_BD663474=m
@@ -6876,6 +6919,7 @@ CONFIG_FB_TFT_SSD1306=m
 CONFIG_FB_TFT_SSD1331=m
 CONFIG_FB_TFT_SSD1351=m
 CONFIG_FB_TFT_ST7735R=m
+CONFIG_FB_TFT_ST7789V=m
 CONFIG_FB_TFT_TINYLCD=m
 CONFIG_FB_TFT_TLS8204=m
 CONFIG_FB_TFT_UC1611=m
@@ -6884,6 +6928,7 @@ CONFIG_FB_TFT_UPD161704=m
 CONFIG_FB_TFT_WATTEROTT=m
 CONFIG_FB_FLEX=m
 CONFIG_FB_TFT_FBTFT_DEVICE=m
+# CONFIG_WILC1000_DRIVER is not set
 CONFIG_MOST=m
 CONFIG_MOSTCORE=m
 CONFIG_AIM_CDEV=m
@@ -6935,6 +6980,7 @@ CONFIG_TOPSTAR_LAPTOP=m
 CONFIG_ACPI_TOSHIBA=m
 CONFIG_TOSHIBA_BT_RFKILL=m
 CONFIG_TOSHIBA_HAPS=m
+CONFIG_TOSHIBA_WMI=m
 CONFIG_ACPI_CMPC=m
 CONFIG_INTEL_IPS=m
 CONFIG_IBM_RTL=m
@@ -7000,6 +7046,7 @@ CONFIG_AMD_IOMMU_STATS=y
 CONFIG_AMD_IOMMU_V2=m
 CONFIG_DMAR_TABLE=y
 CONFIG_INTEL_IOMMU=y
+CONFIG_INTEL_IOMMU_SVM=y
 # CONFIG_INTEL_IOMMU_DEFAULT_ON is not set
 CONFIG_INTEL_IOMMU_FLOPPY_WA=y
 CONFIG_IRQ_REMAP=y
@@ -7053,17 +7100,20 @@ CONFIG_EXTCON_USB_GPIO=m
 CONFIG_MEMORY=y
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
 CONFIG_IIO_KFIFO_BUF=m
 CONFIG_IIO_TRIGGERED_BUFFER=m
 CONFIG_IIO_TRIGGER=y
 CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+CONFIG_IIO_TRIGGERED_EVENT=m
 
 #
 # Accelerometers
 #
 CONFIG_BMA180=m
 CONFIG_BMC150_ACCEL=m
+CONFIG_BMC150_ACCEL_I2C=m
+CONFIG_BMC150_ACCEL_SPI=m
 CONFIG_HID_SENSOR_ACCEL_3D=m
 CONFIG_IIO_ST_ACCEL_3AXIS=m
 CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m
@@ -7074,6 +7124,7 @@ CONFIG_MMA8452=m
 CONFIG_MMA9551_CORE=m
 CONFIG_MMA9551=m
 CONFIG_MMA9553=m
+CONFIG_MXC4005=m
 CONFIG_STK8312=m
 CONFIG_STK8BA50=m
 
@@ -7091,8 +7142,9 @@ CONFIG_AD7887=m
 CONFIG_AD7923=m
 CONFIG_AD799X=m
 CONFIG_AXP288_ADC=m
-CONFIG_DA9150_GPADC=m
 CONFIG_CC10001_ADC=m
+CONFIG_DA9150_GPADC=m
+CONFIG_HI8435=m
 CONFIG_LP8788_ADC=m
 CONFIG_MAX1027=m
 CONFIG_MAX1363=m
@@ -7115,10 +7167,16 @@ CONFIG_VIPERBOARD_ADC=m
 CONFIG_AD8366=m
 
 #
+# Chemical Sensors
+#
+CONFIG_VZ89X=m
+
+#
 # Hid Sensor IIO Common
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
+CONFIG_IIO_MS_SENSORS_I2C=m
 
 #
 # SSP Sensor Common
@@ -7173,6 +7231,8 @@ CONFIG_ADIS16136=m
 CONFIG_ADIS16260=m
 CONFIG_ADXRS450=m
 CONFIG_BMG160=m
+CONFIG_BMG160_I2C=m
+CONFIG_BMG160_SPI=m
 CONFIG_HID_SENSOR_GYRO_3D=m
 CONFIG_IIO_ST_GYRO_3AXIS=m
 CONFIG_IIO_ST_GYRO_I2C_3AXIS=m
@@ -7183,6 +7243,8 @@ CONFIG_ITG3200=m
 # Humidity sensors
 #
 CONFIG_DHT11=m
+CONFIG_HDC100X=m
+CONFIG_HTU21=m
 CONFIG_SI7005=m
 CONFIG_SI7020=m
 
@@ -7203,6 +7265,7 @@ CONFIG_ACPI_ALS=m
 CONFIG_ADJD_S311=m
 CONFIG_AL3320A=m
 CONFIG_APDS9300=m
+CONFIG_APDS9960=m
 CONFIG_BH1750=m
 CONFIG_CM32181=m
 CONFIG_CM3232=m
@@ -7223,6 +7286,7 @@ CONFIG_TCS3414=m
 CONFIG_TCS3472=m
 CONFIG_SENSORS_TSL2563=m
 CONFIG_TSL4531=m
+CONFIG_US5182D=m
 CONFIG_VCNL4000=m
 
 #
@@ -7230,13 +7294,13 @@ CONFIG_VCNL4000=m
 #
 CONFIG_AK8975=m
 CONFIG_AK09911=m
+CONFIG_BMC150_MAGN=m
 CONFIG_MAG3110=m
 CONFIG_HID_SENSOR_MAGNETOMETER_3D=m
 CONFIG_MMC35240=m
 CONFIG_IIO_ST_MAGN_3AXIS=m
 CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
 CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
-CONFIG_BMC150_MAGN=m
 
 #
 # Inclinometer sensors
@@ -7251,6 +7315,11 @@ CONFIG_IIO_INTERRUPT_TRIGGER=m
 CONFIG_IIO_SYSFS_TRIGGER=m
 
 #
+# Digital potentiometers
+#
+CONFIG_MCP4531=m
+
+#
 # Pressure sensors
 #
 CONFIG_BMP280=m
@@ -7260,6 +7329,7 @@ CONFIG_MPL3115=m
 CONFIG_MS5611=m
 CONFIG_MS5611_I2C=m
 CONFIG_MS5611_SPI=m
+CONFIG_MS5637=m
 CONFIG_IIO_ST_PRESS=m
 CONFIG_IIO_ST_PRESS_I2C=m
 CONFIG_IIO_ST_PRESS_SPI=m
@@ -7273,6 +7343,7 @@ CONFIG_AS3935=m
 #
 # Proximity sensors
 #
+CONFIG_LIDAR_LITE_V2=m
 CONFIG_SX9500=m
 
 #
@@ -7280,6 +7351,8 @@ CONFIG_SX9500=m
 #
 CONFIG_MLX90614=m
 CONFIG_TMP006=m
+CONFIG_TSYS01=m
+CONFIG_TSYS02D=m
 CONFIG_NTB=m
 CONFIG_NTB_INTEL=m
 CONFIG_NTB_PINGPONG=m
@@ -7310,6 +7383,7 @@ CONFIG_PWM_LP3943=m
 CONFIG_PWM_LPSS=m
 CONFIG_PWM_LPSS_PCI=m
 CONFIG_PWM_LPSS_PLATFORM=m
+CONFIG_PWM_PCA9685=m
 CONFIG_PWM_TWL=m
 CONFIG_PWM_TWL_LED=m
 CONFIG_IPACK_BUS=m
@@ -7356,7 +7430,25 @@ CONFIG_ND_BLK=m
 CONFIG_ND_CLAIM=y
 CONFIG_ND_BTT=m
 CONFIG_BTT=y
+CONFIG_ND_PFN=m
+CONFIG_NVDIMM_PFN=y
 CONFIG_NVMEM=m
+CONFIG_STM=m
+CONFIG_STM_DUMMY=m
+CONFIG_STM_SOURCE_CONSOLE=m
+CONFIG_INTEL_TH=m
+CONFIG_INTEL_TH_PCI=m
+CONFIG_INTEL_TH_GTH=m
+CONFIG_INTEL_TH_STH=m
+CONFIG_INTEL_TH_MSU=m
+CONFIG_INTEL_TH_PTI=m
+# CONFIG_INTEL_TH_DEBUG is not set
+
+#
+# FPGA Configuration Support
+#
+CONFIG_FPGA=m
+CONFIG_FPGA_MGR_ZYNQ_FPGA=m
 
 #
 # Firmware Drivers
@@ -7381,6 +7473,7 @@ CONFIG_EFI_ESRT=y
 CONFIG_EFI_VARS_PSTORE=m
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
 CONFIG_EFI_RUNTIME_MAP=y
+# CONFIG_EFI_FAKE_MEMMAP is not set
 CONFIG_EFI_RUNTIME_WRAPPERS=y
 CONFIG_UEFI_CPER=y
 
@@ -7548,6 +7641,7 @@ CONFIG_UBIFS_FS=m
 # CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
 CONFIG_UBIFS_FS_LZO=y
 CONFIG_UBIFS_FS_ZLIB=y
+CONFIG_UBIFS_ATIME_SUPPORT=y
 # CONFIG_LOGFS is not set
 CONFIG_CRAMFS=m
 CONFIG_SQUASHFS=m
@@ -7558,7 +7652,7 @@ 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_LZ4=y
 CONFIG_SQUASHFS_LZO=y
 CONFIG_SQUASHFS_XZ=y
 # CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set
@@ -7743,6 +7837,7 @@ CONFIG_UNUSED_SYMBOLS=y
 CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
 CONFIG_ARCH_WANT_FRAME_POINTERS=y
 CONFIG_FRAME_POINTER=y
 # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
@@ -7884,6 +7979,7 @@ CONFIG_MMIOTRACE=y
 # CONFIG_RING_BUFFER_BENCHMARK is not set
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
 # CONFIG_TRACE_ENUM_MAP_FILE is not set
+CONFIG_TRACING_EVENTS_GPIO=y
 
 #
 # Runtime Testing
@@ -7900,6 +7996,7 @@ CONFIG_ASYNC_RAID6_TEST=m
 CONFIG_TEST_HEXDUMP=m
 CONFIG_TEST_STRING_HELPERS=m
 CONFIG_TEST_KSTRTOX=m
+CONFIG_TEST_PRINTF=m
 # CONFIG_TEST_RHASHTABLE is not set
 # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
 # CONFIG_DMA_API_DEBUG is not set
@@ -7925,9 +8022,12 @@ CONFIG_STRICT_DEVMEM=y
 CONFIG_EARLY_PRINTK=y
 CONFIG_EARLY_PRINTK_DBGP=y
 CONFIG_EARLY_PRINTK_EFI=y
+# CONFIG_X86_PTDUMP_CORE is not set
 # CONFIG_X86_PTDUMP is not set
+# CONFIG_EFI_PGT_DUMP is not set
 CONFIG_DEBUG_RODATA=y
 # CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_WX is not set
 CONFIG_DEBUG_SET_MODULE_RONX=y
 # CONFIG_DEBUG_NX_TEST is not set
 CONFIG_DOUBLEFAULT=y
@@ -8081,6 +8181,7 @@ CONFIG_CRYPTO_ECB=y
 CONFIG_CRYPTO_LRW=m
 CONFIG_CRYPTO_PCBC=m
 CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_KEYWRAP=m
 
 #
 # Hash modes
@@ -8222,6 +8323,7 @@ CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
 CONFIG_KVM_VFIO=y
 CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
 CONFIG_KVM_COMPAT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 798b1e26d8..7250cd5002 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -211,7 +211,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
      #f)))
 
 (define-public linux-libre
-  (let* ((version "4.3.3")
+  (let* ((version "4.4")
          (build-phase
           '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
              ;; Apply the neat patch.
@@ -285,7 +285,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
              (uri (linux-libre-urls version))
              (sha256
               (base32
-               "1z43kzs1pzwq5mkyh7zk8nq38sxlswp65824v54dzwngyc252a18"))))
+               "1839xsaifs7vvyblzin8jps0gqi10xmz1l9p4x0j27vmdj39jgpm"))))
     (build-system gnu-build-system)
     (supported-systems '("x86_64-linux" "i686-linux"))
     (native-inputs `(("perl" ,perl)
@@ -1784,7 +1784,7 @@ country-specific regulations for the wireless spectrum.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-"
+                    "ftp://ftp.netroedge.com/pub/lm-sensors/lm_sensors-"
                     version ".tar.bz2"))
               (sha256
                (base32
@@ -1842,7 +1842,7 @@ country-specific regulations for the wireless spectrum.")
               (string-append (assoc-ref inputs "coreutils")
                              "/bin/readlink -f"))))
          %standard-phases))))
-    (home-page "http://www.lm-sensors.org/")
+    (home-page "http://jdelvare.nerim.net/devel.html#lmsensors")
     (synopsis "Utilities to read temperature/voltage/fan sensors")
     (description
      "Lm-sensors is a hardware health monitoring package for Linux.  It allows
@@ -1857,7 +1857,7 @@ It works with most newer systems.")
     (source (origin
               (method url-fetch)
               (uri (string-append
-                    "http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-"
+                    "http://jdelvare.nerim.net/mirror/i2c-tools/i2c-tools-"
                     version ".tar.bz2"))
               (sha256
                (base32
@@ -1871,7 +1871,7 @@ It works with most newer systems.")
        #:phases (alist-delete 'configure %standard-phases)))
     (inputs
      `(("perl" ,perl)))
-    (home-page "http://www.lm-sensors.org/wiki/I2CTools")
+    (home-page "http://jdelvare.nerim.net/devel.html#i2ctools")
     (synopsis "I2C tools for Linux")
     (description
      "The i2c-tools package contains a heterogeneous set of I2C tools for
diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm
index b11c0d149c..ab5e770b52 100644
--- a/gnu/packages/man.scm
+++ b/gnu/packages/man.scm
@@ -3,7 +3,7 @@
 ;;; Copyright © 2014 David Thompson <dthompson2@worcester.edu>
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -129,15 +129,20 @@ the traditional flat-text whatis databases.")
 (define-public man-pages
   (package
     (name "man-pages")
-    (version "3.82")
+    (version "4.04")
     (source (origin
               (method url-fetch)
-              (uri (string-append
+              (uri
+                (list
+                  (string-append
                     "mirror://kernel.org/linux/docs/man-pages/man-pages-"
-                    version ".tar.xz"))
+                    version ".tar.xz")
+                  (string-append
+                    "mirror://kernel.org/linux/docs/man-pages/Archive/"
+                    "man-pages-" version ".tar.xz")))
               (sha256
                (base32
-                "1c8q618shf469nfp55qrwjv9630fgq5abfk946xya9hw1bfp6wjl"))))
+                "0v8zxq4scfixy3pjpw9ankvv5v8frv62khv4xm1jpkswyq6rbqcg"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-delete 'configure %standard-phases)
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index e2d5aa1ff4..51d9cc1ce4 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -463,14 +463,14 @@ script files.")
 (define-public gmsh
   (package
     (name "gmsh")
-    (version "2.8.4")
+    (version "2.11.0")
     (source
      (origin
       (method url-fetch)
       (uri (string-append "http://www.geuz.org/gmsh/src/gmsh-"
                           version "-source.tgz"))
       (sha256
-       (base32 "0jv2yvk28w86rx5mvjkb0w12ff2jxih7axnpvznpd295lg5jg7hr"))
+       (base32 "1ilplibvjgf7a905grpnclrvkmqy9fgrpl7xyp3w4yl1qc682v9b"))
       (modules '((guix build utils)))
       (snippet
        ;; Remove non-free METIS code
@@ -489,7 +489,15 @@ script files.")
     (arguments
      `(#:configure-flags `("-DENABLE_METIS:BOOL=OFF"
                            "-DENABLE_BUILD_SHARED:BOOL=ON"
-                           "-DENABLE_BUILD_DYNAMIC:BOOL=ON")))
+                           "-DENABLE_BUILD_DYNAMIC:BOOL=ON")
+       #:phases (modify-phases %standard-phases
+                  (replace
+                   'check
+                   (lambda _
+                     (zero? (system* "make" "test"
+                                     ;; Disable this test.  See
+                                     ;; https://geuz.org/trac/gmsh/ticket/271
+                                     "ARGS=-E component8_in_a_box")))))))
     (home-page "http://www.geuz.org/gmsh/")
     (synopsis "3D finite element grid generator")
     (description "Gmsh is a 3D finite element grid generator with a built-in
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index b8d0c9c2ac..b85ebece3c 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -195,9 +195,9 @@ the Nix package manager.")
   ;;
   ;; Note: use a short commit id; when using the long one, the limit on socket
   ;; file names is exceeded while running the tests.
-  (let ((commit "5c36edc"))
+  (let ((commit "f888c0b1207a92b0d7af4dcf7fb73cecd1f0b34f"))
     (package (inherit guix-0.9.0)
-      (version (string-append "0.9.0." commit))
+      (version (string-append "0.9.0." (string-take commit 7)))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -205,7 +205,7 @@ the Nix package manager.")
                       (commit commit)))
                 (sha256
                  (base32
-                  "008fv3yj1jkxxma9vp8wzmkk3m82kgchaj9y7lpcvkqzcdhz8h7p"))
+                  "1g9yxnqg3xl3wk6ps46mbjz5gvbj9cdci7rr7in9mqcqs26llqy1"))
                 (file-name (string-append "guix-" version "-checkout"))))
       (arguments
        (substitute-keyword-arguments (package-arguments guix-0.9.0)
diff --git a/gnu/packages/patches/asymptote-gsl2.patch b/gnu/packages/patches/asymptote-gsl2.patch
new file mode 100644
index 0000000000..4f73d16d7f
--- /dev/null
+++ b/gnu/packages/patches/asymptote-gsl2.patch
@@ -0,0 +1,33 @@
+From 71ff9e769ba5d9995b367201f0d41b7a8dedab9d Mon Sep 17 00:00:00 2001
+From: John Bowman <bowman@ualberta.ca>
+Date: Sat, 14 Nov 2015 01:25:56 -0700
+Subject: [PATCH] Support GSL 2.0.
+
+---
+ gsl.cc | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/gsl.cc b/gsl.cc
+index b500557..0f81dc6 100644
+--- a/gsl.cc
++++ b/gsl.cc
+@@ -27,6 +27,7 @@
+ #include <gsl/gsl_rng.h>
+ #include <gsl/gsl_randist.h>
+ #include <gsl/gsl_cdf.h>
++#include <gsl/gsl_version.h>
+ 
+ #include "opsymbols.h"
+ 
+@@ -1088,7 +1089,11 @@ void gen_rungsl_venv(venv &ve)
+   addGSLDOUBLE2Func<gsl_sf_ellint_F>(SYM(F));
+   addGSLDOUBLE2Func<gsl_sf_ellint_E>(SYM(E));
+   addGSLDOUBLE3Func<gsl_sf_ellint_P>(SYM(P),SYM(phi),SYM(k),SYM(n));
++#if GSL_MAJOR_VERSION >= 2
++  addGSLDOUBLE2Func<gsl_sf_ellint_D>(SYM(D),SYM(phi),SYM(k));
++#else  
+   addGSLDOUBLE3Func<gsl_sf_ellint_D>(SYM(D),SYM(phi),SYM(k),SYM(n));
++#endif  
+   addGSLDOUBLE2Func<gsl_sf_ellint_RC>(SYM(RC),SYM(x),SYM(y));
+   addGSLDOUBLE3Func<gsl_sf_ellint_RD>(SYM(RD),SYM(x),SYM(y),SYM(z));
+   addGSLDOUBLE3Func<gsl_sf_ellint_RF>(SYM(RF),SYM(x),SYM(y),SYM(z));
diff --git a/gnu/packages/patches/bedtools-32bit-compilation.patch b/gnu/packages/patches/bedtools-32bit-compilation.patch
deleted file mode 100644
index bc567f3f6b..0000000000
--- a/gnu/packages/patches/bedtools-32bit-compilation.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-Fixed in upstream, see
-https://github.com/arq5x/bedtools2/issues/271
-
-From b47dbefcb57f8e6c4fe397f64346338620740b71 Mon Sep 17 00:00:00 2001
-From: arq5x <arq5x@virginia.edu>
-Date: Wed, 15 Jul 2015 15:15:23 -0600
-Subject: [PATCH] settle on uint32_t signature for QuickString. Resolves #267
- and #271?
-
----
- src/coverageFile/coverageFile.cpp | 24 ++++++++++++------------
- src/utils/general/QuickString.cpp | 27 ++++++++++++++-------------
- src/utils/general/QuickString.h   |  6 +++---
- 3 files changed, 29 insertions(+), 28 deletions(-)
-
-diff --git a/src/coverageFile/coverageFile.cpp b/src/coverageFile/coverageFile.cpp
-index 859cfdc..0fb544b 100644
---- a/src/coverageFile/coverageFile.cpp
-+++ b/src/coverageFile/coverageFile.cpp
-@@ -83,11 +83,11 @@ void CoverageFile::giveFinalReport(RecordOutputMgr *outputMgr) {
- 		float depthPct = (float)basesAtDepth / (float)_totalQueryLen;
- 
- 		_finalOutput = "all\t";
--		_finalOutput.append(depth);
-+		_finalOutput.append(static_cast<uint32_t>(depth));
- 		_finalOutput.append("\t");
--		_finalOutput.append(basesAtDepth);
-+		_finalOutput.append(static_cast<uint32_t>(basesAtDepth));
- 		_finalOutput.append("\t");
--		_finalOutput.append(_totalQueryLen);
-+		_finalOutput.append(static_cast<uint32_t>(_totalQueryLen));
- 		_finalOutput.append("\t");
- 		format(depthPct);
- 
-@@ -138,7 +138,7 @@ size_t CoverageFile::countBasesAtDepth(size_t depth) {
- 
- void CoverageFile::doCounts(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
- {
--	_finalOutput = hits.size();
-+	_finalOutput = static_cast<uint32_t>(hits.size());
- 	outputMgr->printRecord(hits.getKey(), _finalOutput);
- }
- 
-@@ -147,9 +147,9 @@ void CoverageFile::doPerBase(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
- 	//loop through all bases in query, printing full record and metrics for each
- 	const Record * queryRec = hits.getKey();
- 	for (size_t i= 0; i < _queryLen; i++) {
--		_finalOutput = i +1;
-+		_finalOutput = static_cast<uint32_t>(i+1);
- 		_finalOutput.append("\t");
--		_finalOutput.append(_depthArray[i]);
-+		_finalOutput.append(static_cast<uint32_t>(_depthArray[i]));
- 
- 		outputMgr->printRecord(queryRec, _finalOutput);
- 	}
-@@ -181,11 +181,11 @@ void CoverageFile::doHist(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
- 		size_t numBasesAtDepth = iter->second;
- 		float coveredBases = (float)numBasesAtDepth / (float)_queryLen;
- 
--		_finalOutput = depth;
-+		_finalOutput = static_cast<uint32_t>(depth);
- 		_finalOutput.append("\t");
--		_finalOutput.append(numBasesAtDepth);
-+		_finalOutput.append(static_cast<uint32_t>(numBasesAtDepth));
- 		_finalOutput.append("\t");
--		_finalOutput.append(_queryLen);
-+		_finalOutput.append(static_cast<uint32_t>(_queryLen));
- 		_finalOutput.append("\t");
- 		format(coveredBases);
- 
-@@ -199,11 +199,11 @@ void CoverageFile::doDefault(RecordOutputMgr *outputMgr, RecordKeyVector &hits)
- 	size_t nonZeroBases = _queryLen - countBasesAtDepth(0);
- 	float coveredBases = (float)nonZeroBases / (float)_queryLen;
- 
--	_finalOutput = hits.size();
-+	_finalOutput = static_cast<uint32_t>(hits.size());
- 	_finalOutput.append("\t");
--	_finalOutput.append(nonZeroBases);
-+	_finalOutput.append(static_cast<uint32_t>(nonZeroBases));
- 	_finalOutput.append("\t");
--	_finalOutput.append(_queryLen);
-+	_finalOutput.append(static_cast<uint32_t>(_queryLen));
- 	_finalOutput.append("\t");
- 	format(coveredBases);
- 
-diff --git a/src/utils/general/QuickString.cpp b/src/utils/general/QuickString.cpp
-index 0757009..a83263e 100644
---- a/src/utils/general/QuickString.cpp
-+++ b/src/utils/general/QuickString.cpp
-@@ -105,11 +105,11 @@ QuickString &QuickString::operator = (uint32_t val) {
- 	return *this;
- }
- 
--QuickString &QuickString::operator = (size_t val) {
--	clear();
--	append(val);
--	return *this;
--}
-+// QuickString &QuickString::operator = (size_t val) {
-+// 	clear();
-+// 	append(val);
-+// 	return *this;
-+// }
- 
- QuickString &QuickString::operator = (float val) {
- 	clear();
-@@ -158,10 +158,11 @@ QuickString &QuickString::operator += (uint32_t num) {
- 	return *this;
- }
- 
--QuickString &QuickString::operator += (size_t num) {
--	append(num);
--	return *this;
--}
-+// QuickString &QuickString::operator += (size_t num) {
-+// 	append(num);
-+// 	return *this;
-+// }
-+
- QuickString &QuickString::operator += (float num) {
- 	append(num);
- 	return *this;
-@@ -273,12 +274,12 @@ void QuickString::append(int num) {
- }
- 
- void QuickString::append(uint32_t num) {
--	int2str((int)num, *this, true);
-+ 	int2str((int)num, *this, true);
- }
- 
--void QuickString::append(size_t num) {
--	int2str((int)num, *this, true);
--}
-+// void QuickString::append(size_t num) {
-+// 	int2str((int)num, *this, true);
-+// }
- 
- void QuickString::append(float num) {
- 	append(ToString(num));
-diff --git a/src/utils/general/QuickString.h b/src/utils/general/QuickString.h
-index b43fdfc..6e6fa94 100644
---- a/src/utils/general/QuickString.h
-+++ b/src/utils/general/QuickString.h
-@@ -38,7 +38,7 @@ class QuickString {
- 	QuickString &operator = (char);
- 	QuickString &operator = (int);
- 	QuickString &operator = (uint32_t);
--	QuickString &operator = (size_t);
-+	//QuickString &operator = (size_t);
- 	QuickString &operator = (float);
- 	QuickString &operator = (double);
- 	QuickString &operator += (const QuickString &);
-@@ -47,7 +47,7 @@ class QuickString {
- 	QuickString &operator += (char);
- 	QuickString &operator += (int);
- 	QuickString &operator += (uint32_t);
--	QuickString &operator += (size_t);
-+	//QuickString &operator += (size_t);
- 	QuickString &operator += (float);
- 	QuickString &operator += (double);
- 
-@@ -74,7 +74,7 @@ class QuickString {
- 	//for better performance.
- 	void append(int num);
- 	void append(uint32_t num);
--	void append(size_t num);
-+	//void append(size_t num);
- 	void append(float num);
- 	void append(double num);
- 
-
diff --git a/gnu/packages/patches/boost-mips-avoid-m32.patch b/gnu/packages/patches/boost-mips-avoid-m32.patch
deleted file mode 100644
index 811c9fb3aa..0000000000
--- a/gnu/packages/patches/boost-mips-avoid-m32.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-The following patch prevents the use of the -m32 flag on mips, where it
-is not understood by gcc, as well as other non-x86 architectures.
-
-diff -u -r boost_1_58_0.orig/tools/build/src/tools/gcc.jam boost_1_58_0/tools/build/src/tools/gcc.jam
---- boost_1_58_0.orig/tools/build/src/tools/gcc.jam	2015-04-04 19:25:07.000000000 +0200
-+++ boost_1_58_0/tools/build/src/tools/gcc.jam	2015-07-10 01:08:19.822733823 +0200
-@@ -451,7 +451,7 @@
-         else
-         {
-             local arch = [ feature.get-values architecture : $(properties) ] ;
--            if $(arch) != arm
-+            if $(arch) = x86
-             {
-                 if $(model) = 32
-                 {
diff --git a/gnu/packages/patches/csound-header-ordering.patch b/gnu/packages/patches/csound-header-ordering.patch
new file mode 100644
index 0000000000..3640d123dd
--- /dev/null
+++ b/gnu/packages/patches/csound-header-ordering.patch
@@ -0,0 +1,20 @@
+Prevent compilation issues with boost-1.60.0.
+
+Reported upstream at https://github.com/csound/csound/issues/570
+
+--- Csound6.05/Opcodes/chua/ChuaOscillator.cpp	2015-04-25 14:06:22.995646234 -0500
++++ Csound6.05/Opcodes/chua/ChuaOscillator.cpp	2015-12-21 10:31:58.182362640 -0600
+@@ -117,11 +117,12 @@
+ //     d = sys_variables(12);
+ //     gnor = a*(x.^3) + b*(x.^2) + c*x + d;
+ 
+-#include <OpcodeBase.hpp>
+ #include <boost/numeric/ublas/vector.hpp>
+ using namespace boost::numeric;
+ #include <cmath>
+ 
++#include <OpcodeBase.hpp>
++
+ #undef CS_KSMPS
+ #define CS_KSMPS     (opds.insdshead->ksmps)
+ 
diff --git a/gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch b/gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch
new file mode 100644
index 0000000000..93a8ddc242
--- /dev/null
+++ b/gnu/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch
@@ -0,0 +1,46 @@
+This patch makes GTK+ look for additional modules in a list of directories
+specified by the environment variable "GUIX_GTK2_PATH".  This can be used
+instead of "GTK_PATH" to make GTK+ find modules that are incompatible with
+other major versions of GTK+.
+
+--- a/gtk/gtkmodules.c	2014-09-29 22:02:17.000000000 +0200
++++ b/gtk/gtkmodules.c	2015-12-02 18:41:53.306396938 +0100
+@@ -55,6 +55,7 @@
+ get_module_path (void)
+ {
+   const gchar *module_path_env;
++  const gchar *module_guix_gtk2_path_env;
+   const gchar *exe_prefix;
+   const gchar *home_dir;
+   gchar *home_gtk_dir = NULL;
+@@ -70,6 +71,7 @@
+     home_gtk_dir = g_build_filename (home_dir, ".gtk-2.0", NULL);
+ 
+   module_path_env = g_getenv ("GTK_PATH");
++  module_guix_gtk2_path_env = g_getenv ("GUIX_GTK2_PATH");
+   exe_prefix = g_getenv ("GTK_EXE_PREFIX");
+ 
+   if (exe_prefix)
+@@ -77,9 +79,21 @@
+   else
+     default_dir = g_build_filename (GTK_LIBDIR, "gtk-2.0", NULL);
+ 
+-  if (module_path_env && home_gtk_dir)
++  if (module_guix_gtk2_path_env && module_path_env && home_gtk_dir)
++    module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
++				module_guix_gtk2_path_env, module_path_env, home_gtk_dir, default_dir, NULL);
++  else if (module_guix_gtk2_path_env && home_gtk_dir)
++    module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
++				module_guix_gtk2_path_env, home_gtk_dir, default_dir, NULL);
++  else if (module_guix_gtk2_path_env && module_path_env)
++    module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
++				module_guix_gtk2_path_env, module_path_env, default_dir, NULL);
++  else if (module_path_env && home_gtk_dir)
+     module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
+ 				module_path_env, home_gtk_dir, default_dir, NULL);
++  else if (module_guix_gtk2_path_env)
++    module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
++				module_guix_gtk2_path_env, default_dir, NULL);
+   else if (module_path_env)
+     module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
+ 				module_path_env, default_dir, NULL);
diff --git a/gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch b/gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch
new file mode 100644
index 0000000000..66fd2fd1c4
--- /dev/null
+++ b/gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch
@@ -0,0 +1,38 @@
+This patch makes GTK+ look for additional modules in a list of directories
+specified by the environment variable "GUIX_GTK3_PATH".  This can be used
+instead of "GTK_PATH" to make GTK+ find modules that are incompatible with
+other major versions of GTK+.
+
+--- a/gtk/gtkmodules.c	2015-09-20 20:09:05.060590217 +0200
++++ b/gtk/gtkmodules.c	2015-09-20 20:10:33.423124833 +0200
+@@ -52,6 +52,7 @@
+ get_module_path (void)
+ {
+   const gchar *module_path_env;
++  const gchar *module_guix_gtk3_path_env;
+   const gchar *exe_prefix;
+   gchar *module_path;
+   gchar *default_dir;
+@@ -61,6 +62,7 @@
+     return result;
+ 
+   module_path_env = g_getenv ("GTK_PATH");
++  module_guix_gtk3_path_env = g_getenv ("GUIX_GTK3_PATH");
+   exe_prefix = g_getenv ("GTK_EXE_PREFIX");
+ 
+   if (exe_prefix)
+@@ -68,7 +70,13 @@
+   else
+     default_dir = g_build_filename (_gtk_get_libdir (), "gtk-3.0", NULL);
+ 
+-  if (module_path_env)
++  if (module_guix_gtk3_path_env && module_path_env)
++    module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
++				module_guix_gtk3_path_env, module_path_env, default_dir, NULL);
++  else if (module_guix_gtk3_path_env)
++    module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
++				module_guix_gtk3_path_env, default_dir, NULL);
++  else if (module_path_env)
+     module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S,
+ 				module_path_env, default_dir, NULL);
+   else
diff --git a/gnu/packages/patches/julia-0.3.10-fix-empty-array.patch b/gnu/packages/patches/julia-0.3.10-fix-empty-array.patch
deleted file mode 100644
index b00f6549e3..0000000000
--- a/gnu/packages/patches/julia-0.3.10-fix-empty-array.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-See https://github.com/JuliaLang/julia/issues/11817
-
---- a/src/codegen.cpp	2015-06-24 12:44:31.218674066 +0200
-+++ b/src/codegen.cpp	2015-04-23 11:19:50.000000000 +0200
-@@ -4551,7 +4551,7 @@
- #ifdef V128_BUG
-         "-avx",
- #endif
--    };
-+    ""};
-     SmallVector<std::string, 4> MAttrs(mattr, mattr+sizeof(mattr)/sizeof(mattr[0]));
-     EngineBuilder eb = EngineBuilder(engine_module)
-         .setEngineKind(EngineKind::JIT)
diff --git a/gnu/packages/patches/ldc-disable-tests.patch b/gnu/packages/patches/ldc-disable-tests.patch
new file mode 100644
index 0000000000..3f5e6c29a1
--- /dev/null
+++ b/gnu/packages/patches/ldc-disable-tests.patch
@@ -0,0 +1,90 @@
+This patch fixes a failing unit test by feeding buildNormalizedPath to the
+tzdata properly.  Three other tests are disabled, one assumes /root and the
+two others use networking.  Not bad out of almost 700 tests!
+
+by Pjotr Prins <pjotr.guix@thebird.nl>
+
+diff --git a/std/datetime.d b/std/datetime.d
+index 8e4ed3b..6c15bc5 100644
+--- a/std/datetime.d
++++ b/std/datetime.d
+@@ -28018,6 +28018,7 @@ public:
+             The default directory where the TZ Database files are. It's empty
+             for Windows, since Windows doesn't have them.
+           +/
++          
+         enum defaultTZDatabaseDir = "/usr/share/zoneinfo/";
+     }
+     else version(Windows)
+@@ -28069,14 +28070,13 @@ assert(tz.dstName == "PDT");
+         import std.range : retro;
+         import std.format : format;
+ 
+-        name = strip(name);
+-
+         enforce(tzDatabaseDir.exists(), new DateTimeException(format("Directory %s does not exist.", tzDatabaseDir)));
+         enforce(tzDatabaseDir.isDir, new DateTimeException(format("%s is not a directory.", tzDatabaseDir)));
+ 
+-        immutable file = buildNormalizedPath(tzDatabaseDir, name);
++        auto filename = "./" ~ strip(name); // make sure the prefix is not stripped
++        immutable file = buildNormalizedPath(tzDatabaseDir, filename);
+ 
+-        enforce(file.exists(), new DateTimeException(format("File %s does not exist.", file)));
++        enforce(file.exists(), new DateTimeException(format("File %s does not exist in %s.", file, tzDatabaseDir)));
+         enforce(file.isFile, new DateTimeException(format("%s is not a file.", file)));
+ 
+         auto tzFile = File(file);
+diff --git a/std/path.d b/std/path.d
+index 254d8f0..b0fc04d 100644
+--- a/std/path.d
++++ b/std/path.d
+@@ -3080,8 +3080,11 @@ unittest
+         }
+         else
+         {
++            pragma(msg, "test disabled on GNU Guix");
++/*
+             assert(expandTilde("~root") == "/root", expandTilde("~root"));
+             assert(expandTilde("~root/") == "/root/", expandTilde("~root/"));
++*/
+         }
+         assert(expandTilde("~Idontexist/hey") == "~Idontexist/hey");
+     }
+diff --git a/std/socket.d b/std/socket.d
+index b85d1c9..7fbf346 100644
+--- a/std/socket.d
++++ b/std/socket.d
+@@ -517,6 +517,8 @@ class Protocol
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++/*
+     // getprotobyname,number are unimplemented on Android
+     softUnittest({
+         Protocol proto = new Protocol;
+@@ -530,6 +532,7 @@ unittest
+         assert(proto.name == "tcp");
+         assert(proto.aliases.length == 1 && proto.aliases[0] == "TCP");
+     });
++*/
+ }
+ 
+ 
+@@ -859,6 +862,8 @@ class InternetHost
+ 
+ unittest
+ {
++    pragma(msg, "test disabled on GNU Guix");
++    /*
+     InternetHost ih = new InternetHost;
+ 
+     ih.getHostByAddr(0x7F_00_00_01);
+@@ -889,6 +894,7 @@ unittest
+         //      writefln("aliases[%d] = %s", i, s);
+         // }
+     });
++    */
+ }
+ 
+ 
diff --git a/gnu/packages/patches/libcmis-fix-test-onedrive.patch b/gnu/packages/patches/libcmis-fix-test-onedrive.patch
new file mode 100644
index 0000000000..adf2e0b8e5
--- /dev/null
+++ b/gnu/packages/patches/libcmis-fix-test-onedrive.patch
@@ -0,0 +1,35 @@
+Patch from resolution of http://sourceforge.net/p/libcmis/tickets/13/
+
+From 814c7845d53688b35a747cf193c2ff99e40a8652 Mon Sep 17 00:00:00 2001
+From: Jonathan Wakely <jwakely@redhat.com>
+Date: Wed, 2 Sep 2015 16:35:45 +0100
+Subject: [PATCH 5/5] Remove invalid comments from test JSON file.
+
+---
+ qa/libcmis/data/onedrive/search-result.json | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/qa/libcmis/data/onedrive/search-result.json b/qa/libcmis/data/onedrive/search-result.json
+index 61d250a..2482429 100644
+--- a/qa/libcmis/data/onedrive/search-result.json
++++ b/qa/libcmis/data/onedrive/search-result.json
+@@ -8,7 +8,7 @@
+       },
+       "name":"OneDriveFile",
+       "description":"",
+-      "parent_id":"folderA", // path: /A/Wrong File 
++      "parent_id":"folderA",
+       "size":18047,
+       "upload_location":"https://apis.live.net/v5.0/wrongFileId/content/",
+       "comments_count":0,
+@@ -32,7 +32,7 @@
+       },
+       "name":"OneDriveFile",
+       "description":"",
+-      "parent_id":"folderC", // path: /A/B/C/Right File
++      "parent_id":"folderC",
+       "size":4,
+       "upload_location":"https://apis.live.net/v5.0/rightFileId/content/",
+       "comments_count":0,
+-- 
+2.4.3
\ No newline at end of file
diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch
index 80c0c5b009..e611f69bea 100644
--- a/gnu/packages/patches/nss-pkgconfig.patch
+++ b/gnu/packages/patches/nss-pkgconfig.patch
@@ -7,8 +7,10 @@ Modifications:
   Remove optional patching in nss/Makefile.
   Include -L$libdir in output from "nss-config --libs".
 
---- nss-3.17.1/nss/config/Makefile
-+++ nss-3.17.1/nss/config/Makefile
+Later adapted to apply cleanly to nss-3.21.
+
+--- nss-3.21/nss/config/Makefile
++++ nss-3.21/nss/config/Makefile
 @@ -0,0 +1,40 @@
 +CORE_DEPTH = ..
 +DEPTH      = ..
@@ -50,8 +52,8 @@ Modifications:
 +
 +dummy: all export libs
 +
---- nss-3.17.1/nss/config/nss-config.in
-+++ nss-3.17.1/nss/config/nss-config.in
+--- nss-3.21/nss/config/nss-config.in
++++ nss-3.21/nss/config/nss-config.in
 @@ -0,0 +1,145 @@
 +#!/bin/sh
 +
@@ -198,8 +200,8 @@ Modifications:
 +      echo $libdirs
 +fi
 +
---- nss-3.17.1/nss/config/nss.pc.in
-+++ nss-3.17.1/nss/config/nss.pc.in
+--- nss-3.21/nss/config/nss.pc.in
++++ nss-3.21/nss/config/nss.pc.in
 @@ -0,0 +1,12 @@
 +prefix=@prefix@
 +exec_prefix=@exec_prefix@
@@ -213,14 +215,11 @@ Modifications:
 +Libs: -L${libdir} -lssl3 -lsmime3 -lnss3 -lnssutil3
 +Cflags: -I${includedir}
 +
---- nss-3.17.1/nss/manifest.mn
-+++ nss-3.17.1/nss/manifest.mn
-@@ -10,7 +10,7 @@
+--- nss-3.21/nss/manifest.mn
++++ nss-3.21/nss/manifest.mn
+@@ -10,4 +10,4 @@
  
  RELEASE = nss
  
--DIRS = coreconf lib cmd
-+DIRS = coreconf lib cmd config
- 
- ifdef NSS_BUILD_GTESTS
- DIRS += external_tests
+-DIRS = coreconf lib cmd external_tests
++DIRS = coreconf lib cmd external_tests config
diff --git a/gnu/packages/patches/openimageio-boost-1.60.patch b/gnu/packages/patches/openimageio-boost-1.60.patch
new file mode 100644
index 0000000000..92fc3237bb
--- /dev/null
+++ b/gnu/packages/patches/openimageio-boost-1.60.patch
@@ -0,0 +1,47 @@
+From 875fbbd92695397bfc83d1cd5fdd4094e1d50199 Mon Sep 17 00:00:00 2001
+From: Larry Gritz <lg@larrygritz.com>
+Date: Mon, 28 Dec 2015 11:46:07 -0800
+Subject: [PATCH] Python ImageCache binding fixes -- disable broken calls
+
+Some of these calls (thankfully undocumented and presumably unused)
+are horribly broken. They compiled before, but with new Boost 1.60
+they don't even compile properly. So just comment them out on this
+obsolete branch. They are fully fixed in RB-1.6 and beyond.
+
+--- a/src/python/py_imagecache.cpp
++++ b/src/python/py_imagecache.cpp
+@@ -199,23 +199,24 @@ void declare_imagecache()
+         .def("destroy", &ImageCacheWrap::destroy)
+         .staticmethod("destroy")
+         .def("clear", &ImageCacheWrap::clear)
+-        .def("attribute", &ImageCacheWrap::attribute)
++        // .def("attribute", &ImageCacheWrap::attribute)
+         .def("attribute", &ImageCacheWrap::attribute_int)
+         .def("attribute", &ImageCacheWrap::attribute_float)
+-        .def("attribute", &ImageCacheWrap::attribute_double)
+-        .def("attribute", &ImageCacheWrap::attribute_char)
++        // .def("attribute", &ImageCacheWrap::attribute_double)
++        // .def("attribute", &ImageCacheWrap::attribute_char)
+         .def("attribute", &ImageCacheWrap::attribute_string)
+-        .def("getattribute", &ImageCacheWrap::attribute)
++        // .def("getattribute", &ImageCacheWrap::attribute)
+         .def("getattribute", &ImageCacheWrap::getattribute_int)
+         .def("getattribute", &ImageCacheWrap::getattribute_float)
+-        .def("getattribute", &ImageCacheWrap::getattribute_double)
+-        .def("getattribute", &ImageCacheWrap::getattribute_char)
++        // .def("getattribute", &ImageCacheWrap::getattribute_double)
++        // .def("getattribute", &ImageCacheWrap::getattribute_char)
+         .def("getattribute", &ImageCacheWrap::getattribute_string)
+-        .def("resolve_filename", &ImageCacheWrap::resolve_filename)
+-        .def("get_image_info", &ImageCacheWrap::get_image_info)
+-        .def("get_image_info", &ImageCacheWrap::get_image_info_old)
++        // .def("get_image_info", &ImageCacheWrap::get_image_info)
++        // .def("get_image_info", &ImageCacheWrap::get_image_info_old)
+         .def("get_imagespec", &ImageCacheWrap::get_imagespec)
+-        .def("get_pixels", &ImageCacheWrap::get_pixels)
++        // .def("get_pixels", &ImageCacheWrap::get_pixels)
++        .def("resolve_filename", &ImageCacheWrap::resolve_filename)
++
+ //      .def("get_tile", &ImageCacheWrap::get_tile)
+ //      .def("release_tile", &ImageCacheWrap::release_tile)
+ //      .def("tile_pixels", &ImageCacheWrap::tile_pixels)
diff --git a/gnu/packages/patches/sudo-CVE-2015-5602.patch b/gnu/packages/patches/sudo-CVE-2015-5602.patch
new file mode 100644
index 0000000000..36c90fbee7
--- /dev/null
+++ b/gnu/packages/patches/sudo-CVE-2015-5602.patch
@@ -0,0 +1,372 @@
+Based on the patch from https://www.sudo.ws/repos/sudo/raw-rev/c2e36a80a279
+Backported to 1.8.15 by Mark H Weaver <mhw@netris.org>
+
+# HG changeset patch
+# User Todd C. Miller <Todd.Miller@courtesan.com>
+# Date 1452475889 25200
+# Node ID c2e36a80a27927c32cba55afae78b8dc830cddc3
+# Parent  94ffd6b18431fa4b9ed0a0c3f0b7b9582a4f6bde
+Rewritten sudoedit_checkdir support that checks all the dirs in the
+path and refuses to follow symlinks in writable directories.
+This is a better fix for CVE-2015-5602.
+Adapted from a diff by Ben Hutchings.  Bug #707
+
+diff -r 94ffd6b18431 -r c2e36a80a279 doc/CONTRIBUTORS
+--- a/doc/CONTRIBUTORS	Mon Jan 04 10:47:11 2016 -0700
++++ b/doc/CONTRIBUTORS	Sun Jan 10 18:31:29 2016 -0700
+@@ -58,6 +58,7 @@
+     Holloway, Nick
+     Hoover, Adam
+     Hunter, Michael T.
++    Hutchings, Ben
+     Irrgang, Eric
+     Jackson, Brian
+     Jackson, John R.
+diff -r 94ffd6b18431 -r c2e36a80a279 doc/UPGRADE
+--- a/doc/UPGRADE	Mon Jan 04 10:47:11 2016 -0700
++++ b/doc/UPGRADE	Sun Jan 10 18:31:29 2016 -0700
+@@ -1,6 +1,15 @@
+ Notes on upgrading from an older release
+ ========================================
+ 
++o Upgrading from a version prior to the post-1.8.15 fix for CVE-2015-5602.
++
++    The meaning of the sudoedit_checkdir sudoers option has changed.
++    Previously, it would only check the parent directory
++    of the file to be edited.  After the CVE fix, all directories
++    in the path to be edited are checked and sudoedit will refuse
++    to follow a symbolic link in a directory that is writable by
++    the invoking user.
++
+ o Upgrading from a version prior to 1.8.15:
+ 
+     Prior to version 1.8.15, when env_reset was enabled (the default)
+diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.cat
+--- a/doc/sudoers.cat	Mon Jan 04 10:47:11 2016 -0700
++++ b/doc/sudoers.cat	Sun Jan 10 18:31:29 2016 -0700
+@@ -1275,12 +1275,15 @@
+                        system call.  This flag is _o_f_f by default.
+ 
+      sudoedit_checkdir
+-                       If set, ssuuddooeeddiitt will refuse to edit files located in a
+-                       directory that is writable by the invoking user unless
+-                       it is run by root.  On many systems, this option
+-                       requires that the parent directory of the file to be
+-                       edited be readable by the target user.  This flag is
+-                       _o_f_f by default.
++                       If set, ssuuddooeeddiitt will check directories in the path to
++                       be edited for writability by the invoking user.
++                       Symbolic links will not be followed in writable
++                       directories and ssuuddooeeddiitt will also refuse to edit a
++                       file located in a writable directory.  Theses
++                       restrictions are not enforced when ssuuddooeeddiitt is invoked
++                       as root.  On many systems, this option requires that
++                       all directories in the path to be edited be readable by
++                       the target user.  This flag is _o_f_f by default.
+ 
+      sudoedit_follow   By default, ssuuddooeeddiitt will not follow symbolic links
+                        when opening files.  The _s_u_d_o_e_d_i_t___f_o_l_l_o_w option can be
+diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.man.in
+--- a/doc/sudoers.man.in	Mon Jan 04 10:47:11 2016 -0700
++++ b/doc/sudoers.man.in	Sun Jan 10 18:31:29 2016 -0700
+@@ -2715,10 +2715,16 @@
+ .br
+ If set,
+ \fBsudoedit\fR
+-will refuse to edit files located in a directory that is writable
+-by the invoking user unless it is run by root.
+-On many systems, this option requires that the parent directory
+-of the file to be edited be readable by the target user.
++will check directories in the path to be edited for writability
++by the invoking user.
++Symbolic links will not be followed in writable directories and
++\fBsudoedit\fR
++will also refuse to edit a file located in a writable directory.
++Theses restrictions are not enforced when
++\fBsudoedit\fR
++is invoked as root.
++On many systems, this option requires that all directories
++in the path to be edited be readable by the target user.
+ This flag is
+ \fIoff\fR
+ by default.
+diff -r 94ffd6b18431 -r c2e36a80a279 doc/sudoers.mdoc.in
+--- a/doc/sudoers.mdoc.in	Mon Jan 04 10:47:11 2016 -0700
++++ b/doc/sudoers.mdoc.in	Sun Jan 10 18:31:29 2016 -0700
+@@ -2549,10 +2549,16 @@
+ .It sudoedit_checkdir
+ If set,
+ .Nm sudoedit
+-will refuse to edit files located in a directory that is writable
+-by the invoking user unless it is run by root.
+-On many systems, this option requires that the parent directory
+-of the file to be edited be readable by the target user.
++will check directories in the path to be edited for writability
++by the invoking user.
++Symbolic links will not be followed in writable directories and
++.Nm sudoedit
++will also refuse to edit a file located in a writable directory.
++Theses restrictions are not enforced when
++.Nm sudoedit
++is invoked as root.
++On many systems, this option requires that all directories
++in the path to be edited be readable by the target user.
+ This flag is
+ .Em off
+ by default.
+diff -r 94ffd6b18431 -r c2e36a80a279 include/sudo_compat.h
+--- a/include/sudo_compat.h	Mon Jan 04 10:47:11 2016 -0700
++++ b/include/sudo_compat.h	Sun Jan 10 18:31:29 2016 -0700
+@@ -182,6 +182,8 @@
+ # ifndef UTIME_NOW
+ #  define UTIME_NOW	-2L
+ # endif
++#endif
++#if !defined(HAVE_OPENAT) || (!defined(HAVE_FUTIMENS) && !defined(HAVE_UTIMENSAT))
+ # ifndef AT_FDCWD
+ #  define AT_FDCWD	-100
+ # endif
+diff -r 94ffd6b18431 -r c2e36a80a279 src/sudo_edit.c
+--- a/src/sudo_edit.c	Mon Jan 04 10:47:11 2016 -0700
++++ b/src/sudo_edit.c	Sun Jan 10 18:31:29 2016 -0700
+@@ -179,13 +179,15 @@
+ }
+ 
+ #ifndef HAVE_OPENAT
+-/* This does not support AT_FDCWD... */
+ static int
+ sudo_openat(int dfd, const char *path, int flags, mode_t mode)
+ {
+     int fd, odfd;
+     debug_decl(sudo_openat, SUDO_DEBUG_EDIT)
+ 
++    if (dfd == AT_FDCWD)
++	debug_return_int(open(path, flags, mode));
++
+     /* Save cwd */
+     if ((odfd = open(".", O_RDONLY)) == -1)
+ 	debug_return_int(-1);
+@@ -207,6 +209,64 @@
+ #define openat sudo_openat
+ #endif /* HAVE_OPENAT */
+ 
++#ifdef O_NOFOLLOW
++static int
++sudo_edit_openat_nofollow(int dfd, char *path, int oflags, mode_t mode)
++{
++    debug_decl(sudo_edit_open_nofollow, SUDO_DEBUG_EDIT)
++
++    debug_return_int(openat(dfd, path, oflags|O_NOFOLLOW, mode));
++}
++#else
++/*
++ * Returns true if fd and path don't match or path is a symlink.
++ * Used on older systems without O_NOFOLLOW.
++ */
++static bool
++sudo_edit_is_symlink(int fd, char *path)
++{
++    struct stat sb1, sb2;
++    debug_decl(sudo_edit_is_symlink, SUDO_DEBUG_EDIT)
++
++    /*
++     * Treat [fl]stat() failure like there was a symlink.
++     */
++    if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1)
++	debug_return_bool(true);
++
++    /*
++     * Make sure we did not open a link and that what we opened
++     * matches what is currently on the file system.
++     */
++    if (S_ISLNK(sb2.st_mode) ||
++	sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) {
++	debug_return_bool(true);
++    }
++
++    debug_return_bool(false);
++}
++
++static int
++sudo_edit_openat_nofollow(char *path, int oflags, mode_t mode)
++{
++    struct stat sb1, sb2;
++    int fd;
++    debug_decl(sudo_edit_openat_nofollow, SUDO_DEBUG_EDIT)
++
++    fd = openat(dfd, path, oflags, mode);
++    if (fd == -1)
++	debug_return_int(-1);
++
++    if (sudo_edit_is_symlink(fd, path)) {
++	close(fd);
++	fd = -1;
++	errno = ELOOP;
++    }
++
++    debug_return_int(fd);
++}
++#endif /* O_NOFOLLOW */
++
+ /*
+  * Returns true if the directory described by sb is writable
+  * by the user.  We treat directories with the sticky bit as
+@@ -245,49 +305,94 @@
+     debug_return_bool(false);
+ }
+ 
++/*
++ * Directory open flags for use with openat(2) and fstat(2).
++ * Use O_PATH and O_DIRECTORY where possible.
++ */
++#if defined(O_PATH) && defined(O_DIRECTORY)
++# define DIR_OPEN_FLAGS	(O_PATH|O_DIRECTORY)
++#elif defined(O_PATH) && !defined(O_DIRECTORY)
++# define DIR_OPEN_FLAGS	O_PATH
++#elif !defined(O_PATH) && defined(O_DIRECTORY)
++# define DIR_OPEN_FLAGS	(O_RDONLY|O_DIRECTORY)
++#else
++# define DIR_OPEN_FLAGS	(O_RDONLY|O_NONBLOCK)
++#endif
++
+ static int
+ sudo_edit_open_nonwritable(char *path, int oflags, mode_t mode)
+ {
+-    char *base, *dir;
++    int dfd, fd, dflags = DIR_OPEN_FLAGS;
++#if defined(__linux__) && defined(O_PATH)
++    char *opath = path;
++#endif
++    bool is_writable;
+     struct stat sb;
+-    int dfd, fd;
+     debug_decl(sudo_edit_open_nonwritable, SUDO_DEBUG_EDIT)
+ 
+-    base = strrchr(path, '/');
+-    if (base != NULL) {
+-	*base++ = '\0';
+-	dir = path;
++#if defined(__linux__) && defined(O_PATH)
++restart:
++#endif
++    if (path[0] == '/') {
++	dfd = open("/", dflags);
++	path++;
+     } else {
+-	base = path;
+-	dir = ".";
++	dfd = open(".", dflags);
++	if (path[0] == '.' && path[1] == '/')
++	    path += 2;
+     }
+-#ifdef O_PATH
+-    if ((dfd = open(dir, O_PATH)) != -1) {
+-	/* Linux kernels < 3.6 can't do fstat on O_PATH fds. */
+-	if (fstat(dfd, &sb) == -1) {
+-	    close(dfd);
+-	    dfd = open(dir, O_RDONLY);
+-	    if (fstat(dfd, &sb) == -1) {
+-		close(dfd);
+-		dfd = -1;
+-	    }
+-	}
+-    }
+-#else
+-    if ((dfd = open(dir, O_RDONLY)) != -1) {
+-	if (fstat(dfd, &sb) == -1) {
+-	    close(dfd);
+-	    dfd = -1;
+-	}
+-    }
+-#endif
+-    if (base != path)
+-	base[-1] = '/';			/* restore path */
+     if (dfd == -1)
+ 	debug_return_int(-1);
+ 
+-    if (dir_is_writable(&sb, user_details.uid, user_details.gid,
+-	user_details.ngroups, user_details.groups)) {
++    for (;;) {
++	char *slash;
++	int subdfd;
++
++	/*
++	 * Look up one component at a time, avoiding symbolic links in
++	 * writable directories.
++	 */
++	if (fstat(dfd, &sb) == -1) {
++	    close(dfd);
++#if defined(__linux__) && defined(O_PATH)
++	    /* Linux prior to 3.6 can't fstat an O_PATH fd */
++	    if (ISSET(dflags, O_PATH)) {
++		CLR(dflags, O_PATH);
++		path = opath;
++		goto restart;
++	    }
++#endif
++	    debug_return_int(-1);
++	}
++#ifndef O_DIRECTORY
++	if (!S_ISDIR(sb.st_mode)) {
++	    close(dfd);
++	    errno = ENOTDIR;
++	    debug_return_int(-1);
++	}
++#endif
++	is_writable = dir_is_writable(&sb, user_details.uid, user_details.gid,
++	    user_details.ngroups, user_details.groups);
++
++	while (path[0] == '/')
++	    path++;
++	slash = strchr(path, '/');
++	if (slash == NULL)
++	    break;
++	*slash = '\0';
++	if (is_writable)
++	    subdfd = sudo_edit_openat_nofollow(dfd, path, dflags, 0);
++	else
++	    subdfd = openat(dfd, path, dflags, 0);
++	*slash = '/';			/* restore path */
++	close(dfd);
++	if (subdfd == -1)
++	    debug_return_int(-1);
++	path = slash + 1;
++	dfd = subdfd;
++    }
++
++    if (is_writable) {
+ 	close(dfd);
+ 	errno = EISDIR;
+ 	debug_return_int(-1);
+@@ -332,27 +437,10 @@
+     if (!ISSET(oflags, O_NONBLOCK))
+ 	(void) fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) & ~O_NONBLOCK);
+ 
+-    /*
+-     * Treat [fl]stat() failure like an open() failure.
+-     */
+-    if (fstat(fd, &sb1) == -1 || lstat(path, &sb2) == -1) {
+-	const int serrno = errno;
++    if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW) && sudo_edit_is_symlink(fd, path)) {
+ 	close(fd);
+-	errno = serrno;
+-	debug_return_int(-1);
+-    }
+-
+-    /*
+-     * Make sure we did not open a link and that what we opened
+-     * matches what is currently on the file system.
+-     */
+-    if (!ISSET(sflags, CD_SUDOEDIT_FOLLOW)) {
+-	if (S_ISLNK(sb2.st_mode) ||
+-	    sb1.st_dev != sb2.st_dev || sb1.st_ino != sb2.st_ino) {
+-	    close(fd);
+-	    errno = ELOOP;
+-	    debug_return_int(-1);
+-	}
++	fd = -1;
++	errno = ELOOP;
+     }
+ 
+     debug_return_int(fd);
+
diff --git a/gnu/packages/patches/w3m-disable-sslv2-and-sslv3.patch b/gnu/packages/patches/w3m-disable-sslv2-and-sslv3.patch
new file mode 100644
index 0000000000..5b78f2d909
--- /dev/null
+++ b/gnu/packages/patches/w3m-disable-sslv2-and-sslv3.patch
@@ -0,0 +1,24 @@
+Subject: Disable SSLv2 and SSLv3.
+
+The only remaining methods are TLSv1.* (the code never distinguishes
+between TLSv1.0, TLSv1.1, and TLSv1.2).
+---
+ fm.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fm.h b/fm.h
+index 320906c..ddcd4fc 100644
+--- a/fm.h
++++ b/fm.h
+@@ -1144,7 +1144,7 @@ global int ssl_path_modified init(FALSE);
+ #endif				/* defined(USE_SSL) &&
+ 				 * defined(USE_SSL_VERIFY) */
+ #ifdef USE_SSL
+-global char *ssl_forbid_method init(NULL);
++global char *ssl_forbid_method init("2, 3");
+ #endif
+ 
+ global int is_redisplay init(FALSE);
+-- 
+2.6.4
+
diff --git a/gnu/packages/patches/w3m-disable-weak-ciphers.patch b/gnu/packages/patches/w3m-disable-weak-ciphers.patch
new file mode 100644
index 0000000000..4780d54cb6
--- /dev/null
+++ b/gnu/packages/patches/w3m-disable-weak-ciphers.patch
@@ -0,0 +1,24 @@
+Subject: Disable weak ciphers
+
+Disable RC4, "export ciphers", and all keys < 128 bits.
+
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/w3m/+bug/1325674
+---
+ url.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/url.c b/url.c
+index ed6062e..e86b1f3 100644
+--- a/url.c
++++ b/url.c
+@@ -326,6 +326,7 @@ openSSLHandle(int sock, char *hostname, char **p_cert)
+ 	SSL_load_error_strings();
+ 	if (!(ssl_ctx = SSL_CTX_new(SSLv23_client_method())))
+ 	    goto eend;
++	SSL_CTX_set_cipher_list(ssl_ctx, "DEFAULT:!LOW:!RC4:!EXP");
+ 	option = SSL_OP_ALL;
+ 	if (ssl_forbid_method) {
+ 	    if (strchr(ssl_forbid_method, '2'))
+-- 
+2.6.4
+
diff --git a/gnu/packages/patches/w3m-fix-compile.patch b/gnu/packages/patches/w3m-fix-compile.patch
deleted file mode 100644
index 5604052f67..0000000000
--- a/gnu/packages/patches/w3m-fix-compile.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-https://bugs.archlinux.org/task/33397
-
-diff -aur old/main.c new/main.c
---- main.c	2013-01-14 18:16:14.216210053 -0600
-+++ main.c	2013-01-14 18:17:28.816220559 -0600
-@@ -833,7 +833,8 @@
-     mySignal(SIGPIPE, SigPipe);
- #endif
-
--    orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc);
-+    orig_GC_warn_proc = GC_get_warn_proc();
-+    GC_set_warn_proc(wrap_GC_warn_proc);
-     err_msg = Strnew();
-     if (load_argc == 0) {
-	/* no URL specified */
diff --git a/gnu/packages/patches/w3m-force-ssl_verify_server-on.patch b/gnu/packages/patches/w3m-force-ssl_verify_server-on.patch
new file mode 100644
index 0000000000..dc9f117f9d
--- /dev/null
+++ b/gnu/packages/patches/w3m-force-ssl_verify_server-on.patch
@@ -0,0 +1,24 @@
+Subject: Force ssl_verify_server on.
+
+By default, SSL/TLS certificates are not verified. This enables the
+verification.
+---
+ fm.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/fm.h b/fm.h
+index 8378939..320906c 100644
+--- a/fm.h
++++ b/fm.h
+@@ -1135,7 +1135,7 @@ global int view_unseenobject init(TRUE);
+ #endif
+ 
+ #if defined(USE_SSL) && defined(USE_SSL_VERIFY)
+-global int ssl_verify_server init(FALSE);
++global int ssl_verify_server init(TRUE);
+ global char *ssl_cert_file init(NULL);
+ global char *ssl_key_file init(NULL);
+ global char *ssl_ca_path init(NULL);
+-- 
+2.6.4
+
diff --git a/gnu/packages/patches/w3m-libgc.patch b/gnu/packages/patches/w3m-libgc.patch
new file mode 100644
index 0000000000..0dc6a4027c
--- /dev/null
+++ b/gnu/packages/patches/w3m-libgc.patch
@@ -0,0 +1,28 @@
+This patch fixes w3m compilation with libgc > 7.2.
+
+Reported:
+https://bugs.archlinux.org/task/33397
+
+Patch with explanation:
+http://anonscm.debian.org/cgit/collab-maint/w3m.git/commit/?id=770eec8304bdbe458
+---
+ main.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/main.c b/main.c
+index b421943..249eb1a 100644
+--- a/main.c
++++ b/main.c
+@@ -833,7 +833,8 @@ main(int argc, char **argv, char **envp)
+     mySignal(SIGPIPE, SigPipe);
+ #endif
+ 
+-    orig_GC_warn_proc = GC_set_warn_proc(wrap_GC_warn_proc);
++    orig_GC_warn_proc = GC_get_warn_proc();
++    GC_set_warn_proc(wrap_GC_warn_proc);
+     err_msg = Strnew();
+     if (load_argc == 0) {
+ 	/* no URL specified */
+-- 
+2.6.4
+
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index 6166226dce..e9a247142d 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -21,11 +22,21 @@
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (gnu packages algebra)
+  #:use-module (gnu packages bdw-gc)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages guile)
+  #:use-module (gnu packages gl)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages maths)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages texinfo)
+  #:use-module (gnu packages texlive)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages))
 
@@ -156,3 +167,61 @@ just-in-time graph generation, handles date and time data nicely, and has
 basic statistical capabilities.  It allows significant user control over
 colors, styles, options and details.")
     (license license:gpl2+)))
+
+(define-public asymptote
+  (package
+    (name "asymptote")
+    (version "2.35")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/asymptote/"
+                                  version "/asymptote-" version ".src.tgz"))
+              (sha256
+               (base32
+                "11f28vxw0ybhvl7vxmqcdwvw7y6gz55ykw9ybgzb2px6lsvgag7z"))
+              (patches (list (search-patch "asymptote-gsl2.patch")))))
+    (build-system gnu-build-system)
+    ;; Note: The 'asy' binary retains a reference to docdir for use with its
+    ;; "help" command in interactive mode, so adding a "doc" output is not
+    ;; currently useful.
+    (native-inputs
+     `(("gs" ,ghostscript)              ;For tests
+       ("texinfo" ,texinfo)             ;For generating documentation
+       ("texlive" ,texlive)             ;For tests and documentation
+       ("perl" ,perl)))
+    (inputs
+     `(("fftw" ,fftw)
+       ("freeglut" ,freeglut)
+       ("gsl" ,gsl)
+       ("libgc" ,libgc)
+       ("python" ,python-2)
+       ("readline" ,readline)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "--enable-gc=" (assoc-ref %build-inputs "libgc"))
+             (string-append "--with-latex="
+                            (assoc-ref %outputs "out")
+                            "/share/texmf/tex/latex")
+             (string-append "--with-context="
+                            (assoc-ref %outputs "out")
+                            "/share/texmf/tex/context/third"))
+       #:phases (modify-phases %standard-phases
+                  (add-before 'build 'patch-pdf-viewer
+                    (lambda _
+                      ;; Default to a free pdf viewer
+                      (substitute* "settings.cc"
+                        (("defaultPDFViewer=\"acroread\"")
+                         "defaultPDFViewer=\"gv\"")))))))
+    (home-page "http://asymptote.sourceforge.net")
+    (synopsis "Script-based vector graphics language")
+    (description
+     "Asymptote is a powerful descriptive vector graphics language for
+technical drawing, inspired by MetaPost but with an improved C++-like syntax.
+Asymptote provides for figures the same high-quality level of typesetting that
+LaTeX does for scientific text.")
+    ;; Most source files do not contain license statements, but the README
+    ;; contains: "All source files in the Asymptote project, unless explicitly
+    ;; noted otherwise, are released under version 3 (or later) of the GNU
+    ;; Lesser General Public License"
+    (license license:lgpl3+)))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 2977f94660..fd36f8d694 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -121,7 +121,7 @@ a focus on simplicity and productivity.")
 
 (define-public ruby-2.1
   (package (inherit ruby)
-    (version "2.1.6")
+    (version "2.1.8")
     (source
      (origin
        (method url-fetch)
@@ -130,7 +130,7 @@ a focus on simplicity and productivity.")
                            "/ruby-" version ".tar.bz2"))
        (sha256
         (base32
-         "1sbcmbhadcxk0509svwxbm2vvgmpf3xjxr1397bgp9x46nz36lkv"))))
+         "11rkbfc90cg9p9mzg32475alf3ddcn9q8a3ar3fwm5xskic0n395"))))
     (arguments
      `(#:test-target "test"
        #:parallel-tests? #f
@@ -490,7 +490,7 @@ supported: XML Markup and XML Events.")
             (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
             #t)))))
     (native-inputs
-     `(("jdk" ,icedtea7 "jdk")))
+     `(("jdk" ,icedtea "jdk")))
     (synopsis "Ruby-to-Java bridge using the Java Native Interface")
     (description "RJB is a bridge program that connects Ruby and Java via the
 Java Native Interface.")
@@ -2942,3 +2942,39 @@ programs to concentrate on the implementation of network protocols.  It can be
 used to create both network servers and clients.")
     (home-page "http://rubyeventmachine.com")
     (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT
+
+(define-public ruby-ansi
+  (package
+    (name "ruby-ansi")
+    (version "1.5.0")
+    (source
+     (origin
+       (method url-fetch)
+       ;; Fetch from GitHub as the gem does not contain testing code.
+       (uri (string-append "https://github.com/rubyworks/ansi/archive/"
+                           version ".tar.gz"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1zdip30hivyipi8hndhb457bhiz033awd00bgrsk5axjrwp6zhly"))))
+    (build-system ruby-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Disable testing to break the cycle ansi, ae, ansi, as well as the
+         ;; cycle ansi, qed, ansi.  Instead simply test that the library can
+         ;; be require'd.
+         (replace 'check
+           (lambda _
+             (zero? (system* "ruby" "-Ilib" "-r" "ansi")))))))
+    (synopsis "ANSI escape code related libraries")
+    (description
+     "This package is a collection of ANSI escape code related libraries
+enabling ANSI colorization and stylization of console output.  Included in the
+library are the @code{Code} module, which defines ANSI codes as constants and
+methods, a @code{Mixin} module for including color methods, a @code{Logger}, a
+@code{ProgressBar}, and a @code{String} subclass.  The library also includes a
+@code{Terminal} module which provides information about the current output
+device.")
+    (home-page "http://rubyworks.github.io/ansi")
+    (license license:bsd-2)))
diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm
index ac3a17d512..1adc8aa218 100644
--- a/gnu/packages/samba.scm
+++ b/gnu/packages/samba.scm
@@ -98,14 +98,14 @@ anywhere.")
 (define-public samba
   (package
     (name "samba")
-    (version "4.3.2")
+    (version "4.3.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://www.samba.org/samba/ftp/stable/samba-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0xcs2bcim421mlk6l9rcrkx4cq9y41gfssyfa7xzdw5draar3631"))))
+               "1pvh78d5magc7lriyx7v9k7crlgxccmsy2mqn0j9xcnb78qj2bg6"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -236,14 +236,14 @@ many event types, including timers, signals, and the classic file descriptor eve
 (define-public ldb
   (package
     (name "ldb")
-    (version "1.1.23")
+    (version "1.1.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://www.samba.org/ftp/ldb/ldb-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0ncmwgga6q9v7maiywgw21w6rb3149m1w2ca11yq8k5j0izjz2wg"))))
+                "08ab66qzigfsfxqdvp6lx1knwsl3sqsww309xbq17l7hfcjgbsa5"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
diff --git a/gnu/packages/skribilo.scm b/gnu/packages/skribilo.scm
index a1b3fe7c53..52ed1c34e3 100644
--- a/gnu/packages/skribilo.scm
+++ b/gnu/packages/skribilo.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +23,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages lout)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages plotutils)
   #:use-module (gnu packages imagemagick)
   #:use-module (gnu packages ghostscript))
@@ -30,14 +31,14 @@
 (define-public skribilo
   (package
     (name "skribilo")
-    (version "0.9.2")
+    (version "0.9.3")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/skribilo/skribilo-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "0wwi996403wzcp8s8iyc2p6w7f9v39lwmy35ysdd3wc31i5dy19q"))))
+               "04d8xa76jvlz25jnc6p1gzsplwcwcqrmi3f7ixdhddhl1chyz66y"))))
     (build-system gnu-build-system)
     (arguments
      ;; Make the modules available under the usual location.
@@ -62,6 +63,8 @@
 
        #:parallel-build? #f))
 
+    (native-inputs `(("pkg-config" ,pkg-config)))
+
     (inputs `(("guile" ,guile-2.0)
               ("imagemagick" ,imagemagick)
               ("ghostscript" ,ghostscript)        ; for 'convert'
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 81258d38f5..8bd87582ef 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -27,6 +27,7 @@
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages haskell)
@@ -53,7 +54,7 @@
 (define-public r
   (package
     (name "r")
-    (version "3.2.2")
+    (version "3.2.3")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://cran/src/base/R-"
@@ -61,7 +62,7 @@
                                   version ".tar.gz"))
               (sha256
                (base32
-                "07a6s865bjnh7w0fqsrkv1pva76w99v86w0w787qpdil87km54cw"))))
+                "1hdnv77ralzcx5k5b88jq1r8l6zqnywpq00g2qs949rqh63psfxr"))))
     (build-system gnu-build-system)
     (arguments
      `(#:make-flags
@@ -1497,3 +1498,448 @@ grobs.")
 and draw tables.")
     (license license:gpl2+)))
 
+(define-public r-rsqlite
+  (package
+    (name "r-rsqlite")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "RSQLite" version))
+              (sha256
+               (base32
+                "08b1syv8z887gxiw8i09dpqh0zisfb6ihq6qqr01zipvkahzq34f"))))
+    (properties `((upstream-name . "RSQLite")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-dbi" ,r-dbi)))
+    (home-page "https://github.com/rstats-db/RSQLite")
+    (synopsis "SQLite interface for R")
+    (description
+     "This package embeds the SQLite database engine in R and provides an
+interface compliant with the DBI package.  The source for the SQLite
+engine (version 3.8.6) is included.")
+    (license license:lgpl2.0+)))
+
+(define-public r-rcurl
+  (package
+    (name "r-rcurl")
+    (version "1.95-0.1.2")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://www.bioconductor.org/packages/"
+                                  "release/extra/src/"
+                                  "contrib/RCurl_" version ".tar.gz"))
+              (sha256
+               (base32
+                "0l7qi45jxlf898n0jazabnam1yyczvqfdknd00bdirhhiplpd1sc"))))
+    (properties `((upstream-name . "RCurl")))
+    (build-system r-build-system)
+    (inputs
+     `(("libcurl" ,curl)))
+    (propagated-inputs
+     `(("r-bitops" ,r-bitops)))
+    (home-page "http://www.omegahat.org/RCurl")
+    (synopsis "General network client interface for R")
+    (description
+     "The package allows one to compose general HTTP requests and provides
+convenient functions to fetch URIs, GET and POST forms, etc. and process the
+results returned by the Web server.  This provides a great deal of control
+over the HTTP/FTP/... connection and the form of the request while providing a
+higher-level interface than is available just using R socket connections.
+Additionally, the underlying implementation is robust and extensive,
+supporting FTP/FTPS/TFTP (uploads and downloads), SSL/HTTPS, telnet, dict,
+ldap, and also supports cookies, redirects, authentication, etc.")
+    (license license:bsd-3)))
+
+(define-public r-xml
+  (package
+    (name "r-xml")
+    (version "3.98-1.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "XML" version))
+              (sha256
+               (base32
+                "0j9ayp8a35g0227a4zd8nbmvnbfnj5w687jal6qvj4lbhi3va7sy"))))
+    (properties
+     `((upstream-name . "XML")))
+    (build-system r-build-system)
+    (inputs
+     `(("libxml2" ,libxml2)))
+    (propagated-inputs
+     `(("r-rcurl" ,r-rcurl)))
+    (home-page "http://www.omegahat.org/RSXML")
+    (synopsis "Tools for parsing and generating XML within R")
+    (description
+     "Many approaches for both reading and creating XML (and HTML)
+documents (including DTDs), both local and accessible via HTTP or FTP.  Also
+offers access to an XPath \"interpreter\".")
+    (license license:bsd-2)))
+
+(define-public r-lambda-r
+  (package
+    (name "r-lambda-r")
+    (version "1.1.7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "lambda.r" version))
+              (sha256
+               (base32
+                "1lxzrwyminc3dfb07pbn1rmj45kplxgsb17b06pzflj728knbqwa"))))
+    (properties `((upstream-name . "lambda.r")))
+    (build-system r-build-system)
+    (home-page "http://cran.r-project.org/web/packages/lambda.r")
+    (synopsis "Functional programming extension for R")
+    (description
+     "This package provides a language extension to efficiently write
+functional programs in R.  Syntax extensions include multi-part function
+definitions, pattern matching, guard statements, built-in (optional) type
+safety.")
+    (license license:lgpl3+)))
+
+(define-public r-futile-options
+  (package
+    (name "r-futile-options")
+    (version "1.0.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "futile.options" version))
+              (sha256
+               (base32
+                "1hp82h6xqq5cck67h7lpf22n3j7mg3v1mla5y5ivnzrrb7iyr17f"))))
+    (properties
+     `((upstream-name . "futile.options")))
+    (build-system r-build-system)
+    (home-page "http://cran.r-project.org/web/packages/futile.options")
+    (synopsis "Options management framework")
+    (description
+     "The futile.options subsystem provides an easy user-defined options
+management system that is properly scoped.  This means that options created
+via @code{futile.options} are fully self-contained and will not collide with
+options defined in other packages.")
+    (license license:lgpl3+)))
+
+(define-public r-futile-logger
+  (package
+    (name "r-futile-logger")
+    (version "1.4.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "futile.logger" version))
+              (sha256
+               (base32
+                "1plld1icxrcay7llplbd4i8inpg97crpnczk58mbk26j8glqbr51"))))
+    (properties `((upstream-name . "futile.logger")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-futile-options" ,r-futile-options)
+       ("r-lambda-r" ,r-lambda-r)))
+    (home-page "http://cran.r-project.org/web/packages/futile.logger")
+    (synopsis "Logging utility for R")
+    (description
+     "This package provides a simple yet powerful logging utility.  Based
+loosely on log4j, futile.logger takes advantage of R idioms to make logging a
+convenient and easy to use replacement for @code{cat} and @code{print}
+statements.")
+    (license license:lgpl3+)))
+
+(define-public r-snow
+  (package
+    (name "r-snow")
+    (version "0.4-1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "snow" version))
+              (sha256
+               (base32
+                "19r2yq8aqw99vwyx81p6ay4afsfqffal1wzvizk3dj882s2n4j8w"))))
+    (build-system r-build-system)
+    (home-page "http://cran.r-project.org/web/packages/snow")
+    (synopsis "Support for simple parallel computing in R")
+    (description
+     "The snow package provides support for simple parallel computing on a
+network of workstations using R.  A master R process calls @code{makeCluster}
+to start a cluster of worker processes; the master process then uses functions
+such as @code{clusterCall} and @code{clusterApply} to execute R code on the
+worker processes and collect and return the results on the master.")
+    (license (list license:gpl2+ license:gpl3+))))
+
+(define-public r-sparsem
+  (package
+    (name "r-sparsem")
+    (version "1.7")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "SparseM" version))
+              (sha256
+               (base32
+                "0s9kab5khk7daqf6nfp1wm1qnhkssnnwnymisfwyk3kz4q5maqfz"))))
+    (properties
+     `((upstream-name . "SparseM")))
+    (build-system r-build-system)
+    (home-page "http://www.econ.uiuc.edu/~roger/research/sparse/sparse.html")
+    (synopsis "Sparse linear algebra")
+    (description
+     "This package provides some basic linear algebra functionality for sparse
+matrices.  It includes Cholesky decomposition and backsolving as well as
+standard R subsetting and Kronecker products.")
+    (license license:gpl2+)))
+
+(define-public r-dt
+  (package
+    (name "r-dt")
+    (version "0.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "DT" version))
+              (sha256
+               (base32
+                "0mj7iiy1gglw7kixybmb7kr1bcl5r006zcb3klkw7p6vvvzdm6qj"))))
+    (properties
+     `((upstream-name . "DT")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-htmltools" ,r-htmltools)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-magrittr" ,r-magrittr)))
+    (home-page "http://rstudio.github.io/DT")
+    (synopsis "R wrapper of the DataTables JavaScript library")
+    (description
+     "This package allows for data objects in R to be rendered as HTML tables
+using the JavaScript library 'DataTables' (typically via R Markdown or Shiny).
+The 'DataTables' library has been included in this R package.")
+    ;; The DT package as a whole is distributed under GPLv3.  The DT package
+    ;; inludes other software components under different licenses:
+    ;;
+    ;;   * Expat: jQuery, jquery.highlight.js, DataTables
+    ;;   * ASL2.0: selectize.js
+    ;;   * WTFPL: noUiSlider
+    (license (list license:gpl3
+                   license:expat
+                   license:asl2.0
+                   (license:non-copyleft "http://www.wtfpl.net/txt/copying/")))))
+
+(define-public r-base64enc
+  (package
+    (name "r-base64enc")
+    (version "0.1-3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "base64enc" version))
+              (sha256
+               (base32
+                "13b89fhg1nx7zds82a0biz847ixphg9byf5zl2cw9kab6s56v1bd"))))
+    (build-system r-build-system)
+    (home-page "http://www.rforge.net/base64enc")
+    (synopsis "Tools for Base64 encoding")
+    (description
+     "This package provides tools for handling Base64 encoding.  It is more
+flexible than the orphaned \"base64\" package.")
+    (license license:gpl2+)))
+
+(define-public r-r-methodss3
+  (package
+    (name "r-r-methodss3")
+    (version "1.7.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "R.methodsS3" version))
+              (sha256
+               (base32
+                "1dg4bbrwr8jcsqisjrrwxs942mrjq72zw8yvl2br4djdm0md8zz5"))))
+    (properties `((upstream-name . "R.methodsS3")))
+    (build-system r-build-system)
+    (home-page "http://cran.r-project.org/web/packages/R.methodsS3")
+    (synopsis "S3 methods simplified")
+    (description
+     "This package provides methods that simplify the setup of S3 generic
+functions and S3 methods.  Major effort has been made in making definition of
+methods as simple as possible with a minimum of maintenance for package
+developers.  For example, generic functions are created automatically, if
+missing, and naming conflict are automatically solved, if possible.  The
+method @code{setMethodS3()} is a good start for those who in the future may
+want to migrate to S4.")
+    (license license:lgpl2.1+)))
+
+(define-public r-r-oo
+  (package
+    (name "r-r-oo")
+    (version "1.19.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "R.oo" version))
+              (sha256
+               (base32
+                "15rm1qb9a212bqazhcpk7m48hcp7jq8rh4yhd9c6zfyvdqszfmsb"))))
+    (properties `((upstream-name . "R.oo")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-r-methodss3" ,r-r-methodss3)))
+    (home-page "https://github.com/HenrikBengtsson/R.oo")
+    (synopsis "R object-oriented programming with or without references")
+    (description
+     "This package provides methods and classes for object-oriented
+programming in R with or without references.  Large effort has been made on
+making definition of methods as simple as possible with a minimum of
+maintenance for package developers.")
+    (license license:lgpl2.1+)))
+
+(define-public r-r-utils
+  (package
+    (name "r-r-utils")
+    (version "2.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "R.utils" version))
+              (sha256
+               (base32
+                "03pi6pkcsq65fv7cn4x74cj050dc8x5d4xyg930p6f7flk788xaz"))))
+    (properties `((upstream-name . "R.utils")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-r-methodss3" ,r-r-methodss3)
+       ("r-r-oo" ,r-r-oo)))
+    (home-page "https://github.com/HenrikBengtsson/R.utils")
+    (synopsis "Various programming utilities")
+    (description
+     "This package provides utility functions useful when programming and
+developing R packages.")
+    (license license:lgpl2.1+)))
+
+(define-public r-r-cache
+  (package
+    (name "r-r-cache")
+    (version "0.12.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "R.cache" version))
+              (sha256
+               (base32
+                "006x52w9r8phw5hgqmyp0bz8z42vn8p5yibibnzi1sfa1xlw8iyx"))))
+    (properties `((upstream-name . "R.cache")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-digest" ,r-digest)
+       ("r-r-methodss3" ,r-r-methodss3)
+       ("r-r-oo" ,r-r-oo)
+       ("r-r-utils" ,r-r-utils)))
+    (home-page "https://github.com/HenrikBengtsson/R.cache")
+    (synopsis "Light-weight caching of objects and results")
+    (description
+     "This package provides methods for caching or memoization of objects and
+results.  With this package, any R object can be cached in a key-value storage
+where the key can be an arbitrary set of R objects.  The cache memory is
+persistent (on the file system).")
+    (license license:lgpl2.1+)))
+
+(define-public r-r-rsp
+  (package
+    (name "r-r-rsp")
+    (version "0.20.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "R.rsp" version))
+              (sha256
+               (base32
+                "06vq9qq5hdz3hqc99q82622mab6ix7jwap20h4za6ap6gnwqs0fv"))))
+    (properties `((upstream-name . "R.rsp")))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-r-cache" ,r-r-cache)
+       ("r-r-methodss3" ,r-r-methodss3)
+       ("r-r-oo" ,r-r-oo)
+       ("r-r-utils" ,r-r-utils)))
+    (home-page "https://github.com/HenrikBengtsson/R.rsp")
+    (synopsis "Dynamic generation of scientific reports")
+    (description
+     "The RSP markup language provides a powerful markup for controlling the
+content and output of LaTeX, HTML, Markdown, AsciiDoc, Sweave and knitr
+documents (and more), e.g. @code{Today's date is <%=Sys.Date()%>}.  Contrary
+to many other literate programming languages, with RSP it is straightforward
+to loop over mixtures of code and text sections, e.g.  in month-by-month
+summaries.  RSP has also several preprocessing directives for incorporating
+static and dynamic contents of external files (local or online) among other
+things.  RSP is ideal for self-contained scientific reports and R package
+vignettes.")
+    (license license:lgpl2.1+)))
+
+(define-public r-matrixstats
+  (package
+    (name "r-matrixstats")
+    (version "0.15.0")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "matrixStats" version))
+              (sha256
+               (base32
+                "1068k85s6rlwfzlszw790c2rndydvrsw7rpck6k6z17896m8drfa"))))
+    (properties `((upstream-name . "matrixStats")))
+    (build-system r-build-system)
+    (native-inputs
+     `(("r-r-rsp" ,r-r-rsp))) ;used to build vignettes
+    (home-page "https://github.com/HenrikBengtsson/matrixStats")
+    (synopsis "Methods applying to vectors and matrix rows and columns")
+    (description
+     "This package provides methods operating on rows and columns of matrices,
+e.g.  @code{rowMedians()}, @code{rowRanks()}, and @code{rowSds()}.  There are
+also some vector-based methods, e.g. @code{binMeans()}, @code{madDiff()} and
+@code{weightedMedians()}.  All methods have been optimized for speed and
+memory usage.")
+    (license license:artistic2.0)))
+
+(define-public r-viridis
+  (package
+    (name "r-viridis")
+    (version "0.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "viridis" version))
+              (sha256
+               (base32
+                "0zz9i874s1fwhl9bcbiprlzaz7zsy1rj6c729zn3k525d63qbnj7"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-ggplot2" ,r-ggplot2)
+       ("r-gridextra" ,r-gridextra)))
+    (home-page "https://github.com/sjmgarnier/viridis")
+    (synopsis "Matplotlib default color map")
+    (description
+     "This package is a port of the new @url{matplotlib,
+http://matplotlib.org/} color maps (@code{viridis}--the default--,
+@code{magma}, @code{plasma}, and @code{inferno}) to R.  These color maps are
+designed in such a way that they will analytically be perfectly
+perceptually-uniform, both in regular form and also when converted to
+black-and-white.  They are also designed to be perceived by readers with the
+most common form of color blindness.")
+    (license license:x11)))
+
+(define-public r-plotly
+  (package
+    (name "r-plotly")
+    (version "2.0.3")
+    (source (origin
+              (method url-fetch)
+              (uri (cran-uri "plotly" version))
+              (sha256
+               (base32
+                "16pqycns8qf0y1j21n009qf242lv0izwyidlx40zv88izxhg1vs0"))))
+    (build-system r-build-system)
+    (propagated-inputs
+     `(("r-base64enc" ,r-base64enc)
+       ("r-digest" ,r-digest)
+       ("r-ggplot2" ,r-ggplot2)
+       ("r-htmlwidgets" ,r-htmlwidgets)
+       ("r-httr" ,r-httr)
+       ("r-jsonlite" ,r-jsonlite)
+       ("r-magrittr" ,r-magrittr)
+       ("r-plyr" ,r-plyr)
+       ("r-viridis" ,r-viridis)))
+    (home-page "https://plot.ly/r")
+    (synopsis "Create interactive web graphics")
+    (description
+     "This package enables the translation of ggplot2 graphs to an interactive
+web-based version and/or the creation of custom web-based visualizations
+directly from R.  Once uploaded to a plotly account, plotly graphs (and the
+data behind them) can be viewed and modified in a web browser.")
+    (license license:x11)))
+
diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm
index b6c996edfa..0b2dec41f6 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/texlive.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;;
@@ -129,30 +129,29 @@
       #:tests? ,(not (string-prefix? "mips64" (or (%current-target-system)
                                                   (%current-system))))
       #:phases
-       (alist-cons-after
-        'install 'postinst
-         (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
-           (let* ((out (assoc-ref outputs "out"))
-                  (share (string-append out "/share"))
-                  (texlive-extra (assoc-ref inputs "texlive-extra-src"))
-                  (unpack (assoc-ref %standard-phases 'unpack))
-                  (patch-source-shebangs
-                    (assoc-ref %standard-phases 'patch-source-shebangs)))
-             ;; Create symbolic links for the latex variants and their
-             ;; man pages.
-             (with-directory-excursion (string-append out "/bin/")
-               (for-each symlink
-               '("pdftex" "pdftex"   "xetex"   "luatex")
-               '("latex"  "pdflatex" "xelatex" "lualatex")))
-             (with-directory-excursion (string-append share "/man/man1/")
-               (symlink "luatex.1" "lualatex.1"))
-             ;; Unpack texlive-extra and install tlpkg.
-             (mkdir "texlive-extra")
-             (with-directory-excursion "texlive-extra"
-               (apply unpack (list #:source texlive-extra))
-               (apply patch-source-shebangs (list #:source texlive-extra))
-               (system* "mv" "tlpkg" share))))
-        %standard-phases)))
+       (modify-phases %standard-phases
+         (add-after 'install 'postint
+           (lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (texlive-extra (assoc-ref inputs "texlive-extra-src"))
+                    (unpack (assoc-ref %standard-phases 'unpack))
+                    (patch-source-shebangs
+                      (assoc-ref %standard-phases 'patch-source-shebangs)))
+               ;; Create symbolic links for the latex variants and their
+               ;; man pages.
+               (with-directory-excursion (string-append out "/bin/")
+                 (for-each symlink
+                 '("pdftex" "pdftex"   "xetex"   "luatex")
+                 '("latex"  "pdflatex" "xelatex" "lualatex")))
+               (with-directory-excursion (string-append share "/man/man1/")
+                 (symlink "luatex.1" "lualatex.1"))
+               ;; Unpack texlive-extra and install tlpkg.
+               (mkdir "texlive-extra")
+               (with-directory-excursion "texlive-extra"
+                 (apply unpack (list #:source texlive-extra))
+                 (apply patch-source-shebangs (list #:source texlive-extra))
+                 (system* "mv" "tlpkg" share))))))))
    (synopsis "TeX Live, a package of the TeX typesetting system")
    (description
     "TeX Live provides a comprehensive TeX document production system.
@@ -182,42 +181,40 @@ This package contains the binaries.")
                  (guix build utils)
                  (srfi srfi-26))
       #:phases
-        (alist-cons-before
-         'texmf-config 'install
-         (lambda* (#:key outputs #:allow-other-keys)
-           (let ((share (string-append (assoc-ref outputs "out") "/share")))
-             (mkdir-p share)
-             (system* "mv" "texmf-dist" share)))
-         (alist-cons-after
-          'patch-source-shebangs 'texmf-config
-          (lambda* (#:key inputs outputs #:allow-other-keys)
-            (let* ((out (assoc-ref outputs "out"))
-                   (share (string-append out "/share"))
-                   (texmfroot (string-append share "/texmf-dist/web2c"))
-                   (texmfcnf (string-append texmfroot "/texmf.cnf"))
-                   (texlive-bin (assoc-ref inputs "texlive-bin"))
-                   (texbin (string-append texlive-bin "/bin"))
-                   (tlpkg (string-append texlive-bin "/share/tlpkg")))
-              ;; Register SHARE as TEXMFROOT in texmf.cnf.
-              (substitute* texmfcnf
-                (("TEXMFROOT = \\$SELFAUTOPARENT")
-                (string-append "TEXMFROOT = " share)))
-              ;; Register paths in texmfcnf.lua, needed for context.
-              (substitute* (string-append texmfroot "/texmfcnf.lua")
-                (("selfautodir:") out)
-                (("selfautoparent:") (string-append share "/")))
-              ;; Set path to TeXLive Perl modules
-              (setenv "PERL5LIB"
-                      (string-append (getenv "PERL5LIB") ":" tlpkg))
-              ;; Configure the texmf-dist tree; inspired from
-              ;; http://slackbuilds.org/repository/13.37/office/texlive/
-              (setenv "PATH" (string-append (getenv "PATH") ":" texbin))
-              (setenv "TEXMFCNF" texmfroot)
-              (system* "updmap-sys" "--nohash" "--syncwithtrees")
-              (system* "mktexlsr")
-              (system* "fmtutil-sys" "--all")))
-          (map (cut assq <> %standard-phases)
-               '(set-paths unpack patch-source-shebangs))))))
+        (modify-phases (map (cut assq <> %standard-phases)
+                            '(set-paths unpack patch-source-shebangs))
+          (add-after 'patch-source-shebangs 'install
+            (lambda* (#:key outputs #:allow-other-keys)
+              (let ((share (string-append (assoc-ref outputs "out") "/share")))
+                (mkdir-p share)
+                (system* "mv" "texmf-dist" share))))
+          (add-after 'install 'texmf-config
+            (lambda* (#:key inputs outputs #:allow-other-keys)
+              (let* ((out (assoc-ref outputs "out"))
+                     (share (string-append out "/share"))
+                     (texmfroot (string-append share "/texmf-dist/web2c"))
+                     (texmfcnf (string-append texmfroot "/texmf.cnf"))
+                     (texlive-bin (assoc-ref inputs "texlive-bin"))
+                     (texbin (string-append texlive-bin "/bin"))
+                     (tlpkg (string-append texlive-bin "/share/tlpkg")))
+                ;; Register SHARE as TEXMFROOT in texmf.cnf.
+                (substitute* texmfcnf
+                  (("TEXMFROOT = \\$SELFAUTOPARENT")
+                  (string-append "TEXMFROOT = " share)))
+                ;; Register paths in texmfcnf.lua, needed for context.
+                (substitute* (string-append texmfroot "/texmfcnf.lua")
+                  (("selfautodir:") out)
+                  (("selfautoparent:") (string-append share "/")))
+                ;; Set path to TeXLive Perl modules
+                (setenv "PERL5LIB"
+                        (string-append (getenv "PERL5LIB") ":" tlpkg))
+                ;; Configure the texmf-dist tree; inspired from
+                ;; http://slackbuilds.org/repository/13.37/office/texlive/
+                (setenv "PATH" (string-append (getenv "PATH") ":" texbin))
+                (setenv "TEXMFCNF" texmfroot)
+                (system* "updmap-sys" "--nohash" "--syncwithtrees")
+                (system* "mktexlsr")
+                (system* "fmtutil-sys" "--all")))))))
    (synopsis "TeX Live, a package of the TeX typesetting system")
    (description
     "TeX Live provides a comprehensive TeX document production system.
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 537a840247..f2c60ddadf 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
 ;;;
@@ -25,6 +25,7 @@
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages python))
 
@@ -95,7 +96,7 @@ libenca and several charset conversion libraries and tools.")
 (define-public utf8proc
   (package
     (name "utf8proc")
-    (version "1.1.6")
+    (version "1.3.1")
     (source
      (origin
        (method url-fetch)
@@ -104,23 +105,15 @@ libenca and several charset conversion libraries and tools.")
              version ".tar.gz"))
        (file-name (string-append name "-" version ".tar.gz"))
        (sha256
-        (base32 "0wmsi672knii0q70wh6a3ll0gv7qk33c50zbpzasrs3b16bqy659"))))
+        (base32 "1k48as5kjkar4yj3dwxyll8ykj4k723ib5a6mnw1g86q3zi0zdl3"))))
     (build-system gnu-build-system)
     (arguments
      '(#:tests? #f ;no "check" target
-       #:make-flags '("CC=gcc")
+       #:make-flags (list "CC=gcc"
+                          (string-append "prefix=" (assoc-ref %outputs "out")))
        #:phases
-       (alist-replace
-        'install
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((lib (string-append (assoc-ref outputs "out") "/lib/"))
-                (include (string-append (assoc-ref outputs "out") "/include/")))
-            (install-file "utf8proc.h" include)
-            (for-each (lambda (file)
-                        (install-file file lib))
-                      '("libutf8proc.a" "libutf8proc.so"))))
-        ;; no configure script
-        (alist-delete 'configure %standard-phases))))
+       (modify-phases %standard-phases
+         (delete 'configure))))
     (home-page "http://julialang.org/utf8proc/")
     (synopsis "C library for processing UTF-8 Unicode data")
     (description "utf8proc is a small C library that provides Unicode
@@ -201,3 +194,26 @@ files.  This file format is more compact and more readable than XML.  And
 unlike XML, it is type-aware, so it is not necessary to do string parsing in
 application code.")
     (license license:lgpl2.1+)))
+
+(define-public pfff
+  (package
+    (name "pfff")
+    (version "1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/pfff/pfff/archive/v"
+                                  version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "00m553aa277iarxj6dalmklyb64r7ias49bfwzbacsfg8h3kar8m"))))
+    (build-system cmake-build-system)
+    (home-page "http://biit.cs.ut.ee/pfff/")
+    (synopsis "Probabilistic fast file fingerprinting tool")
+    (description
+     "pfff is a tool for calculating a compact digital fingerprint of a file
+by sampling randomly from the file instead of reading it in full.
+Consequently, the computation has a flat performance characteristic,
+correlated with data variation rather than file size.  pfff can be as reliable
+as existing hashing techniques, with provably negligible risk of collisions.")
+    (license license:bsd-3)))
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 63a623d05e..340027e849 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -66,7 +66,6 @@
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages qt)
-  #:use-module (gnu packages samba)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages texinfo)
@@ -736,7 +735,6 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
        ("mpg123" ,mpg123)
        ("pulseaudio" ,pulseaudio)
        ("rsound" ,rsound)
-       ("samba" ,samba)
        ("vapoursynth" ,vapoursynth)
        ("waf" ,(origin
                  (method url-fetch)
@@ -805,7 +803,7 @@ projects while introducing many more.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2015.12.29")
+    (version "2016.01.09")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://youtube-dl.org/downloads/"
@@ -813,7 +811,7 @@ projects while introducing many more.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0232wiq8mjs5ngmlcvf0292icrhvzr9mkwy2km0g0djznsf7rxjg"))))
+                "0kchbjn52smhhjcrgqcz4hdkz0wl0i73blz3m04ncb0ykbazwg26"))))
     (build-system python-build-system)
     (native-inputs `(("python-setuptools" ,python-setuptools)))
     (home-page "http://youtube-dl.org")
diff --git a/gnu/packages/w3m.scm b/gnu/packages/w3m.scm
index d114d0a69e..45c9375def 100644
--- a/gnu/packages/w3m.scm
+++ b/gnu/packages/w3m.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,8 +44,10 @@
                "1qx9f0kprf92r1wxl3sacykla0g04qsi0idypzz24b7xy9ix5579"))
 
              ;; cf. https://bugs.archlinux.org/task/33397
-             (patches (list (search-patch "w3m-fix-compile.patch")))
-             (patch-flags '("-p0"))))
+             (patches (list (search-patch "w3m-libgc.patch")
+                            (search-patch "w3m-force-ssl_verify_server-on.patch")
+                            (search-patch "w3m-disable-sslv2-and-sslv3.patch")
+                            (search-patch "w3m-disable-weak-ciphers.patch")))))
     (build-system gnu-build-system)
     (arguments `(#:tests? #f  ; no check target
                  #:phases (alist-cons-before
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index d22aacd12f..dd05446603 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -40,6 +40,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
@@ -52,14 +53,14 @@
 (define-public webkitgtk
   (package
     (name "webkitgtk")
-    (version "2.8.5")
+    (version "2.10.4")
     (source (origin
               (method url-fetch)
               (uri (string-append "http://www.webkitgtk.org/releases/"
                                   name "-" version ".tar.xz"))
               (sha256
                (base32
-                "082dw0d8jxvsapx30ypmy5h2srzfzi42c3zr9pbkzx1m959hq7rx"))))
+                "0mghsbfnmmf6nsf7cb3ah76s77aigkzf3k6kw96wgh6all6jdy6v"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f ; no tests
@@ -105,6 +106,7 @@
        ("gst-plugins-base" ,gst-plugins-base)
        ("gtk+-2" ,gtk+-2)
        ("harfbuzz" ,harfbuzz)
+       ("hyphen" ,hyphen)
        ("icu4c" ,icu4c)
        ("libjpeg" ,libjpeg)
        ("libnotify" ,libnotify)
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index 8288869a9f..7419c61d3a 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015 Raimon Grau <raimonster@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -707,3 +708,27 @@ Cflags: -I${includedir}
 C++ programming langauge.")
     (home-page "http://www.grinninglizard.com/tinyxml/index.html")
     (license license:zlib)))
+
+(define-public xmlstarlet
+ (package
+   (name "xmlstarlet")
+   (version "1.6.1")
+   (source
+    (origin
+      (method url-fetch)
+      (uri (string-append "mirror://sourceforge/xmlstar/xmlstarlet/"
+                          version "/xmlstarlet-" version ".tar.gz"))
+      (sha256
+       (base32
+        "1jp737nvfcf6wyb54fla868yrr39kcbijijmjpyk4lrpyg23in0m"))))
+   (build-system gnu-build-system)
+   (inputs
+    `(("libxslt" ,libxslt)
+      ("libxml2" ,libxml2)))
+   (home-page "http://xmlstar.sourceforge.net/")
+   (synopsis "Command line XML toolkit")
+   (description "XMLStarlet is a set of command line utilities which can be
+used to transform, query, validate, and edit XML documents.  XPath is used to
+match and extract data, and elements can be added, deleted or modified using
+XSLT and EXSLT.")
+   (license license:x11)))
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 42422a3c56..82a5d994d2 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -4,6 +4,7 @@
 ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
+;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
 ;;; Copyright © 2015 Cyrill Schenkel <cyrill.schenkel@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -5375,14 +5376,14 @@ Intrinsics (Xt) Library.")
 (define-public xterm
   (package
     (name "xterm")
-    (version "320")
+    (version "322")
     (source (origin
               (method url-fetch)
               (uri (string-append "ftp://ftp.invisible-island.net/xterm/"
                                   "xterm-" version ".tgz"))
               (sha256
                (base32
-                "19r4rs5pjq944m7aiqligazf6wgmv4f023x3bx183h1l8dbvn3d6"))))
+                "1mh9s5g3fs64iimnl7axk0isb5306dyshisxlv5gr8vn7ysl3nws"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags '("--enable-wide-chars" "--enable-256-color"
diff --git a/gnu/services.scm b/gnu/services.scm
index 0e1c74bda8..f302816e9e 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -63,6 +63,7 @@
 
             system-service-type
             boot-service-type
+            cleanup-service-type
             activation-service-type
             activation-service->script
             %linux-bare-metal-service
@@ -208,23 +209,8 @@ containing the given entries."
 (define (compute-boot-script _ mexps)
   (mlet %store-monad ((gexps (sequence %store-monad mexps)))
     (gexp->file "boot"
-                #~(begin
-                    (use-modules (guix build utils))
-
-                    ;; Clean out /tmp and /var/run.
-                    ;;
-                    ;; XXX This needs to happen before service activations, so
-                    ;; it has to be here, but this also implicitly assumes
-                    ;; that /tmp and /var/run are on the root partition.
-                    (false-if-exception (delete-file-recursively "/tmp"))
-                    (false-if-exception (delete-file-recursively "/var/run"))
-                    (false-if-exception (mkdir "/tmp"))
-                    (false-if-exception (chmod "/tmp" #o1777))
-                    (false-if-exception (mkdir "/var/run"))
-                    (false-if-exception (chmod "/var/run" #o755))
-
-                    ;; Activate the system and spawn dmd.
-                    #$@gexps))))
+                ;; Clean up and activate the system, then spawn dmd.
+                #~(begin #$@gexps))))
 
 (define (boot-script-entry mboot)
   "Return, as a monadic value, an entry for the boot script in the system
@@ -247,6 +233,53 @@ directory."
   ;; The service that produces the boot script.
   (service boot-service-type #t))
 
+(define (cleanup-gexp _)
+  "Return as a monadic value a gexp to clean up /tmp and similar places upon
+boot."
+  (define %modules
+    '((guix build utils)))
+
+  (mlet %store-monad ((modules  (imported-modules %modules))
+                      (compiled (compiled-modules %modules)))
+    (return #~(begin
+                (eval-when (expand load eval)
+                  ;; Make sure 'use-modules' below succeeds.
+                  (set! %load-path (cons #$modules %load-path))
+                  (set! %load-compiled-path
+                    (cons #$compiled %load-compiled-path)))
+
+                (use-modules (guix build utils))
+
+                ;; Clean out /tmp and /var/run.
+                ;;
+                ;; XXX This needs to happen before service activations, so it
+                ;; has to be here, but this also implicitly assumes that /tmp
+                ;; and /var/run are on the root partition.
+                (letrec-syntax ((fail-safe (syntax-rules ()
+                                             ((_ exp rest ...)
+                                              (begin
+                                                (catch 'system-error
+                                                  (lambda () exp)
+                                                  (const #f))
+                                                (fail-safe rest ...)))
+                                             ((_)
+                                              #t))))
+                  ;; Ignore I/O errors so the system can boot.
+                  (fail-safe
+                   (delete-file-recursively "/tmp")
+                   (delete-file-recursively "/var/run")
+                   (mkdir "/tmp")
+                   (chmod "/tmp" #o1777)
+                   (mkdir "/var/run")
+                   (chmod "/var/run" #o755)))))))
+
+(define cleanup-service-type
+  ;; Service that cleans things up in /tmp and similar.
+  (service-type (name 'cleanup)
+                (extensions
+                 (list (service-extension boot-service-type
+                                          cleanup-gexp)))))
+
 (define* (file-union name files)                  ;FIXME: Factorize.
   "Return a <computed-file> that builds a directory containing all of FILES.
 Each item in FILES must be a list where the first element is the file name to
diff --git a/gnu/system.scm b/gnu/system.scm
index 6dfcc0fe3a..4aedb7ee36 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -295,8 +295,12 @@ a container or that of a \"bare metal\" system."
            %boot-service
 
            ;; %DMD-ROOT-SERVICE must come first so that the gexp that execs
-           ;; dmd comes last in the boot script (XXX).
-           %dmd-root-service %activation-service
+           ;; dmd comes last in the boot script (XXX).  Likewise, the cleanup
+           ;; service must come last so that its gexp runs before activation
+           ;; code.
+           %dmd-root-service
+           %activation-service
+           (service cleanup-service-type #f)
 
            (pam-root-service (operating-system-pam-services os))
            (account-service (append (operating-system-accounts os)
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index c77348bd88..afd57668e2 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -96,10 +96,11 @@ builder, or the distro's final Guile when GUILE is #f."
     (package (inherit p)
       (location (if (pair? loc) (source-properties->location loc) loc))
       (arguments
-       (let ((args (package-arguments p)))
-         `(#:guile ,guile
-           #:implicit-inputs? #f
-           ,@args)))
+       ;; 'ensure-keyword-arguments' guarantees that this procedure is
+       ;; idempotent.
+       (ensure-keyword-arguments (package-arguments p)
+                                 `(#:guile ,guile
+                                   #:implicit-inputs? #f)))
       (replacement
        (let ((replacement (package-replacement p)))
          (and replacement
@@ -177,9 +178,10 @@ use `--strip-all' as the arguments to `strip'."
               flags)))))
     (replacement (and=> (package-replacement p) static-package))))
 
-(define* (dist-package p source)
+(define* (dist-package p source #:key (phases '%dist-phases))
   "Return a package that runs takes source files from the SOURCE directory,
-runs `make distcheck' and whose result is one or more source tarballs."
+runs `make distcheck' and whose result is one or more source tarballs.  The
+exact build phases are defined by PHASES."
   (let ((s source))
     (package (inherit p)
       (name (string-append (package-name p) "-dist"))
@@ -198,7 +200,7 @@ runs `make distcheck' and whose result is one or more source tarballs."
             `((guix build gnu-dist)
               ,@modules))
            ((#:phases _)
-            '%dist-phases))))
+            phases))))
       (native-inputs
        ;; Add autotools & co. as inputs.
        (let ((ref (lambda (module var)
diff --git a/guix/build-system/python.scm b/guix/build-system/python.scm
index 2532210a49..86efc1a715 100644
--- a/guix/build-system/python.scm
+++ b/guix/build-system/python.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;;
@@ -41,12 +41,13 @@
 ;;
 ;; Code:
 
-(define (pypi-uri name version)
+(define* (pypi-uri name version #:optional (extension ".tar.gz"))
   "Return a URI string for the Python package hosted on the Python Package
-Index (PyPI) corresponding to NAME and VERSION."
+Index (PyPI) corresponding to NAME and VERSION.  EXTENSION is the file name
+extension, such as '.tar.gz'."
   (string-append "https://pypi.python.org/packages/source/"
                  (string-take name 1) "/" name "/"
-                 name "-" version ".tar.gz"))
+                 name "-" version extension))
 
 (define %python-build-system-modules
   ;; Build-side modules imported by default.
diff --git a/guix/build/git.scm b/guix/build/git.scm
index 121f07a7fa..c1af545a76 100644
--- a/guix/build/git.scm
+++ b/guix/build/git.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -37,23 +37,28 @@ recursively.  Return #t on success, #f otherwise."
   ;; in advance anyway.
   (setenv "GIT_SSL_NO_VERIFY" "true")
 
-  (let ((args `("clone" ,@(if recursive? '("--recursive") '())
-                ,url ,directory)))
-    (and (zero? (apply system* git-command args))
-         (with-directory-excursion directory
-           (system* git-command "tag" "-l")
-           (and (zero? (system* git-command "checkout" commit))
-                (begin
-                  ;; The contents of '.git' vary as a function of the current
-                  ;; status of the Git repo.  Since we want a fixed output, this
-                  ;; directory needs to be taken out.
-                  (delete-file-recursively ".git")
-
-                  (when recursive?
-                    ;; In sub-modules, '.git' is a flat file, not a directory,
-                    ;; so we can use 'find-files' here.
-                    (for-each delete-file-recursively
-                              (find-files directory "^\\.git$")))
-                  #t))))))
+  ;; We cannot use "git clone --recursive" since the following "git checkout"
+  ;; effectively removes sub-module checkouts as of Git 2.6.3.
+  (and (zero? (system* git-command "clone" url directory))
+       (with-directory-excursion directory
+         (system* git-command "tag" "-l")
+         (and (zero? (system* git-command "checkout" commit))
+              (begin
+                (when recursive?
+                  ;; Now is the time to fetch sub-modules.
+                  (unless (zero? (system* git-command "submodule" "update"
+                                          "--init" "--recursive"))
+                    (error "failed to fetch sub-modules" url))
+
+                  ;; In sub-modules, '.git' is a flat file, not a directory,
+                  ;; so we can use 'find-files' here.
+                  (for-each delete-file-recursively
+                            (find-files directory "^\\.git$")))
+
+                ;; The contents of '.git' vary as a function of the current
+                ;; status of the Git repo.  Since we want a fixed output, this
+                ;; directory needs to be taken out.
+                (delete-file-recursively ".git")
+                #t)))))
 
 ;;; git.scm ends here
diff --git a/guix/build/pull.scm b/guix/build/pull.scm
index 281be23aa8..4ddb12ac04 100644
--- a/guix/build/pull.scm
+++ b/guix/build/pull.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module (ice-9 ftw)
   #:use-module (ice-9 match)
   #:use-module (ice-9 format)
+  #:use-module (ice-9 threads)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
@@ -33,75 +35,10 @@
 ;;;
 ;;; Code:
 
-(define (call-with-process thunk)
-  "Run THUNK in a separate process that will return 0 if THUNK terminates
-normally, and 1 if an exception is raised."
-  (match (primitive-fork)
-    (0
-     (catch #t
-       (lambda ()
-         (thunk)
-         (primitive-exit 0))
-       (lambda (key . args)
-         (print-exception (current-error-port) #f key args)
-         (primitive-exit 1))))
-    (pid
-     #t)))
-
-(define* (report-build-progress total completed cont
-                                #:optional (log-port (current-error-port)))
-  "Report that COMPLETED out of TOTAL files have been completed, and call
-CONT."
-  (display #\cr log-port)
-  (format log-port "compiling...\t~5,1f% of ~d files" ;FIXME: i18n
-          (* 100. (/ completed total)) total)
-  (force-output log-port)
-  (cont))
-
-(define* (p-for-each proc lst
-                     #:optional (max-processes (current-processor-count))
-                     #:key (progress report-build-progress))
-  "Invoke PROC for each element of LST in a separate process, using up to
-MAX-PROCESSES processes in parallel.  Call PROGRESS at each step, passing it
-the continuation.  Raise an error if one of the processes exit with non-zero."
-  (define total
-    (length lst))
-
-  (define (wait-for-one-process)
-    (match (waitpid WAIT_ANY)
-      ((_ . status)
-       (unless (zero? (status:exit-val status))
-         (error "process failed" proc status)))))
-
-  (let loop ((lst       lst)
-             (running   0)
-             (completed 0))
-    (match lst
-      (()
-       (or (zero? running)
-           (let ((running   (- running 1))
-                 (completed (+ completed 1)))
-             (wait-for-one-process)
-             (progress total completed
-                       (lambda ()
-                         (loop lst running completed))))))
-      ((head . tail)
-       (if (< running max-processes)
-           (let ((running (+ 1 running)))
-             (call-with-process (cut proc head))
-             (progress total completed
-                       (lambda ()
-                         (loop tail running completed))))
-           (let ((running   (- running 1))
-                 (completed (+ completed 1)))
-             (wait-for-one-process)
-             (progress total completed
-                       (lambda ()
-                         (loop lst running completed)))))))))
-
 (define* (build-guix out source
                      #:key gcrypt
-                     (debug-port (%make-void-port "w")))
+                     (debug-port (%make-void-port "w"))
+                     (log-port (current-error-port)))
   "Build and install Guix in directory OUT using SOURCE, a directory
 containing the source code.  Write any debugging output to DEBUG-PORT."
   (setvbuf (current-output-port) _IOLBF)
@@ -130,33 +67,57 @@ containing the source code.  Write any debugging output to DEBUG-PORT."
     (set! %load-path (cons out %load-path))
     (set! %load-compiled-path (cons out %load-compiled-path))
 
-    ;; Compile the .scm files.  Do that in independent processes, à la
-    ;; 'make -j', to work around <http://bugs.gnu.org/15602> (FIXME).
-    ;; This ensures correctness, but is overly conservative and slow.
-    ;; The solution initially implemented (and described in the bug
-    ;; above) was slightly faster but consumed memory proportional to the
-    ;; number of modules, which quickly became unacceptable.
-    (p-for-each (lambda (file)
-                  (let ((go (string-append (string-drop-right file 4)
-                                           ".go")))
-                    (format debug-port "~%compiling '~a'...~%" file)
-                    (parameterize ((current-warning-port debug-port))
-                      (compile-file file
-                                    #:output-file go
-                                    #:opts
-                                    %auto-compilation-options))))
-
-                (filter (cut string-suffix? ".scm" <>)
-
-                        ;; Build guix/*.scm before gnu/*.scm to speed
-                        ;; things up.
-                        (sort (find-files out "\\.scm")
-                              (let ((guix (string-append out "/guix"))
-                                    (gnu  (string-append out "/gnu")))
-                                (lambda (a b)
-                                  (or (and (string-prefix? guix a)
-                                           (string-prefix? gnu b))
-                                      (string<? a b))))))))
+    ;; Compile the .scm files.  Load all the files before compiling them to
+    ;; work around <http://bugs.gnu.org/15602> (FIXME).
+    (let* ((files
+            ;; Load guix/ modules before gnu/ modules to get somewhat steadier
+            ;; progress reporting.
+            (sort (filter (cut string-suffix? ".scm" <>)
+                          (find-files out "\\.scm"))
+                  (let ((guix (string-append out "/guix"))
+                        (gnu  (string-append out "/gnu")))
+                    (lambda (a b)
+                      (or (and (string-prefix? guix a)
+                               (string-prefix? gnu  b))
+                          (string<? a b))))))
+           (total (length files)))
+      (let loop ((files files)
+                 (completed 0))
+        (match files
+          (() *unspecified*)
+          ((file . files)
+           (display #\cr log-port)
+           (format log-port "loading...\t~5,1f% of ~d files" ;FIXME: i18n
+                   (* 100. (/ completed total)) total)
+           (force-output log-port)
+           (format debug-port "~%loading '~a'...~%" file)
+           ;; Turn "<out>/foo/bar.scm" into (foo bar).
+           (let* ((relative-file (string-drop file (+ (string-length out) 1)))
+                  (module-path (string-drop-right relative-file 4))
+                  (module-name (map string->symbol
+                                    (string-split module-path #\/))))
+             (parameterize ((current-warning-port debug-port))
+               (resolve-interface module-name)))
+           (loop files (+ 1 completed)))))
+      (newline)
+      (let ((mutex (make-mutex))
+            (completed 0))
+        (par-for-each
+         (lambda (file)
+           (with-mutex mutex
+             (display #\cr log-port)
+             (format log-port "compiling...\t~5,1f% of ~d files" ;FIXME: i18n
+                     (* 100. (/ completed total)) total)
+             (force-output log-port)
+             (format debug-port "~%compiling '~a'...~%" file))
+           (let ((go (string-append (string-drop-right file 4) ".go")))
+             (parameterize ((current-warning-port (%make-void-port "w")))
+               (compile-file file
+                             #:output-file go
+                             #:opts %auto-compilation-options)))
+           (with-mutex mutex
+             (set! completed (+ 1 completed))))
+         files))))
 
   ;; Remove the "fake" (guix config).
   (delete-file (string-append out "/guix/config.scm"))
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index 18da43866d..a4ac3b307c 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 David Thompson <davet@gnu.org>
 ;;; Copyright © 2015 Pjotr Prins <pjotr.public01@thebird.nl>
+;;; Copyright © 2015 Ben Woodcroft <donttrustben@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -116,15 +117,19 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
                                          (assoc-ref inputs "ruby"))
                            1))
          (out (assoc-ref outputs "out"))
-         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0")))
-
+         (gem-home (string-append out "/lib/ruby/gems/" ruby-version ".0"))
+         (gem-name (first-matching-file "\\.gem$")))
     (setenv "GEM_HOME" gem-home)
     (mkdir-p gem-home)
-    (zero? (apply system* "gem" "install" (first-matching-file "\\.gem$")
-                  "--local" "--ignore-dependencies"
-                  ;; Executables should go into /bin, not /lib/ruby/gems.
-                  "--bindir" (string-append out "/bin")
-                  gem-flags))))
+    (and (apply system* "gem" "install" gem-name
+                "--local" "--ignore-dependencies"
+                ;; Executables should go into /bin, not /lib/ruby/gems.
+                "--bindir" (string-append out "/bin")
+                gem-flags)
+         ;; Remove the cached gem file as this is unnecessary and contains
+         ;; timestamped files rendering builds not reproducible.
+         (begin (delete-file (string-append gem-home "/cache/" gem-name))
+                #t))))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
diff --git a/guix/http-client.scm b/guix/http-client.scm
index c7cbc82aac..31b511eb1c 100644
--- a/guix/http-client.scm
+++ b/guix/http-client.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2012, 2015 Free Software Foundation, Inc.
 ;;;
@@ -188,13 +188,33 @@ closes PORT, unless KEEP-ALIVE? is true."
 
    (make-custom-binary-input-port "delimited input port" read! #f #f close))
 
+ (define (read-header-line port)
+   "Read an HTTP header line and return it without its final CRLF or LF.
+Raise a 'bad-header' exception if the line does not end in CRLF or LF,
+or if EOF is reached."
+   (match (%read-line port)
+     (((? string? line) . #\newline)
+      ;; '%read-line' does not consider #\return a delimiter; so if it's
+      ;; there, remove it.  We are more tolerant than the RFC in that we
+      ;; tolerate LF-only endings.
+      (if (string-suffix? "\r" line)
+          (string-drop-right line 1)
+          line))
+     ((line . _)                                ;EOF or missing delimiter
+      ((@@ (web http) bad-header) 'read-header-line line))))
+
  (unless (guile-version>? "2.0.11")
    ;; Guile <= 2.0.9 had a bug whereby 'response-body-port' would read more
    ;; than what 'content-length' says.  See Guile commit 802a25b.
-   ;; Guile <= 2.0.12 had a bug whereby the 'close' method of the response
+   ;; Guile <= 2.0.11 had a bug whereby the 'close' method of the response
    ;; body port would fail with wrong-arg-num.  See Guile commit 5a10e41.
    (module-set! (resolve-module '(web response))
-                'make-delimited-input-port make-delimited-input-port)))
+                'make-delimited-input-port make-delimited-input-port)
+
+   ;; Guile <= 2.0.11 was affected by <http://bugs.gnu.org/22273>.  See Guile
+   ;; commit 4c7732c.
+   (when (module-variable %web-http 'read-line*)
+     (module-set! %web-http 'read-line* read-header-line))))
 
 ;; XXX: Work around <http://bugs.gnu.org/13095>, present in Guile
 ;; up to 2.0.7.
diff --git a/guix/import/cran.scm b/guix/import/cran.scm
index 45c679cbe2..fc2709020a 100644
--- a/guix/import/cran.scm
+++ b/guix/import/cran.scm
@@ -109,11 +109,11 @@ package definition."
 
 (define %cran-url "http://cran.r-project.org/web/packages/")
 
-(define (cran-fetch name)
+(define (fetch-description base-url name)
   "Return an alist of the contents of the DESCRIPTION file for the R package
 NAME, or #f on failure.  NAME is case-sensitive."
   ;; This API always returns the latest release of the module.
-  (let ((url (string-append %cran-url name "/DESCRIPTION")))
+  (let ((url (string-append base-url name "/DESCRIPTION")))
     (description->alist (read-string (http-fetch url)))))
 
 (define (listify meta field)
@@ -196,7 +196,7 @@ which was derived from the R package's DESCRIPTION file."
 (define (cran->guix-package package-name)
   "Fetch the metadata for PACKAGE-NAME from cran.r-project.org, and return the
 `package' s-expression corresponding to that package, or #f on failure."
-  (let ((module-meta (cran-fetch package-name)))
+  (let ((module-meta (fetch-description %cran-url package-name)))
     (and=> module-meta description->package)))
 
 
@@ -204,27 +204,33 @@ which was derived from the R package's DESCRIPTION file."
 ;;; Updater.
 ;;;
 
+(define (package->upstream-name package)
+  "Return the upstream name of the PACKAGE."
+  (let* ((properties (package-properties package))
+         (upstream-name (and=> properties
+                               (cut assoc-ref <> 'upstream-name))))
+    (if upstream-name
+        upstream-name
+        (match (package-source package)
+          ((? origin? origin)
+           (match (origin-uri origin)
+             ((url rest ...)
+              (let ((end   (string-rindex url #\_))
+                    (start (string-rindex url #\/)))
+                ;; The URL ends on
+                ;; (string-append "/" name "_" version ".tar.gz")
+                (substring url start end)))
+             (_ #f)))
+          (_ #f)))))
+
 (define (latest-release package)
   "Return an <upstream-source> for the latest release of PACKAGE."
 
-  (define (package->cran-name package)
-    (match (package-source package)
-      ((? origin? origin)
-       (match (origin-uri origin)
-         ((url rest ...)
-          (let ((end   (string-rindex url #\_))
-                (start (string-rindex url #\/)))
-            ;; The URL ends on
-            ;; (string-append "/" name "_" version ".tar.gz")
-            (substring url start end)))
-         (_ #f)))
-    (_ #f)))
-
-  (define cran-name
-    (package->cran-name (specification->package package)))
+  (define upstream-name
+    (package->upstream-name (specification->package package)))
 
   (define meta
-    (cran-fetch cran-name))
+    (fetch-description %cran-url upstream-name))
 
   (and meta
        (let ((version (assoc-ref meta "Version")))
@@ -232,7 +238,7 @@ which was derived from the R package's DESCRIPTION file."
          (upstream-source
           (package package)
           (version version)
-          (urls (cran-uri cran-name version))))))
+          (urls (cran-uri upstream-name version))))))
 
 (define (cran-package? package)
   "Return true if PACKAGE is an R package from CRAN."
diff --git a/guix/monad-repl.scm b/guix/monad-repl.scm
index ebd9151065..aefabdeebb 100644
--- a/guix/monad-repl.scm
+++ b/guix/monad-repl.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -60,11 +60,10 @@
   "Return the derivation of the default "
   (package-derivation store (default-guile) system))
 
-(define (store-monad-language)
-  "Return a compiler language for the store monad."
-  (let* ((store (open-connection))
-         (guile (or (%guile-for-build)
-                    (default-guile-derivation store))))
+(define (store-monad-language store)
+  "Return a compiler language for the store monad using STORE."
+  (let ((guile (or (%guile-for-build)
+                   (default-guile-derivation store))))
     (monad-language %store-monad
                     (cut run-with-store store <>
                          #:guile-for-build guile)
@@ -84,10 +83,11 @@ Run EXP through the store monad."
 (define-meta-command ((enter-store-monad guix) repl)
   "enter-store-monad
 Enter a REPL for values in the store monad."
-  (let ((new (make-repl (store-monad-language))))
-    ;; Force interpretation so that our specially-crafted language evaluator
-    ;; is actually used.
-    (repl-option-set! new 'interp #t)
-    (run-repl new)))
+  (with-store store
+    (let ((new (make-repl (store-monad-language store))))
+      ;; Force interpretation so that our specially-crafted language evaluator
+      ;; is actually used.
+      (repl-option-set! new 'interp #t)
+      (run-repl new))))
 
 ;;; monad-repl.scm ends here
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index f296f8a00e..e2cc965951 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
 ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -593,7 +593,16 @@ Common Platform Enumeration (CPE) name."
 
 (define package-vulnerabilities
   (let ((lookup (delay (vulnerabilities->lookup-proc
-                        (current-vulnerabilities)))))
+                        ;; Catch networking errors to allow network-less
+                        ;; operation.
+                        (catch 'getaddrinfo-error
+                          (lambda ()
+                            (current-vulnerabilities))
+                          (lambda (key errcode)
+                            (warn (_ "failed to lookup NIST host: ~a~%")
+                                  (gai-strerror errcode))
+                            (warn (_ "assuming no CVE vulnerabilities~%"))
+                            '()))))))
     (lambda (package)
       "Return a list of vulnerabilities affecting PACKAGE."
       ((force lookup)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index d0b5abd0e2..02eb600c43 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2013, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
@@ -230,21 +230,24 @@ specified in MANIFEST, a manifest object."
 ;;; Package specifications.
 ;;;
 
-(define (find-packages-by-description rx)
-  "Return the list of packages whose name, synopsis, or description matches
-RX."
+(define (find-packages-by-description regexps)
+  "Return the list of packages whose name matches one of REGEXPS, or whose
+synopsis or description matches all of REGEXPS."
   (define version<? (negate version>=?))
 
+  (define (matches-all? str)
+    (every (cut regexp-exec <> str) regexps))
+
+  (define (matches-one? str)
+    (find (cut regexp-exec <> str) regexps))
+
   (sort
    (fold-packages (lambda (package result)
-                    (define matches?
-                      (cut regexp-exec rx <>))
-
-                    (if (or (matches? (package-name package))
+                    (if (or (matches-one? (package-name package))
                             (and=> (package-synopsis package)
-                                   (compose matches? P_))
+                                   (compose matches-all? P_))
                             (and=> (package-description package)
-                                   (compose matches? P_)))
+                                   (compose matches-all? P_)))
                         (cons package result)
                         result))
                   '())
@@ -696,11 +699,15 @@ processed, #f otherwise."
                                       (package-name p2))))))
          #t))
 
-      (('search regexp)
-       (let ((regexp (make-regexp* regexp regexp/icase)))
+      (('search _)
+       (let* ((patterns (filter-map (match-lambda
+                                      (('query 'search rx) rx)
+                                      (_                   #f))
+                                    opts))
+              (regexps  (map (cut make-regexp* <> regexp/icase) patterns)))
          (leave-on-EPIPE
           (for-each (cute package->recutils <> (current-output-port))
-                    (find-packages-by-description regexp)))
+                    (find-packages-by-description regexps)))
          #t))
 
       (('show requested-name)
diff --git a/guix/ui.scm b/guix/ui.scm
index 35a6671a07..6fd16bb9cc 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
@@ -301,7 +301,7 @@ exiting.  ARGS is the list of arguments received by the 'throw' handler."
   "Display version information for COMMAND and `(exit 0)'."
   (simple-format #t "~a (~a) ~a~%"
                  command %guix-package-name %guix-version)
-  (display (_ "Copyright (C) 2015 the Guix authors
+  (display (_ "Copyright (C) 2016 the Guix authors
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
diff --git a/guix/utils.scm b/guix/utils.scm
index 7b589e68a8..c61f105513 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013, 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
@@ -52,6 +52,7 @@
             strip-keyword-arguments
             default-keyword-arguments
             substitute-keyword-arguments
+            ensure-keyword-arguments
 
             <location>
             location
@@ -453,6 +454,45 @@ previous value of the keyword argument."
          (()
           (reverse before)))))))
 
+(define (delkw kw lst)
+  "Remove KW and its associated value from LST, a keyword/value list such
+as '(#:foo 1 #:bar 2)."
+  (let loop ((lst    lst)
+             (result '()))
+    (match lst
+      (()
+       (reverse result))
+      ((kw? value rest ...)
+       (if (eq? kw? kw)
+           (append (reverse result) rest)
+           (loop rest (cons* value kw? result)))))))
+
+(define (ensure-keyword-arguments args kw/values)
+  "Force the keywords arguments KW/VALUES in the keyword argument list ARGS.
+For instance:
+
+  (ensure-keyword-arguments '(#:foo 2) '(#:foo 2))
+  => (#:foo 2)
+
+  (ensure-keyword-arguments '(#:foo 2) '(#:bar 3))
+  => (#:foo 2 #:bar 3)
+
+  (ensure-keyword-arguments '(#:foo 2) '(#:bar 3 #:foo 42))
+  => (#:foo 42 #:bar 3)
+"
+  (let loop ((args      args)
+             (kw/values kw/values)
+             (result    '()))
+    (match args
+      (()
+       (append (reverse result) kw/values))
+      ((kw value rest ...)
+       (match (memq kw kw/values)
+         ((_ value . _)
+          (loop rest (delkw kw kw/values) (cons* value kw result)))
+         (#f
+          (loop rest kw/values (cons* value kw result))))))))
+
 (define* (nix-system->gnu-triplet
           #:optional (system (%current-system)) (vendor "unknown"))
   "Return a guess of the GNU triplet corresponding to Nix system
diff --git a/m4/guix.m4 b/m4/guix.m4
index 1e5985b30b..acfc33e170 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, 2015 Ludovic Courtès <ludo@gnu.org>
+dnl Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 dnl Copyright © 2014 Mark H Weaver <mhw@netris.org>
 dnl
 dnl This file is part of GNU Guix.
@@ -175,9 +175,9 @@ AC_DEFUN([GUIX_TEST_ROOT_DIRECTORY], [
     [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 'BINPRM_BUF_SIZE' constant in Linux (we leave room for the trailing zero.)
+dnl The Hurd has a limit of about a page (see exec/hashexec.c.)
+m4_define([LINUX_HASH_BANG_LIMIT], 127)
 
 dnl Hardcoded 'sun_path' length in <sys/un.h>.
 m4_define([SOCKET_FILE_NAME_LIMIT], 108)
@@ -204,14 +204,24 @@ AC_DEFUN([GUIX_HASH_BANG_LENGTH], [
     [ac_cv_guix_hash_bang_length=`echo -n "$storedir/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bootstrap-binaries-0/bin/bash" | wc -c`])
 ])
 
+dnl GUIX_TEST_HASH_BANG_LENGTH
+AC_DEFUN([GUIX_TEST_HASH_BANG_LENGTH], [
+  AC_REQUIRE([GUIX_TEST_ROOT_DIRECTORY])
+  AC_CACHE_CHECK([the length of a hash bang line used in tests],
+    [ac_cv_guix_test_hash_bang_length],
+    [ac_cv_guix_test_hash_bang_length=`echo -n "$ac_cv_guix_test_root/store/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.
+dnl Make sure everything is fine with the current settings.  Set $1 to
+dnl 'yes' if tests can run, 'no' otherwise.
 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])
+  AC_REQUIRE([GUIX_TEST_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])
@@ -219,9 +229,16 @@ AC_DEFUN([GUIX_CHECK_FILE_NAME_LIMITS], [
   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
+
+  $1=yes
   if test "$ac_cv_guix_hash_bang_length" -ge ]LINUX_HASH_BANG_LIMIT[; then
+    $1=no
     AC_MSG_ERROR([store directory '$storedir' would lead to overly long hash-bang lines])
   fi
+  if test "$ac_cv_guix_test_hash_bang_length" -ge ]LINUX_HASH_BANG_LIMIT[; then
+    $1=no
+    AC_MSG_WARN([test directory '$ac_cv_guix_test_root' may lead to overly long hash-bang lines])
+  fi
 ])
 
 dnl GUIX_CHECK_CXX11
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 5e6ff8b012..cf1a185590 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 #
 # This file is part of GNU Guix.
@@ -30,9 +30,10 @@ readlink_base ()
 
 module_dir="t-guix-package-$$"
 profile="t-profile-$$"
-rm -f "$profile"
+tmpfile="t-guix-package-file-$$"
+rm -f "$profile" "$tmpfile"
 
-trap 'rm -f "$profile" "$profile-"[0-9]* ; rm -rf "$module_dir" t-home-'"$$" EXIT
+trap 'rm -f "$profile" "$profile-"[0-9]* "$tmpfile"; rm -rf "$module_dir" t-home-'"$$" EXIT
 
 # Use `-e' with a non-package expression.
 if guix package --bootstrap -e +;
@@ -96,6 +97,19 @@ test "`guix package -s "An example GNU package" | grep ^name:`" = \
     "name: hello"
 test -z "`guix package -s "n0t4r341p4ck4g3"`"
 
+# Search with one and then two regexps.
+# First we get printed circuit boards *and* board games.
+guix package -s '\<board\>' > "$tmpfile"
+grep '^name: pcb' "$tmpfile"
+grep '^name: gnubg' "$tmpfile"
+
+# Second we get only board games.
+guix package -s '\<board\>' -s game > "$tmpfile"
+grep -v '^name: pcb' "$tmpfile" > /dev/null
+grep '^name: gnubg' "$tmpfile"
+
+rm -f "$tmpfile"
+
 # Make sure `--search' can display all the packages.
 guix package --search="" > /dev/null
 
diff --git a/tests/utils.scm b/tests/utils.scm
index 04a859fc9d..a05faabc15 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
@@ -141,6 +141,14 @@
                            '(a #:foo 42 #:b b #:baz 3
                                #:c c #:bar 4)))
 
+(test-equal "ensure-keyword-arguments"
+  '((#:foo 2)
+    (#:foo 2 #:bar 3)
+    (#:foo 42 #:bar 3))
+  (list (ensure-keyword-arguments '(#:foo 2) '(#:foo 2))
+        (ensure-keyword-arguments '(#:foo 2) '(#:bar 3))
+        (ensure-keyword-arguments '(#:foo 2) '(#:bar 3 #:foo 42))))
+
 (let* ((tree (alist->vhash
               '((0 2 3) (1 3 4) (2) (3 5 6) (4 6) (5) (6))
               hashq))