summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-06-07 11:54:03 +0200
committerLudovic Courtès <ludo@gnu.org>2016-06-07 11:54:03 +0200
commitaeafff536f933b07836b14d089dfc52b0e432ec9 (patch)
tree4ede554999f98cf9e19c04098c934db52efae795
parent9dee9e8ffe4650949bd3ad2edf559cf4a33e9e6e (diff)
parentf82c58539e1f7b9b864e68ea2ab0c6a17c15fbb5 (diff)
downloadguix-patches-aeafff536f933b07836b14d089dfc52b0e432ec9.tar
guix-patches-aeafff536f933b07836b14d089dfc52b0e432ec9.tar.gz
Merge branch 'master' into core-updates
-rw-r--r--Makefile.am5
-rw-r--r--doc/guix.texi114
-rw-r--r--doc/local.mk84
-rw-r--r--emacs/guix-base.el21
-rw-r--r--emacs/guix-main.scm22
-rw-r--r--emacs/guix-ui-package.el105
-rw-r--r--emacs/guix-utils.el33
-rw-r--r--emacs/local.mk74
-rw-r--r--gnu/build/linux-container.scm53
-rw-r--r--gnu/local.mk1596
-rw-r--r--gnu/packages/admin.scm19
-rw-r--r--gnu/packages/algebra.scm2
-rw-r--r--gnu/packages/autogen.scm30
-rw-r--r--gnu/packages/autotools.scm22
-rw-r--r--gnu/packages/avr.scm110
-rw-r--r--gnu/packages/backup.scm10
-rw-r--r--gnu/packages/base.scm5
-rw-r--r--gnu/packages/bioinformatics.scm85
-rw-r--r--gnu/packages/bittorrent.scm10
-rw-r--r--gnu/packages/ci.scm4
-rw-r--r--gnu/packages/code.scm2
-rw-r--r--gnu/packages/compression.scm38
-rw-r--r--gnu/packages/cross-base.scm6
-rw-r--r--gnu/packages/crypto.scm4
-rw-r--r--gnu/packages/cyrus-sasl.scm4
-rw-r--r--gnu/packages/databases.scm42
-rw-r--r--gnu/packages/dav.scm12
-rw-r--r--gnu/packages/dictionaries.scm39
-rw-r--r--gnu/packages/disk.scm8
-rw-r--r--gnu/packages/dns.scm4
-rw-r--r--gnu/packages/docbook.scm2
-rw-r--r--gnu/packages/ebook.scm7
-rw-r--r--gnu/packages/elf.scm4
-rw-r--r--gnu/packages/emacs.scm676
-rw-r--r--gnu/packages/engineering.scm6
-rw-r--r--gnu/packages/enlightenment.scm12
-rw-r--r--gnu/packages/finance.scm2
-rw-r--r--gnu/packages/flashing-tools.scm30
-rw-r--r--gnu/packages/fontutils.scm15
-rw-r--r--gnu/packages/freeipmi.scm6
-rw-r--r--gnu/packages/games.scm65
-rw-r--r--gnu/packages/gd.scm11
-rw-r--r--gnu/packages/gdb.scm4
-rw-r--r--gnu/packages/gettext.scm2
-rw-r--r--gnu/packages/gimp.scm14
-rw-r--r--gnu/packages/gnome.scm40
-rw-r--r--gnu/packages/gnunet.scm4
-rw-r--r--gnu/packages/gnuzilla.scm45
-rw-r--r--gnu/packages/gprolog.scm5
-rw-r--r--gnu/packages/grub.scm7
-rw-r--r--gnu/packages/gtk.scm56
-rw-r--r--gnu/packages/haskell.scm127
-rw-r--r--gnu/packages/hurd.scm28
-rw-r--r--gnu/packages/idutils.scm2
-rw-r--r--gnu/packages/image.scm37
-rw-r--r--gnu/packages/imagemagick.scm9
-rw-r--r--gnu/packages/java.scm10
-rw-r--r--gnu/packages/julia.scm10
-rw-r--r--gnu/packages/linux-libre-4.6-i686.conf (renamed from gnu/packages/linux-libre-4.5-i686.conf)256
-rw-r--r--gnu/packages/linux-libre-4.6-x86_64.conf (renamed from gnu/packages/linux-libre-4.5-x86_64.conf)255
-rw-r--r--gnu/packages/linux.scm31
-rw-r--r--gnu/packages/lirc.scm32
-rw-r--r--gnu/packages/lisp.scm2
-rw-r--r--gnu/packages/lua.scm36
-rw-r--r--gnu/packages/machine-learning.scm98
-rw-r--r--gnu/packages/mail.scm5
-rw-r--r--gnu/packages/maths.scm117
-rw-r--r--gnu/packages/mcrypt.scm7
-rw-r--r--gnu/packages/messaging.scm4
-rw-r--r--gnu/packages/moreutils.scm28
-rw-r--r--gnu/packages/mp3.scm47
-rw-r--r--gnu/packages/music.scm6
-rw-r--r--gnu/packages/networking.scm75
-rw-r--r--gnu/packages/ntp.scm16
-rw-r--r--gnu/packages/ocaml.scm4
-rw-r--r--gnu/packages/package-management.scm7
-rw-r--r--gnu/packages/parallel.scm29
-rw-r--r--gnu/packages/patches/a2ps-CVE-2001-1593.patch69
-rw-r--r--gnu/packages/patches/a2ps-CVE-2014-0466.patch30
-rw-r--r--gnu/packages/patches/antiword-CVE-2014-8123.patch21
-rw-r--r--gnu/packages/patches/devil-CVE-2009-3994.patch24
-rw-r--r--gnu/packages/patches/emacs-fix-scheme-indent-function.patch29
-rw-r--r--gnu/packages/patches/gd-CVE-2016-3074.patch36
-rw-r--r--gnu/packages/patches/gegl-CVE-2012-4433.patch117
-rw-r--r--gnu/packages/patches/icedtea-remove-overrides.patch291
-rw-r--r--gnu/packages/patches/id3lib-CVE-2007-4460.patch54
-rw-r--r--gnu/packages/patches/jansson-CVE-2016-4425.patch125
-rw-r--r--gnu/packages/patches/libtar-CVE-2013-4420.patch118
-rw-r--r--gnu/packages/patches/libyaml-CVE-2014-9130.patch30
-rw-r--r--gnu/packages/patches/lua-CVE-2014-5461.patch20
-rw-r--r--gnu/packages/patches/mcrypt-CVE-2012-4409.patch33
-rw-r--r--gnu/packages/patches/mcrypt-CVE-2012-4426.patch36
-rw-r--r--gnu/packages/patches/mcrypt-CVE-2012-4527.patch111
-rw-r--r--gnu/packages/patches/pcre2-CVE-2016-3191.patch179
-rw-r--r--gnu/packages/patches/procmail-CVE-2014-3618.patch26
-rw-r--r--gnu/packages/patches/rpm-CVE-2014-8118.patch25
-rw-r--r--gnu/packages/patches/rush-CVE-2013-6889.patch23
-rw-r--r--gnu/packages/patches/t1lib-CVE-2010-2642.patch24
-rw-r--r--gnu/packages/patches/t1lib-CVE-2011-0764.patch32
-rw-r--r--gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch133
-rw-r--r--gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch83
-rw-r--r--gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch29
-rw-r--r--gnu/packages/patches/vte-CVE-2012-2738-pt1.patch40
-rw-r--r--gnu/packages/patches/vte-CVE-2012-2738-pt2.patch82
-rw-r--r--gnu/packages/patches/wordnet-CVE-2008-2149.patch19
-rw-r--r--gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch710
-rw-r--r--gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch18
-rw-r--r--gnu/packages/pciutils.scm65
-rw-r--r--gnu/packages/pcre.scm2
-rw-r--r--gnu/packages/pdf.scm8
-rw-r--r--gnu/packages/photo.scm9
-rw-r--r--gnu/packages/plotutils.scm4
-rw-r--r--gnu/packages/popt.scm33
-rw-r--r--gnu/packages/pretty-print.scm67
-rw-r--r--gnu/packages/python.scm227
-rw-r--r--gnu/packages/qemu.scm97
-rw-r--r--gnu/packages/qt.scm254
-rw-r--r--gnu/packages/rails.scm95
-rw-r--r--gnu/packages/ruby.scm217
-rw-r--r--gnu/packages/rush.scm5
-rw-r--r--gnu/packages/scheme.scm4
-rw-r--r--gnu/packages/screen.scm17
-rw-r--r--gnu/packages/speech.scm51
-rw-r--r--gnu/packages/statistics.scm63
-rw-r--r--gnu/packages/synergy.scm48
-rw-r--r--gnu/packages/task-management.scm4
-rw-r--r--gnu/packages/telephony.scm41
-rw-r--r--gnu/packages/terminals.scm56
-rw-r--r--gnu/packages/tex.scm (renamed from gnu/packages/texlive.scm)41
-rw-r--r--gnu/packages/textutils.scm5
-rw-r--r--gnu/packages/tls.scm17
-rw-r--r--gnu/packages/version-control.scm16
-rw-r--r--gnu/packages/video.scm11
-rw-r--r--gnu/packages/web.scm60
-rw-r--r--gnu/packages/webkit.scm4
-rw-r--r--gnu/packages/wordnet.scm59
-rw-r--r--gnu/packages/wxwidgets.scm2
-rw-r--r--gnu/packages/xdisorg.scm80
-rw-r--r--gnu/packages/xiph.scm5
-rw-r--r--gnu/packages/xml.scm18
-rw-r--r--gnu/packages/xorg.scm4
-rw-r--r--gnu/services/base.scm66
-rw-r--r--gnu/services/dict.scm131
-rw-r--r--gnu/system/file-systems.scm1
-rw-r--r--gnu/system/install.scm5
-rw-r--r--guix/build-system/emacs.scm6
-rw-r--r--guix/build/bournish.scm23
-rw-r--r--guix/build/download.scm28
-rw-r--r--guix/build/emacs-build-system.scm23
-rw-r--r--guix/build/graft.scm21
-rw-r--r--guix/build/ruby-build-system.scm19
-rw-r--r--guix/build/union.scm36
-rw-r--r--guix/cve.scm156
-rw-r--r--guix/download.scm37
-rw-r--r--guix/grafts.scm27
-rw-r--r--guix/graph.scm30
-rw-r--r--guix/import/github.scm4
-rw-r--r--guix/profiles.scm1
-rw-r--r--guix/scripts/environment.scm6
-rw-r--r--guix/scripts/gc.scm3
-rw-r--r--guix/scripts/offload.scm3
-rw-r--r--guix/scripts/package.scm10
-rw-r--r--guix/scripts/refresh.scm117
-rw-r--r--guix/scripts/size.scm36
-rwxr-xr-xguix/scripts/substitute.scm6
-rw-r--r--guix/store.scm14
-rw-r--r--guix/ui.scm6
-rw-r--r--nix/libstore/build.cc80
-rw-r--r--nix/libstore/local-store.cc9
-rw-r--r--nix/libstore/pathlocks.cc6
-rw-r--r--nix/libutil/xml-writer.cc94
-rw-r--r--nix/libutil/xml-writer.hh69
-rw-r--r--nix/local.mk136
-rw-r--r--po/packages/POTFILES.in2
-rw-r--r--tests/bournish.scm42
-rw-r--r--tests/containers.scm12
-rw-r--r--tests/cve.scm17
-rw-r--r--tests/graph.scm13
-rw-r--r--tests/guix-environment-container.sh10
-rw-r--r--tests/guix-environment.sh15
-rw-r--r--tests/guix-lint.sh2
-rw-r--r--tests/guix-package.sh14
-rw-r--r--tests/size.scm4
-rw-r--r--tests/store.scm39
184 files changed, 8112 insertions, 2377 deletions
diff --git a/Makefile.am b/Makefile.am
index c2c571cf3b..50cde52701 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -174,8 +174,8 @@ dist_noinst_DATA = guix/tests.scm
# Linux-Libre configurations.
KCONFIGS = \
- gnu/packages/linux-libre-4.5-i686.conf \
- gnu/packages/linux-libre-4.5-x86_64.conf \
+ gnu/packages/linux-libre-4.6-i686.conf \
+ gnu/packages/linux-libre-4.6-x86_64.conf \
gnu/packages/linux-libre-4.4-i686.conf \
gnu/packages/linux-libre-4.4-x86_64.conf \
gnu/packages/linux-libre-4.1-i686.conf \
@@ -248,6 +248,7 @@ SCM_TESTS = \
tests/profiles.scm \
tests/syscalls.scm \
tests/gremlin.scm \
+ tests/bournish.scm \
tests/lint.scm \
tests/publish.scm \
tests/scripts.scm \
diff --git a/doc/guix.texi b/doc/guix.texi
index d88cc256d7..b9bf986640 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -336,6 +336,13 @@ manager, which can be done on top of a running GNU/Linux system. If,
instead, you want to install the complete GNU operating system,
@pxref{System Installation}.
+@cindex foreign distro
+When installed on a running GNU/Linux system---thereafter called a
+@dfn{foreign distro}---GNU@tie{}Guix complements the available tools
+without interference. Its data lives exclusively in two directories,
+usually @file{/gnu/store} and @file{/var/guix}; other files on your
+system, such as @file{/etc}, are left untouched.
+
@menu
* Binary Installation:: Getting Guix running in no time!
* Requirements:: Software needed to build and run Guix.
@@ -375,7 +382,7 @@ If that command fails because you do not have the required public key,
then run this command to import it:
@example
-$ gpg --keyserver keys.gnupg.net --recv-keys 090B11993D9AEBB5
+$ gpg --keyserver pgp.mit.edu --recv-keys 090B11993D9AEBB5
@end example
@noindent
@@ -998,6 +1005,10 @@ consecutive build results are not bit-for-bit identical. Note that this
setting can be overridden by clients such as @command{guix build}
(@pxref{Invoking guix build}).
+When used in conjunction with @option{--keep-failed}, the differing
+output is kept in the store, under @file{/gnu/store/@dots{}-check}.
+This makes it easy to look for differences between the two results.
+
@item --debug
Produce debugging output.
@@ -1092,6 +1103,7 @@ daemons on the same machine.
@node Application Setup
@section Application Setup
+@cindex foreign distro
When using Guix on top of GNU/Linux distribution other than GuixSD---a
so-called @dfn{foreign distro}---a few additional steps are needed to
get everything in place. Here are some of them.
@@ -3082,7 +3094,7 @@ Store Monad}).
@cindex derivations
Low-level build actions and the environment in which they are performed
-are represented by @dfn{derivations}. A derivation contain the
+are represented by @dfn{derivations}. A derivation contains the
following pieces of information:
@itemize
@@ -4332,6 +4344,10 @@ substitutes are genuine (@pxref{Substitutes}), or whether the build result
of a package is deterministic. @xref{Invoking guix challenge}, for more
background information and tools.
+When used in conjunction with @option{--keep-failed}, the differing
+output is kept in the store, under @file{/gnu/store/@dots{}-check}.
+This makes it easy to look for differences between the two results.
+
@item --derivations
@itemx -d
Return the derivation paths, not the output paths, of the given
@@ -5058,6 +5074,24 @@ reports information based on the available substitutes
(@pxref{Substitutes}). This makes it possible it to profile disk usage of
store items that are not even on disk, only available remotely.
+You can also specify several package names:
+
+@example
+$ guix size coreutils grep sed bash
+store item total self
+/gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4%
+/gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8%
+/gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6%
+/gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2%
+@dots{}
+total: 102.3 MiB
+@end example
+
+@noindent
+In this example we see that the combination of the four packages takes
+102.3@tie{}MiB in total, which is much less than the sum of each closure
+since they have a lot of dependencies in common.
+
The available options are:
@table @option
@@ -5948,6 +5982,11 @@ dependencies of your system configuration can be downloaded. See the
``Networking'' section below.
@end quotation
+The installation system includes many common tools needed for this task.
+But it is also a full-blown GuixSD system, which means that you can
+install additional packages, should you need it, using @command{guix
+package} (@pxref{Invoking guix package}).
+
@subsubsection Keyboard Layout
@cindex keyboard layout
@@ -5971,6 +6010,13 @@ Run the following command see what your network interfaces are called:
ifconfig -a
@end example
+@noindent
+@dots{} or, using the GNU/Linux-specific @command{ip} command:
+
+@example
+ip a
+@end example
+
@c http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20
Wired interfaces have a name starting with @samp{e}; for example, the
interface corresponding to the first on-board Ethernet controller is
@@ -7337,6 +7383,17 @@ Return a service that runs the Guix build daemon according to
Run @var{udev}, which populates the @file{/dev} directory dynamically.
@end deffn
+@deffn {Scheme Procedure} urandom-seed-service @var{#f}
+Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom}
+when rebooting.
+@end deffn
+
+@defvr {Scheme Variable} %random-seed-file
+This is the name of the file where some random bytes are saved by
+@var{urandom-seed-service} to seed @file{/dev/urandom} when rebooting.
+It defaults to @file{/var/lib/random-seed}.
+@end defvr
+
@deffn {Scheme Procedure} console-keymap-service @var{files} ...
@cindex keyboard layout
Return a service to load console keymaps from @var{files} using
@@ -9338,6 +9395,55 @@ Finally, @var{extra-options} is a list of additional command-line options
passed to @command{lircd}.
@end deffn
+@subsubsection Dictionary Services
+The @code{(gnu services dict)} module provides the following service:
+
+@deffn {Scheme Procedure} dicod-service [#:config (dicod-configuration)]
+Return a service that runs the @command{dicod} daemon, an implementation
+of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
+
+The optional @var{config} argument specifies the configuration for
+@command{dicod}, which should be a @code{<dicod-configuration>} object, by
+default it serves the GNU Collaborative International Dictonary of English.
+
+You can add @command{open localhost} to your @file{~/.dico} file to make
+@code{localhost} the default server for @command{dico} client
+(@pxref{Initialization File,,, dico, GNU Dico Manual}).
+@end deffn
+
+@deftp {Data Type} dicod-configuration
+Data type representing the configuration of dicod.
+
+@table @asis
+@item @code{dico} (default: @var{dico})
+Package object of the GNU Dico dictionary server.
+
+@item @code{databases} (default: @var{(list %dicod-database:gcide)})
+List of @code{<dicod-database>} objects denoting dictionaries to be served.
+@end table
+@end deftp
+
+@deftp {Data Type} dicod-database
+Data type representing a dictionary database.
+
+@table @asis
+@item @code{name}
+Name of the database, will be used in DICT commands.
+
+@item @code{module}
+Name of the dicod module used by this database
+(@pxref{Modules,,, dico, GNU Dico Manual}).
+
+@item @code{options}
+List of strings or gexps representing the arguments for the module handler
+(@pxref{Handlers,,, dico, GNU Dico Manual}).
+@end table
+@end deftp
+
+@defvr {Scheme Variable} %dicod-database:gcide
+A @code{<dicod-database>} object serving the GNU Collaborative International
+Dictonary of English using the @code{gcide} package.
+@end defvr
@node Setuid Programs
@subsection Setuid Programs
@@ -11068,7 +11174,9 @@ packages with the corresponding names.
If a project already contains the word @code{python}, we drop this;
for instance, the module python-dateutil is packaged under the names
-@code{python-dateutil} and @code{python2-dateutil}.
+@code{python-dateutil} and @code{python2-dateutil}. If the project name
+starts with @code{py} (e.g. @code{pytz}), we keep it and prefix it as
+described above.
@node Perl Modules
diff --git a/doc/local.mk b/doc/local.mk
index b9f07c3590..64bd2a5169 100644
--- a/doc/local.mk
+++ b/doc/local.mk
@@ -20,49 +20,49 @@
# You should have received a copy of the GNU General Public License
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
-info_TEXINFOS = doc/guix.texi
+info_TEXINFOS = %D%/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 \
- doc/images/shepherd-graph.dot
+ %D%/images/bootstrap-graph.dot \
+ %D%/images/bootstrap-packages.dot \
+ %D%/images/coreutils-graph.dot \
+ %D%/images/coreutils-bag-graph.dot \
+ %D%/images/service-graph.dot \
+ %D%/images/shepherd-graph.dot
DOT_VECTOR_GRAPHICS = \
$(DOT_FILES:%.dot=%.eps) \
$(DOT_FILES:%.dot=%.pdf)
EXTRA_DIST += \
- doc/htmlxref.cnf \
- doc/contributing.texi \
- doc/emacs.texi \
- doc/fdl-1.3.texi \
+ %D%/htmlxref.cnf \
+ %D%/contributing.texi \
+ %D%/emacs.texi \
+ %D%/fdl-1.3.texi \
$(DOT_FILES) \
$(DOT_VECTOR_GRAPHICS) \
- doc/images/coreutils-size-map.eps \
- doc/environment-gdb.scm \
- doc/package-hello.scm
+ %D%/images/coreutils-size-map.eps \
+ %D%/environment-gdb.scm \
+ %D%/package-hello.scm
OS_CONFIG_EXAMPLES_TEXI = \
- doc/os-config-bare-bones.texi \
- doc/os-config-desktop.texi \
- doc/os-config-lightweight-desktop.texi
+ %D%/os-config-bare-bones.texi \
+ %D%/os-config-desktop.texi \
+ %D%/os-config-lightweight-desktop.texi
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI)
EXTRA_DIST += $(OS_CONFIG_EXAMPLES_TEXI)
MAINTAINERCLEANFILES = $(OS_CONFIG_EXAMPLES_TEXI)
-doc/os-config-%.texi: gnu/system/examples/%.tmpl
+%D%/os-config-%.texi: gnu/system/examples/%.tmpl
$(AM_V_GEN)$(MKDIR_P) "`dirname $@`"; \
cp "$<" "$@"
infoimagedir = $(infodir)/images
dist_infoimage_DATA = \
$(DOT_FILES:%.dot=%.png) \
- doc/images/coreutils-size-map.png
+ %D%/images/coreutils-size-map.png
# Try hard to obtain an image size and aspect that's reasonable for inclusion
# in an Info or PDF document.
@@ -86,13 +86,13 @@ DOT_OPTIONS = \
$(AM_V_GEN)convert "$<" "$@-tmp.eps"; \
mv "$@-tmp.eps" "$@"
-# We cannot add new dependencies to `doc/guix.pdf' & co. (info "(automake)
+# We cannot add new dependencies to `%D%/guix.pdf' & co. (info "(automake)
# Extending"). Using the `-local' rules is imperfect, because they may be
# triggered after the main rule. Oh, well.
pdf-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.pdf)
info-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.png)
ps-local: $(DOT_FILES=%.dot=$(top_srcdir)/%.eps) \
- $(top_srcdir)/doc/images/coreutils-size-map.eps
+ $(top_srcdir)/%D%/images/coreutils-size-map.eps
dvi-local: ps-local
## ----------- ##
@@ -106,25 +106,25 @@ dvi-local: ps-local
# They are built in $(srcdir) like info manuals.
sub_commands_mans = \
- $(srcdir)/doc/guix-archive.1 \
- $(srcdir)/doc/guix-build.1 \
- $(srcdir)/doc/guix-challenge.1 \
- $(srcdir)/doc/guix-download.1 \
- $(srcdir)/doc/guix-edit.1 \
- $(srcdir)/doc/guix-environment.1 \
- $(srcdir)/doc/guix-gc.1 \
- $(srcdir)/doc/guix-hash.1 \
- $(srcdir)/doc/guix-import.1 \
- $(srcdir)/doc/guix-lint.1 \
- $(srcdir)/doc/guix-package.1 \
- $(srcdir)/doc/guix-publish.1 \
- $(srcdir)/doc/guix-pull.1 \
- $(srcdir)/doc/guix-refresh.1 \
- $(srcdir)/doc/guix-size.1 \
- $(srcdir)/doc/guix-system.1
+ $(srcdir)/%D%/guix-archive.1 \
+ $(srcdir)/%D%/guix-build.1 \
+ $(srcdir)/%D%/guix-challenge.1 \
+ $(srcdir)/%D%/guix-download.1 \
+ $(srcdir)/%D%/guix-edit.1 \
+ $(srcdir)/%D%/guix-environment.1 \
+ $(srcdir)/%D%/guix-gc.1 \
+ $(srcdir)/%D%/guix-hash.1 \
+ $(srcdir)/%D%/guix-import.1 \
+ $(srcdir)/%D%/guix-lint.1 \
+ $(srcdir)/%D%/guix-package.1 \
+ $(srcdir)/%D%/guix-publish.1 \
+ $(srcdir)/%D%/guix-pull.1 \
+ $(srcdir)/%D%/guix-refresh.1 \
+ $(srcdir)/%D%/guix-size.1 \
+ $(srcdir)/%D%/guix-system.1
dist_man1_MANS = \
- $(srcdir)/doc/guix.1 \
+ $(srcdir)/%D%/guix.1 \
$(sub_commands_mans)
gen_man = \
@@ -133,14 +133,14 @@ gen_man = \
HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME)
-$(srcdir)/doc/guix.1: scripts/guix.in $(sub_commands_mans)
+$(srcdir)/%D%/guix.1: scripts/guix.in $(sub_commands_mans)
-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
# The 'case' ensures the man pages are only generated if the corresponding
# source script (the first prerequisite) has been changed. The $(GOBJECTS)
# prerequisite is solely meant to force these docs to be made only after all
# Guile modules have been compiled.
-$(srcdir)/doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
+$(srcdir)/%D%/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
-@case '$?' in \
*$<*) $(AM_V_P) && set -x || echo " HELP2MAN $@"; \
$(gen_man) --output="$@" "guix $*";; \
@@ -149,9 +149,9 @@ $(srcdir)/doc/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
if BUILD_DAEMON
-dist_man1_MANS += $(srcdir)/doc/guix-daemon.1
+dist_man1_MANS += $(srcdir)/%D%/guix-daemon.1
-$(srcdir)/doc/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
+$(srcdir)/%D%/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
endif
diff --git a/emacs/guix-base.el b/emacs/guix-base.el
index 888836428f..658cfdb5fa 100644
--- a/emacs/guix-base.el
+++ b/emacs/guix-base.el
@@ -207,6 +207,13 @@ Ask a user with PROMPT for continuing an operation."
(guix-make-guile-expression
'package-source-path package-id)))
+(defun guix-package-store-path (package-id)
+ "Return a list of store directories of outputs of package PACKAGE-ID."
+ (message "Calculating the package derivation ...")
+ (guix-eval-read
+ (guix-make-guile-expression
+ 'package-store-path package-id)))
+
(defvar guix-after-source-download-hook nil
"Hook run after successful performing a 'source-download' operation.")
@@ -224,6 +231,20 @@ Ask a user with PROMPT for continuing an operation."
:dry-run? (or guix-dry-run 'f))
nil 'source-download)))
+(defun guix-build-package (package-id &optional prompt)
+ "Build package with PACKAGE-ID.
+Ask a user with PROMPT for continuing the build operation."
+ (when (or (not guix-operation-confirm)
+ (guix-operation-prompt (or prompt "Build package?")))
+ (guix-eval-in-repl
+ (format (concat ",run-in-store "
+ "(build-package (package-by-id %d)"
+ " #:use-substitutes? %s"
+ " #:dry-run? %s)")
+ package-id
+ (guix-guile-boolean guix-use-substitutes)
+ (guix-guile-boolean guix-dry-run)))))
+
;;;###autoload
(defun guix-apply-manifest (profile file &optional operation-buffer)
"Apply manifest from FILE to PROFILE.
diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm
index e645a85e7d..cbf7cdc474 100644
--- a/emacs/guix-main.scm
+++ b/emacs/guix-main.scm
@@ -51,6 +51,7 @@
(guix licenses)
(guix utils)
(guix ui)
+ (guix scripts)
(guix scripts package)
(gnu packages)
(gnu system))
@@ -953,6 +954,17 @@ GENERATIONS is a list of generation numbers."
((package _ ...) package)))
(compose location->string package-location)))
+(define (package-store-path package-id)
+ "Return a list of store directories of outputs of package PACKAGE-ID."
+ (match (package-by-id package-id)
+ (#f '())
+ (package
+ (with-store store
+ (map (match-lambda
+ ((_ . drv)
+ (derivation-output-path drv)))
+ (derivation-outputs (package-derivation store package)))))))
+
(define (package-source-derivation->store-path derivation)
"Return a store path of the package source DERIVATION."
(match (derivation-outputs derivation)
@@ -988,6 +1000,16 @@ GENERATIONS is a list of generation numbers."
(format #t "The source store path: ~a~%"
(package-source-derivation->store-path derivation))))))
+(define (package-build-log-file package-id)
+ "Return the build log file of a package PACKAGE-ID.
+Return #f if the build log is not found."
+ (and-let* ((package (package-by-id package-id)))
+ (with-store store
+ (let* ((derivation (package-derivation store package))
+ (file (derivation-file-name derivation)))
+ (or (log-file store file)
+ ((@@ (guix scripts build) log-url) store file))))))
+
;;; Executing guix commands
diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el
index edc36486fc..4280246bb8 100644
--- a/emacs/guix-ui-package.el
+++ b/emacs/guix-ui-package.el
@@ -111,6 +111,19 @@ is found and `guix-package-list-single' is nil."
(list (if (= 0 package-id) package-id-str package-id)
output))))
+(defun guix-package-build-log-file (id)
+ "Return build log file name of a package defined by ID."
+ (guix-eval-read
+ (guix-make-guile-expression 'package-build-log-file id)))
+
+(defun guix-package-find-build-log (id)
+ "Show build log of a package defined by ID."
+ (require 'guix-build-log)
+ (let ((file (guix-package-build-log-file id)))
+ (if file
+ (guix-build-log-find-file file)
+ (message "Couldn't find the package build log."))))
+
;;; Processing package actions
@@ -222,6 +235,7 @@ ENTRIES is a list of package entries to get info about packages."
(description ignore (simple guix-package-info-description))
ignore
(outputs simple guix-package-info-insert-outputs)
+ guix-package-info-insert-misc
(source simple guix-package-info-insert-source)
(location simple guix-package-info-insert-location)
(home-url format (format guix-url))
@@ -309,9 +323,15 @@ ENTRIES is a list of package entries to get info about packages."
"Face used if a package is obsolete."
:group 'guix-package-info-faces)
+(defcustom guix-package-info-auto-find-package t
+ "If non-nil, open store directory after pressing \"Show\" package button.
+If nil, just display the store directory (or directories) without finding."
+ :type 'boolean
+ :group 'guix-package-info)
+
(defcustom guix-package-info-auto-find-source nil
- "If non-nil, find a source file after pressing a \"Show\" button.
-If nil, just display the source file path without finding."
+ "If non-nil, open source file after pressing \"Show\" source button.
+If nil, just display the source file name without finding."
:type 'boolean
:group 'guix-package-info)
@@ -325,6 +345,14 @@ prompt depending on `guix-operation-confirm' variable)."
:type 'boolean
:group 'guix-package-info)
+(defcustom guix-package-info-button-functions
+ '(guix-package-info-insert-build-button
+ guix-package-info-insert-build-log-button)
+ "List of functions used to insert package buttons in Info buffer.
+Each function is called with 2 arguments: package ID and full name."
+ :type '(repeat function)
+ :group 'guix-package-info)
+
(defvar guix-package-info-download-buffer nil
"Buffer from which a current download operation was performed.")
@@ -521,6 +549,78 @@ ENTRY is an alist with package info."
(guix-entry-id entry))
'output output)))
+(defun guix-package-info-show-store-path (entry-id package-id)
+ "Show store directories of the package outputs in the current buffer.
+ENTRY-ID is an ID of the current entry (package or output).
+PACKAGE-ID is an ID of the package which store path to show."
+ (let* ((entries (guix-buffer-current-entries))
+ (entry (guix-entry-by-id entry-id entries))
+ (dirs (guix-package-store-path package-id)))
+ (or dirs
+ (error "Couldn't define store directory of the package"))
+ (let* ((new-entry (cons (cons 'store-path dirs)
+ entry))
+ (new-entries (guix-replace-entry entry-id new-entry entries)))
+ (setf (guix-buffer-item-entries guix-buffer-item)
+ new-entries)
+ (guix-buffer-redisplay-goto-button)
+ (let ((dir (car dirs)))
+ (if (file-exists-p dir)
+ (if guix-package-info-auto-find-package
+ (find-file dir)
+ (message nil))
+ (message "'%s' does not exist.\nTry to build this package."
+ dir))))))
+
+(defun guix-package-info-insert-misc (entry)
+ "Insert various buttons and other info for package ENTRY at point."
+ (if (guix-entry-value entry 'obsolete)
+ (guix-format-insert nil)
+ (let* ((entry-id (guix-entry-id entry))
+ (package-id (or (guix-entry-value entry 'package-id)
+ entry-id))
+ (full-name (guix-package-entry->name-specification entry))
+ (store-path (guix-entry-value entry 'store-path)))
+ (guix-info-insert-title-simple "Package")
+ (if store-path
+ (guix-info-insert-value-indent store-path 'guix-file)
+ (guix-info-insert-action-button
+ "Show"
+ (lambda (btn)
+ (guix-package-info-show-store-path
+ (button-get btn 'entry-id)
+ (button-get btn 'package-id)))
+ "Show the store directory of the current package"
+ 'entry-id entry-id
+ 'package-id package-id))
+ (when guix-package-info-button-functions
+ (insert "\n")
+ (guix-mapinsert (lambda (fun)
+ (funcall fun package-id full-name))
+ guix-package-info-button-functions
+ (guix-info-get-indent)
+ :indent guix-info-indent
+ :column (guix-info-fill-column))))))
+
+(defun guix-package-info-insert-build-button (id full-name)
+ "Insert button to build a package defined by ID."
+ (guix-info-insert-action-button
+ "Build"
+ (lambda (btn)
+ (guix-build-package (button-get btn 'id)
+ (format "Build '%s' package?" full-name)))
+ (format "Build the current package")
+ 'id id))
+
+(defun guix-package-info-insert-build-log-button (id _name)
+ "Insert button to show build log of a package defined by ID."
+ (guix-info-insert-action-button
+ "Build Log"
+ (lambda (btn)
+ (guix-package-find-build-log (button-get btn 'id)))
+ "View build log of the current package"
+ 'id id))
+
(defun guix-package-info-show-source (entry-id package-id)
"Show file name of a package source in the current info buffer.
Find the file if needed (see `guix-package-info-auto-find-source').
@@ -817,6 +917,7 @@ for all ARGS."
(version format guix-output-info-insert-version)
(output format guix-output-info-insert-output)
(synopsis simple (indent guix-package-info-synopsis))
+ guix-package-info-insert-misc
(source simple guix-package-info-insert-source)
(path simple (indent guix-file))
(dependencies simple (indent guix-file))
diff --git a/emacs/guix-utils.el b/emacs/guix-utils.el
index ea9933f5c3..3e4ecc36ab 100644
--- a/emacs/guix-utils.el
+++ b/emacs/guix-utils.el
@@ -84,16 +84,33 @@ If FORMAT is non-nil, format VAL with FORMAT."
(format format str)
str))))
-(defun guix-mapinsert (function sequence separator)
+(cl-defun guix-mapinsert (function sequence separator &key indent column)
"Like `mapconcat' but for inserting text.
Apply FUNCTION to each element of SEQUENCE, and insert SEPARATOR
-at point between each FUNCTION call."
- (when sequence
- (funcall function (car sequence))
- (mapc (lambda (obj)
- (insert separator)
- (funcall function obj))
- (cdr sequence))))
+at point between each FUNCTION call.
+
+If INDENT is non-nil, it should be a number of spaces used to
+indent each line of the inserted text.
+
+If COLUMN is non-nil, it should be a column number which
+shouldn't be exceeded by the inserted text."
+ (pcase sequence
+ (`(,first . ,rest)
+ (let* ((indent (or indent 0))
+ (max-column (and column (- column indent))))
+ (guix-with-indent indent
+ (funcall function first)
+ (dolist (element rest)
+ (let ((before-sep-pos (and column (point))))
+ (insert separator)
+ (let ((after-sep-pos (and column (point))))
+ (funcall function element)
+ (when (and column
+ (> (current-column) max-column))
+ (save-excursion
+ (delete-region before-sep-pos after-sep-pos)
+ (goto-char before-sep-pos)
+ (insert "\n")))))))))))
(defun guix-insert-button (label &optional type &rest properties)
"Make button of TYPE with LABEL and insert it at point.
diff --git a/emacs/local.mk b/emacs/local.mk
index f83063cf5f..959ec2dd34 100644
--- a/emacs/local.mk
+++ b/emacs/local.mk
@@ -17,51 +17,51 @@
# You should have received a copy of the GNU General Public License
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
-AUTOLOADS = emacs/guix-autoloads.el
+AUTOLOADS = %D%/guix-autoloads.el
ELFILES = \
- emacs/guix-about.el \
- emacs/guix-backend.el \
- emacs/guix-base.el \
- emacs/guix-build-log.el \
- emacs/guix-buffer.el \
- emacs/guix-command.el \
- emacs/guix-devel.el \
- emacs/guix-emacs.el \
- emacs/guix-entry.el \
- emacs/guix-external.el \
- emacs/guix-geiser.el \
- emacs/guix-guile.el \
- emacs/guix-help-vars.el \
- emacs/guix-history.el \
- emacs/guix-hydra.el \
- emacs/guix-hydra-build.el \
- emacs/guix-hydra-jobset.el \
- emacs/guix-info.el \
- emacs/guix-init.el \
- emacs/guix-license.el \
- emacs/guix-list.el \
- emacs/guix-location.el \
- emacs/guix-messages.el \
- emacs/guix-pcomplete.el \
- emacs/guix-popup.el \
- emacs/guix-prettify.el \
- emacs/guix-profiles.el \
- emacs/guix-read.el \
- emacs/guix-ui.el \
- emacs/guix-ui-license.el \
- emacs/guix-ui-location.el \
- emacs/guix-ui-package.el \
- emacs/guix-ui-generation.el \
- emacs/guix-ui-system-generation.el \
- emacs/guix-utils.el
+ %D%/guix-about.el \
+ %D%/guix-backend.el \
+ %D%/guix-base.el \
+ %D%/guix-build-log.el \
+ %D%/guix-buffer.el \
+ %D%/guix-command.el \
+ %D%/guix-devel.el \
+ %D%/guix-emacs.el \
+ %D%/guix-entry.el \
+ %D%/guix-external.el \
+ %D%/guix-geiser.el \
+ %D%/guix-guile.el \
+ %D%/guix-help-vars.el \
+ %D%/guix-history.el \
+ %D%/guix-hydra.el \
+ %D%/guix-hydra-build.el \
+ %D%/guix-hydra-jobset.el \
+ %D%/guix-info.el \
+ %D%/guix-init.el \
+ %D%/guix-license.el \
+ %D%/guix-list.el \
+ %D%/guix-location.el \
+ %D%/guix-messages.el \
+ %D%/guix-pcomplete.el \
+ %D%/guix-popup.el \
+ %D%/guix-prettify.el \
+ %D%/guix-profiles.el \
+ %D%/guix-read.el \
+ %D%/guix-ui.el \
+ %D%/guix-ui-license.el \
+ %D%/guix-ui-location.el \
+ %D%/guix-ui-package.el \
+ %D%/guix-ui-generation.el \
+ %D%/guix-ui-system-generation.el \
+ %D%/guix-utils.el
if HAVE_EMACS
dist_lisp_DATA = $(ELFILES)
nodist_lisp_DATA = \
- emacs/guix-config.el \
+ %D%/guix-config.el \
$(AUTOLOADS)
$(AUTOLOADS): $(ELFILES)
diff --git a/gnu/build/linux-container.scm b/gnu/build/linux-container.scm
index ec68679f0b..91996d06ca 100644
--- a/gnu/build/linux-container.scm
+++ b/gnu/build/linux-container.scm
@@ -205,32 +205,53 @@ host user identifiers to map into the user namespace."
;; The parent process must initialize the user namespace for the child
;; before it can boot. To negotiate this, a pipe is used such that the
;; child process blocks until the parent writes to it.
- (match (pipe)
- ((in . out)
+ (match (socketpair PF_UNIX SOCK_STREAM 0)
+ ((child . parent)
(let ((flags (namespaces->bit-mask namespaces)))
(match (clone flags)
(0
(call-with-clean-exit
(lambda ()
- (close out)
+ (close-port parent)
;; Wait for parent to set things up.
- (read in)
- (close in)
- (purify-environment)
- (when (memq 'mnt namespaces)
- (mount-file-systems root mounts
- #:mount-/proc? (memq 'pid namespaces)
- #:mount-/sys? (memq 'net namespaces)))
- ;; TODO: Manage capabilities.
- (thunk))))
+ (match (read child)
+ ('ready
+ (purify-environment)
+ (when (memq 'mnt namespaces)
+ (catch #t
+ (lambda ()
+ (mount-file-systems root mounts
+ #:mount-/proc? (memq 'pid namespaces)
+ #:mount-/sys? (memq 'net
+ namespaces)))
+ (lambda args
+ ;; Forward the exception to the parent process.
+ (write args child)
+ (primitive-exit 3))))
+ ;; TODO: Manage capabilities.
+ (write 'ready child)
+ (close-port child)
+ (thunk))
+ (_ ;parent died or something
+ (primitive-exit 2))))))
(pid
+ (close-port child)
(when (memq 'user namespaces)
(initialize-user-namespace pid host-uids))
;; TODO: Initialize cgroups.
- (close in)
- (write 'ready out)
- (close out)
- pid))))))
+ (write 'ready parent)
+ (newline parent)
+
+ ;; Check whether the child process' setup phase succeeded.
+ (let ((message (read parent)))
+ (close-port parent)
+ (match message
+ ('ready ;success
+ pid)
+ (((? symbol? key) args ...) ;exception
+ (apply throw key args))
+ (_ ;unexpected termination
+ #f)))))))))
(define* (call-with-container mounts thunk #:key (namespaces %namespaces)
(host-uids 1))
diff --git a/gnu/local.mk b/gnu/local.mk
index 9121b1df40..ef7b4df7f9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -26,814 +26,844 @@
GNU_SYSTEM_MODULES = \
gnu.scm \
- gnu/artwork.scm \
- gnu/packages.scm \
- gnu/packages/abduco.scm \
- gnu/packages/abiword.scm \
- gnu/packages/acct.scm \
- gnu/packages/acl.scm \
- gnu/packages/admin.scm \
- gnu/packages/adns.scm \
- gnu/packages/algebra.scm \
- gnu/packages/aidc.scm \
- gnu/packages/animation.scm \
- gnu/packages/anthy.scm \
- gnu/packages/apl.scm \
- gnu/packages/apr.scm \
- gnu/packages/aspell.scm \
- gnu/packages/attr.scm \
- gnu/packages/audacity.scm \
- gnu/packages/audio.scm \
- gnu/packages/augeas.scm \
- gnu/packages/autogen.scm \
- gnu/packages/autotools.scm \
- gnu/packages/avahi.scm \
- gnu/packages/avr.scm \
- gnu/packages/backup.scm \
- gnu/packages/base.scm \
- gnu/packages/bash.scm \
- gnu/packages/bdw-gc.scm \
- gnu/packages/bioinformatics.scm \
- gnu/packages/bittorrent.scm \
- gnu/packages/bison.scm \
- gnu/packages/boost.scm \
- gnu/packages/bootstrap.scm \
- gnu/packages/busybox.scm \
- gnu/packages/c.scm \
- gnu/packages/calcurse.scm \
- gnu/packages/ccache.scm \
- gnu/packages/cdrom.scm \
- gnu/packages/certs.scm \
- gnu/packages/check.scm \
- gnu/packages/ci.scm \
- gnu/packages/cmake.scm \
- gnu/packages/code.scm \
- gnu/packages/commencement.scm \
- gnu/packages/compression.scm \
- gnu/packages/conkeror.scm \
- gnu/packages/conky.scm \
- gnu/packages/connman.scm \
- gnu/packages/cook.scm \
- gnu/packages/cpio.scm \
- gnu/packages/cppi.scm \
- gnu/packages/cross-base.scm \
- gnu/packages/crypto.scm \
- gnu/packages/cryptsetup.scm \
- gnu/packages/cups.scm \
- gnu/packages/curl.scm \
- gnu/packages/cyrus-sasl.scm \
- gnu/packages/databases.scm \
- gnu/packages/datamash.scm \
- gnu/packages/datastructures.scm \
- gnu/packages/dav.scm \
- gnu/packages/dc.scm \
- gnu/packages/debug.scm \
- gnu/packages/dejagnu.scm \
- gnu/packages/dico.scm \
- gnu/packages/dictionaries.scm \
- gnu/packages/dillo.scm \
- gnu/packages/disk.scm \
- gnu/packages/djvu.scm \
- gnu/packages/dns.scm \
- gnu/packages/docbook.scm \
- gnu/packages/docker.scm \
- gnu/packages/documentation.scm \
- gnu/packages/dunst.scm \
- gnu/packages/dvtm.scm \
- gnu/packages/ebook.scm \
- gnu/packages/ed.scm \
- gnu/packages/elf.scm \
- gnu/packages/emacs.scm \
- gnu/packages/enchant.scm \
- gnu/packages/engineering.scm \
- gnu/packages/enlightenment.scm \
- gnu/packages/entr.scm \
- gnu/packages/fcitx.scm \
- gnu/packages/feh.scm \
- gnu/packages/figlet.scm \
- gnu/packages/file.scm \
- gnu/packages/finance.scm \
- gnu/packages/firmware.scm \
- gnu/packages/fish.scm \
- gnu/packages/flashing-tools.scm \
- gnu/packages/flex.scm \
- gnu/packages/fltk.scm \
- gnu/packages/fonts.scm \
- gnu/packages/fontutils.scm \
- gnu/packages/freedesktop.scm \
- gnu/packages/freeipmi.scm \
- gnu/packages/ftp.scm \
- gnu/packages/fribidi.scm \
- gnu/packages/fvwm.scm \
- gnu/packages/game-development.scm \
- gnu/packages/games.scm \
- gnu/packages/gawk.scm \
- gnu/packages/gcal.scm \
- gnu/packages/gcc.scm \
- gnu/packages/gd.scm \
- gnu/packages/gdb.scm \
- gnu/packages/geeqie.scm \
- gnu/packages/gettext.scm \
- gnu/packages/ghostscript.scm \
- gnu/packages/gimp.scm \
- gnu/packages/gkrellm.scm \
- gnu/packages/gl.scm \
- gnu/packages/glib.scm \
- gnu/packages/gnome.scm \
- gnu/packages/gnu-doc.scm \
- gnu/packages/gnucash.scm \
- gnu/packages/gnunet.scm \
- gnu/packages/gnupg.scm \
- gnu/packages/gnustep.scm \
- gnu/packages/gnuzilla.scm \
- gnu/packages/gnu-pw-mgr.scm \
- gnu/packages/gperf.scm \
- gnu/packages/gprolog.scm \
- gnu/packages/gps.scm \
- gnu/packages/graphics.scm \
- gnu/packages/graphviz.scm \
- gnu/packages/groff.scm \
- gnu/packages/grub.scm \
- gnu/packages/grue-hunter.scm \
- gnu/packages/gsasl.scm \
- gnu/packages/gstreamer.scm \
- gnu/packages/gtk.scm \
- gnu/packages/guile.scm \
- gnu/packages/guile-wm.scm \
- gnu/packages/gv.scm \
- gnu/packages/gxmessage.scm \
- gnu/packages/haskell.scm \
- gnu/packages/hugs.scm \
- gnu/packages/hurd.scm \
- gnu/packages/ibus.scm \
- gnu/packages/icu4c.scm \
- gnu/packages/idutils.scm \
- gnu/packages/image.scm \
- gnu/packages/imagemagick.scm \
- gnu/packages/indent.scm \
- gnu/packages/inklingreader.scm \
- gnu/packages/inkscape.scm \
- gnu/packages/irc.scm \
- gnu/packages/iso-codes.scm \
- gnu/packages/java.scm \
- gnu/packages/jemalloc.scm \
- gnu/packages/jrnl.scm \
- gnu/packages/julia.scm \
- gnu/packages/kde.scm \
- gnu/packages/kde-frameworks.scm \
- gnu/packages/key-mon.scm \
- gnu/packages/kodi.scm \
- gnu/packages/language.scm \
- gnu/packages/ldc.scm \
- gnu/packages/lego.scm \
- gnu/packages/less.scm \
- gnu/packages/lesstif.scm \
- gnu/packages/libbsd.scm \
- gnu/packages/libcanberra.scm \
- gnu/packages/libdaemon.scm \
- gnu/packages/libedit.scm \
- gnu/packages/libevent.scm \
- gnu/packages/libffcall.scm \
- gnu/packages/libffi.scm \
- gnu/packages/libftdi.scm \
- gnu/packages/calendar.scm \
- gnu/packages/libidn.scm \
- gnu/packages/libphidget.scm \
- gnu/packages/libreoffice.scm \
- gnu/packages/libsigsegv.scm \
- gnu/packages/libunistring.scm \
- gnu/packages/libusb.scm \
- gnu/packages/libunwind.scm \
- gnu/packages/libupnp.scm \
- gnu/packages/lightning.scm \
- gnu/packages/links.scm \
- gnu/packages/linux.scm \
- gnu/packages/lirc.scm \
- gnu/packages/lisp.scm \
- gnu/packages/llvm.scm \
- gnu/packages/lout.scm \
- gnu/packages/lsh.scm \
- gnu/packages/lsof.scm \
- gnu/packages/lua.scm \
- gnu/packages/lxde.scm \
- gnu/packages/lxqt.scm \
- gnu/packages/lynx.scm \
- gnu/packages/m4.scm \
- gnu/packages/machine-learning.scm \
- gnu/packages/man.scm \
- gnu/packages/mail.scm \
- gnu/packages/make-bootstrap.scm \
- gnu/packages/markdown.scm \
- gnu/packages/marst.scm \
- gnu/packages/mate.scm \
- gnu/packages/maths.scm \
- gnu/packages/mc.scm \
- gnu/packages/mcrypt.scm \
- gnu/packages/messaging.scm \
- gnu/packages/mg.scm \
- gnu/packages/mit-krb5.scm \
- gnu/packages/moe.scm \
- gnu/packages/moreutils.scm \
- gnu/packages/mpd.scm \
- gnu/packages/mp3.scm \
- gnu/packages/mpi.scm \
- gnu/packages/multiprecision.scm \
- gnu/packages/music.scm \
- gnu/packages/mtools.scm \
- gnu/packages/nano.scm \
- gnu/packages/ncdu.scm \
- gnu/packages/ncurses.scm \
- gnu/packages/netpbm.scm \
- gnu/packages/nettle.scm \
- gnu/packages/networking.scm \
- gnu/packages/ninja.scm \
- gnu/packages/node.scm \
- gnu/packages/noweb.scm \
- gnu/packages/ntp.scm \
- gnu/packages/nutrition.scm \
- gnu/packages/nvi.scm \
- gnu/packages/ocaml.scm \
- gnu/packages/ocr.scm \
- gnu/packages/onc-rpc.scm \
- gnu/packages/openbox.scm \
- gnu/packages/openldap.scm \
- gnu/packages/openstack.scm \
- gnu/packages/orpheus.scm \
- gnu/packages/ots.scm \
- gnu/packages/owncloud.scm \
- gnu/packages/package-management.scm \
- gnu/packages/parallel.scm \
- gnu/packages/password-utils.scm \
- gnu/packages/patchutils.scm \
- gnu/packages/pciutils.scm \
- gnu/packages/pcre.scm \
- gnu/packages/pdf.scm \
- gnu/packages/pem.scm \
- gnu/packages/perl.scm \
- gnu/packages/photo.scm \
- gnu/packages/pkg-config.scm \
- gnu/packages/plotutils.scm \
- gnu/packages/polkit.scm \
- gnu/packages/popt.scm \
- gnu/packages/pth.scm \
- gnu/packages/pulseaudio.scm \
- gnu/packages/pumpio.scm \
- gnu/packages/pretty-print.scm \
- gnu/packages/protobuf.scm \
- gnu/packages/pv.scm \
- gnu/packages/python.scm \
- gnu/packages/qemu.scm \
- gnu/packages/qt.scm \
- gnu/packages/ragel.scm \
- gnu/packages/ratpoison.scm \
- gnu/packages/rc.scm \
- gnu/packages/rdesktop.scm \
- gnu/packages/rdf.scm \
- gnu/packages/readline.scm \
- gnu/packages/rrdtool.scm \
- gnu/packages/rsync.scm \
- gnu/packages/ruby.scm \
- gnu/packages/rush.scm \
- gnu/packages/samba.scm \
- gnu/packages/sawfish.scm \
- gnu/packages/scanner.scm \
- gnu/packages/scheme.scm \
- gnu/packages/screen.scm \
- gnu/packages/scribus.scm \
- gnu/packages/sdl.scm \
- gnu/packages/search.scm \
- gnu/packages/serialization.scm \
- gnu/packages/serveez.scm \
- gnu/packages/shellutils.scm \
- gnu/packages/shishi.scm \
- gnu/packages/skarnet.scm \
- gnu/packages/skribilo.scm \
- gnu/packages/slang.scm \
- gnu/packages/slim.scm \
- gnu/packages/smalltalk.scm \
- gnu/packages/ssh.scm \
- gnu/packages/stalonetray.scm \
- gnu/packages/statistics.scm \
- gnu/packages/suckless.scm \
- gnu/packages/swig.scm \
- gnu/packages/sxiv.scm \
- gnu/packages/synergy.scm \
- gnu/packages/task-management.scm \
- gnu/packages/tbb.scm \
- gnu/packages/tcl.scm \
- gnu/packages/tcsh.scm \
- gnu/packages/telephony.scm \
- gnu/packages/terminals.scm \
- gnu/packages/texinfo.scm \
- gnu/packages/texlive.scm \
- gnu/packages/textutils.scm \
- gnu/packages/time.scm \
- gnu/packages/tls.scm \
- gnu/packages/tmux.scm \
- gnu/packages/tor.scm \
- gnu/packages/tre.scm \
- gnu/packages/tv.scm \
- gnu/packages/unrtf.scm \
- gnu/packages/upnp.scm \
- gnu/packages/uucp.scm \
- gnu/packages/valgrind.scm \
- gnu/packages/version-control.scm \
- gnu/packages/video.scm \
- gnu/packages/vim.scm \
- gnu/packages/vpn.scm \
- gnu/packages/vtk.scm \
- gnu/packages/w3m.scm \
- gnu/packages/wdiff.scm \
- gnu/packages/web.scm \
- gnu/packages/webkit.scm \
- gnu/packages/wget.scm \
- gnu/packages/wicd.scm \
- gnu/packages/wine.scm \
- gnu/packages/wm.scm \
- gnu/packages/wordnet.scm \
- gnu/packages/wv.scm \
- gnu/packages/wxwidgets.scm \
- gnu/packages/xfig.scm \
- gnu/packages/xiph.scm \
- gnu/packages/xml.scm \
- gnu/packages/xnee.scm \
- gnu/packages/xdisorg.scm \
- gnu/packages/xorg.scm \
- gnu/packages/xfce.scm \
- gnu/packages/yasm.scm \
- gnu/packages/yubico.scm \
- gnu/packages/zile.scm \
- gnu/packages/zip.scm \
- gnu/packages/zsh.scm \
+ %D%/artwork.scm \
+ %D%/packages.scm \
+ %D%/packages/abduco.scm \
+ %D%/packages/abiword.scm \
+ %D%/packages/acct.scm \
+ %D%/packages/acl.scm \
+ %D%/packages/admin.scm \
+ %D%/packages/adns.scm \
+ %D%/packages/algebra.scm \
+ %D%/packages/aidc.scm \
+ %D%/packages/animation.scm \
+ %D%/packages/anthy.scm \
+ %D%/packages/apl.scm \
+ %D%/packages/apr.scm \
+ %D%/packages/aspell.scm \
+ %D%/packages/attr.scm \
+ %D%/packages/audacity.scm \
+ %D%/packages/audio.scm \
+ %D%/packages/augeas.scm \
+ %D%/packages/autogen.scm \
+ %D%/packages/autotools.scm \
+ %D%/packages/avahi.scm \
+ %D%/packages/avr.scm \
+ %D%/packages/backup.scm \
+ %D%/packages/base.scm \
+ %D%/packages/bash.scm \
+ %D%/packages/bdw-gc.scm \
+ %D%/packages/bioinformatics.scm \
+ %D%/packages/bittorrent.scm \
+ %D%/packages/bison.scm \
+ %D%/packages/boost.scm \
+ %D%/packages/bootstrap.scm \
+ %D%/packages/busybox.scm \
+ %D%/packages/c.scm \
+ %D%/packages/calcurse.scm \
+ %D%/packages/ccache.scm \
+ %D%/packages/cdrom.scm \
+ %D%/packages/certs.scm \
+ %D%/packages/check.scm \
+ %D%/packages/ci.scm \
+ %D%/packages/cmake.scm \
+ %D%/packages/code.scm \
+ %D%/packages/commencement.scm \
+ %D%/packages/compression.scm \
+ %D%/packages/conkeror.scm \
+ %D%/packages/conky.scm \
+ %D%/packages/connman.scm \
+ %D%/packages/cook.scm \
+ %D%/packages/cpio.scm \
+ %D%/packages/cppi.scm \
+ %D%/packages/cross-base.scm \
+ %D%/packages/crypto.scm \
+ %D%/packages/cryptsetup.scm \
+ %D%/packages/cups.scm \
+ %D%/packages/curl.scm \
+ %D%/packages/cyrus-sasl.scm \
+ %D%/packages/databases.scm \
+ %D%/packages/datamash.scm \
+ %D%/packages/datastructures.scm \
+ %D%/packages/dav.scm \
+ %D%/packages/dc.scm \
+ %D%/packages/debug.scm \
+ %D%/packages/dejagnu.scm \
+ %D%/packages/dico.scm \
+ %D%/packages/dictionaries.scm \
+ %D%/packages/dillo.scm \
+ %D%/packages/disk.scm \
+ %D%/packages/djvu.scm \
+ %D%/packages/dns.scm \
+ %D%/packages/docbook.scm \
+ %D%/packages/docker.scm \
+ %D%/packages/documentation.scm \
+ %D%/packages/dunst.scm \
+ %D%/packages/dvtm.scm \
+ %D%/packages/ebook.scm \
+ %D%/packages/ed.scm \
+ %D%/packages/elf.scm \
+ %D%/packages/emacs.scm \
+ %D%/packages/enchant.scm \
+ %D%/packages/engineering.scm \
+ %D%/packages/enlightenment.scm \
+ %D%/packages/entr.scm \
+ %D%/packages/fcitx.scm \
+ %D%/packages/feh.scm \
+ %D%/packages/figlet.scm \
+ %D%/packages/file.scm \
+ %D%/packages/finance.scm \
+ %D%/packages/firmware.scm \
+ %D%/packages/fish.scm \
+ %D%/packages/flashing-tools.scm \
+ %D%/packages/flex.scm \
+ %D%/packages/fltk.scm \
+ %D%/packages/fonts.scm \
+ %D%/packages/fontutils.scm \
+ %D%/packages/freedesktop.scm \
+ %D%/packages/freeipmi.scm \
+ %D%/packages/ftp.scm \
+ %D%/packages/fribidi.scm \
+ %D%/packages/fvwm.scm \
+ %D%/packages/game-development.scm \
+ %D%/packages/games.scm \
+ %D%/packages/gawk.scm \
+ %D%/packages/gcal.scm \
+ %D%/packages/gcc.scm \
+ %D%/packages/gd.scm \
+ %D%/packages/gdb.scm \
+ %D%/packages/geeqie.scm \
+ %D%/packages/gettext.scm \
+ %D%/packages/ghostscript.scm \
+ %D%/packages/gimp.scm \
+ %D%/packages/gkrellm.scm \
+ %D%/packages/gl.scm \
+ %D%/packages/glib.scm \
+ %D%/packages/gnome.scm \
+ %D%/packages/gnu-doc.scm \
+ %D%/packages/gnucash.scm \
+ %D%/packages/gnunet.scm \
+ %D%/packages/gnupg.scm \
+ %D%/packages/gnustep.scm \
+ %D%/packages/gnuzilla.scm \
+ %D%/packages/gnu-pw-mgr.scm \
+ %D%/packages/gperf.scm \
+ %D%/packages/gprolog.scm \
+ %D%/packages/gps.scm \
+ %D%/packages/graphics.scm \
+ %D%/packages/graphviz.scm \
+ %D%/packages/groff.scm \
+ %D%/packages/grub.scm \
+ %D%/packages/grue-hunter.scm \
+ %D%/packages/gsasl.scm \
+ %D%/packages/gstreamer.scm \
+ %D%/packages/gtk.scm \
+ %D%/packages/guile.scm \
+ %D%/packages/guile-wm.scm \
+ %D%/packages/gv.scm \
+ %D%/packages/gxmessage.scm \
+ %D%/packages/haskell.scm \
+ %D%/packages/hugs.scm \
+ %D%/packages/hurd.scm \
+ %D%/packages/ibus.scm \
+ %D%/packages/icu4c.scm \
+ %D%/packages/idutils.scm \
+ %D%/packages/image.scm \
+ %D%/packages/imagemagick.scm \
+ %D%/packages/indent.scm \
+ %D%/packages/inklingreader.scm \
+ %D%/packages/inkscape.scm \
+ %D%/packages/irc.scm \
+ %D%/packages/iso-codes.scm \
+ %D%/packages/java.scm \
+ %D%/packages/jemalloc.scm \
+ %D%/packages/jrnl.scm \
+ %D%/packages/julia.scm \
+ %D%/packages/kde.scm \
+ %D%/packages/kde-frameworks.scm \
+ %D%/packages/key-mon.scm \
+ %D%/packages/kodi.scm \
+ %D%/packages/language.scm \
+ %D%/packages/ldc.scm \
+ %D%/packages/lego.scm \
+ %D%/packages/less.scm \
+ %D%/packages/lesstif.scm \
+ %D%/packages/libbsd.scm \
+ %D%/packages/libcanberra.scm \
+ %D%/packages/libdaemon.scm \
+ %D%/packages/libedit.scm \
+ %D%/packages/libevent.scm \
+ %D%/packages/libffcall.scm \
+ %D%/packages/libffi.scm \
+ %D%/packages/libftdi.scm \
+ %D%/packages/calendar.scm \
+ %D%/packages/libidn.scm \
+ %D%/packages/libphidget.scm \
+ %D%/packages/libreoffice.scm \
+ %D%/packages/libsigsegv.scm \
+ %D%/packages/libunistring.scm \
+ %D%/packages/libusb.scm \
+ %D%/packages/libunwind.scm \
+ %D%/packages/libupnp.scm \
+ %D%/packages/lightning.scm \
+ %D%/packages/links.scm \
+ %D%/packages/linux.scm \
+ %D%/packages/lirc.scm \
+ %D%/packages/lisp.scm \
+ %D%/packages/llvm.scm \
+ %D%/packages/lout.scm \
+ %D%/packages/lsh.scm \
+ %D%/packages/lsof.scm \
+ %D%/packages/lua.scm \
+ %D%/packages/lxde.scm \
+ %D%/packages/lxqt.scm \
+ %D%/packages/lynx.scm \
+ %D%/packages/m4.scm \
+ %D%/packages/machine-learning.scm \
+ %D%/packages/man.scm \
+ %D%/packages/mail.scm \
+ %D%/packages/make-bootstrap.scm \
+ %D%/packages/markdown.scm \
+ %D%/packages/marst.scm \
+ %D%/packages/mate.scm \
+ %D%/packages/maths.scm \
+ %D%/packages/mc.scm \
+ %D%/packages/mcrypt.scm \
+ %D%/packages/messaging.scm \
+ %D%/packages/mg.scm \
+ %D%/packages/mit-krb5.scm \
+ %D%/packages/moe.scm \
+ %D%/packages/moreutils.scm \
+ %D%/packages/mpd.scm \
+ %D%/packages/mp3.scm \
+ %D%/packages/mpi.scm \
+ %D%/packages/multiprecision.scm \
+ %D%/packages/music.scm \
+ %D%/packages/mtools.scm \
+ %D%/packages/nano.scm \
+ %D%/packages/ncdu.scm \
+ %D%/packages/ncurses.scm \
+ %D%/packages/netpbm.scm \
+ %D%/packages/nettle.scm \
+ %D%/packages/networking.scm \
+ %D%/packages/ninja.scm \
+ %D%/packages/node.scm \
+ %D%/packages/noweb.scm \
+ %D%/packages/ntp.scm \
+ %D%/packages/nutrition.scm \
+ %D%/packages/nvi.scm \
+ %D%/packages/ocaml.scm \
+ %D%/packages/ocr.scm \
+ %D%/packages/onc-rpc.scm \
+ %D%/packages/openbox.scm \
+ %D%/packages/openldap.scm \
+ %D%/packages/openstack.scm \
+ %D%/packages/orpheus.scm \
+ %D%/packages/ots.scm \
+ %D%/packages/owncloud.scm \
+ %D%/packages/package-management.scm \
+ %D%/packages/parallel.scm \
+ %D%/packages/password-utils.scm \
+ %D%/packages/patchutils.scm \
+ %D%/packages/pciutils.scm \
+ %D%/packages/pcre.scm \
+ %D%/packages/pdf.scm \
+ %D%/packages/pem.scm \
+ %D%/packages/perl.scm \
+ %D%/packages/photo.scm \
+ %D%/packages/pkg-config.scm \
+ %D%/packages/plotutils.scm \
+ %D%/packages/polkit.scm \
+ %D%/packages/popt.scm \
+ %D%/packages/pth.scm \
+ %D%/packages/pulseaudio.scm \
+ %D%/packages/pumpio.scm \
+ %D%/packages/pretty-print.scm \
+ %D%/packages/protobuf.scm \
+ %D%/packages/pv.scm \
+ %D%/packages/python.scm \
+ %D%/packages/qemu.scm \
+ %D%/packages/qt.scm \
+ %D%/packages/ragel.scm \
+ %D%/packages/rails.scm \
+ %D%/packages/ratpoison.scm \
+ %D%/packages/rc.scm \
+ %D%/packages/rdesktop.scm \
+ %D%/packages/rdf.scm \
+ %D%/packages/readline.scm \
+ %D%/packages/rrdtool.scm \
+ %D%/packages/rsync.scm \
+ %D%/packages/ruby.scm \
+ %D%/packages/rush.scm \
+ %D%/packages/samba.scm \
+ %D%/packages/sawfish.scm \
+ %D%/packages/scanner.scm \
+ %D%/packages/scheme.scm \
+ %D%/packages/screen.scm \
+ %D%/packages/scribus.scm \
+ %D%/packages/sdl.scm \
+ %D%/packages/search.scm \
+ %D%/packages/serialization.scm \
+ %D%/packages/serveez.scm \
+ %D%/packages/shellutils.scm \
+ %D%/packages/shishi.scm \
+ %D%/packages/skarnet.scm \
+ %D%/packages/skribilo.scm \
+ %D%/packages/slang.scm \
+ %D%/packages/slim.scm \
+ %D%/packages/smalltalk.scm \
+ %D%/packages/speech.scm \
+ %D%/packages/ssh.scm \
+ %D%/packages/stalonetray.scm \
+ %D%/packages/statistics.scm \
+ %D%/packages/suckless.scm \
+ %D%/packages/swig.scm \
+ %D%/packages/sxiv.scm \
+ %D%/packages/synergy.scm \
+ %D%/packages/task-management.scm \
+ %D%/packages/tbb.scm \
+ %D%/packages/tcl.scm \
+ %D%/packages/tcsh.scm \
+ %D%/packages/telephony.scm \
+ %D%/packages/terminals.scm \
+ %D%/packages/texinfo.scm \
+ %D%/packages/tex.scm \
+ %D%/packages/textutils.scm \
+ %D%/packages/time.scm \
+ %D%/packages/tls.scm \
+ %D%/packages/tmux.scm \
+ %D%/packages/tor.scm \
+ %D%/packages/tre.scm \
+ %D%/packages/tv.scm \
+ %D%/packages/unrtf.scm \
+ %D%/packages/upnp.scm \
+ %D%/packages/uucp.scm \
+ %D%/packages/valgrind.scm \
+ %D%/packages/version-control.scm \
+ %D%/packages/video.scm \
+ %D%/packages/vim.scm \
+ %D%/packages/vpn.scm \
+ %D%/packages/vtk.scm \
+ %D%/packages/w3m.scm \
+ %D%/packages/wdiff.scm \
+ %D%/packages/web.scm \
+ %D%/packages/webkit.scm \
+ %D%/packages/wget.scm \
+ %D%/packages/wicd.scm \
+ %D%/packages/wine.scm \
+ %D%/packages/wm.scm \
+ %D%/packages/wordnet.scm \
+ %D%/packages/wv.scm \
+ %D%/packages/wxwidgets.scm \
+ %D%/packages/xfig.scm \
+ %D%/packages/xiph.scm \
+ %D%/packages/xml.scm \
+ %D%/packages/xnee.scm \
+ %D%/packages/xdisorg.scm \
+ %D%/packages/xorg.scm \
+ %D%/packages/xfce.scm \
+ %D%/packages/yasm.scm \
+ %D%/packages/yubico.scm \
+ %D%/packages/zile.scm \
+ %D%/packages/zip.scm \
+ %D%/packages/zsh.scm \
\
- gnu/services.scm \
- gnu/services/avahi.scm \
- gnu/services/base.scm \
- gnu/services/databases.scm \
- gnu/services/dbus.scm \
- gnu/services/desktop.scm \
- gnu/services/lirc.scm \
- gnu/services/mail.scm \
- gnu/services/networking.scm \
- gnu/services/shepherd.scm \
- gnu/services/herd.scm \
- gnu/services/ssh.scm \
- gnu/services/web.scm \
- gnu/services/xorg.scm \
+ %D%/services.scm \
+ %D%/services/avahi.scm \
+ %D%/services/base.scm \
+ %D%/services/databases.scm \
+ %D%/services/dbus.scm \
+ %D%/services/desktop.scm \
+ %D%/services/dict.scm \
+ %D%/services/lirc.scm \
+ %D%/services/mail.scm \
+ %D%/services/networking.scm \
+ %D%/services/shepherd.scm \
+ %D%/services/herd.scm \
+ %D%/services/ssh.scm \
+ %D%/services/web.scm \
+ %D%/services/xorg.scm \
\
- gnu/system.scm \
- gnu/system/file-systems.scm \
- gnu/system/grub.scm \
- gnu/system/install.scm \
- gnu/system/linux-container.scm \
- gnu/system/linux-initrd.scm \
- gnu/system/locale.scm \
- gnu/system/mapped-devices.scm \
- gnu/system/nss.scm \
- gnu/system/pam.scm \
- gnu/system/shadow.scm \
- gnu/system/vm.scm \
+ %D%/system.scm \
+ %D%/system/file-systems.scm \
+ %D%/system/grub.scm \
+ %D%/system/install.scm \
+ %D%/system/linux-container.scm \
+ %D%/system/linux-initrd.scm \
+ %D%/system/locale.scm \
+ %D%/system/mapped-devices.scm \
+ %D%/system/nss.scm \
+ %D%/system/pam.scm \
+ %D%/system/shadow.scm \
+ %D%/system/vm.scm \
\
- gnu/build/activation.scm \
- gnu/build/file-systems.scm \
- gnu/build/install.scm \
- gnu/build/linux-boot.scm \
- gnu/build/linux-container.scm \
- gnu/build/linux-initrd.scm \
- gnu/build/linux-modules.scm \
- gnu/build/marionette.scm \
- gnu/build/vm.scm \
+ %D%/build/activation.scm \
+ %D%/build/file-systems.scm \
+ %D%/build/install.scm \
+ %D%/build/linux-boot.scm \
+ %D%/build/linux-container.scm \
+ %D%/build/linux-initrd.scm \
+ %D%/build/linux-modules.scm \
+ %D%/build/marionette.scm \
+ %D%/build/vm.scm \
\
- gnu/tests.scm \
- gnu/tests/base.scm
+ %D%/tests.scm \
+ %D%/tests/base.scm
-patchdir = $(guilemoduledir)/gnu/packages/patches
+patchdir = $(guilemoduledir)/%D%/packages/patches
dist_patch_DATA = \
- gnu/packages/patches/4store-fix-buildsystem.patch \
- gnu/packages/patches/abiword-explictly-cast-bools.patch \
- gnu/packages/patches/abiword-wmf-version-lookup-fix.patch \
- gnu/packages/patches/acl-hurd-path-max.patch \
- gnu/packages/patches/aegis-constness-error.patch \
- gnu/packages/patches/aegis-perl-tempdir1.patch \
- gnu/packages/patches/aegis-perl-tempdir2.patch \
- gnu/packages/patches/aegis-test-fixup-1.patch \
- gnu/packages/patches/aegis-test-fixup-2.patch \
- 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/arb-ldconfig.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 \
- gnu/packages/patches/audacity-fix-ffmpeg-binding.patch \
- gnu/packages/patches/automake-skip-amhello-tests.patch \
- gnu/packages/patches/automake-regexp-syntax.patch \
- gnu/packages/patches/avahi-localstatedir.patch \
- 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/bigloo-gc-shebangs.patch \
- gnu/packages/patches/binutils-ld-new-dtags.patch \
- gnu/packages/patches/binutils-loongson-workaround.patch \
- gnu/packages/patches/byobu-writable-status.patch \
- gnu/packages/patches/calibre-drop-unrar.patch \
- gnu/packages/patches/calibre-no-updates-dialog.patch \
- gnu/packages/patches/cdparanoia-fpic.patch \
- gnu/packages/patches/chmlib-inttypes.patch \
- gnu/packages/patches/clang-libc-search-path.patch \
- gnu/packages/patches/clucene-pkgconfig.patch \
- gnu/packages/patches/cmake-fix-tests.patch \
- gnu/packages/patches/cpio-gets-undeclared.patch \
- gnu/packages/patches/cpio-CVE-2016-2037.patch \
- 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 \
- gnu/packages/patches/cursynth-wave-rand.patch \
- gnu/packages/patches/dbus-helper-search-path.patch \
- gnu/packages/patches/dealii-p4est-interface.patch \
- gnu/packages/patches/devil-fix-libpng.patch \
- gnu/packages/patches/dico-libtool-deterministic.patch \
- gnu/packages/patches/diffutils-gets-undeclared.patch \
- gnu/packages/patches/dfu-programmer-fix-libusb.patch \
- gnu/packages/patches/doc++-include-directives.patch \
- gnu/packages/patches/doc++-segfault-fix.patch \
- gnu/packages/patches/doxygen-test.patch \
- gnu/packages/patches/duplicity-piped-password.patch \
- gnu/packages/patches/duplicity-test_selection-tmp.patch \
- gnu/packages/patches/elfutils-tests-ptrace.patch \
- gnu/packages/patches/einstein-build.patch \
- gnu/packages/patches/emacs-exec-path.patch \
- gnu/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
- gnu/packages/patches/emacs-source-date-epoch.patch \
- gnu/packages/patches/eudev-rules-directory.patch \
- gnu/packages/patches/evilwm-lost-focus-bug.patch \
- gnu/packages/patches/fastcap-mulGlobal.patch \
- gnu/packages/patches/fastcap-mulSetup.patch \
- gnu/packages/patches/fasthenry-spAllocate.patch \
- gnu/packages/patches/fasthenry-spBuild.patch \
- gnu/packages/patches/fasthenry-spUtils.patch \
- gnu/packages/patches/fasthenry-spSolve.patch \
- gnu/packages/patches/fasthenry-spFactor.patch \
- gnu/packages/patches/findutils-localstatedir.patch \
- gnu/packages/patches/findutils-test-xargs.patch \
- gnu/packages/patches/flashrom-use-libftdi1.patch \
- gnu/packages/patches/flint-ldconfig.patch \
- gnu/packages/patches/fltk-shared-lib-defines.patch \
- gnu/packages/patches/fltk-xfont-on-demand.patch \
- gnu/packages/patches/fontforge-svg-modtime.patch \
- gnu/packages/patches/fossil-test-fixes.patch \
- gnu/packages/patches/freeimage-CVE-2015-0852.patch \
- gnu/packages/patches/gawk-fts-test.patch \
- gnu/packages/patches/gawk-shell.patch \
- gnu/packages/patches/gcc-arm-link-spec-fix.patch \
- gnu/packages/patches/gcc-cross-environment-variables.patch \
- gnu/packages/patches/gcc-libvtv-runpath.patch \
- gnu/packages/patches/gcc-5.0-libvtv-runpath.patch \
- gnu/packages/patches/gd-CVE-2016-3074.patch \
- gnu/packages/patches/geoclue-config.patch \
- gnu/packages/patches/ghostscript-CVE-2015-3228.patch \
- gnu/packages/patches/ghostscript-runpath.patch \
- gnu/packages/patches/glib-networking-ssl-cert-file.patch \
- gnu/packages/patches/glib-tests-timer.patch \
- gnu/packages/patches/glibc-bootstrap-system.patch \
- gnu/packages/patches/glibc-ldd-x86_64.patch \
- gnu/packages/patches/glibc-locales.patch \
- gnu/packages/patches/glibc-o-largefile.patch \
- gnu/packages/patches/glibc-versioned-locpath.patch \
- gnu/packages/patches/gmp-arm-asm-nothumb.patch \
- gnu/packages/patches/gmp-faulty-test.patch \
- gnu/packages/patches/gnome-tweak-tool-search-paths.patch \
- gnu/packages/patches/gnucash-price-quotes-perl.patch \
- gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
- gnu/packages/patches/gobject-introspection-cc.patch \
- gnu/packages/patches/gobject-introspection-girepository.patch \
- gnu/packages/patches/grep-timing-sensitive-test.patch \
- gnu/packages/patches/grub-CVE-2015-8370.patch \
- gnu/packages/patches/grub-gets-undeclared.patch \
- gnu/packages/patches/grub-freetype.patch \
- gnu/packages/patches/guile-1.8-cpp-4.5.patch \
- gnu/packages/patches/guile-arm-fixes.patch \
- gnu/packages/patches/guile-default-utf8.patch \
- gnu/packages/patches/guile-linux-syscalls.patch \
- 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/gtk2-theme-paths.patch \
- gnu/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \
- gnu/packages/patches/gtkglext-disable-disable-deprecated.patch \
- gnu/packages/patches/hdf5-config-date.patch \
- gnu/packages/patches/hop-bigloo-4.0b.patch \
- gnu/packages/patches/hop-linker-flags.patch \
- gnu/packages/patches/hydra-automake-1.15.patch \
- gnu/packages/patches/hydra-disable-darcs-test.patch \
- gnu/packages/patches/hypre-doc-tables.patch \
- gnu/packages/patches/hypre-ldflags.patch \
- gnu/packages/patches/icecat-avoid-bundled-includes.patch \
- gnu/packages/patches/icu4c-CVE-2014-6585.patch \
- gnu/packages/patches/icu4c-CVE-2015-1270.patch \
- gnu/packages/patches/icu4c-CVE-2015-4760.patch \
- gnu/packages/patches/ilmbase-fix-tests.patch \
- gnu/packages/patches/inkscape-drop-wait-for-targets.patch \
- gnu/packages/patches/irrlicht-mesa-10.patch \
- gnu/packages/patches/jasper-CVE-2007-2721.patch \
- gnu/packages/patches/jasper-CVE-2008-3520.patch \
- gnu/packages/patches/jasper-CVE-2008-3522.patch \
- gnu/packages/patches/jasper-CVE-2011-4516-and-CVE-2011-4517.patch \
- gnu/packages/patches/jasper-CVE-2014-8137.patch \
- gnu/packages/patches/jasper-CVE-2014-8138.patch \
- gnu/packages/patches/jasper-CVE-2014-8157.patch \
- gnu/packages/patches/jasper-CVE-2014-8158.patch \
- gnu/packages/patches/jasper-CVE-2014-9029.patch \
- gnu/packages/patches/jasper-CVE-2016-1577.patch \
- gnu/packages/patches/jasper-CVE-2016-1867.patch \
- gnu/packages/patches/jasper-CVE-2016-2089.patch \
- gnu/packages/patches/jasper-CVE-2016-2116.patch \
- gnu/packages/patches/jbig2dec-ignore-testtest.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 \
- gnu/packages/patches/liba52-set-soname.patch \
- gnu/packages/patches/liba52-use-mtune-not-mcpu.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/libextractor-ffmpeg-3.patch \
- gnu/packages/patches/libmtp-devices.patch \
- gnu/packages/patches/liboop-mips64-deplibs-fix.patch \
- gnu/packages/patches/libotr-test-auth-fix.patch \
- gnu/packages/patches/liblxqt-include.patch \
- gnu/packages/patches/libmad-armv7-thumb-pt1.patch \
- gnu/packages/patches/libmad-armv7-thumb-pt2.patch \
- gnu/packages/patches/libmad-frame-length.patch \
- gnu/packages/patches/libmad-mips-newgcc.patch \
- gnu/packages/patches/libssh-0.6.5-CVE-2016-0739.patch \
- gnu/packages/patches/libtheora-config-guess.patch \
- gnu/packages/patches/libtiff-CVE-2015-8665+CVE-2015-8683.patch \
- gnu/packages/patches/libtiff-oob-accesses-in-decode.patch \
- gnu/packages/patches/libtiff-oob-write-in-nextdecode.patch \
- gnu/packages/patches/libtool-skip-tests2.patch \
- gnu/packages/patches/libunwind-CVE-2015-3239.patch \
- gnu/packages/patches/libwmf-CAN-2004-0941.patch \
- gnu/packages/patches/libwmf-CVE-2006-3376.patch \
- gnu/packages/patches/libwmf-CVE-2007-0455.patch \
- gnu/packages/patches/libwmf-CVE-2007-2756.patch \
- gnu/packages/patches/libwmf-CVE-2007-3472.patch \
- gnu/packages/patches/libwmf-CVE-2007-3473.patch \
- gnu/packages/patches/libwmf-CVE-2007-3477.patch \
- gnu/packages/patches/libwmf-CVE-2009-1364.patch \
- gnu/packages/patches/libwmf-CVE-2009-3546.patch \
- gnu/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch \
- gnu/packages/patches/libwmf-CVE-2015-4695.patch \
- gnu/packages/patches/libwmf-CVE-2015-4696.patch \
- gnu/packages/patches/libxslt-CVE-2015-7995.patch \
- gnu/packages/patches/libxslt-generated-ids.patch \
- gnu/packages/patches/libxslt-remove-date-timestamps.patch \
- gnu/packages/patches/lirc-localstatedir.patch \
- gnu/packages/patches/lm-sensors-hwmon-attrs.patch \
- gnu/packages/patches/lua-pkgconfig.patch \
- gnu/packages/patches/lua51-liblua-so.patch \
- gnu/packages/patches/lua52-liblua-so.patch \
- gnu/packages/patches/luajit-no_ldconfig.patch \
- gnu/packages/patches/luajit-symlinks.patch \
- gnu/packages/patches/luit-posix.patch \
- gnu/packages/patches/m4-gets-undeclared.patch \
- gnu/packages/patches/make-impure-dirs.patch \
- gnu/packages/patches/mars-install.patch \
- gnu/packages/patches/mars-sfml-2.3.patch \
- gnu/packages/patches/matplotlib-setupext-tk.patch \
- gnu/packages/patches/maxima-defsystem-mkdir.patch \
- gnu/packages/patches/mcron-install.patch \
- gnu/packages/patches/mhash-keygen-test-segfault.patch \
- gnu/packages/patches/mit-krb5-CVE-2015-8629.patch \
- gnu/packages/patches/mit-krb5-CVE-2015-8630.patch \
- gnu/packages/patches/mit-krb5-CVE-2015-8631.patch \
- gnu/packages/patches/mit-krb5-init-context-null-spnego.patch \
- gnu/packages/patches/mpc123-initialize-ao.patch \
- gnu/packages/patches/mplayer2-theora-fix.patch \
- gnu/packages/patches/module-init-tools-moduledir.patch \
- gnu/packages/patches/mumps-build-parallelism.patch \
- gnu/packages/patches/mupen64plus-ui-console-notice.patch \
- gnu/packages/patches/mutt-store-references.patch \
- gnu/packages/patches/net-tools-bitrot.patch \
- gnu/packages/patches/netcdf-config-date.patch \
- gnu/packages/patches/ngircd-handle-zombies.patch \
- gnu/packages/patches/ngircd-no-dns-in-tests.patch \
- gnu/packages/patches/ninja-tests.patch \
- gnu/packages/patches/ninja-zero-mtime.patch \
- gnu/packages/patches/nss-pkgconfig.patch \
- gnu/packages/patches/nvi-assume-preserve-path.patch \
- gnu/packages/patches/nvi-dbpagesize-binpower.patch \
- gnu/packages/patches/nvi-db4.patch \
- gnu/packages/patches/ocaml-CVE-2015-8869.patch \
- gnu/packages/patches/ocaml-findlib-make-install.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/openssh-CVE-2015-8325.patch \
- gnu/packages/patches/openssl-runpath.patch \
- gnu/packages/patches/openssl-c-rehash-in.patch \
- gnu/packages/patches/orpheus-cast-errors-and-includes.patch \
- gnu/packages/patches/ots-no-include-missing-file.patch \
- gnu/packages/patches/patchelf-page-size.patch \
- gnu/packages/patches/patchelf-rework-for-arm.patch \
- gnu/packages/patches/patchutils-xfail-gendiff-tests.patch \
- gnu/packages/patches/patch-hurd-path-max.patch \
- gnu/packages/patches/pcre-CVE-2016-3191.patch \
- gnu/packages/patches/perl-CVE-2015-8607.patch \
- gnu/packages/patches/perl-CVE-2016-2381.patch \
- gnu/packages/patches/perl-autosplit-default-time.patch \
- gnu/packages/patches/perl-deterministic-ordering.patch \
- gnu/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
- gnu/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
- gnu/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \
- gnu/packages/patches/perl-net-amazon-s3-moose-warning.patch \
- gnu/packages/patches/perl-net-ssleay-disable-ede-test.patch \
- gnu/packages/patches/perl-no-build-time.patch \
- gnu/packages/patches/perl-no-sys-dirs.patch \
- gnu/packages/patches/perl-module-pluggable-search.patch \
- gnu/packages/patches/perl-source-date-epoch.patch \
- gnu/packages/patches/pidgin-add-search-path.patch \
- gnu/packages/patches/pinball-const-fix.patch \
- gnu/packages/patches/pinball-cstddef.patch \
- gnu/packages/patches/pinball-missing-separators.patch \
- gnu/packages/patches/pinball-src-deps.patch \
- gnu/packages/patches/pinball-system-ltdl.patch \
- gnu/packages/patches/pingus-sdl-libs-config.patch \
- gnu/packages/patches/plink-1.07-unclobber-i.patch \
- gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
- gnu/packages/patches/polkit-drop-test.patch \
- gnu/packages/patches/portaudio-audacity-compat.patch \
- gnu/packages/patches/portmidi-modular-build.patch \
- gnu/packages/patches/procmail-ambiguous-getline-debian.patch \
- gnu/packages/patches/procps-non-linux.patch \
- gnu/packages/patches/pt-scotch-build-parallelism.patch \
- gnu/packages/patches/pulseaudio-fix-mult-test.patch \
- gnu/packages/patches/pulseaudio-longer-test-timeout.patch \
- gnu/packages/patches/pycairo-wscript.patch \
- gnu/packages/patches/pybugz-encode-error.patch \
- gnu/packages/patches/pybugz-stty.patch \
- gnu/packages/patches/pygpgme-disable-problematic-tests.patch \
- gnu/packages/patches/pyqt-configure.patch \
- gnu/packages/patches/python-2-deterministic-build-info.patch \
- gnu/packages/patches/python-2.7-search-paths.patch \
- gnu/packages/patches/python-2.7-source-date-epoch.patch \
- gnu/packages/patches/python-3-deterministic-build-info.patch \
- gnu/packages/patches/python-3-search-paths.patch \
- gnu/packages/patches/python-disable-ssl-test.patch \
- gnu/packages/patches/python-fix-tests.patch \
- gnu/packages/patches/python-ipython-inputhook-ctype.patch \
- gnu/packages/patches/python-rarfile-fix-tests.patch \
- gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
- gnu/packages/patches/python-configobj-setuptools.patch \
- gnu/packages/patches/python-paste-remove-website-test.patch \
- gnu/packages/patches/python-paste-remove-timing-test.patch \
- gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
- gnu/packages/patches/qt4-ldflags.patch \
- gnu/packages/patches/ratpoison-shell.patch \
- gnu/packages/patches/readline-link-ncurses.patch \
- gnu/packages/patches/ripperx-missing-file.patch \
- gnu/packages/patches/rsem-makefile.patch \
- gnu/packages/patches/ruby-symlinkfix.patch \
- gnu/packages/patches/sed-hurd-path-max.patch \
- gnu/packages/patches/scheme48-tests.patch \
- gnu/packages/patches/scotch-test-threading.patch \
- gnu/packages/patches/sdl-libx11-1.6.patch \
- gnu/packages/patches/serf-comment-style-fix.patch \
- gnu/packages/patches/serf-deflate-buckets-test-fix.patch \
- gnu/packages/patches/slim-session.patch \
- gnu/packages/patches/slim-config.patch \
- gnu/packages/patches/slim-sigusr1.patch \
- gnu/packages/patches/slurm-configure-remove-nonfree-contribs.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-skip-unreliable-tests.patch \
- gnu/packages/patches/tcl-mkindex-deterministic.patch \
- gnu/packages/patches/tclxml-3.2-install.patch \
- gnu/packages/patches/tcsh-fix-autotest.patch \
- gnu/packages/patches/texi2html-document-encoding.patch \
- gnu/packages/patches/texi2html-i18n.patch \
- gnu/packages/patches/tidy-CVE-2015-5522+5523.patch \
- gnu/packages/patches/tinyxml-use-stl.patch \
- gnu/packages/patches/tk-find-library.patch \
- gnu/packages/patches/ttf2eot-cstddef.patch \
- gnu/packages/patches/ttfautohint-source-date-epoch.patch \
- gnu/packages/patches/tophat-build-with-later-seqan.patch \
- gnu/packages/patches/torsocks-dns-test.patch \
- gnu/packages/patches/totem-debug-format-fix.patch \
- gnu/packages/patches/unzip-CVE-2014-8139.patch \
- gnu/packages/patches/unzip-CVE-2014-8140.patch \
- gnu/packages/patches/unzip-CVE-2014-8141.patch \
- gnu/packages/patches/unzip-CVE-2014-9636.patch \
- gnu/packages/patches/unzip-CVE-2015-7696.patch \
- gnu/packages/patches/unzip-CVE-2015-7697.patch \
- gnu/packages/patches/unzip-allow-greater-hostver-values.patch \
- gnu/packages/patches/unzip-attribs-overflow.patch \
- gnu/packages/patches/unzip-overflow-on-invalid-input.patch \
- gnu/packages/patches/unzip-format-secure.patch \
- gnu/packages/patches/unzip-initialize-symlink-flag.patch \
- gnu/packages/patches/unzip-overflow-long-fsize.patch \
- gnu/packages/patches/unzip-remove-build-date.patch \
- gnu/packages/patches/util-linux-tests.patch \
- gnu/packages/patches/upower-builddir.patch \
- gnu/packages/patches/valgrind-enable-arm.patch \
- gnu/packages/patches/vorbis-tools-CVE-2015-6749.patch \
- gnu/packages/patches/vpnc-script.patch \
- gnu/packages/patches/vtk-mesa-10.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/weechat-python.patch \
- gnu/packages/patches/weex-vacopy.patch \
- gnu/packages/patches/wicd-bitrate-none-fix.patch \
- gnu/packages/patches/wicd-get-selected-profile-fix.patch \
- gnu/packages/patches/wicd-urwid-1.3.patch \
- gnu/packages/patches/wicd-wpa2-ttls.patch \
- gnu/packages/patches/wmctrl-64-fix.patch \
- gnu/packages/patches/woff2-libbrotli.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2015-5310.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2015-5314.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2015-5315.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2015-5316.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2016-4476.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt1.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt2.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt3.patch \
- gnu/packages/patches/wpa-supplicant-CVE-2016-4477-pt4.patch \
- gnu/packages/patches/xdotool-fix-makefile.patch \
- gnu/packages/patches/xf86-video-ark-remove-mibstore.patch \
- gnu/packages/patches/xf86-video-ast-remove-mibstore.patch \
- gnu/packages/patches/xf86-video-geode-glibc-2.20.patch \
- gnu/packages/patches/xf86-video-glint-remove-mibstore.patch \
- gnu/packages/patches/xf86-video-i128-remove-mibstore.patch \
- gnu/packages/patches/xf86-video-intel-compat-api.patch \
- gnu/packages/patches/xf86-video-intel-glibc-2.20.patch \
- gnu/packages/patches/xf86-video-mach64-glibc-2.20.patch \
- gnu/packages/patches/xf86-video-nv-remove-mibstore.patch \
- gnu/packages/patches/xf86-video-openchrome-glibc-2.20.patch \
- gnu/packages/patches/xf86-video-tga-remove-mibstore.patch \
- gnu/packages/patches/xfce4-panel-plugins.patch \
- gnu/packages/patches/xfce4-session-fix-xflock4.patch \
- gnu/packages/patches/xfce4-settings-defaults.patch \
- gnu/packages/patches/xmodmap-asprintf.patch \
- gnu/packages/patches/zathura-plugindir-environment-variable.patch
+ %D%/packages/patches/4store-fix-buildsystem.patch \
+ %D%/packages/patches/a2ps-CVE-2001-1593.patch \
+ %D%/packages/patches/a2ps-CVE-2014-0466.patch \
+ %D%/packages/patches/abiword-explictly-cast-bools.patch \
+ %D%/packages/patches/abiword-wmf-version-lookup-fix.patch \
+ %D%/packages/patches/acl-hurd-path-max.patch \
+ %D%/packages/patches/aegis-constness-error.patch \
+ %D%/packages/patches/aegis-perl-tempdir1.patch \
+ %D%/packages/patches/aegis-perl-tempdir2.patch \
+ %D%/packages/patches/aegis-test-fixup-1.patch \
+ %D%/packages/patches/aegis-test-fixup-2.patch \
+ %D%/packages/patches/agg-am_c_prototype.patch \
+ %D%/packages/patches/alsa-lib-mips-atomic-fix.patch \
+ %D%/packages/patches/antiword-CVE-2014-8123.patch \
+ %D%/packages/patches/apr-skip-getservbyname-test.patch \
+ %D%/packages/patches/arb-ldconfig.patch \
+ %D%/packages/patches/ath9k-htc-firmware-binutils.patch \
+ %D%/packages/patches/ath9k-htc-firmware-gcc.patch \
+ %D%/packages/patches/ath9k-htc-firmware-objcopy.patch \
+ %D%/packages/patches/audacity-fix-ffmpeg-binding.patch \
+ %D%/packages/patches/automake-skip-amhello-tests.patch \
+ %D%/packages/patches/automake-regexp-syntax.patch \
+ %D%/packages/patches/avahi-localstatedir.patch \
+ %D%/packages/patches/avidemux-install-to-lib.patch \
+ %D%/packages/patches/avrdude-fix-libusb.patch \
+ %D%/packages/patches/bash-completion-directories.patch \
+ %D%/packages/patches/bigloo-gc-shebangs.patch \
+ %D%/packages/patches/binutils-ld-new-dtags.patch \
+ %D%/packages/patches/binutils-loongson-workaround.patch \
+ %D%/packages/patches/byobu-writable-status.patch \
+ %D%/packages/patches/calibre-drop-unrar.patch \
+ %D%/packages/patches/calibre-no-updates-dialog.patch \
+ %D%/packages/patches/cdparanoia-fpic.patch \
+ %D%/packages/patches/chmlib-inttypes.patch \
+ %D%/packages/patches/clang-libc-search-path.patch \
+ %D%/packages/patches/clucene-pkgconfig.patch \
+ %D%/packages/patches/cmake-fix-tests.patch \
+ %D%/packages/patches/cpio-gets-undeclared.patch \
+ %D%/packages/patches/cpio-CVE-2016-2037.patch \
+ %D%/packages/patches/cpufrequtils-fix-aclocal.patch \
+ %D%/packages/patches/crda-optional-gcrypt.patch \
+ %D%/packages/patches/crossmap-allow-system-pysam.patch \
+ %D%/packages/patches/csound-header-ordering.patch \
+ %D%/packages/patches/cssc-gets-undeclared.patch \
+ %D%/packages/patches/cssc-missing-include.patch \
+ %D%/packages/patches/clucene-contribs-lib.patch \
+ %D%/packages/patches/cursynth-wave-rand.patch \
+ %D%/packages/patches/dbus-helper-search-path.patch \
+ %D%/packages/patches/dealii-p4est-interface.patch \
+ %D%/packages/patches/devil-CVE-2009-3994.patch \
+ %D%/packages/patches/devil-fix-libpng.patch \
+ %D%/packages/patches/dico-libtool-deterministic.patch \
+ %D%/packages/patches/diffutils-gets-undeclared.patch \
+ %D%/packages/patches/dfu-programmer-fix-libusb.patch \
+ %D%/packages/patches/doc++-include-directives.patch \
+ %D%/packages/patches/doc++-segfault-fix.patch \
+ %D%/packages/patches/doxygen-test.patch \
+ %D%/packages/patches/duplicity-piped-password.patch \
+ %D%/packages/patches/duplicity-test_selection-tmp.patch \
+ %D%/packages/patches/elfutils-tests-ptrace.patch \
+ %D%/packages/patches/einstein-build.patch \
+ %D%/packages/patches/emacs-exec-path.patch \
+ %D%/packages/patches/emacs-fix-scheme-indent-function.patch \
+ %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch \
+ %D%/packages/patches/emacs-source-date-epoch.patch \
+ %D%/packages/patches/eudev-rules-directory.patch \
+ %D%/packages/patches/evilwm-lost-focus-bug.patch \
+ %D%/packages/patches/expat-CVE-2015-1283-refix.patch \
+ %D%/packages/patches/expat-CVE-2016-0718.patch \
+ %D%/packages/patches/fastcap-mulGlobal.patch \
+ %D%/packages/patches/fastcap-mulSetup.patch \
+ %D%/packages/patches/fasthenry-spAllocate.patch \
+ %D%/packages/patches/fasthenry-spBuild.patch \
+ %D%/packages/patches/fasthenry-spUtils.patch \
+ %D%/packages/patches/fasthenry-spSolve.patch \
+ %D%/packages/patches/fasthenry-spFactor.patch \
+ %D%/packages/patches/findutils-localstatedir.patch \
+ %D%/packages/patches/findutils-test-xargs.patch \
+ %D%/packages/patches/flashrom-use-libftdi1.patch \
+ %D%/packages/patches/flint-ldconfig.patch \
+ %D%/packages/patches/fltk-shared-lib-defines.patch \
+ %D%/packages/patches/fltk-xfont-on-demand.patch \
+ %D%/packages/patches/fontforge-svg-modtime.patch \
+ %D%/packages/patches/fossil-test-fixes.patch \
+ %D%/packages/patches/freeimage-CVE-2015-0852.patch \
+ %D%/packages/patches/gawk-fts-test.patch \
+ %D%/packages/patches/gawk-shell.patch \
+ %D%/packages/patches/gcc-arm-link-spec-fix.patch \
+ %D%/packages/patches/gcc-cross-environment-variables.patch \
+ %D%/packages/patches/gcc-libvtv-runpath.patch \
+ %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \
+ %D%/packages/patches/gegl-CVE-2012-4433.patch \
+ %D%/packages/patches/geoclue-config.patch \
+ %D%/packages/patches/ghostscript-CVE-2015-3228.patch \
+ %D%/packages/patches/ghostscript-runpath.patch \
+ %D%/packages/patches/glib-networking-ssl-cert-file.patch \
+ %D%/packages/patches/glib-tests-timer.patch \
+ %D%/packages/patches/glibc-bootstrap-system.patch \
+ %D%/packages/patches/glibc-ldd-x86_64.patch \
+ %D%/packages/patches/glibc-locales.patch \
+ %D%/packages/patches/glibc-o-largefile.patch \
+ %D%/packages/patches/glibc-versioned-locpath.patch \
+ %D%/packages/patches/gmp-arm-asm-nothumb.patch \
+ %D%/packages/patches/gmp-faulty-test.patch \
+ %D%/packages/patches/gnome-tweak-tool-search-paths.patch \
+ %D%/packages/patches/gnucash-price-quotes-perl.patch \
+ %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
+ %D%/packages/patches/gobject-introspection-cc.patch \
+ %D%/packages/patches/gobject-introspection-girepository.patch \
+ %D%/packages/patches/grep-timing-sensitive-test.patch \
+ %D%/packages/patches/grub-CVE-2015-8370.patch \
+ %D%/packages/patches/grub-gets-undeclared.patch \
+ %D%/packages/patches/grub-freetype.patch \
+ %D%/packages/patches/guile-1.8-cpp-4.5.patch \
+ %D%/packages/patches/guile-arm-fixes.patch \
+ %D%/packages/patches/guile-default-utf8.patch \
+ %D%/packages/patches/guile-linux-syscalls.patch \
+ %D%/packages/patches/guile-present-coding.patch \
+ %D%/packages/patches/guile-relocatable.patch \
+ %D%/packages/patches/guile-rsvg-pkgconfig.patch \
+ %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
+ %D%/packages/patches/gtk2-theme-paths.patch \
+ %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \
+ %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
+ %D%/packages/patches/hdf5-config-date.patch \
+ %D%/packages/patches/hop-bigloo-4.0b.patch \
+ %D%/packages/patches/hop-linker-flags.patch \
+ %D%/packages/patches/hydra-automake-1.15.patch \
+ %D%/packages/patches/hydra-disable-darcs-test.patch \
+ %D%/packages/patches/hypre-doc-tables.patch \
+ %D%/packages/patches/hypre-ldflags.patch \
+ %D%/packages/patches/icecat-avoid-bundled-includes.patch \
+ %D%/packages/patches/icedtea-remove-overrides.patch \
+ %D%/packages/patches/icu4c-CVE-2014-6585.patch \
+ %D%/packages/patches/icu4c-CVE-2015-1270.patch \
+ %D%/packages/patches/icu4c-CVE-2015-4760.patch \
+ %D%/packages/patches/id3lib-CVE-2007-4460.patch \
+ %D%/packages/patches/ilmbase-fix-tests.patch \
+ %D%/packages/patches/inkscape-drop-wait-for-targets.patch \
+ %D%/packages/patches/irrlicht-mesa-10.patch \
+ %D%/packages/patches/jansson-CVE-2016-4425.patch \
+ %D%/packages/patches/jasper-CVE-2007-2721.patch \
+ %D%/packages/patches/jasper-CVE-2008-3520.patch \
+ %D%/packages/patches/jasper-CVE-2008-3522.patch \
+ %D%/packages/patches/jasper-CVE-2011-4516-and-CVE-2011-4517.patch \
+ %D%/packages/patches/jasper-CVE-2014-8137.patch \
+ %D%/packages/patches/jasper-CVE-2014-8138.patch \
+ %D%/packages/patches/jasper-CVE-2014-8157.patch \
+ %D%/packages/patches/jasper-CVE-2014-8158.patch \
+ %D%/packages/patches/jasper-CVE-2014-9029.patch \
+ %D%/packages/patches/jasper-CVE-2016-1577.patch \
+ %D%/packages/patches/jasper-CVE-2016-1867.patch \
+ %D%/packages/patches/jasper-CVE-2016-2089.patch \
+ %D%/packages/patches/jasper-CVE-2016-2116.patch \
+ %D%/packages/patches/jbig2dec-ignore-testtest.patch \
+ %D%/packages/patches/kmod-module-directory.patch \
+ %D%/packages/patches/ldc-disable-tests.patch \
+ %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \
+ %D%/packages/patches/liba52-enable-pic.patch \
+ %D%/packages/patches/liba52-link-with-libm.patch \
+ %D%/packages/patches/liba52-set-soname.patch \
+ %D%/packages/patches/liba52-use-mtune-not-mcpu.patch \
+ %D%/packages/patches/libbonobo-activation-test-race.patch \
+ %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
+ %D%/packages/patches/libcmis-fix-test-onedrive.patch \
+ %D%/packages/patches/libdrm-symbol-check.patch \
+ %D%/packages/patches/libevent-dns-tests.patch \
+ %D%/packages/patches/libextractor-ffmpeg-3.patch \
+ %D%/packages/patches/libmtp-devices.patch \
+ %D%/packages/patches/liboop-mips64-deplibs-fix.patch \
+ %D%/packages/patches/libotr-test-auth-fix.patch \
+ %D%/packages/patches/liblxqt-include.patch \
+ %D%/packages/patches/libmad-armv7-thumb-pt1.patch \
+ %D%/packages/patches/libmad-armv7-thumb-pt2.patch \
+ %D%/packages/patches/libmad-frame-length.patch \
+ %D%/packages/patches/libmad-mips-newgcc.patch \
+ %D%/packages/patches/libssh-0.6.5-CVE-2016-0739.patch \
+ %D%/packages/patches/libtar-CVE-2013-4420.patch \
+ %D%/packages/patches/libtheora-config-guess.patch \
+ %D%/packages/patches/libtiff-CVE-2015-8665+CVE-2015-8683.patch \
+ %D%/packages/patches/libtiff-oob-accesses-in-decode.patch \
+ %D%/packages/patches/libtiff-oob-write-in-nextdecode.patch \
+ %D%/packages/patches/libtool-skip-tests2.patch \
+ %D%/packages/patches/libunwind-CVE-2015-3239.patch \
+ %D%/packages/patches/libwmf-CAN-2004-0941.patch \
+ %D%/packages/patches/libwmf-CVE-2006-3376.patch \
+ %D%/packages/patches/libwmf-CVE-2007-0455.patch \
+ %D%/packages/patches/libwmf-CVE-2007-2756.patch \
+ %D%/packages/patches/libwmf-CVE-2007-3472.patch \
+ %D%/packages/patches/libwmf-CVE-2007-3473.patch \
+ %D%/packages/patches/libwmf-CVE-2007-3477.patch \
+ %D%/packages/patches/libwmf-CVE-2009-1364.patch \
+ %D%/packages/patches/libwmf-CVE-2009-3546.patch \
+ %D%/packages/patches/libwmf-CVE-2015-0848+CVE-2015-4588.patch \
+ %D%/packages/patches/libwmf-CVE-2015-4695.patch \
+ %D%/packages/patches/libwmf-CVE-2015-4696.patch \
+ %D%/packages/patches/libxslt-CVE-2015-7995.patch \
+ %D%/packages/patches/lirc-localstatedir.patch \
+ %D%/packages/patches/lm-sensors-hwmon-attrs.patch \
+ %D%/packages/patches/lua-CVE-2014-5461.patch \
+ %D%/packages/patches/lua-pkgconfig.patch \
+ %D%/packages/patches/lua51-liblua-so.patch \
+ %D%/packages/patches/lua52-liblua-so.patch \
+ %D%/packages/patches/luajit-no_ldconfig.patch \
+ %D%/packages/patches/luajit-symlinks.patch \
+ %D%/packages/patches/luit-posix.patch \
+ %D%/packages/patches/m4-gets-undeclared.patch \
+ %D%/packages/patches/make-impure-dirs.patch \
+ %D%/packages/patches/mars-install.patch \
+ %D%/packages/patches/mars-sfml-2.3.patch \
+ %D%/packages/patches/matplotlib-setupext-tk.patch \
+ %D%/packages/patches/maxima-defsystem-mkdir.patch \
+ %D%/packages/patches/mcron-install.patch \
+ %D%/packages/patches/mcrypt-CVE-2012-4409.patch \
+ %D%/packages/patches/mcrypt-CVE-2012-4426.patch \
+ %D%/packages/patches/mcrypt-CVE-2012-4527.patch \
+ %D%/packages/patches/mhash-keygen-test-segfault.patch \
+ %D%/packages/patches/mit-krb5-CVE-2015-8629.patch \
+ %D%/packages/patches/mit-krb5-CVE-2015-8630.patch \
+ %D%/packages/patches/mit-krb5-CVE-2015-8631.patch \
+ %D%/packages/patches/mit-krb5-init-context-null-spnego.patch \
+ %D%/packages/patches/mpc123-initialize-ao.patch \
+ %D%/packages/patches/mplayer2-theora-fix.patch \
+ %D%/packages/patches/module-init-tools-moduledir.patch \
+ %D%/packages/patches/mumps-build-parallelism.patch \
+ %D%/packages/patches/mupen64plus-ui-console-notice.patch \
+ %D%/packages/patches/mutt-store-references.patch \
+ %D%/packages/patches/net-tools-bitrot.patch \
+ %D%/packages/patches/netcdf-config-date.patch \
+ %D%/packages/patches/ngircd-handle-zombies.patch \
+ %D%/packages/patches/ngircd-no-dns-in-tests.patch \
+ %D%/packages/patches/ninja-tests.patch \
+ %D%/packages/patches/ninja-zero-mtime.patch \
+ %D%/packages/patches/nss-pkgconfig.patch \
+ %D%/packages/patches/nvi-assume-preserve-path.patch \
+ %D%/packages/patches/nvi-dbpagesize-binpower.patch \
+ %D%/packages/patches/nvi-db4.patch \
+ %D%/packages/patches/ocaml-CVE-2015-8869.patch \
+ %D%/packages/patches/ocaml-findlib-make-install.patch \
+ %D%/packages/patches/openexr-missing-samples.patch \
+ %D%/packages/patches/openimageio-boost-1.60.patch \
+ %D%/packages/patches/openjpeg-CVE-2015-6581.patch \
+ %D%/packages/patches/openjpeg-use-after-free-fix.patch \
+ %D%/packages/patches/openssh-CVE-2015-8325.patch \
+ %D%/packages/patches/openssl-runpath.patch \
+ %D%/packages/patches/openssl-c-rehash-in.patch \
+ %D%/packages/patches/orpheus-cast-errors-and-includes.patch \
+ %D%/packages/patches/ots-no-include-missing-file.patch \
+ %D%/packages/patches/patchelf-page-size.patch \
+ %D%/packages/patches/patchelf-rework-for-arm.patch \
+ %D%/packages/patches/patchutils-xfail-gendiff-tests.patch \
+ %D%/packages/patches/patch-hurd-path-max.patch \
+ %D%/packages/patches/pcre-CVE-2016-3191.patch \
+ %D%/packages/patches/pcre2-CVE-2016-3191.patch \
+ %D%/packages/patches/perl-CVE-2015-8607.patch \
+ %D%/packages/patches/perl-CVE-2016-2381.patch \
+ %D%/packages/patches/perl-autosplit-default-time.patch \
+ %D%/packages/patches/perl-deterministic-ordering.patch \
+ %D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
+ %D%/packages/patches/perl-gd-options-passthrough-and-fontconfig.patch \
+ %D%/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \
+ %D%/packages/patches/perl-net-amazon-s3-moose-warning.patch \
+ %D%/packages/patches/perl-net-ssleay-disable-ede-test.patch \
+ %D%/packages/patches/perl-no-build-time.patch \
+ %D%/packages/patches/perl-no-sys-dirs.patch \
+ %D%/packages/patches/perl-module-pluggable-search.patch \
+ %D%/packages/patches/perl-source-date-epoch.patch \
+ %D%/packages/patches/pidgin-add-search-path.patch \
+ %D%/packages/patches/pinball-const-fix.patch \
+ %D%/packages/patches/pinball-cstddef.patch \
+ %D%/packages/patches/pinball-missing-separators.patch \
+ %D%/packages/patches/pinball-src-deps.patch \
+ %D%/packages/patches/pinball-system-ltdl.patch \
+ %D%/packages/patches/pingus-sdl-libs-config.patch \
+ %D%/packages/patches/plink-1.07-unclobber-i.patch \
+ %D%/packages/patches/plotutils-libpng-jmpbuf.patch \
+ %D%/packages/patches/polkit-drop-test.patch \
+ %D%/packages/patches/portaudio-audacity-compat.patch \
+ %D%/packages/patches/portmidi-modular-build.patch \
+ %D%/packages/patches/procmail-ambiguous-getline-debian.patch \
+ %D%/packages/patches/procmail-CVE-2014-3618.patch \
+ %D%/packages/patches/pt-scotch-build-parallelism.patch \
+ %D%/packages/patches/pulseaudio-fix-mult-test.patch \
+ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \
+ %D%/packages/patches/pycairo-wscript.patch \
+ %D%/packages/patches/pybugz-encode-error.patch \
+ %D%/packages/patches/pybugz-stty.patch \
+ %D%/packages/patches/pygpgme-disable-problematic-tests.patch \
+ %D%/packages/patches/pyqt-configure.patch \
+ %D%/packages/patches/python-2-deterministic-build-info.patch \
+ %D%/packages/patches/python-2.7-search-paths.patch \
+ %D%/packages/patches/python-2.7-source-date-epoch.patch \
+ %D%/packages/patches/python-3-deterministic-build-info.patch \
+ %D%/packages/patches/python-3-search-paths.patch \
+ %D%/packages/patches/python-disable-ssl-test.patch \
+ %D%/packages/patches/python-fix-tests.patch \
+ %D%/packages/patches/python-ipython-inputhook-ctype.patch \
+ %D%/packages/patches/python-rarfile-fix-tests.patch \
+ %D%/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
+ %D%/packages/patches/python-configobj-setuptools.patch \
+ %D%/packages/patches/python-paste-remove-website-test.patch \
+ %D%/packages/patches/python-paste-remove-timing-test.patch \
+ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
+ %D%/packages/patches/qt4-ldflags.patch \
+ %D%/packages/patches/ratpoison-shell.patch \
+ %D%/packages/patches/readline-link-ncurses.patch \
+ %D%/packages/patches/ripperx-missing-file.patch \
+ %D%/packages/patches/rpm-CVE-2014-8118.patch \
+ %D%/packages/patches/rsem-makefile.patch \
+ %D%/packages/patches/ruby-symlinkfix.patch \
+ %D%/packages/patches/rush-CVE-2013-6889.patch \
+ %D%/packages/patches/sed-hurd-path-max.patch \
+ %D%/packages/patches/scheme48-tests.patch \
+ %D%/packages/patches/scotch-test-threading.patch \
+ %D%/packages/patches/sdl-libx11-1.6.patch \
+ %D%/packages/patches/serf-comment-style-fix.patch \
+ %D%/packages/patches/serf-deflate-buckets-test-fix.patch \
+ %D%/packages/patches/slim-session.patch \
+ %D%/packages/patches/slim-config.patch \
+ %D%/packages/patches/slim-sigusr1.patch \
+ %D%/packages/patches/slurm-configure-remove-nonfree-contribs.patch \
+ %D%/packages/patches/soprano-find-clucene.patch \
+ %D%/packages/patches/sudo-CVE-2015-5602.patch \
+ %D%/packages/patches/superlu-dist-scotchmetis.patch \
+ %D%/packages/patches/synfig-build-fix.patch \
+ %D%/packages/patches/t1lib-CVE-2010-2642.patch \
+ %D%/packages/patches/t1lib-CVE-2011-0764.patch \
+ %D%/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch \
+ %D%/packages/patches/tar-skip-unreliable-tests.patch \
+ %D%/packages/patches/tcl-mkindex-deterministic.patch \
+ %D%/packages/patches/tclxml-3.2-install.patch \
+ %D%/packages/patches/tcsh-fix-autotest.patch \
+ %D%/packages/patches/texi2html-document-encoding.patch \
+ %D%/packages/patches/texi2html-i18n.patch \
+ %D%/packages/patches/tidy-CVE-2015-5522+5523.patch \
+ %D%/packages/patches/tinyxml-use-stl.patch \
+ %D%/packages/patches/tk-find-library.patch \
+ %D%/packages/patches/ttf2eot-cstddef.patch \
+ %D%/packages/patches/ttfautohint-source-date-epoch.patch \
+ %D%/packages/patches/tophat-build-with-later-seqan.patch \
+ %D%/packages/patches/torsocks-dns-test.patch \
+ %D%/packages/patches/totem-debug-format-fix.patch \
+ %D%/packages/patches/unzip-CVE-2014-8139.patch \
+ %D%/packages/patches/unzip-CVE-2014-8140.patch \
+ %D%/packages/patches/unzip-CVE-2014-8141.patch \
+ %D%/packages/patches/unzip-CVE-2014-9636.patch \
+ %D%/packages/patches/unzip-CVE-2015-7696.patch \
+ %D%/packages/patches/unzip-CVE-2015-7697.patch \
+ %D%/packages/patches/unzip-allow-greater-hostver-values.patch \
+ %D%/packages/patches/unzip-attribs-overflow.patch \
+ %D%/packages/patches/unzip-overflow-on-invalid-input.patch \
+ %D%/packages/patches/unzip-format-secure.patch \
+ %D%/packages/patches/unzip-initialize-symlink-flag.patch \
+ %D%/packages/patches/unzip-overflow-long-fsize.patch \
+ %D%/packages/patches/unzip-remove-build-date.patch \
+ %D%/packages/patches/util-linux-tests.patch \
+ %D%/packages/patches/upower-builddir.patch \
+ %D%/packages/patches/valgrind-enable-arm.patch \
+ %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch \
+ %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch \
+ %D%/packages/patches/vorbis-tools-CVE-2015-6749.patch \
+ %D%/packages/patches/vpnc-script.patch \
+ %D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
+ %D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
+ %D%/packages/patches/vtk-mesa-10.patch \
+ %D%/packages/patches/w3m-libgc.patch \
+ %D%/packages/patches/w3m-force-ssl_verify_server-on.patch \
+ %D%/packages/patches/w3m-disable-sslv2-and-sslv3.patch \
+ %D%/packages/patches/w3m-disable-weak-ciphers.patch \
+ %D%/packages/patches/weechat-python.patch \
+ %D%/packages/patches/weex-vacopy.patch \
+ %D%/packages/patches/wicd-bitrate-none-fix.patch \
+ %D%/packages/patches/wicd-get-selected-profile-fix.patch \
+ %D%/packages/patches/wicd-urwid-1.3.patch \
+ %D%/packages/patches/wicd-wpa2-ttls.patch \
+ %D%/packages/patches/wmctrl-64-fix.patch \
+ %D%/packages/patches/woff2-libbrotli.patch \
+ %D%/packages/patches/wordnet-CVE-2008-2149.patch \
+ %D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch \
+ %D%/packages/patches/wordnet-CVE-2008-3908-pt2.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2015-5310.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2015-5314.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2015-5315.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2015-5316.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2016-4476.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt1.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt2.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt3.patch \
+ %D%/packages/patches/wpa-supplicant-CVE-2016-4477-pt4.patch \
+ %D%/packages/patches/xdotool-fix-makefile.patch \
+ %D%/packages/patches/xf86-video-ark-remove-mibstore.patch \
+ %D%/packages/patches/xf86-video-ast-remove-mibstore.patch \
+ %D%/packages/patches/xf86-video-geode-glibc-2.20.patch \
+ %D%/packages/patches/xf86-video-glint-remove-mibstore.patch \
+ %D%/packages/patches/xf86-video-i128-remove-mibstore.patch \
+ %D%/packages/patches/xf86-video-intel-compat-api.patch \
+ %D%/packages/patches/xf86-video-intel-glibc-2.20.patch \
+ %D%/packages/patches/xf86-video-mach64-glibc-2.20.patch \
+ %D%/packages/patches/xf86-video-nv-remove-mibstore.patch \
+ %D%/packages/patches/xf86-video-openchrome-glibc-2.20.patch \
+ %D%/packages/patches/xf86-video-tga-remove-mibstore.patch \
+ %D%/packages/patches/xfce4-panel-plugins.patch \
+ %D%/packages/patches/xfce4-session-fix-xflock4.patch \
+ %D%/packages/patches/xfce4-settings-defaults.patch \
+ %D%/packages/patches/xmodmap-asprintf.patch \
+ %D%/packages/patches/libyaml-CVE-2014-9130.patch \
+ %D%/packages/patches/zathura-plugindir-environment-variable.patch
MISC_DISTRO_FILES = \
- gnu/packages/ld-wrapper.in
+ %D%/packages/ld-wrapper.in
-bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
+bootstrapdir = $(guilemoduledir)/%D%/packages/bootstrap
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
bootstrap_armhf_linuxdir = $(bootstrapdir)/armhf-linux
bootstrap_mips64el_linuxdir = $(bootstrapdir)/mips64el-linux
dist_bootstrap_x86_64_linux_DATA = \
- gnu/packages/bootstrap/x86_64-linux/bash \
- gnu/packages/bootstrap/x86_64-linux/mkdir \
- gnu/packages/bootstrap/x86_64-linux/tar \
- gnu/packages/bootstrap/x86_64-linux/xz
+ %D%/packages/bootstrap/x86_64-linux/bash \
+ %D%/packages/bootstrap/x86_64-linux/mkdir \
+ %D%/packages/bootstrap/x86_64-linux/tar \
+ %D%/packages/bootstrap/x86_64-linux/xz
dist_bootstrap_i686_linux_DATA = \
- gnu/packages/bootstrap/i686-linux/bash \
- gnu/packages/bootstrap/i686-linux/mkdir \
- gnu/packages/bootstrap/i686-linux/tar \
- gnu/packages/bootstrap/i686-linux/xz
+ %D%/packages/bootstrap/i686-linux/bash \
+ %D%/packages/bootstrap/i686-linux/mkdir \
+ %D%/packages/bootstrap/i686-linux/tar \
+ %D%/packages/bootstrap/i686-linux/xz
dist_bootstrap_armhf_linux_DATA = \
- gnu/packages/bootstrap/armhf-linux/bash \
- gnu/packages/bootstrap/armhf-linux/mkdir \
- gnu/packages/bootstrap/armhf-linux/tar \
- gnu/packages/bootstrap/armhf-linux/xz
+ %D%/packages/bootstrap/armhf-linux/bash \
+ %D%/packages/bootstrap/armhf-linux/mkdir \
+ %D%/packages/bootstrap/armhf-linux/tar \
+ %D%/packages/bootstrap/armhf-linux/xz
dist_bootstrap_mips64el_linux_DATA = \
- gnu/packages/bootstrap/mips64el-linux/bash \
- gnu/packages/bootstrap/mips64el-linux/mkdir \
- gnu/packages/bootstrap/mips64el-linux/tar \
- gnu/packages/bootstrap/mips64el-linux/xz
+ %D%/packages/bootstrap/mips64el-linux/bash \
+ %D%/packages/bootstrap/mips64el-linux/mkdir \
+ %D%/packages/bootstrap/mips64el-linux/tar \
+ %D%/packages/bootstrap/mips64el-linux/xz
# Big bootstrap binaries are not included in the tarball. Instead, they
# are downloaded.
nodist_bootstrap_x86_64_linux_DATA = \
- gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz
+ %D%/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz
nodist_bootstrap_i686_linux_DATA = \
- gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz
+ %D%/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz
nodist_bootstrap_armhf_linux_DATA = \
- gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz
+ %D%/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz
nodist_bootstrap_mips64el_linux_DATA = \
- gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz
+ %D%/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz
# Those files must remain executable, so they remain executable once
# imported into the store.
@@ -852,19 +882,19 @@ DOWNLOAD_FILE = \
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
"$(top_srcdir)/build-aux/download.scm"
-gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz:
+%D%/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz:
$(AM_V_DL)$(MKDIR_P) `dirname "$@"`; \
$(DOWNLOAD_FILE) "$@" \
"037b103522a2d0d7d69c7ffd8de683dfe5bb4b59c1fafd70b4ffd397fd2f57f0"
-gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz:
+%D%/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz:
$(AM_V_DL)$(MKDIR_P) `dirname "$@"`; \
$(DOWNLOAD_FILE) "$@" \
"b757cd46bf13ecac83fb8e955fb50096ac2d17bb610ca8eb816f29302a00a846"
-gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz:
+%D%/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz:
$(AM_V_DL)$(MKDIR_P) `dirname "$@"`; \
$(DOWNLOAD_FILE) "$@" \
"e551d05d4d385d6706ab8d574856a087758294dc90ab4c06e70a157a685e23d6"
-gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz:
+%D%/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz:
$(AM_V_DL)$(MKDIR_P) `dirname "$@"`; \
$(DOWNLOAD_FILE) "$@" \
"994680f0001346864aa2c2cc5110f380ee7518dcd701c614291682b8e948f73b"
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 633606e840..abfef36660 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -619,7 +619,8 @@ connection alive.")
"ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
reference implementation of all aspects of DHCP, through a suite of DHCP
tools: server, client, and relay agent.")
- (license license:isc))))
+ (license license:isc)
+ (properties '((cpe-name . "dhcp"))))))
(define-public libpcap
(package
@@ -1252,7 +1253,7 @@ various ways that may be running with too much privilege.")
(define-public smartmontools
(package
(name "smartmontools")
- (version "6.3")
+ (version "6.5")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1260,7 +1261,7 @@ various ways that may be running with too much privilege.")
version "/smartmontools-" version ".tar.gz"))
(sha256
(base32
- "06gy71jh2d3gcfmlbbrsqw7215knkfq59q3j6qdxfrar39fhcxx7"))))
+ "1g25r6sx85b5lay5n6sbnqv05qxzj6xsafsp93hnrg1h044bps49"))))
(build-system gnu-build-system)
(inputs `(("libcap-ng" ,libcap-ng)))
(home-page "http://www.smartmontools.org/")
@@ -1504,20 +1505,20 @@ displays a table of current bandwidth usage by pairs of hosts.")
(define-public munge
(package
(name "munge")
- (version "0.5.11")
+ (version "0.5.12")
(source (origin
(method url-fetch)
- (uri (string-append "https://github.com/dun/munge/archive/munge-"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (uri (string-append "https://github.com/dun/munge/releases/"
+ "download/munge-" version "/munge-"
+ version ".tar.xz"))
(sha256
(base32
- "0njplyalwwqh7xr7xc7klc6x06mq0ak8w2pxh85w8n4hxkmqqnf5"))))
+ "1s0vlwgm3hcx75vcmjf2y3icy5nv8y07bx93w2cmm6a7x71y6wp9"))))
(inputs
`(("openssl" ,openssl)
("libgcrypt" ,libgcrypt)))
(build-system gnu-build-system)
- (home-page "http://dun.github.io/munge/")
+ (home-page "https://dun.github.io/munge/")
(synopsis "Cluster computing authentication service")
(description
"Munge is an authentication service for creating and validating
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 53f6f3e3d2..9518e65db6 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -37,7 +37,7 @@
#:use-module (gnu packages flex)
#:use-module (gnu packages python)
#:use-module (gnu packages tcsh)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xorg)
#:use-module ((guix licenses) #:prefix license:)
diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm
index 238c66fe33..4cbc215070 100644
--- a/gnu/packages/autogen.scm
+++ b/gnu/packages/autogen.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013,2014 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2013, 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -31,31 +31,31 @@
(define-public autogen
(package
(name "autogen")
- (version "5.18.7")
+ (version "5.18.10")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://gnu/autogen"
+ (uri (string-append "mirror://gnu/autogen/rel" version
"/autogen-" version ".tar.xz"))
(sha256
(base32
- "01d4m8ckww12sy50vgyxlnz83z9dxqpyqp153cscncc9w6jq19d7"))))
+ "0j61mf3qab5ya7w5xsp7xalrby00cv92g462bxffl104ql18w92f"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ;for doc generator mdoc
("pkg-config" ,pkg-config)))
(inputs `(("which" ,which)
("guile" ,guile-2.0)))
(arguments
- '(#:phases (alist-cons-before
- 'patch-source-shebangs 'patch-test-scripts
- (lambda _
- (let ((sh (which "sh")))
- (substitute*
- (append (find-files "agen5/test" "\\.test$")
- (find-files "autoopts/test" "\\.(test|in)$"))
- (("/bin/sh") sh)
- (("/usr/bin/tr") "tr"))))
- %standard-phases)))
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'patch-test-scripts
+ (lambda _
+ (let ((sh (which "sh")))
+ (substitute*
+ (append (find-files "agen5/test" "\\.test$")
+ (find-files "autoopts/test" "\\.(test|in)$"))
+ (("/bin/sh") sh)
+ (("/usr/bin/tr") "tr"))))))))
(home-page "http://www.gnu.org/software/autogen/")
(synopsis "Automated program generator")
(description
diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm
index ddc628d005..de7f1f6d15 100644
--- a/gnu/packages/autotools.scm
+++ b/gnu/packages/autotools.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -159,6 +160,27 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
port)))
(chmod (string-append bin "/autoconf") #o555)))))))
+(define-public autoconf-archive
+ (package
+ (name "autoconf-archive")
+ (version "2016.03.20")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/autoconf-archive/autoconf-archive-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0dz4fnc723jqn3by22ds5fys7g31apzm1r9allldvva0yvzjxyw8"))))
+ (build-system gnu-build-system)
+ (home-page "https://www.gnu.org/software/autoconf-archive")
+ (synopsis "Collection of freely reusable Autoconf macros")
+ (description
+ "Autoconf Archive is a collection of over 450 new macros for Autoconf,
+greatly expanding the domain of its functionality. These macros have been
+contributed as free software by the community.")
+ (license gpl3+)))
+
(define-public autobuild
(package
(name "autobuild")
diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm
index d59816b6b8..987347713c 100644
--- a/gnu/packages/avr.scm
+++ b/gnu/packages/avr.scm
@@ -1,6 +1,8 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2014, 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -19,52 +21,128 @@
(define-module (gnu packages avr)
#:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix utils)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
#:use-module (gnu packages)
#:use-module (gnu packages cross-base)
+ #:use-module (gnu packages flashing-tools)
+ #:use-module (gnu packages gcc)
#:use-module (gnu packages vim)
#:use-module (gnu packages zip))
+(define-public avr-binutils
+ (package
+ (inherit (cross-binutils "avr"))
+ (name "avr-binutils")))
+
+(define-public avr-gcc-4.9
+ (let ((xgcc (cross-gcc "avr" avr-binutils)))
+ (package
+ (inherit xgcc)
+ (name "avr-gcc")
+ (arguments
+ (substitute-keyword-arguments (package-arguments xgcc)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ ;; Without a working multilib build, the resulting GCC lacks
+ ;; support for nearly every AVR chip.
+ (add-after 'unpack 'fix-genmultilib
+ (lambda _
+ ;; patch-shebang doesn't work here because there are actually
+ ;; several scripts inside this script, each with a #!/bin/sh
+ ;; that needs patching.
+ (substitute* "gcc/genmultilib"
+ (("#!/bin/sh") (string-append "#!" (which "sh"))))
+ #t))))
+ ((#:configure-flags flags)
+ `(delete "--disable-multilib" ,flags))))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "CROSS_CPATH")
+ (files '("avr/include")))
+ (search-path-specification
+ (variable "CROSS_LIBRARY_PATH")
+ (files '("avr/lib"))))))))
+
+(define-public avr-gcc-5
+ (package
+ (inherit avr-gcc-4.9)
+ (version (package-version gcc-5))
+ (source (package-source gcc-5))))
+
(define-public avr-libc
(package
(name "avr-libc")
- (version "1.8.1")
+ (version "2.0.0")
(source (origin
(method url-fetch)
- (uri (string-append
- "mirror://savannah//avr-libc/avr-libc-"
- version ".tar.bz2"))
+ (uri (string-append "mirror://savannah//avr-libc/avr-libc-"
+ version ".tar.bz2"))
(sha256
(base32
- "0sd9qkvhmk9av4g1f8dsjwc309hf1g0731bhvicnjb3b3d42l1n3"))))
+ "15svr2fx8j6prql2il2fc0ppwlv50rpmyckaxx38d3gxxv97zpdj"))))
(build-system gnu-build-system)
(arguments
- `(#:out-of-source? #t
- #:configure-flags '("--host=avr")))
-
- (native-inputs `(("cross-binutils" ,(cross-binutils "avr"))
- ("cross-gcc" ,xgcc-avr)))
+ '(#:out-of-source? #t
+ #:configure-flags '("--host=avr")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'unpack 'fix-cpath
+ (lambda _
+ ;; C_INCLUDE_PATH poses issues for cross-building, leading to
+ ;; failures when building avr-libc on 64-bit systems. Simply
+ ;; unsetting it allows the build to succeed because it doesn't
+ ;; try to use any of the native system's headers.
+ (unsetenv "C_INCLUDE_PATH")
+ #t)))))
+ (native-inputs `(("avr-binutils" ,avr-binutils)
+ ("avr-gcc" ,avr-gcc-4.9)))
(home-page "http://www.nongnu.org/avr-libc/")
(synopsis "The AVR C Library")
(description
"AVR Libc is a project whose goal is to provide a high quality C library
for use with GCC on Atmel AVR microcontrollers.")
- (license (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
+ (license
+ (license:non-copyleft "http://www.nongnu.org/avr-libc/LICENSE.txt"))))
+
+(define (avr-toolchain avr-gcc)
+ (package
+ (name "avr-toolchain")
+ (version (package-version avr-gcc))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments '(#:builder (mkdir %output)))
+ (propagated-inputs
+ `(("avrdude" ,avrdude)
+ ("binutils" ,avr-binutils)
+ ("gcc" ,avr-gcc)
+ ("libc" ,avr-libc)))
+ (synopsis "Complete GCC tool chain for AVR microcontroller development")
+ (description "This package provides a complete GCC tool chain for AVR
+microcontroller development. This includes the GCC AVR cross compiler and
+avrdude for firmware flashing. The supported programming languages are C and
+C++.")
+ (home-page (package-home-page avr-libc))
+ (license (package-license avr-gcc))))
+
+(define-public avr-toolchain-4.9 (avr-toolchain avr-gcc-4.9))
+(define-public avr-toolchain-5 (avr-toolchain avr-gcc-5))
(define-public microscheme
(package
(name "microscheme")
- (version "0.9.2")
+ (version "0.9.3")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/ryansuchocki/"
- "microscheme/archive/v" version ".zip"))
+ "microscheme/archive/v" version ".tar.gz"))
(sha256
(base32
- "0cmp1c6ilcib4w9ysqghav310g8jsq9gdfpfa9sd23wgl7mlncxf"))
- (file-name (string-append name "-" version ".zip"))))
+ "1n404mh7z2icy3ga1mx249lk9x091k7idj6xpcf20hnmzabd0k0x"))
+ (file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f ; fails to build otherwise
diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm
index 05423f1401..a0ff535dfe 100644
--- a/gnu/packages/backup.scm
+++ b/gnu/packages/backup.scm
@@ -404,13 +404,17 @@ detection, and lossless compression.")
(define-public borg
(package
(name "borg")
- (version "1.0.2")
+ (version "1.0.3")
(source (origin
(method url-fetch)
- (uri (pypi-uri "borgbackup" version))
+ (uri (string-append
+ "https://pypi.python.org/packages/"
+ "c9/c6/1efc338724b054d4d264dfeadfcba11cefa6c3c50f474cec91b8f0c21d3a"
+ "/borgbackup-" version ".tar.gz"))
+
(sha256
(base32
- "1myz10pwxnac9z59gw1w3xjhz6ghx03vngpl97ca527pj0r39shi"))))
+ "0kzr0xa00yjfxx27aipli67qg5ffj52yrnqhpf3sdy6k5wzwaybs"))))
(build-system python-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 689ab2d3c3..d0ef06209f 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -530,7 +530,10 @@ store.")
,version)
(string-append "--with-headers="
- (assoc-ref %build-inputs "kernel-headers")
+ (assoc-ref ,(if (%current-target-system)
+ '%build-target-inputs
+ '%build-inputs)
+ "kernel-headers")
"/include")
;; This is the default for most architectures as of GNU libc 2.21,
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index d404ff839c..6a90aa9456 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -1482,7 +1482,7 @@ identify enrichments with functional annotations of the genome.")
(define-public diamond
(package
(name "diamond")
- (version "0.8.1")
+ (version "0.8.5")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1491,7 +1491,7 @@ identify enrichments with functional annotations of the genome.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1dqancz32c2l7w1b2vkvh5zqa2jnf99j1c41djnx1l8pxn044zdc"))))
+ "18zx8k3axnsrg016kikl8xs1ifnjmj36dk1sv3fq1jgpg9j9584b"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no "check" target
@@ -2670,10 +2670,10 @@ the phenotype as it models the data.")
(license license:asl2.0)))
(define-public pbtranscript-tofu
- (let ((commit "8f5467fe6"))
+ (let ((commit "8f5467fe6a4472bcfb4226c8720993c8507adfe4"))
(package
(name "pbtranscript-tofu")
- (version (string-append "2.2.3." commit))
+ (version (string-append "2.2.3." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -3009,7 +3009,7 @@ viewer.")
(delete 'configure))))))))
(define-public mosaik
- (let ((commit "5c25216d"))
+ (let ((commit "5c25216d3522d6a33e53875cd76a6d65001e4e67"))
(package
(name "mosaik")
(version "2.2.30")
@@ -3259,10 +3259,10 @@ subsequent visualization, annotation and storage of results.")
(define-public smithlab-cpp
(let ((revision "1")
- (commit "728a097"))
+ (commit "728a097bec88c6f4b8528b685932049e660eff2e"))
(package
(name "smithlab-cpp")
- (version (string-append "0." revision "." commit))
+ (version (string-append "0." revision "." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -3885,6 +3885,47 @@ Needleman-Wunsch).")
;; Dual licensed; also includes public domain source.
(license (list license:gpl3 license:bsd-2))))
+(define-public pardre
+ (package
+ (name "pardre")
+ (version "1.1.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://sourceforge/pardre/ParDRe-rel"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0zkyjzv4s8q2h5npalhirbk17r5b1h0n2a42mh7njzlf047h9bhy"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; no tests included
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
+ (mkdir-p bin)
+ (install-file "ParDRe" bin)
+ #t))))))
+ (inputs
+ `(("openmpi" ,openmpi)
+ ("zlib" ,zlib)))
+ (synopsis "Parallel tool to remove duplicate DNA reads")
+ (description
+ "ParDRe is a parallel tool to remove duplicate genetic sequence reads.
+Duplicate reads can be seen as identical or nearly identical sequences with
+some mismatches. This tool lets users avoid the analysis of unnecessary
+reads, reducing the time of subsequent procedures with the
+dataset (e.g. assemblies, mappings, etc.). The tool is implemented with MPI
+in order to exploit the parallel capabilities of multicore clusters. It is
+faster than multithreaded counterparts (end of 2015) for the same number of
+cores and, thanks to the message-passing technology, it can be executed on
+clusters.")
+ (home-page "https://sourceforge.net/projects/pardre/")
+ (license license:gpl3+)))
+
(define-public bio-locus
(package
(name "bio-locus")
@@ -4735,6 +4776,34 @@ 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-genomationdata
+ (package
+ (name "r-genomationdata")
+ (version "1.4.0")
+ (source (origin
+ (method url-fetch)
+ ;; We cannot use bioconductor-uri here because this tarball is
+ ;; located under "data/annotation/" instead of "bioc/".
+ (uri (string-append "https://bioconductor.org/packages/"
+ "release/data/experiment/src/contrib/"
+ "genomationData_" version ".tar.gz"))
+ (sha256
+ (base32
+ "1xzq2j722d8lcn5bc3aq3yb34xwis2d0bpsf6jsq4xw1bg0bsy79"))))
+ (build-system r-build-system)
+ ;; As this package provides little more than large data files, it doesn't
+ ;; make sense to build substitutes.
+ (arguments `(#:substitutable? #f))
+ (native-inputs
+ `(("r-knitr" ,r-knitr)))
+ (home-page "http://bioinformatics.mdc-berlin.de/genomation/")
+ (synopsis "Experimental data for use with the genomation package")
+ (description
+ "This package contains experimental genetic data for use with the
+genomation package. Included are Chip Seq, Methylation and Cage data,
+downloaded from Encode.")
+ (license license:gpl3+)))
+
(define-public r-org-hs-eg-db
(package
(name "r-org-hs-eg-db")
@@ -5100,7 +5169,7 @@ libraries for systems that do not have these available via other means.")
("samtools" ,samtools-0.1)
("gsl" ,gsl)
("smithlab-cpp"
- ,(let ((commit "3723e2d"))
+ ,(let ((commit "3723e2db438c51501d0423429ff396c3035ba46a"))
(origin
(method git-fetch)
(uri (git-reference
diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm
index d8252c8b37..409731d1d6 100644
--- a/gnu/packages/bittorrent.scm
+++ b/gnu/packages/bittorrent.scm
@@ -207,7 +207,7 @@ interface, for the Transmission BitTorrent daemon.")
(define-public aria2
(package
(name "aria2")
- (version "1.22.0")
+ (version "1.23.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/tatsuhiro-t/aria2/"
@@ -215,7 +215,7 @@ interface, for the Transmission BitTorrent daemon.")
name "-" version ".tar.xz"))
(sha256
(base32
- "12agwdvvkr34wqhyyfp418dj0k7nbr297qmcd3wj5kkn7brv6gxc"))))
+ "14qz7686zxnhbaqj6l1hqpkykhpygm74h2mzwhh13gqmcj38alaq"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-libaria2")
@@ -230,10 +230,10 @@ interface, for the Transmission BitTorrent daemon.")
(("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageReceiverTest\\);" text)
(string-append "// " text))))))))
(native-inputs
- `(("pkg-config" ,pkg-config)))
+ `(("cppunit" ,cppunit) ; for the tests
+ ("pkg-config" ,pkg-config)))
(inputs
`(("c-ares" ,c-ares)
- ("cppunit" ,cppunit) ; for the tests
("gnutls" ,gnutls)
("gmp" ,gmp)
("libssh2" ,libssh2)
@@ -241,7 +241,7 @@ interface, for the Transmission BitTorrent daemon.")
("nettle" ,nettle)
("sqlite" ,sqlite)
("zlib" ,zlib)))
- (home-page "http://aria2.sourceforge.net/")
+ (home-page "https://aria2.github.io/")
(synopsis "Utility for parallel downloading files")
(description
"Aria2 is a lightweight, multi-protocol & multi-source command-line
diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm
index be18ebd29f..e0ff873b3e 100644
--- a/gnu/packages/ci.scm
+++ b/gnu/packages/ci.scm
@@ -39,10 +39,10 @@
#:use-module (guix build-system gnu))
(define-public hydra
- (let ((commit "4c0e3e4"))
+ (let ((commit "4c0e3e47034545ad3e9e86dd069138bcebb8ccee"))
(package
(name "hydra")
- (version (string-append "20150407." commit))
+ (version (string-append "20150407." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm
index 7e8a361967..c3efd15e44 100644
--- a/gnu/packages/code.scm
+++ b/gnu/packages/code.scm
@@ -54,7 +54,7 @@
(build-system gnu-build-system)
;; Needed to have cflow-mode.el installed.
- (native-inputs `(("emacs" ,emacs-no-x)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(home-page "http://www.gnu.org/software/cflow/")
(synopsis "Create a graph of control flow within a program")
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index e5cacf5ca7..0fc61d3927 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -34,6 +34,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
+ #:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
@@ -110,22 +111,38 @@ utility. Instead of being written in Java, FastJar is written in C.")
(define-public libtar
(package
(name "libtar")
- (version "1.2.11")
+ (version "1.2.20")
(source (origin
(method url-fetch)
- (uri (string-append
- "ftp://ftp.feep.net/pub/software/libtar/libtar-"
- version ".tar.gz"))
+ (uri (list
+ (string-append
+ "ftp://ftp.feep.net/pub/software/libtar/libtar-"
+ version ".tar.gz")
+ (string-append
+ "mirror://debian/pool/main/libt/libtar/libtar_"
+ version ".orig.tar.gz")))
(sha256
(base32
- "1f3vx1wa69a6c5y0z0aakd81gygirdcm0vimazg433q8nyvfybja"))))
+ "02cihzl77ia0dcz7z2cga2412vyhhs5pa2355q4wpwbyga2lrwjh"))
+ (patches (search-patches "libtar-CVE-2013-4420.patch"))))
(build-system gnu-build-system)
- (arguments `(#:tests? #f)) ;no "check" target
+ (arguments
+ `(#:tests? #f ;no "check" target
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'autoconf
+ (lambda _ (zero? (system* "sh" "autoreconf" "-vfi")))))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (inputs
+ `(("zlib" ,zlib)))
(synopsis "C library for manipulating POSIX tar files")
(description
"libtar is a C library for manipulating POSIX tar files. It handles
adding and extracting files to/from a tar archive.")
- (home-page "http://www.feep.net/libtar/")
+ (home-page "https://repo.or.cz/libtar.git")
(license license:bsd-3)))
(define-public gzip
@@ -426,16 +443,17 @@ with the sfArk algorithm.")
(license license:gpl3+)))
(define-public sfarkxtc
+ (let ((commit "b5e0a2ba3921f019d74d4b92bd31c36dd19d2cf1"))
(package
(name "sfarkxtc")
- (version "b5e0a2ba39")
+ (version (string-take commit 10))
(source (origin
;; There are no release tarballs, so we just fetch the latest
;; commit at this time.
(method git-fetch)
(uri (git-reference
(url "https://github.com/raboof/sfarkxtc.git")
- (commit version)))
+ (commit commit)))
(sha256
(base32
"0f5x6i46qfl6ry21s7g2p4sd4b2r1g4fb03yqi2vv4kq3saryhvj"))))
@@ -456,7 +474,7 @@ with the sfArk algorithm.")
(synopsis "Basic sfArk decompressor")
(description "SfArk extractor converts SoundFonts in the compressed legacy
sfArk file format to the uncompressed sf2 format.")
- (license license:gpl3+)))
+ (license license:gpl3+))))
(define-public libmspack
(package
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 58cd38beca..9d0f86af86 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -376,12 +376,6 @@ XBINUTILS and the cross tool chain."
(package-supported-systems xgcc)
'("mips64el-linux" "i686-linux"))))))
-(define-public xgcc-avr
- ;; AVR cross-compiler, used to build AVR-Libc.
- (let ((triplet "avr"))
- (cross-gcc triplet
- (cross-binutils triplet))))
-
(define-public xgcc-xtensa
;; Bare-bones Xtensa cross-compiler, used to build the Atheros firmware.
(cross-gcc "xtensa-elf"))
diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm
index 08eb146cf7..b2ea848937 100644
--- a/gnu/packages/crypto.scm
+++ b/gnu/packages/crypto.scm
@@ -30,7 +30,7 @@
(define-public libsodium
(package
(name "libsodium")
- (version "1.0.0")
+ (version "1.0.10")
(source (origin
(method url-fetch)
(uri (list (string-append
@@ -41,7 +41,7 @@
"releases/old/libsodium-" version ".tar.gz")))
(sha256
(base32
- "19f9vf0shfp4rc4l791r6xjg06z4i8psj1zkjkm3z5b640yzxlff"))))
+ "1gn45g956lyz8l6iq187yc6l627vyivyp8qc5dkr6dnhdnlqddvi"))))
(build-system gnu-build-system)
(synopsis "Portable NaCl-based crypto library")
(description
diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm
index 8f3e1a1b70..99ff1e228e 100644
--- a/gnu/packages/cyrus-sasl.scm
+++ b/gnu/packages/cyrus-sasl.scm
@@ -34,7 +34,7 @@
(source (origin
(method url-fetch)
(uri (list (string-append
- "http://cyrusimap.org/releases/cyrus-sasl-"
+ "https://cyrusimap.org/releases/cyrus-sasl-"
version ".tar.gz")
(string-append
"ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-"
@@ -63,4 +63,4 @@ library makes supporting various SASL mechanisms easy for both client and
server writers.")
(license (license:non-copyleft "file://COPYING"
"See COPYING in the distribution."))
- (home-page "http://cyrusimap.web.cmu.edu/index.php")))
+ (home-page "http://cyrusimap.web.cmu.edu")))
diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm
index 501377b7b7..80aa54f7a2 100644
--- a/gnu/packages/databases.scm
+++ b/gnu/packages/databases.scm
@@ -55,7 +55,7 @@
#:use-module (gnu packages bison)
#:use-module (gnu packages jemalloc)
#:use-module ((guix licenses)
- #:select (gpl2 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
+ #:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
bsd-2 bsd-3 public-domain))
#:use-module (guix packages)
#:use-module (guix download)
@@ -386,7 +386,7 @@ pictures, sounds, or video.")
(assoc-ref %build-inputs "bash:include")
"/include/bash"))))
- (native-inputs `(("emacs" ,emacs-no-x)
+ (native-inputs `(("emacs" ,emacs-minimal)
("bc" ,bc)
("bash:include" ,bash "include")
("libuuid" ,util-linux)))
@@ -919,3 +919,41 @@ sets, bitmaps and hyperloglogs.")
and B+ Tree data storage models. It is a fast key-value lightweight
database and supports many programming languages. It is a NoSQL database.")
(license gpl3+)))
+
+(define-public wiredtiger
+ (package
+ (name "wiredtiger")
+ (version "2.8.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://source.wiredtiger.com/releases/wiredtiger-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1qh7y5paisdxq19jgg81ld7i32lz920n5k30hdpxnr8ll9c4hgjr"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags '("--enable-lz4" "--enable-zlib")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'disable-test/fops
+ (lambda _
+ ;; XXX: timed out after 3600 seconds of silence
+ (substitute* "Makefile"
+ (("test/fops") ""))
+ #t)))))
+ (inputs
+ `(("lz4" ,lz4)
+ ("zlib" ,zlib)))
+ (home-page "http://source.wiredtiger.com/")
+ (synopsis "NoSQL data engine")
+ (description
+ "WiredTiger is an extensible platform for data management. It supports
+row-oriented storage (where all columns of a row are stored together),
+column-oriented storage (where columns are stored in groups, allowing for
+more efficient access and storage of column subsets) and log-structured merge
+trees (LSM), for sustained throughput under random insert workloads.")
+ (license gpl3) ; or GPL-2
+ ;; configure.ac: WiredTiger requires a 64-bit build.
+ (supported-systems '("x86_64-linux" "mips64el-linux"))))
diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm
index 2bbc069472..126a21bf66 100644
--- a/gnu/packages/dav.scm
+++ b/gnu/packages/dav.scm
@@ -52,16 +52,16 @@ clients.")
(define-public vdirsyncer
(package
(name "vdirsyncer")
- (version "0.10.0")
+ (version "0.11.0")
(source (origin
(method url-fetch)
- (uri (string-append "https://pypi.python.org/packages/0b/fb/"
- "c42223e1e9169e4770194e62143d431755724b080d8cb"
- "77f14705b634815/"
- "vdirsyncer-" version ".tar.gz"))
+ (uri (string-append
+ "https://pypi.python.org/packages/"
+ "39/e5/1e7097b5f0cd6de79ec9014f162a6000b77ca2a369ea8a1588a2eebff570/"
+ name "-" version ".tar.gz"))
(sha256
(base32
- "1gf86sbd6w0w4zayh9r3irlp5jwrzbjikjc0vs5zkdpa5c199f78"))))
+ "1bf0vk29qdswar0q4267aamfriq3134302i2p3qcqxpmmcwx3qfv"))))
(build-system python-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
diff --git a/gnu/packages/dictionaries.scm b/gnu/packages/dictionaries.scm
index ac020b27c8..5aea716150 100644
--- a/gnu/packages/dictionaries.scm
+++ b/gnu/packages/dictionaries.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -76,3 +77,41 @@
"V.E.R.A. (Virtual Entity of Relevant Acronyms) is a list of computing
acronyms distributed as an info document.")
(license fdl1.3+)))
+
+(define-public gcide
+ (package
+ (name "gcide")
+ (version "0.51")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "mirror://gnu/gcide/gcide-" version ".tar.xz"))
+ (sha256
+ (base32
+ "1wm0s51ygc6480dq8gwahzr35ls8jgpf34yiwl5yqcaa0i19fdv7"))))
+ (build-system trivial-build-system)
+ (arguments
+ '(#:builder (begin
+ (use-modules (guix build utils))
+ (let* ((src (assoc-ref %build-inputs "source"))
+ (tar (assoc-ref %build-inputs "tar"))
+ (xz (assoc-ref %build-inputs "xz"))
+ (out (assoc-ref %outputs "out"))
+ (datadir (string-append out "/share/gcide")))
+ (set-path-environment-variable "PATH" '("bin")
+ (list tar xz))
+ (mkdir-p datadir)
+ (zero? (system* "tar" "-C" datadir
+ "--strip-components=1"
+ "-xvf" src))))
+ #:modules ((guix build utils))))
+ (native-inputs
+ `(("tar" ,tar)
+ ("xz" ,xz)))
+ (synopsis "GNU Collaborative International Dictionary of English")
+ (description
+ "GCIDE is a free dictionary based on a combination of sources. It can
+be used via the GNU Dico program or accessed online at
+http://gcide.gnu.org.ua/")
+ (home-page "http://gcide.gnu.org.ua/")
+ (license gpl3+)))
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index c7aa0dc556..c60eacb15e 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -123,7 +123,7 @@ to recover data more efficiently by only reading the necessary blocks.")
(define-public dosfstools
(package
(name "dosfstools")
- (version "3.0.28")
+ (version "4.0")
(source
(origin
(method url-fetch)
@@ -132,14 +132,12 @@ to recover data more efficiently by only reading the necessary blocks.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1qkya6lald91c8nsf29jwnk0k5v42wlj24gacfdp3wpc8hq935gf"))))
+ "1bvxbv1w6vhbx0nx7ygp700wq5k2hjv0hm7w0kz1x7amaf4p6dwh"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list (string-append "PREFIX=" %output)
"CC=gcc")
- #:tests? #f ;no tests
- #:phases (modify-phases %standard-phases
- (delete 'configure))))
+ #:tests? #f)) ;no tests
(home-page "https://github.com/dosfstools/dosfstools")
(synopsis "Utilities for making and checking MS-DOS FAT filesystems")
(description
diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm
index e92d8d26b8..819343ad42 100644
--- a/gnu/packages/dns.scm
+++ b/gnu/packages/dns.scm
@@ -33,7 +33,7 @@
(define-public dnsmasq
(package
(name "dnsmasq")
- (version "2.72")
+ (version "2.76")
(source (origin
(method url-fetch)
(uri (string-append
@@ -41,7 +41,7 @@
version ".tar.xz"))
(sha256
(base32
- "1c80hq09hfm8cp5pirfb8wdlc7dqkp7zzmbmdaradcvlblzx42vx"))))
+ "15lzih6671gh9knzpl8mxchiml7z5lfqzr7jm2r0rjhrxs6nk4jb"))))
(build-system gnu-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm
index 2bd86fe5d2..b8a8ba69dc 100644
--- a/gnu/packages/docbook.scm
+++ b/gnu/packages/docbook.scm
@@ -23,7 +23,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages inkscape)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages python)
#:use-module (gnu packages base)
#:use-module (gnu packages xml)
diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index f972d8831f..2b450cabd6 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -60,7 +61,7 @@
(define-public calibre
(package
(name "calibre")
- (version "2.51.0")
+ (version "2.58.0")
(source
(origin
(method url-fetch)
@@ -68,8 +69,8 @@
version "/calibre-"
version ".tar.xz"))
(sha256
- (base32
- "1rhpcxic4g2zyr5s3xn8dayyb45l9r8zyniaig8j7pl5kmsfjijn"))
+ (base32
+ "0npqvfjqj1vwa7nmnsyd4d30z40brydw275ldf1jankrp6dr9dyd"))
;; 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/elf.scm b/gnu/packages/elf.scm
index 82604c4e30..674b8ac7a1 100644
--- a/gnu/packages/elf.scm
+++ b/gnu/packages/elf.scm
@@ -30,7 +30,7 @@
(define-public elfutils
(package
(name "elfutils")
- (version "0.161")
+ (version "0.166")
(source (origin
(method url-fetch)
(uri (string-append
@@ -38,7 +38,7 @@
version "/elfutils-" version ".tar.bz2"))
(sha256
(base32
- "0w50szymyqvx8g0vkwrvnv17grqxva6x1z9dm9m3i99zg2hr232p"))
+ "0c5s9klq1zyb0zkmrw636k97kz30p5ih8y8dpq8b4f54r0a6j19w"))
(patches (search-patches "elfutils-tests-ptrace.patch"))))
(build-system gnu-build-system)
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 6d80d37d27..386f91aebc 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -9,6 +9,9 @@
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2015, 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 humanitiesNerd <catonano@gmail.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -80,7 +83,19 @@
(base32
"0kn3rzm91qiswi0cql89kbv6mqn27rwsyjfb8xmwy9m5s8fxfiyx"))
(patches (search-patches "emacs-exec-path.patch"
- "emacs-source-date-epoch.patch"))))
+ "emacs-fix-scheme-indent-function.patch"
+ "emacs-source-date-epoch.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Delete the bundled byte-compiled elisp files and
+ ;; generated autoloads.
+ '(with-directory-excursion "lisp"
+ (for-each delete-file
+ (append (find-files "." "\\.elc$")
+ (find-files "." "loaddefs\\.el$")
+ ;; This is the only "autoloads" file that
+ ;; does not have "*loaddefs.el" name.
+ '("eshell/esh-groups.el")))))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:phases
@@ -159,10 +174,25 @@ large Lisp programs. It has full Unicode support for nearly all human
languages.")
(license license:gpl3+)))
-(define-public emacs-no-x
+(define-public emacs-minimal
;; This is the version that you should use as an input to packages that just
;; need to byte-compile .el files.
(package (inherit emacs)
+ (name "emacs-minimal")
+ (synopsis "The extensible text editor (used only for byte-compilation)")
+ (build-system gnu-build-system)
+ (arguments
+ (substitute-keyword-arguments (package-arguments emacs)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (delete 'install-site-start)))))
+ (inputs
+ `(("ncurses" ,ncurses)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))))
+
+(define-public emacs-no-x
+ (package (inherit emacs)
(name "emacs-no-x")
(synopsis "The extensible, customizable, self-documenting text
editor (console only)")
@@ -241,8 +271,8 @@ editor (without an X toolkit)" )
"/share/emacs/site-lisp/"
"geiser-autoloads.el")))
%standard-phases)))
- (inputs `(("guile" ,guile-2.0)
- ("emacs" ,emacs-no-x)))
+ (inputs `(("guile" ,guile-2.0)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(home-page "http://nongnu.org/geiser/")
(synopsis "Collection of Emacs modes for Guile and Racket hacking")
(description
@@ -296,7 +326,7 @@ metadata.")
(base32
"0pp3n8q6kc70blqsaw0zlzp6bc327dpgdrjr0cnh7hqg1lras7ka"))))
(build-system trivial-build-system)
- (inputs `(("emacs" ,emacs-no-x)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(arguments
`(#:modules ((guix build utils)
(guix build emacs-utils))
@@ -367,7 +397,7 @@ when typing parentheses directly or commenting out code line by line.")
(lisp (string-append
out "/share/emacs/site-lisp/")))
(emacs-generate-autoloads ,name lisp)))))))
- (native-inputs `(("emacs" ,emacs-no-x)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(home-page "https://github.com/magit/git-modes")
(synopsis "Emacs major modes for Git configuration files")
(description
@@ -403,7 +433,7 @@ on stdout instead of using a socket as the Emacsclient does.")
(define-public magit
(package
(name "magit")
- (version "2.6.2")
+ (version "2.7.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -411,10 +441,10 @@ on stdout instead of using a socket as the Emacsclient does.")
version "/" name "-" version ".tar.gz"))
(sha256
(base32
- "0im1jrqw29g5anrrjflj6b2gpyqkvpghnq8zvywxyhmjwzar4rn7"))))
+ "1kzd8k2n0lcr04jvn5b6d29zf765mxgshfhzflkzndwmvyxmlqpl"))))
(build-system gnu-build-system)
(native-inputs `(("texinfo" ,texinfo)
- ("emacs" ,emacs-no-x)))
+ ("emacs" ,emacs-minimal)))
(inputs `(("git" ,git)))
(propagated-inputs
`(("dash" ,emacs-dash)
@@ -476,7 +506,7 @@ operations.")
(base32
"04y88j7q9h8xjbx5dbick6n5nr1522sn9i1znp0qwk3vjb4b5mzz"))))
(build-system trivial-build-system)
- (native-inputs `(("emacs" ,emacs-no-x)
+ (native-inputs `(("emacs" ,emacs-minimal)
("tar" ,tar)
("gzip" ,gzip)))
(propagated-inputs `(("dash" ,emacs-dash)
@@ -534,9 +564,9 @@ support for Git-SVN.")
version ".tar.gz"))
(sha256
(base32 "1kxc2yj8vb122dv91r68h7c5ladcryx963fr16plfhg71fv7f9av"))))
- (inputs `(("emacs" ,emacs-no-x)))
(native-inputs
- `(("texinfo" ,texinfo)))
+ `(("emacs" ,emacs-minimal)
+ ("texinfo" ,texinfo)))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list (string-append "EMACS="
@@ -616,7 +646,7 @@ programs.")
(setenv "PATH" (string-append emacs "/bin"))
(emacs-byte-compile-directory lispdir)
#t))))
- (native-inputs `(("emacs" ,emacs-no-x)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(home-page "http://elpa.gnu.org/packages/let-alist.html")
(synopsis "Easily let-bind values of an assoc-list by their names")
(description
@@ -675,10 +705,10 @@ provides an optional IDE-like error list.")
(base32
"0zfxmq86pwk64yv0426gnjrvhjrgrjqn08sdcdhmmjmfpmqvm79y"))))
(build-system gnu-build-system)
- (native-inputs `(("autoconf" ,autoconf)))
+ (native-inputs `(("autoconf" ,autoconf)
+ ("emacs" ,emacs-minimal)))
(inputs `(("w3m" ,w3m)
- ("imagemagick" ,imagemagick)
- ("emacs" ,emacs-no-x)))
+ ("imagemagick" ,imagemagick)))
(arguments
`(#:modules ((guix build gnu-build-system)
(guix build utils)
@@ -747,8 +777,8 @@ provides an optional IDE-like error list.")
(sha256
(base32 "10byvyv9dk0ib55gfqm7bcpxmx2qbih1jd03gmihrppr2mn52nff"))))
(build-system gnu-build-system)
- (inputs `(("wget" ,wget)
- ("emacs" ,emacs-no-x)))
+ (inputs `(("wget" ,wget)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(arguments
`(#:modules ((guix build gnu-build-system)
(guix build utils)
@@ -790,14 +820,14 @@ provides an optional IDE-like error list.")
(define-public emms
(package
(name "emms")
- (version "4.0")
+ (version "4.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/emms/emms-"
version ".tar.gz"))
(sha256
(base32
- "1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
+ "0ay6631p3dr6xnhkm7skwn0gp317r1mxbip28m126w4zqf05cbh3"))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile"
@@ -823,71 +853,68 @@ provides an optional IDE-like error list.")
#:imported-modules (,@%gnu-build-system-modules
(guix build emacs-utils))
- #:phases (alist-replace
- 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (vorbis (assoc-ref inputs "vorbis-tools"))
- (alsa (assoc-ref inputs "alsa-utils"))
- (mpg321 (assoc-ref inputs "mpg321"))
- (mp3info (assoc-ref inputs "mp3info")))
- ;; Specify the installation directory.
- (substitute* "Makefile"
- (("PREFIX=.*$")
- (string-append "PREFIX := " out "\n")))
-
- (setenv "SHELL" (which "sh"))
- (setenv "CC" "gcc")
-
- ;; Specify the absolute file names of the various
- ;; programs so that everything works out-of-the-box.
- (with-directory-excursion "lisp"
- (emacs-substitute-variables
- "emms-player-mpg321-remote.el"
- ("emms-player-mpg321-remote-command"
- (string-append mpg321 "/bin/mpg321")))
- (substitute* "emms-player-simple.el"
- (("\"ogg123\"")
- (string-append "\"" vorbis "/bin/ogg123\"")))
- (emacs-substitute-variables "emms-info-ogginfo.el"
- ("emms-info-ogginfo-program-name"
- (string-append vorbis "/bin/ogginfo")))
- (emacs-substitute-variables "emms-info-libtag.el"
- ("emms-info-libtag-program-name"
- (string-append out "/bin/emms-print-metadata")))
- (emacs-substitute-variables "emms-info-mp3info.el"
- ("emms-info-mp3info-program-name"
- (string-append mp3info "/bin/mp3info")))
- (substitute* "emms-volume-amixer.el"
- (("\"amixer\"")
- (string-append "\"" alsa "/bin/amixer\"")))
- (substitute* "emms-tag-editor.el"
- (("\"mp3info\"")
- (string-append "\"" mp3info "/bin/mp3info\""))))))
- (alist-cons-before
- 'install 'pre-install
- (lambda* (#:key outputs #:allow-other-keys)
- ;; The 'install' rule expects the target directory to
- ;; exist.
- (let* ((out (assoc-ref outputs "out"))
- (man1 (string-append out "/share/man/man1")))
- (mkdir-p man1)
- #t))
- (alist-cons-after
- 'install 'post-install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (target (string-append
- out "/bin/emms-print-metadata")))
- (symlink "emms-auto.el"
- (string-append out "/share/emacs/site-lisp/"
- "emms-autoloads.el"))
- (mkdir-p (dirname target))
- (copy-file "src/emms-print-metadata" target)
- (chmod target #o555)))
- %standard-phases)))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (vorbis (assoc-ref inputs "vorbis-tools"))
+ (alsa (assoc-ref inputs "alsa-utils"))
+ (mpg321 (assoc-ref inputs "mpg321"))
+ (mp3info (assoc-ref inputs "mp3info")))
+ ;; Specify the installation directory.
+ (substitute* "Makefile"
+ (("PREFIX=.*$")
+ (string-append "PREFIX := " out "\n")))
+
+ (setenv "SHELL" (which "sh"))
+ (setenv "CC" "gcc")
+
+ ;; Specify the absolute file names of the various
+ ;; programs so that everything works out-of-the-box.
+ (with-directory-excursion "lisp"
+ (emacs-substitute-variables
+ "emms-player-mpg321-remote.el"
+ ("emms-player-mpg321-remote-command"
+ (string-append mpg321 "/bin/mpg321")))
+ (substitute* "emms-player-simple.el"
+ (("\"ogg123\"")
+ (string-append "\"" vorbis "/bin/ogg123\"")))
+ (emacs-substitute-variables "emms-info-ogginfo.el"
+ ("emms-info-ogginfo-program-name"
+ (string-append vorbis "/bin/ogginfo")))
+ (emacs-substitute-variables "emms-info-libtag.el"
+ ("emms-info-libtag-program-name"
+ (string-append out "/bin/emms-print-metadata")))
+ (emacs-substitute-variables "emms-info-mp3info.el"
+ ("emms-info-mp3info-program-name"
+ (string-append mp3info "/bin/mp3info")))
+ (substitute* "emms-volume-amixer.el"
+ (("\"amixer\"")
+ (string-append "\"" alsa "/bin/amixer\"")))
+ (substitute* "emms-tag-editor.el"
+ (("\"mp3info\"")
+ (string-append "\"" mp3info "/bin/mp3info\"")))))))
+ (add-before 'install 'pre-install
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The 'install' rule expects the target directory to exist.
+ (let* ((out (assoc-ref outputs "out"))
+ (man1 (string-append out "/share/man/man1")))
+ (mkdir-p man1)
+ #t)))
+ (add-after 'install 'post-install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (target (string-append
+ out "/bin/emms-print-metadata")))
+ (symlink "emms-auto.el"
+ (string-append out "/share/emacs/site-lisp/"
+ "emms-autoloads.el"))
+ (mkdir-p (dirname target))
+ (copy-file "src/emms-print-metadata" target)
+ (chmod target #o555)))))
#:tests? #f))
- (native-inputs `(("emacs" ,emacs-no-x) ;for (guix build emacs-utils)
+ (native-inputs `(("emacs" ,emacs-minimal) ;for (guix build emacs-utils)
("texinfo" ,texinfo)))
(inputs `(("alsa-utils" ,alsa-utils)
("vorbis-tools" ,vorbis-tools)
@@ -937,7 +964,7 @@ light user interface.")
(with-directory-excursion site
(symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
%standard-phases)))
- (native-inputs `(("emacs" ,emacs-no-x)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(home-page "http://savannah.nongnu.org/projects/bbdb/")
(synopsis "Contact management utility for Emacs")
(description
@@ -950,14 +977,14 @@ mode, Rmail, Gnus, MH-E, and VM). BBDB is fully customizable.")
(define-public emacs-async
(package
(name "emacs-async")
- (version "1.6")
+ (version "1.9")
(source (origin
(method url-fetch)
(uri (string-append "http://elpa.gnu.org/packages/async-"
version ".tar"))
(sha256
(base32
- "17psvz75n42x33my967wkgi7r0blx46n3jdv510j0z5jswv66039"))))
+ "1ip5nc8xyln5szvqwp6wqva9xr84pn8ssn3nnphrszr19y4js2bm"))))
(build-system emacs-build-system)
(home-page "http://elpa.gnu.org/packages/async.html")
(synopsis "Asynchronous processing in Emacs")
@@ -983,6 +1010,9 @@ as a library for other Emacs packages.")
(base32
"1pmki8hdjjikxlvip3pzi350bln3gcimr27yjf0xfwjvnp5hh9nc"))))
(build-system emacs-build-system)
+ ;; We use 'emacs' because AUCTeX requires dbus at compile time
+ ;; ('emacs-minimal' does not provide dbus).
+ (arguments `(#:emacs ,emacs))
(native-inputs
`(("perl" ,perl)))
(home-page "http://www.gnu.org/software/auctex/")
@@ -1017,7 +1047,7 @@ or XEmacs.")
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
- ("emacs" ,emacs-no-x)
+ ("emacs" ,emacs-minimal)
("texinfo" ,texinfo)))
(home-page "https://github.com/purcell/mmm-mode")
(synopsis "Allow multiple major modes in an Emacs buffer")
@@ -1081,7 +1111,7 @@ single buffer.")
(native-inputs `(("autoconf" ,autoconf)
("automake" ,automake)
("pkg-config" ,pkg-config)
- ("emacs" ,emacs-no-x)))
+ ("emacs" ,emacs-minimal)))
(propagated-inputs
`(("let-alist" ,let-alist)))
(inputs `(("poppler" ,poppler)
@@ -1200,7 +1230,7 @@ files and directories.")
(source (origin
(method git-fetch)
(uri (git-reference
- (commit "8807064693")
+ (commit "880706469338ab59b5bb7dbe8460016f89755364")
(url "https://github.com/gregsexton/ob-ipython.git")))
(sha256
(base32
@@ -1385,20 +1415,6 @@ to a key in your preferred mode.")
identifiers in the MIT-Scheme documentation.")
(license license:gpl2+)))
-;;; XXX: move this procedure to an utility module
-(define* (uncompressed-file-fetch url hash-algo hash
- #:optional name
- #:key (system (%current-system))
- (guile (default-guile)))
- (mlet %store-monad ((drv (url-fetch url hash-algo hash name
- #:system system
- #:guile guile)))
- (gexp->derivation (or name (basename url))
- #~(begin
- (mkdir #$output)
- (chdir #$output)
- (copy-file #$drv (basename #$url))))))
-
(define-public emacs-constants
(package
(name "emacs-constants")
@@ -1406,7 +1422,7 @@ identifiers in the MIT-Scheme documentation.")
(home-page "https://staff.fnwi.uva.nl/c.dominik/Tools/constants")
(source
(origin
- (file-name (string-append name "-" version ".el"))
+ (file-name (string-append name "-" version ".tar.gz"))
(method url-fetch)
(uri (string-append "https://github.com/fedeinthemix/emacs-constants"
"/archive/v" version ".tar.gz"))
@@ -1493,8 +1509,6 @@ debugging, documentation lookup, and so on.")
(base32
"1yrgfj8y69xmcb6kwgplhq68ndm9410qwh7sd2knnd1gchpphdc0"))))
(build-system emacs-build-system)
- (native-inputs
- `(("emacs" ,emacs-no-x)))
(home-page "https://github.com/auto-complete/popup-el")
(synopsis "Visual Popup User Interface for Emacs")
(description
@@ -1536,14 +1550,12 @@ insertion mode. When enabled all keys are implicitly prefixed with
(version "0.13")
(home-page "http://www.loveshack.ukfsn.org/emacs")
(source (origin
- (method uncompressed-file-fetch)
+ (method url-fetch)
(uri "http://www.loveshack.ukfsn.org/emacs/rfcview.el")
(sha256
(base32
"0ympj5rxig383zl2jf0pzdsa80nnq0dpvjiriq0ivfi98fj7kxbz"))))
(build-system emacs-build-system)
- (native-inputs
- `(("emacs" ,emacs-no-x)))
(synopsis "Prettify Request for Comments (RFC) documents")
(description "The Internet Engineering Task Force (IETF) and the Internet
Society (ISOC) publish various Internet-related protocols and specifications
@@ -1562,14 +1574,12 @@ local directories.")
(version "12")
(home-page "http://user42.tuxfamily.org/ffap-rfc-space/index.html")
(source (origin
- (method uncompressed-file-fetch)
+ (method url-fetch)
(uri "http://download.tuxfamily.org/user42/ffap-rfc-space.el")
(sha256
(base32
"1iv61dv57a73mdps7rn6zmgz7nqh14v0ninidyrasy45b1nv6gck"))))
(build-system emacs-build-system)
- (native-inputs
- `(("emacs" ,emacs-no-x)))
(synopsis "Make ffap recognize an RFC with a space before its number")
(description "The Internet Engineering Task Force (IETF) and the
Internet Society (ISOC) publish various Internet-related protocols and
@@ -1631,3 +1641,443 @@ wrap-region, electric-pair-mode, paredit and others. With the basic
features found in other packages it also brings many improvements as
well as completely new features.")
(license license:gpl3+)))
+
+(define-public emacs-clojure-mode
+ (package
+ (name "emacs-clojure-mode")
+ (version "5.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/clojure-emacs/clojure-mode/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0gi8ra3ap5m3mz4qh1yxp2cldn7z9xcxvypznr6rrlc6a9l8s5a6"))))
+ (build-system emacs-build-system)
+ (home-page "http://github.com/clojure-emacs/clojure-mode")
+ (synopsis "Major mode for Clojure code")
+ (description
+ "This Emacs package provides font-lock, indentation, navigation and basic
+refactoring for the @uref{http://clojure.org, Clojure programming language}.
+It is recommended to use @code{clojure-mode} with paredit or smartparens.")
+ (license license:gpl3+)))
+
+(define-public emacs-epl
+ (package
+ (name "emacs-epl")
+ (version "0.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/cask/epl/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1511n3a3f5gvaf2b4nh018by61ciyzi3y3603fzqma7p9hrckarc"))))
+ (build-system emacs-build-system)
+ (home-page "http://github.com/cask/epl")
+ (synopsis "Emacs Package Library")
+ (description
+ "A package management library for Emacs, based on @code{package.el}.
+
+The purpose of this library is to wrap all the quirks and hassle of
+@code{package.el} into a sane API.")
+ (license license:gpl3+)))
+
+(define-public emacs-queue
+ (package
+ (name "emacs-queue")
+ (version "0.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://elpa.gnu.org/packages/queue-"
+ version ".el"))
+ (sha256
+ (base32
+ "0jw24fxqnf9qcaf2nh09cnds1kqfk7hal35dw83x1ari95say391"))))
+ (build-system emacs-build-system)
+ (home-page "http://www.dr-qubit.org/tags/computing-code-emacs.html")
+ (synopsis "Queue data structure for Emacs")
+ (description
+ "This Emacs library provides queue data structure. These queues can be
+used both as a first-in last-out (FILO) and as a first-in first-out (FIFO)
+stack, i.e. elements can be added to the front or back of the queue, and can
+be removed from the front. This type of data structure is sometimes called an
+\"output-restricted deque\".")
+ (license license:gpl3+)))
+
+(define-public emacs-pkg-info
+ (package
+ (name "emacs-pkg-info")
+ (version "0.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/lunaryorn/pkg-info.el/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1gy1jks5mmm02gg1c8gcyr4f8a9s5ggzhk56gv33b9mzjqzi5rd5"))))
+ (build-system emacs-build-system)
+ (propagated-inputs `(("emacs-epl" ,emacs-epl)))
+ (home-page "https://github.com/lunaryorn/pkg-info.el")
+ (synopsis "Information about Emacs packages")
+ (description
+ "This library extracts information from the installed Emacs packages.")
+ (license license:gpl3+)))
+
+(define-public emacs-spinner
+ (package
+ (name "emacs-spinner")
+ (version "1.7.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://elpa.gnu.org/packages/spinner-"
+ version ".el"))
+ (sha256
+ (base32
+ "1fmwzdih0kbyvs8bn38mpm4sbs2mikqy2vdykfy9g20wpa8vb681"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/Malabarba/spinner.el")
+ (synopsis "Emacs mode-line spinner for operations in progress")
+ (description
+ "This Emacs package adds spinners and progress-bars to the mode-line for
+ongoing operations.")
+ (license license:gpl3+)))
+
+(define-public emacs-seq
+ (package
+ (name "emacs-seq")
+ (version "2.15")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://elpa.gnu.org/packages/seq-"
+ version ".tar"))
+ (sha256
+ (base32
+ "09wi1765bmn7i8fg6ajjfaxgs4ipc42d58zx2fdqpidrdg9c7q73"))))
+ (build-system emacs-build-system)
+ (home-page "http://elpa.gnu.org/packages/seq.html")
+ (synopsis "Sequence manipulation functions for Emacs")
+ (description
+ "This Emacs library provides sequence-manipulation functions that
+complement basic functions provided by @code{subr.el}. All provided functions
+work on lists, strings and vectors.")
+ (license license:gpl3+)))
+
+(define-public emacs-better-defaults
+ (package
+ (name "emacs-better-defaults")
+ (version "0.1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/technomancy/better-defaults"
+ "/archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "08fg4zslzlxbvyil5g4gwvwd22fh4zsgqprs5wh9hv1rgc6757m2"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/technomancy/better-defaults")
+ (synopsis "Better defaults for Emacs")
+ (description
+ "Better defaults attempts to address the most obvious deficiencies of the
+Emacs default configuration in uncontroversial ways that nearly everyone can
+agree upon.")
+ (license license:gpl3+)))
+
+(define-public emacs-smex
+ (package
+ (name "emacs-smex")
+ (version "3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com"
+ "/nonsequitur/smex/" version "/smex.el"))
+ (file-name (string-append "smex-" version ".el"))
+ (sha256
+ (base32
+ "0ar310zx9k5y4i1vl2rawvi712xj9gx77160860jbs691p77cxqp"))))
+ (build-system emacs-build-system)
+ (home-page "http://github.com/nonsequitur/smex/")
+ (synopsis "M-x interface with Ido-style fuzzy matching")
+ (description
+ "Smex is a M-x enhancement for Emacs. Built on top of Ido, it provides a
+convenient interface to your recently and most frequently used commands. And
+to all the other commands, too.")
+ (license license:gpl3+)))
+
+(define-public emacs-js2-mode
+ (package
+ (name "emacs-js2-mode")
+ (version "20150909")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/mooz/js2-mode/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1nsm36c4kwb473p13i58fgrnlk8fbn3rdhj47d9xz70az4ra44q0"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/mooz/js2-mode/")
+ (synopsis "Improved JavaScript editing mode for Emacs")
+ (description
+ "Js2-mode provides a JavaScript major mode for Emacs that is more
+advanced than the built-in javascript-mode. Features include accurate syntax
+highlighting using a recursive-descent parser, on-the-fly reporting of syntax
+errors and strict-mode warnings, smart line-wrapping within comments and
+strings, and code folding.")
+ (license license:gpl3+)))
+
+(define-public emacs-markdown-mode
+ (package
+ (name "emacs-markdown-mode")
+ (version "2.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/jrblevin"
+ "/markdown-mode/v" version
+ "/markdown-mode.el"))
+ (file-name (string-append "markdown-mode-" version ".el"))
+ (sha256
+ (base32
+ "1faibar32jnjia9202swblw91q6z1g5s4k9xmypwjahfh8yznl6w"))))
+ (build-system emacs-build-system)
+ (home-page "http://jblevins.org/projects/markdown-mode/")
+ (synopsis "Emacs Major mode for Markdown files")
+ (description
+ "Markdown-mode is a major mode for editing Markdown-formatted text files
+in Emacs.")
+ (license license:gpl3+)))
+
+(define-public emacs-projectile
+ (package
+ (name "emacs-projectile")
+ (version "0.13.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/bbatsov"
+ "/projectile/v" version "/projectile.el"))
+ (file-name (string-append "projectile-" version ".el"))
+ (sha256
+ (base32
+ "1pc6xb61hzxzc5hkqkli1ab0s7wz0rfgx4kcn9y30ksvhw18smbz"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-dash" ,emacs-dash)
+ ("emacs-pkg-info" ,emacs-pkg-info)))
+ (home-page "https://github.com/bbatsov/projectile")
+ (synopsis "Manage and navigate projects in Emacs easily")
+ (description
+ "This library provides easy project management and navigation. The
+concept of a project is pretty basic - just a folder containing special file.
+Currently git, mercurial and bazaar repos are considered projects by default.
+If you want to mark a folder manually as a project just create an empty
+.projectile file in it.")
+ (license license:gpl3+)))
+
+(define-public emacs-elfeed
+ (package
+ (name "emacs-elfeed")
+ (version "1.4.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/skeeto/elfeed/archive/"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0i75r8x9ypbfjlnym04h16ikcrlks86p7wsgawrx7mh1lk4inp89"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/skeeto/elfeed")
+ (synopsis "Atom/RSS feed reader for Emacs")
+ (description
+ "Elfeed is an extensible web feed reader for Emacs, supporting both Atom
+and RSS, with a user interface inspired by notmuch.")
+ (license license:gpl3+)))
+
+(define-public emacs-rainbow-delimiters
+ (package
+ (name "emacs-rainbow-delimiters")
+ (version "2.1.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/Fanael"
+ "/rainbow-delimiters/" version
+ "/rainbow-delimiters.el"))
+ (file-name (string-append "rainbow-delimiters-" version ".el"))
+ (sha256
+ (base32
+ "1b3kampwsjabhcqdp0khgff13wc5jqhy3rbvaa12vnv7qy22l9ck"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/Fanael/rainbow-delimiters")
+ (synopsis "Highlight brackets according to their depth")
+ (description
+ "Rainbow-delimiters is a \"rainbow parentheses\"-like mode for Emacs which
+highlights parentheses, brackets, and braces according to their depth. Each
+successive level is highlighted in a different color, making it easy to spot
+matching delimiters, orient yourself in the code, and tell which statements
+are at a given level.")
+ (license license:gpl3+)))
+
+(define-public emacs-ido-completing-read+
+ (package
+ (name "emacs-ido-completing-read+")
+ (version "3.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com"
+ "/DarwinAwardWinner/ido-ubiquitous/v"
+ version "/ido-completing-read+.el"))
+ (file-name (string-append "ido-completing-read+-" version ".el"))
+ (sha256
+ (base32
+ "1cyalb0p7nfsm4n6n9q6rjmvn6adqc0fq8ybnlj3n41n289dkfjf"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
+ (synopsis "Replacement for completing-read using ido")
+ (description
+ "The ido-completing-read+ function is a wrapper for ido-completing-read.
+Importantly, it detects edge cases that ordinary ido cannot handle and either
+adjusts them so ido can handle them, or else simply falls back to the standard
+Emacs completion function instead.")
+ (license license:gpl3+)))
+
+(define-public emacs-ido-ubiquitous
+ (package
+ (name "emacs-ido-ubiquitous")
+ (version "3.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com"
+ "/DarwinAwardWinner/ido-ubiquitous/v"
+ version "/ido-ubiquitous.el"))
+ (file-name (string-append "ido-ubiquitous-" version ".el"))
+ (sha256
+ (base32
+ "197ypji0fb6jsdcq40rpnknwlh3imas6s6jbsvkfm0pz9988c3q2"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-ido-completing-read+" ,emacs-ido-completing-read+)))
+ (home-page "https://github.com/DarwinAwardWinner/ido-ubiquitous")
+ (synopsis "Use ido (nearly) everywhere")
+ (description
+ "Ido-ubiquitous enables ido-style completion for almost every function
+that uses the standard completion function completing-read.")
+ (license license:gpl3+)))
+
+(define-public emacs-yaml-mode
+ (package
+ (name "emacs-yaml-mode")
+ (version "0.0.12")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/yoshiki"
+ "/yaml-mode/v" version "/yaml-mode.el"))
+ (file-name (string-append "yaml-mode-" version ".el"))
+ (sha256
+ (base32
+ "17wq433ycli0qx4gdhgrmb392qblm6y2dwcyn38j5ja1lasfb0ax"))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/yoshiki/yaml-mode")
+ (synopsis "Major mode for editing YAML files")
+ (description
+ "Yaml-mode is an Emacs major mode for editing files in the YAML data
+serialization format. It was initially developed by Yoshiki Kurihara and many
+features were added by Marshall Vandegrift. As YAML and Python share the fact
+that indentation determines structure, this mode provides indentation and
+indentation command behavior very similar to that of python-mode.")
+ (license license:gpl3+)))
+
+(define-public emacs-web-mode
+ (package
+ (name "emacs-web-mode")
+ (version "14")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/fxbois"
+ "/web-mode/v" version "/web-mode.el"))
+ (file-name (string-append "web-mode-" version ".el"))
+ (sha256
+ (base32
+ "086hik5fmxg3kx74qmransx9cz961qd22d4m6ah2dw6cwaj1s3s5"))))
+ (build-system emacs-build-system)
+ (synopsis "Major mode for editing web templates")
+ (description "Web-mode is an Emacs major mode for editing web templates
+aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by
+client/server side engines). Web-mode is compatible with many template
+engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker,
+Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template,
+Dust.js, React/JSX, Angularjs, ejs, etc.")
+ (home-page "http://web-mode.org/")
+ (license license:gpl3+)))
+
+(define-public emacs-helm
+ (package
+ (name "emacs-helm")
+ (version "1.9.6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/" name "/helm/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0fc897rwf1fm2m7jrsikkgcyzhngfcysxfmzchpwzfj6v9sb5rl9"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-async" ,emacs-async)
+ ("emacs-popup" ,emacs-popup)))
+ (home-page "https://emacs-helm.github.io/helm/")
+ (synopsis "Incremental completion and selection narrowing
+framework for Emacs")
+ (description "Helm is incremental completion and selection narrowing
+framework for Emacs. It will help steer you in the right direction when
+you're looking for stuff in Emacs (like buffers, files, etc). Helm is a fork
+of @code{anything.el} originally written by Tamas Patrovic and can be
+considered to be its successor. Helm sets out to clean up the legacy code in
+@code{anything.el} and provide a cleaner, leaner and more modular tool, that's
+not tied in the trap of backward compatibility.")
+ (license license:gpl3+)))
+
+(define-public emacs-cider
+ (package
+ (name "emacs-cider")
+ (version "0.12.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/clojure-emacs/cider/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "00qzbfjy3w6bcnki7gw0clmi0cc5yqjdrcyhgv4ymijjs79h9p5s"))))
+ (build-system emacs-build-system)
+ (propagated-inputs
+ `(("emacs-clojure-mode" ,emacs-clojure-mode)
+ ("emacs-spinner" ,emacs-spinner)
+ ("emacs-pkg-info" ,emacs-pkg-info)
+ ("emacs-queue" ,emacs-queue)
+ ("emacs-seq" ,emacs-seq)))
+ (home-page "https://cider.readthedocs.org/")
+ (synopsis "Clojure development environment for Emacs")
+ (description
+ "CIDER (Clojure Interactive Development Environment that Rocks) aims to
+provide an interactive development experience similar to the one you'd get
+when programming in Emacs Lisp, Common Lisp (with SLIME or Sly), Scheme (with
+Geiser) and Smalltalk.
+
+CIDER is the successor to the now deprecated combination of using SLIME +
+swank-clojure for Clojure development.
+
+There are plenty of differences between CIDER and SLIME, but the core ideas
+are pretty much the same (and SLIME served as the principle inspiration for
+CIDER).")
+ (license license:gpl3+)))
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index c519ca59e7..02b1c4e9eb 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -52,13 +52,13 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages qt)
#:use-module (gnu packages tcl)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (srfi srfi-1))
(define-public librecad
(package
(name "librecad")
- (version "2.0.9")
+ (version "2.0.11")
(source (origin
(method url-fetch)
(uri (string-append
@@ -67,7 +67,7 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "0xyn4ps9ia94h0vg53rsww8xfd1bgp4200phl8ihyhv7w5v4d8d0"))))
+ "0jda23qspziph6fwgq1q3nmnllbgn9kwfpjylv1f0wa7c5l85gh5"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index cc7f788c9e..c487fc1020 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -54,7 +54,7 @@
(define-public efl
(package
(name "efl")
- (version "1.17.0")
+ (version "1.17.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -62,7 +62,7 @@
version ".tar.xz"))
(sha256
(base32
- "1zisnz4x54mn9sm46kcr571faqnazkcglyf0lbz19l34syx40df1"))))
+ "0d58bhvwg7c5hp07wywlwnqi01k4jhmpgac7gkx9lil1x6kmahqs"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@@ -137,7 +137,7 @@ removable devices or support for multimedia.")
(define-public elementary
(package
(name "elementary")
- (version "1.17.0")
+ (version "1.17.1")
(source (origin
(method url-fetch)
(uri
@@ -145,7 +145,7 @@ removable devices or support for multimedia.")
"elementary/elementary-" version ".tar.xz"))
(sha256
(base32
- "0avb0d6nk4d88l81c2j6py13vdfnvg080ycw2y3qvawyjf1mhska"))))
+ "149xjq4z71l44w1kd8zks9b2g0wjc9656w46hzd27b58afj1dqc5"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
@@ -273,7 +273,7 @@ Libraries with some extra bells and whistles.")
(define-public enlightenment
(package
(name "enlightenment")
- (version "0.20.6")
+ (version "0.20.8")
(source (origin
(method url-fetch)
(uri
@@ -281,7 +281,7 @@ Libraries with some extra bells and whistles.")
name "/" name "-" version ".tar.xz"))
(sha256
(base32
- "11ahll68nlci214ka05whp5l32hy9lznmcdfqx3hxsmq2p7bl7zj"))))
+ "17fi3frq4a73i0x7v7244g9m0fbjfamw0cfb4zhqs2rp1z8nq1iy"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-mount-eeze")))
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index b511d2c951..23faead747 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -158,7 +158,7 @@ line client and a client based on Qt.")
("tzdata" ,tzdata)
("utfcpp" ,utfcpp)))
(native-inputs
- `(("emacs" ,emacs-no-x)
+ `(("emacs" ,emacs-minimal)
("groff" ,groff)
("texinfo" ,texinfo)))
(home-page "http://ledger-cli.org/")
diff --git a/gnu/packages/flashing-tools.scm b/gnu/packages/flashing-tools.scm
index 9f9f1b9c6a..37a10726e3 100644
--- a/gnu/packages/flashing-tools.scm
+++ b/gnu/packages/flashing-tools.scm
@@ -1,6 +1,8 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,6 +32,7 @@
#:use-module (gnu packages libusb)
#:use-module (gnu packages libftdi)
#:use-module (gnu packages pciutils)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages admin))
(define-public flashrom
@@ -130,3 +133,30 @@ technique (ISP).")
Atmel (8051, AVR, XMEGA & AVR32) chips with a USB bootloader supporting
ISP.")
(license gpl2+)))
+
+(define-public dfu-util
+ (package
+ (name "dfu-util")
+ (version "0.9")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://dfu-util.sourceforge.net/releases/dfu-util-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0czq73m92ngf30asdzrfkzraag95hlrr74imbanqq25kdim8qhin"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libusb" ,libusb)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (synopsis "Host side of the USB Device Firmware Upgrade (DFU) protocol")
+ (description
+ "The DFU (Universal Serial Bus Device Firmware Upgrade) protocol is
+intended to download and upload firmware to devices connected over USB. It
+ranges from small devices like micro-controller boards up to mobile phones.
+With dfu-util you are able to download firmware to your device or upload
+firmware from it.")
+ (home-page "http://dfu-util.sourceforge.net/")
+ (license gpl2+)))
diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm
index 3dfff146cd..38068008ca 100644
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@ -281,9 +281,16 @@ high quality, anti-aliased and subpixel rendered text on a display.")
(version "5.1.2")
(source (origin
(method url-fetch)
- (uri "ftp://sunsite.unc.edu/pub/Linux/libs/graphics/t1lib-5.1.2.tar.gz")
+ (uri (list (string-append "ftp://sunsite.unc.edu/pub/Linux/libs/"
+ "graphics/" name "-" version ".tar.gz")
+ (string-append "https://fossies.org/linux/misc/old/"
+ name "-" version ".tar.gz")))
(sha256 (base32
- "0nbvjpnmcznib1nlgg8xckrmsw3haa154byds2h90y2g0nsjh4w2"))))
+ "0nbvjpnmcznib1nlgg8xckrmsw3haa154byds2h90y2g0nsjh4w2"))
+ (patches (search-patches
+ "t1lib-CVE-2010-2642.patch"
+ "t1lib-CVE-2011-0764.patch"
+ "t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch"))))
(build-system gnu-build-system)
(arguments
;; Making the documentation requires latex, but t1lib is also an input
@@ -386,7 +393,7 @@ and returns a sequence of positioned glyphids from the font.")
(define-public potrace
(package
(name "potrace")
- (version "1.11")
+ (version "1.13")
(source
(origin
(method url-fetch)
@@ -394,7 +401,7 @@ and returns a sequence of positioned glyphids from the font.")
version ".tar.gz"))
(sha256
(base32
- "1bbyl7jgigawmwc8r14znv8lb6lrcxh8zpvynrl6s800dr4yp9as"))))
+ "115p2vgyq7p2mf4nidk2x3aa341nvv2v8ml056vbji36df5l6lk2"))))
(build-system gnu-build-system)
(native-inputs `(("ghostscript" ,ghostscript))) ;for tests
(inputs `(("zlib" ,zlib)))
diff --git a/gnu/packages/freeipmi.scm b/gnu/packages/freeipmi.scm
index 6cbad6b1b6..ea81b1af8d 100644
--- a/gnu/packages/freeipmi.scm
+++ b/gnu/packages/freeipmi.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,14 +28,14 @@
(define-public freeipmi
(package
(name "freeipmi")
- (version "1.5.1")
+ (version "1.5.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
version ".tar.gz"))
(sha256
(base32
- "0lhjxlha4j5rx11d81y1rgp9j18rlpxsjc0flsmj6bm60awmm627"))))
+ "0xgfwk6lxwwzq8pbyxjl5xxpybs9p4qwgb7q0ykf048xwxha4kvk"))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline) ("libgcrypt" ,libgcrypt)))
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index fc16862471..368f09632c 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -5,7 +5,7 @@
;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
;;; Copyright © 2014 Sylvain Beucler <beuc@beuc.net>
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2014, 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2014, 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
@@ -590,11 +590,11 @@ for common mesh file formats, and collision detection.")
;; The latest release on SourceForge relies on an unreleased version of SFML
;; with a different API, so we take the latest version from the official
;; repository on Github.
- (let ((commit "c855d04409")
+ (let ((commit "c855d044094a1d92317e38935d81ba938946132e")
(revision "1"))
(package
(name "mars")
- (version (string-append "0.7.5." revision "." commit ))
+ (version (string-append "0.7.5." revision "." (string-take commit 7) ))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -856,7 +856,7 @@ either by Infocom or created using the Inform compiler.")
(define-public retroarch
(package
(name "retroarch")
- (version "1.3.1")
+ (version "1.3.4")
(source
(origin
(method url-fetch)
@@ -864,7 +864,7 @@ either by Infocom or created using the Inform compiler.")
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "1wydzvligyby05x8c4lpg6xcnw9qkmvkskyhzc28xq10vm3q57fv"))))
+ (base32 "077v1sj000y3csjw9vradba3k2aknvg5k8521z8aya6q987klwx5"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no tests
@@ -1833,36 +1833,37 @@ emulation community. It provides highly accurate emulation.")
(license license:gpl2+)))
(define-public emulation-station
- (package
- (name "emulation-station")
- (version "2.0.1")
- (source (origin
- (method git-fetch) ; no tarball available
- (uri (git-reference
- (url "https://github.com/Aloshi/EmulationStation.git")
- (commit "646bede"))) ; no version tag
- (sha256
- (base32
- "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
- (build-system cmake-build-system)
- (arguments
- '(#:tests? #f)) ; no tests
- (inputs
- `(("alsa-lib" ,alsa-lib)
- ("boost" ,boost)
- ("curl" ,curl)
- ("eigin" ,eigen)
- ("freeimage" ,freeimage)
- ("freetype" ,freetype)
- ("mesa" ,mesa)
- ("sdl2" ,sdl2)))
- (synopsis "Video game console emulator front-end")
- (description "EmulationStation provides a graphical front-end to a large
+ (let ((commit "646bede3d9ec0acf0ae378415edac136774a66c5"))
+ (package
+ (name "emulation-station")
+ (version "2.0.1")
+ (source (origin
+ (method git-fetch) ; no tarball available
+ (uri (git-reference
+ (url "https://github.com/Aloshi/EmulationStation.git")
+ (commit commit))) ; no version tag
+ (sha256
+ (base32
+ "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:tests? #f)) ; no tests
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("boost" ,boost)
+ ("curl" ,curl)
+ ("eigin" ,eigen)
+ ("freeimage" ,freeimage)
+ ("freetype" ,freetype)
+ ("mesa" ,mesa)
+ ("sdl2" ,sdl2)))
+ (synopsis "Video game console emulator front-end")
+ (description "EmulationStation provides a graphical front-end to a large
number of video game console emulators. It features an interface that is
usable with any game controller that has at least 4 buttons, theming support,
and a game metadata scraper.")
- (home-page "http://www.emulationstation.org")
- (license license:expat)))
+ (home-page "http://www.emulationstation.org")
+ (license license:expat))))
(define openttd-engine
(package
diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm
index e52a030f86..4d6b1a3c89 100644
--- a/gnu/packages/gd.scm
+++ b/gnu/packages/gd.scm
@@ -37,20 +37,19 @@
(package
(name "gd")
- ;; Note: With libgd.org now pointing to bitbucket.org, genuine old
+ ;; Note: With libgd.org now pointing to github.com, genuine old
;; tarballs are no longer available. Notably, versions 2.0.x are
;; missing.
- (version "2.1.1")
+ (version "2.2.1")
(source (origin
(method url-fetch)
(uri (string-append
- "https://bitbucket.org/libgd/gd-libgd/downloads/"
- "libgd-" version ".tar.xz"))
+ "https://github.com/libgd/libgd/releases/download/gd-"
+ version "/libgd-" version ".tar.xz"))
(sha256
(base32
- "11djy9flzxczphigqgp7fbbblbq35gqwwhn9xfcckawlapa1xnls"))
- (patches (search-patches "gd-CVE-2016-3074.patch"))))
+ "0xmrqka1ggqgml84xbmkw1y0r0lg7qn657v5b1my8pry92p651vh"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm
index 9065732c78..80d53935e2 100644
--- a/gnu/packages/gdb.scm
+++ b/gnu/packages/gdb.scm
@@ -37,14 +37,14 @@
(define-public gdb
(package
(name "gdb")
- (version "7.11")
+ (version "7.11.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gdb/gdb-"
version ".tar.xz"))
(sha256
(base32
- "1hg5kwwdvi9b9nxzxfjnx8fx3gip75fqyvkp82xpf3b3rcb42hvs"))))
+ "0w7wi1llznlqdqk2lmzygz2xylb2c9mh580s9i0rypkmwfj6s8g9"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; FIXME "make check" fails on single-processor systems.
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index 50d480a4ad..34338f936b 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -28,7 +28,7 @@
#:use-module (guix build-system perl)
#:use-module (gnu packages docbook)
#:use-module (gnu packages perl)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages xml))
;; Use that name to avoid clashes with Guile's 'gettext' procedure.
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index bd2794305b..1cd779a9b0 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -24,6 +25,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
+ #:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages glib)
@@ -75,7 +77,8 @@ provided as well as the framework to add new color models and data types.")
"/" name "-" version ".tar.bz2")))
(sha256
(base32
- "09nlv06li9nrn74ifpm7223mxpg0s7cii702z72cpbwrjh6nlbnz"))))
+ "09nlv06li9nrn74ifpm7223mxpg0s7cii702z72cpbwrjh6nlbnz"))
+ (patches (search-patches "gegl-CVE-2012-4433.patch"))))
(build-system gnu-build-system)
(arguments
`(;; More than just the one test disabled below now fails; disable them
@@ -121,14 +124,15 @@ buffers.")
(define-public gimp
(package
(name "gimp")
- (version "2.8.14")
+ (version "2.8.16")
(source (origin
(method url-fetch)
- (uri (string-append "http://download.gimp.org/pub/gimp/v2.8/gimp-"
- version ".tar.bz2"))
+ (uri (string-append "http://download.gimp.org/pub/gimp/v"
+ (version-major+minor version)
+ "/gimp-" version ".tar.bz2"))
(sha256
(base32
- "0bdj0l7a94jqhjnj40m9rqaf622wj905iximivb55iy98639aanq"))))
+ "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm"))))
(build-system gnu-build-system)
(outputs '("out"
"doc")) ;8 MiB of gtk-doc HTML
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index c5d53d1e0a..8384c76d66 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -97,7 +97,7 @@
#:use-module (gnu packages geeqie)
#:use-module (gnu packages gl)
#:use-module (gnu packages compression)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (gnu packages webkit)
@@ -1787,6 +1787,39 @@ gnome-terminal, but can also be used to embed a console/terminal in games,
editors, IDEs, etc.")
(license license:lgpl2.1+)))
+(define-public vte-ng
+ (package
+ (inherit vte)
+ (name "vte-ng")
+ (version "0.44.1.b")
+ (native-inputs
+ `(("gtk-doc" ,gtk-doc)
+ ("gperf" ,gperf)
+ ("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)
+ ,@(package-native-inputs vte)))
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/thestinger/"
+ name "/archive/" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1mhz4i1qkdlrs49vgm7nsrb60lry9v6wsgwsmji7fln1nyrp1pag"))))
+ (arguments
+ `(#:configure-flags '("CXXFLAGS=-Wformat=0")
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'bootstrap
+ (lambda _
+ (setenv "NOCONFIGURE" "true")
+ (zero? (system* "sh" "autogen.sh")))))))
+ (synopsis "Enhanced VTE terminal widget")
+ (description
+ "VTE is a library (libvte) implementing a terminal emulator widget for
+GTK+, this fork provides additional functions exposed for keyboard text
+selection and URL hints.")))
+
;; provides vte 2.90, required for some terminal emulators
;; tilda bug: https://github.com/lanoxx/tilda/issues/94
;; pantheon-terminal bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=788021
@@ -1820,7 +1853,10 @@ editors, IDEs, etc.")
name "-" version ".tar.xz"))
(sha256
(base32
- "1bmhahkf8wdsra9whd3k5l5z4rv7r58ksr8mshzajgq2ma0hpkw6"))))
+ "1bmhahkf8wdsra9whd3k5l5z4rv7r58ksr8mshzajgq2ma0hpkw6"))
+ (patches (search-patches
+ "vte-CVE-2012-2738-pt1.patch"
+ "vte-CVE-2012-2738-pt2.patch"))))
(arguments
'(#:configure-flags '("--disable-python")))
(native-inputs
diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index b5a2685f65..0819c485cb 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -266,10 +266,10 @@ privacy-preserving, decentralized public key infrastructure.")
(home-page "https://gnunet.org/")))
(define-public guile-gnunet ;GSoC 2015!
- (let ((commit "383eac2"))
+ (let ((commit "383eac2aab175d8d9ea5315c2f1c8a5055c76a52"))
(package
(name "guile-gnunet")
- (version (string-append "0.0." commit))
+ (version (string-append "0.0." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 7e52534b8f..4ffa3ac165 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -448,6 +448,8 @@ standards.")
)
#:modules ((ice-9 ftw)
+ (ice-9 rdelim)
+ (ice-9 match)
,@%gnu-build-system-modules)
#:phases
(modify-phases %standard-phases
@@ -509,7 +511,48 @@ standards.")
(format #t "configure flags: ~s~%" flags)
(zero? (apply system* bash
(string-append srcdir "/configure")
- flags))))))))
+ flags)))))
+ (add-before 'configure 'install-desktop-entry
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Install the '.desktop' file.
+ (define (swallow-%%-directives input output)
+ ;; Interpret '%%ifdef' directives found in the '.desktop' file.
+ (let loop ((state 'top))
+ (match (read-line input 'concat)
+ ((? eof-object?)
+ #t)
+ ((? string? line)
+ (cond ((string-prefix? "%%ifdef" line)
+ (loop 'ifdef))
+ ((string-prefix? "%%else" line)
+ (loop 'else))
+ ((string-prefix? "%%endif" line)
+ (loop 'top))
+ (else
+ (case state
+ ((top else)
+ (display line output)
+ (loop state))
+ (else
+ (loop state)))))))))
+
+ (let* ((out (assoc-ref outputs "out"))
+ (applications (string-append out "/share/applications")))
+ (call-with-input-file "debian/icecat.desktop.in"
+ (lambda (input)
+ (call-with-output-file "debian/icecat.desktop"
+ (lambda (output)
+ (swallow-%%-directives input output)))))
+
+ (substitute* "debian/icecat.desktop"
+ (("@MOZ_DISPLAY_NAME@")
+ "GNU IceCat")
+ (("^Exec=@MOZ_APP_NAME@")
+ (string-append "Exec=" out "/bin/icecat"))
+ (("@MOZ_APP_NAME@")
+ "icecat"))
+ (install-file "debian/icecat.desktop" applications)
+ #t))))))
(home-page "http://www.gnu.org/software/gnuzilla/")
(synopsis "Entirely free browser derived from Mozilla Firefox")
(description
diff --git a/gnu/packages/gprolog.scm b/gnu/packages/gprolog.scm
index 1d9b9943bc..87c833e947 100644
--- a/gnu/packages/gprolog.scm
+++ b/gnu/packages/gprolog.scm
@@ -38,7 +38,10 @@
"13miyas47bmijmadm68cbvb21n4s156gjafz7kfx9brk9djfkh0q"))))
(build-system gnu-build-system)
(arguments
- `(#:phases (alist-cons-before
+ `(#:configure-flags
+ (list (string-append
+ "--with-install-dir=" %output "/share/gprolog"))
+ #:phases (alist-cons-before
'configure 'change-dir-n-fix-shells
(lambda _
(chdir "src")
diff --git a/gnu/packages/grub.scm b/gnu/packages/grub.scm
index ec2feebbf4..31b270c0d8 100644
--- a/gnu/packages/grub.scm
+++ b/gnu/packages/grub.scm
@@ -25,6 +25,7 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages flex)
+ #:use-module (gnu packages disk)
#:use-module (gnu packages bison)
#:use-module (gnu packages gettext)
#:use-module (gnu packages fontutils)
@@ -99,11 +100,6 @@
;; Make the font visible.
(copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
(system* "gunzip" "unifont.bdf.gz")
-
- ;; TODO: Re-enable this test when we have Parted.
- (substitute* "tests/partmap_test.in"
- (("set -e") "exit 77"))
-
#t)))))
(inputs
`(;; ("lvm2" ,lvm2)
@@ -121,6 +117,7 @@
;; Dependencies for the test suite. The "real" QEMU is needed here,
;; because several targets are used.
+ ("parted" ,parted)
("qemu" ,qemu-for-tests)
("xorriso" ,xorriso)))
(home-page "http://www.gnu.org/software/grub/")
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 1fe52a4b83..e237c6a66d 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de>
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -51,6 +52,7 @@
#:use-module (gnu packages gnome)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
+ #:use-module (gnu packages libffi)
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
@@ -822,6 +824,60 @@ includes a tools to generate PDF presentations out of Org mode and Texinfo
documents.")
(license license:lgpl3+)))
+(define-public guile-gnome
+ (package
+ (name "guile-gnome")
+ (version "2.16.4")
+ (source (origin
+ (method url-fetch)
+ (uri
+ (string-append "mirror://gnu/" name
+ "/guile-gnome-platform/guile-gnome-platform-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1hqnqbb2lmr3hgbcv9kds1himn3av6h0lkk0zll8agcrsn7d9axd"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("atk" ,atk)
+ ;;("corba" ,corba) ; not packaged yet
+ ("gconf" ,gconf)
+ ("gobject-introspection" ,gobject-introspection)
+ ;;("gthread" ,gthread) ; not packaged yet
+ ("gnome-vfs" ,gnome-vfs)
+ ("gdk-pixbuf" ,gdk-pixbuf)
+ ("gtk+" ,gtk+-2)
+ ("libglade" ,libglade)
+ ("libgnome" ,libgnome)
+ ("libgnomecanvas" ,libgnomecanvas)
+ ("libgnomeui" ,libgnomeui)
+ ("pango" ,pango)
+ ("libffi" ,libffi)
+ ("glib" ,glib)))
+ (inputs `(("guile" ,guile-2.0)))
+ (propagated-inputs
+ `(("guile-cairo" ,guile-cairo)
+ ("g-wrap" ,g-wrap)
+ ("guile-lib" ,guile-lib)))
+ (arguments
+ `(#:tests? #f ;FIXME
+ #:phases (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* (find-files "." "^Makefile.in$")
+ (("guilesite :=.*guile/site" all)
+ (string-append all "/2.0")))
+ #t))))))
+ (outputs '("out" "debug"))
+ (synopsis "Guile interface for GTK+ programming for GNOME")
+ (description
+ "Includes guile-clutter, guile-gnome-gstreamer,
+guile-gnome-platform (GNOME developer libraries), and guile-gtksourceview.")
+ (home-page "http://www.gnu.org/software/guile-gnome/")
+ (license license:gpl2+)))
+
;;;
;;; C++ bindings.
;;;
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index c3e0a6100b..b043e03ea4 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -731,6 +732,28 @@ tool lex or flex for C/C++.")
"This library provides an easy way to define command line parsers.")
(license license:bsd-3)))
+(define-public ghc-concatenative
+ (package
+ (name "ghc-concatenative")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://hackage.haskell.org/package/concatenative/concatenative-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "05xwqvcdnk8bsyj698ab9jxpa1nk23pf3m7wi9mwmw0q8n99fngd"))))
+ (build-system haskell-build-system)
+ (home-page
+ "https://patch-tag.com/r/salazar/concatenative/snapshot/current/content/pretty")
+ (synopsis "Library for postfix control flow")
+ (description
+ "Concatenative gives Haskell Factor-style combinators and arrows for
+postfix notation. For more information on stack based languages, see
+@uref{http://concatenative.org}.")
+ (license license:bsd-3)))
+
(define-public ghc-happy
(package
(name "ghc-happy")
@@ -1979,6 +2002,31 @@ isn't available, portable implementations are used.")
both client and server code).")
(license license:bsd-3)))
+(define-public ghc-indents
+ (package
+ (name "ghc-indents")
+ (version "0.3.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://hackage.haskell.org/package/indents/indents-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "16lz21bp9j14xilnq8yym22p3saxvc9fsgfcf5awn2a6i6n527xn"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-parsec" ,ghc-parsec)
+ ("ghc-concatenative" ,ghc-concatenative)
+ ("ghc-mtl" ,ghc-mtl)))
+ (home-page "http://patch-tag.com/r/salazar/indents")
+ (synopsis "Indentation sensitive parser-combinators for parsec")
+ (description
+ "This library provides functions for use in parsing indentation sensitive
+contexts. It parses blocks of lines all indented to the same level as well as
+lines continued at an indented level below.")
+ (license license:bsd-3)))
+
(define-public ghc-iproute
(package
(name "ghc-iproute")
@@ -3150,6 +3198,27 @@ to annotate the text with semantic information, which can later be rendered in
a variety of ways.")
(license license:bsd-3)))
+(define-public ghc-wl-pprint
+ (package
+ (name "ghc-wl-pprint")
+ (version "1.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://hackage.haskell.org/package/wl-pprint/wl-pprint-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "166zvk4zwn2zaa9kx66m1av38m34qp6h4i65bri2sfnxgvx0700r"))))
+ (build-system haskell-build-system)
+ (home-page "http://hackage.haskell.org/package/wl-pprint")
+ (synopsis "Wadler/Leijen pretty printer")
+ (description
+ "This is a pretty printing library based on Wadler's paper @i{A Prettier
+Printer}. This version allows the library user to declare overlapping
+instances of the @code{Pretty} class.")
+ (license license:bsd-3)))
+
(define-public ghc-ansi-wl-pprint
(package
(name "ghc-ansi-wl-pprint")
@@ -4856,6 +4925,39 @@ for Haskell, optimized for ease of use and high performance. (A note on
naming: in Greek mythology, Aeson was the father of Jason.)")
(license license:bsd-3)))
+(define-public ghc-aeson-pretty
+ (package
+ (name "ghc-aeson-pretty")
+ (version "0.7.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://hackage.haskell.org/package/aeson-pretty/aeson-pretty-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "03ap81853qi8yd9kdgczllrrni23a6glsfxrwj8zab6ipjrbh234"))))
+ (build-system haskell-build-system)
+ (inputs
+ `(("ghc-aeson" ,ghc-aeson)
+ ("ghc-vector" ,ghc-vector)
+ ("ghc-text" ,ghc-text)
+ ("ghc-unordered-containers"
+ ,ghc-unordered-containers)
+ ("ghc-attoparsec" ,ghc-attoparsec)
+ ("ghc-cmdargs" ,ghc-cmdargs)))
+ (home-page "http://github.com/informatikr/aeson-pretty")
+ (synopsis "JSON pretty-printing library and command-line tool")
+ (description
+ "This package provides a JSON pretty-printing library compatible with aeson
+as well as a command-line tool to improve readabilty of streams of JSON data.
+The library provides the function @code{encodePretty}. It is a drop-in
+replacement for aeson's @code{encode} function, producing JSON-ByteStrings for
+human readers. The command-line tool reads JSON from stdin and writes
+prettified JSON to stdout. It also offers a complementary \"compact\"-mode,
+essentially the opposite of pretty-printing.")
+ (license license:bsd-3)))
+
(define-public ghc-wai
(package
(name "ghc-wai")
@@ -6242,6 +6344,31 @@ definition lists, tables, and other features. A compatibility mode is
provided for those who need a drop-in replacement for Markdown.pl.")
(license license:gpl2+)))
+(define-public ghc-union-find
+ (package
+ (name "ghc-union-find")
+ (version "0.2")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://hackage.haskell.org/package/union-find/union-find-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1v7hj42j9w6jlzi56jg8rh4p58gfs1c5dx30wd1qqvn0p0mnihp6"))))
+ (build-system haskell-build-system)
+ (home-page "http://github.com/nominolo/union-find")
+ (synopsis "Efficient union and equivalence testing of sets")
+ (description
+ "The Union/Find algorithm implements these operations in (effectively)
+constant-time:
+@enumerate
+@item Check whether two elements are in the same equivalence class.
+@item Create a union of two equivalence classes.
+@item Look up the descriptor of the equivalence class.
+@end enumerate\n")
+ (license license:bsd-3)))
+
(define-public idris
(package
(name "idris")
diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm
index 7a0a158899..2b2e162107 100644
--- a/gnu/packages/hurd.scm
+++ b/gnu/packages/hurd.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;; Copyright © 2014, 2015, 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,6 +22,7 @@
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system trivial)
#:use-module (gnu packages flex)
#:use-module (gnu packages bison)
#:use-module (gnu packages perl)
@@ -185,3 +186,28 @@ Library and other user programs.")
"This package provides libihash, needed to build the GNU C
Library for GNU/Hurd.")
(license gpl2+)))
+
+(define-public hurd-core-headers
+ (package
+ (name "hurd-core-headers")
+ (version (package-version hurd-headers))
+ (source #f)
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build union))
+ #:builder (begin
+ (use-modules (ice-9 match)
+ (guix build union))
+ (match %build-inputs
+ (((names . directories) ...)
+ (union-build (assoc-ref %outputs "out")
+ directories))))))
+ (inputs `(("gnumach-headers" ,gnumach-headers)
+ ("hurd-headers" ,hurd-headers)
+ ("hurd-minimal" ,hurd-minimal)))
+ (synopsis "Union of the Hurd headers and libraries")
+ (description
+ "This package contains the union of the Mach and Hurd headers and the
+Hurd-minimal package which are needed for both glibc and GCC.")
+ (home-page (package-home-page hurd-headers))
+ (license (package-license hurd-headers))))
diff --git a/gnu/packages/idutils.scm b/gnu/packages/idutils.scm
index 7a8e1c6752..63760c84e9 100644
--- a/gnu/packages/idutils.scm
+++ b/gnu/packages/idutils.scm
@@ -37,7 +37,7 @@
"1hmai3422iaqnp34kkzxdnywl7n7pvlxp11vrw66ybxn9wxg90c1"))
(patches (search-patches "diffutils-gets-undeclared.patch"))))
(build-system gnu-build-system)
- (native-inputs `(("emacs" ,emacs-no-x)))
+ (native-inputs `(("emacs" ,emacs-minimal)))
(home-page "http://www.gnu.org/software/idutils/")
(synopsis "Identifier database utilities")
(description
diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm
index 3651e97f3e..0ab3f60c5e 100644
--- a/gnu/packages/image.scm
+++ b/gnu/packages/image.scm
@@ -693,7 +693,8 @@ channels.")
"1zd850nn7nvkkhasrv7kn17kzgslr5ry933v6db62s4lr0zzlbv8"))
;; Backported from upstream:
;; https://github.com/DentonW/DevIL/commit/724194d7a9a91221a564579f64bdd6f0abd64219.patch
- (patches (search-patches "devil-fix-libpng.patch"))
+ (patches (search-patches "devil-fix-libpng.patch"
+ "devil-CVE-2009-3994.patch"))
(modules '((guix build utils)))
(snippet
;; Fix old lcms include directives and lib flags.
@@ -766,3 +767,37 @@ implementation of the codec specified in the JPEG-2000 Part-1 standard (i.e.,
ISO/IEC 15444-1).")
(home-page "https://www.ece.uvic.ca/~frodo/jasper/")
(license (license:x11-style "file://LICENSE"))))
+
+(define-public zimg
+ (package
+ (name "zimg")
+ (version "2.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/sekrit-twc/zimg/archive/"
+ "release-" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1hqp1gcsa2zhypms5dnasb1srjgxdqm7cip3w5i571kk9nxkn289"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (arguments
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'autogen
+ (lambda _
+ (zero? (system* "sh" "autogen.sh")))))))
+ (synopsis "Scaling, colorspace conversion, and dithering library")
+ (description "Zimg implements the commonly required image processing basics
+of scaling, colorspace conversion, and depth conversion. A simple API enables
+conversion between any supported formats to operate with minimal knowledge from
+the programmer.")
+ (home-page "https://github.com/sekrit-twc/zimg")
+ ;; test/extra/ contains musl-libm,
+ ;; which is MIT/expat licensed, but only used for tests
+ (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2
diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm
index a7bbe0cce0..5231200919 100644
--- a/gnu/packages/imagemagick.scm
+++ b/gnu/packages/imagemagick.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -40,14 +41,14 @@
(define-public imagemagick
(package
(name "imagemagick")
- (version "6.9.4-4")
+ (version "6.9.4-7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
- "005nnp0masv59yfcdip6qld86567zjbz59c9lkcqrxclm27vmx0p"))))
+ "11jcbc9phx37m7ra4v3qsfa2iqh3srsvxplxz38h911jvgfchkzm"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-frozenpaths")
@@ -154,7 +155,7 @@ script.")
(define-public graphicsmagick
(package
(name "graphicsmagick")
- (version "1.3.23")
+ (version "1.3.24")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ftp.graphicsmagick.org/pub/"
@@ -162,7 +163,7 @@ script.")
"/GraphicsMagick-" version ".tar.xz"))
(sha256
(base32
- "03g6l2h8cmf231y1vma0z7x85070jm1ysgs9ppqcd3jj56jka9gx"))))
+ "1q40w5hcl8rcpszm0r7rpr3a9lj390p39zfvavkvlgxyyk7bmgsj"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index ff785efad6..fa6109a07d 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -181,15 +181,16 @@ build process and its dependencies, whereas Make uses Makefile format.")
(define-public icedtea-6
(package
(name "icedtea")
- (version "1.13.10")
+ (version "1.13.11")
(source (origin
(method url-fetch)
(uri (string-append
"http://icedtea.wildebeest.org/download/source/icedtea6-"
version ".tar.xz"))
+ (patches (search-patches "icedtea-remove-overrides.patch"))
(sha256
(base32
- "1mq08sfyfjlfw0c1czjs47303zv4h91s1jc0nhdlra4rbbx0g2d0"))
+ "1grki39a4rf8n74zc0iglcggxxbpniyfh1gk1lb10p63zvvcsvjj"))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile.in"
@@ -539,6 +540,7 @@ build process and its dependencies, whereas Make uses Makefile format.")
("mit-krb5" ,mit-krb5)
("nss" ,nss)
("libx11" ,libx11)
+ ("libxcomposite" ,libxcomposite)
("libxt" ,libxt)
("libxtst" ,libxtst)
("libxi" ,libxi)
@@ -552,10 +554,10 @@ build process and its dependencies, whereas Make uses Makefile format.")
("openjdk6-src"
,(origin
(method url-fetch)
- (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b38-20_jan_2016.tar.gz")
+ (uri "https://java.net/downloads/openjdk6/openjdk-6-src-b39-03_may_2016.tar.gz")
(sha256
(base32
- "1fapj9w4ahzf5nwvdgi1dsxjyh9dqbcvf9638r60h1by13wjqk5p"))))
+ "1brxbsgwcj4js26y5lk6capc3pvghgjidvv9cavw6z8n7c7aw8af"))))
("lcms" ,lcms)
("zlib" ,zlib)
("gtk" ,gtk+-2)
diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index 4e6b87116a..d358a003e7 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -43,8 +43,8 @@
#:use-module (ice-9 match))
(define libuv-julia
- (let ((commit "07730c4bd595b4d45a498a8ee0bcd53878ff7c10")
- (revision "2"))
+ (let ((commit "efb40768b7c7bd9f173a7868f74b92b1c5a61a0e")
+ (revision "3"))
(package (inherit libuv)
(name "libuv-julia")
(version (string-append "0.11.26." revision "-" (string-take commit 8)))
@@ -56,7 +56,7 @@
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
- "1r0d4wb41w8k3bi9sjr7kapk1ag131ss2fbqa4jz4gnrzvw94sqx"))))
+ "16k6pm2jl0ymz5j4ldxn94imdimahqqfd2izgr3zf1vwyyay77w3"))))
(build-system gnu-build-system)
(arguments
(substitute-keyword-arguments (package-arguments libuv)
@@ -68,7 +68,7 @@
(define-public julia
(package
(name "julia")
- (version "0.4.3")
+ (version "0.4.5")
(source (origin
(method url-fetch)
(uri (string-append
@@ -76,7 +76,7 @@
version "/julia-" version "-full.tar.gz"))
(sha256
(base32
- "1i8k847d8n9v37xg69grpl51dysx36p0phwf0d1qxpsqixdg579b"))))
+ "1nbi78fav5f4zj5332iwm4mfk0qhd5qh61z881q69rvp7b163wyb"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
diff --git a/gnu/packages/linux-libre-4.5-i686.conf b/gnu/packages/linux-libre-4.6-i686.conf
index 3d09b49117..25cb00a6bd 100644
--- a/gnu/packages/linux-libre-4.5-i686.conf
+++ b/gnu/packages/linux-libre-4.6-i686.conf
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.5.0-gnu Kernel Configuration
+# Linux/x86 4.6.0-gnu Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -40,6 +40,7 @@ CONFIG_X86_32_SMP=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
CONFIG_PGTABLE_LEVELS=3
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
@@ -195,6 +196,8 @@ CONFIG_SYSFS_SYSCALL=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
@@ -378,6 +381,7 @@ CONFIG_X86_FEATURE_NAMES=y
CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_MPPARSE=y
# CONFIG_X86_BIGSMP is not set
+# CONFIG_GOLDFISH is not set
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_GOLDFISH is not set
CONFIG_X86_INTEL_MID=y
@@ -481,6 +485,7 @@ CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
# CONFIG_NOHIGHMEM is not set
@@ -765,10 +770,21 @@ CONFIG_PCI_IOV=y
CONFIG_PCI_PRI=y
CONFIG_PCI_PASID=y
CONFIG_PCI_LABEL=y
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_COMPAQ=m
+CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
+CONFIG_HOTPLUG_PCI_IBM=m
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_SHPC=m
#
# PCI host controller drivers
#
+# CONFIG_PCIE_DW_PLAT is not set
CONFIG_ISA_DMA_API=y
CONFIG_ISA=y
CONFIG_EISA=y
@@ -802,16 +818,6 @@ CONFIG_I82365=m
CONFIG_TCIC=m
CONFIG_PCMCIA_PROBE=y
CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_COMPAQ=m
-CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM=y
-CONFIG_HOTPLUG_PCI_IBM=m
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-CONFIG_HOTPLUG_PCI_CPCI=y
-CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
-CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
-CONFIG_HOTPLUG_PCI_SHPC=m
CONFIG_RAPIDIO=y
CONFIG_RAPIDIO_TSI721=m
CONFIG_RAPIDIO_DISC_TIMEOUT=30
@@ -819,6 +825,7 @@ CONFIG_RAPIDIO_DISC_TIMEOUT=30
CONFIG_RAPIDIO_DMA_ENGINE=y
# CONFIG_RAPIDIO_DEBUG is not set
CONFIG_RAPIDIO_ENUM_BASIC=m
+CONFIG_RAPIDIO_MPORT_CDEV=m
#
# RapidIO Switch drivers
@@ -896,7 +903,6 @@ CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
@@ -1445,11 +1451,15 @@ CONFIG_NET_ACT_CSUM=m
CONFIG_NET_ACT_VLAN=m
CONFIG_NET_ACT_BPF=m
CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
# CONFIG_NET_CLS_IND is not set
CONFIG_NET_SCH_FIFO=y
CONFIG_DCB=y
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_ADV_BATMAN_V is not set
CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
@@ -1461,7 +1471,6 @@ CONFIG_OPENVSWITCH_VXLAN=m
CONFIG_OPENVSWITCH_GENEVE=m
CONFIG_VSOCKETS=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
CONFIG_NETLINK_DIAG=m
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
@@ -1525,6 +1534,14 @@ CONFIG_CAN_CALC_BITTIMING=y
CONFIG_CAN_LEDS=y
CONFIG_CAN_JANZ_ICAN3=m
CONFIG_PCH_CAN=m
+CONFIG_CAN_C_CAN=m
+CONFIG_CAN_C_CAN_PLATFORM=m
+CONFIG_CAN_C_CAN_PCI=m
+CONFIG_CAN_CC770=m
+CONFIG_CAN_CC770_ISA=m
+CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_IFI_CANFD=m
+CONFIG_CAN_M_CAN=m
CONFIG_CAN_SJA1000=m
CONFIG_CAN_SJA1000_ISA=m
CONFIG_CAN_SJA1000_PLATFORM=m
@@ -1536,13 +1553,8 @@ CONFIG_CAN_PEAK_PCIEC=y
CONFIG_CAN_KVASER_PCI=m
CONFIG_CAN_PLX_PCI=m
CONFIG_CAN_TSCAN1=m
-CONFIG_CAN_C_CAN=m
-CONFIG_CAN_C_CAN_PLATFORM=m
-CONFIG_CAN_C_CAN_PCI=m
-CONFIG_CAN_M_CAN=m
-CONFIG_CAN_CC770=m
-CONFIG_CAN_CC770_ISA=m
-CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_SOFTING=m
+CONFIG_CAN_SOFTING_CS=m
#
# CAN SPI interfaces
@@ -1558,8 +1570,6 @@ CONFIG_CAN_GS_USB=m
CONFIG_CAN_KVASER_USB=m
CONFIG_CAN_PEAK_USB=m
CONFIG_CAN_8DEV_USB=m
-CONFIG_CAN_SOFTING=m
-CONFIG_CAN_SOFTING_CS=m
# CONFIG_CAN_DEBUG_DEVICES is not set
CONFIG_IRDA=m
@@ -1630,6 +1640,7 @@ CONFIG_BT_HIDP=m
CONFIG_BT_HS=y
CONFIG_BT_LE=y
CONFIG_BT_6LOWPAN=m
+# CONFIG_BT_LEDS is not set
# CONFIG_BT_SELFTEST is not set
CONFIG_BT_DEBUGFS=y
@@ -1653,6 +1664,7 @@ CONFIG_BT_HCIUART_3WIRE=y
CONFIG_BT_HCIUART_INTEL=y
CONFIG_BT_HCIUART_BCM=y
CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
@@ -1668,6 +1680,7 @@ CONFIG_BT_WILINK=m
CONFIG_AF_RXRPC=m
# CONFIG_AF_RXRPC_DEBUG is not set
CONFIG_RXKAD=m
+CONFIG_AF_KCM=m
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
@@ -1678,7 +1691,6 @@ CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
CONFIG_CFG80211_DEBUGFS=y
@@ -1763,6 +1775,9 @@ CONFIG_NFC_S3FWRN5=m
CONFIG_NFC_S3FWRN5_I2C=m
CONFIG_NFC_ST95HF=m
CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
#
# Device Drivers
@@ -2031,6 +2046,7 @@ CONFIG_VIRTIO_BLK=y
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
CONFIG_BLK_DEV_NVME=m
# CONFIG_BLK_DEV_NVME_SCSI is not set
@@ -2063,13 +2079,17 @@ CONFIG_HMC6352=m
CONFIG_DS1682=m
CONFIG_TI_DAC7512=m
CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=y
+CONFIG_BMP085=m
CONFIG_BMP085_I2C=m
CONFIG_BMP085_SPI=m
CONFIG_PCH_PHUB=m
CONFIG_USB_SWITCH_FSA9480=m
CONFIG_LATTICE_ECP3_CONFIG=m
CONFIG_SRAM=y
+CONFIG_PANEL=m
+CONFIG_PANEL_PARPORT=0
+CONFIG_PANEL_PROFILE=5
+# CONFIG_PANEL_CHANGE_MESSAGE is not set
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -2110,6 +2130,10 @@ CONFIG_VMWARE_VMCI=m
#
#
+# VOP Bus Driver
+#
+
+#
# Intel MIC Host Driver
#
@@ -2124,6 +2148,10 @@ CONFIG_VMWARE_VMCI=m
#
# Intel MIC Coprocessor State Management (COSM) Drivers
#
+
+#
+# VOP Driver
+#
CONFIG_ECHO=m
# CONFIG_CXL_BASE is not set
# CONFIG_CXL_KERNEL_API is not set
@@ -2431,7 +2459,6 @@ CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
CONFIG_DM_CACHE_SMQ=m
CONFIG_DM_CACHE_CLEANER=m
CONFIG_DM_ERA=m
@@ -2496,6 +2523,7 @@ CONFIG_MACVTAP=m
CONFIG_IPVLAN=m
CONFIG_VXLAN=m
CONFIG_GENEVE=m
+CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
@@ -2619,6 +2647,7 @@ CONFIG_TIGON3=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNX2X_VXLAN=y
+# CONFIG_BNX2X_GENEVE is not set
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_NET_VENDOR_BROCADE=y
@@ -2630,6 +2659,7 @@ CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3=m
CONFIG_CHELSIO_T4=m
CONFIG_CHELSIO_T4_DCB=y
+# CONFIG_CHELSIO_T4_UWIRE is not set
CONFIG_CHELSIO_T4_FCOE=y
CONFIG_CHELSIO_T4VF=m
CONFIG_NET_VENDOR_CIRRUS=y
@@ -2673,6 +2703,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
CONFIG_IGBVF=m
@@ -2694,6 +2725,7 @@ CONFIG_NET_VENDOR_I825XX=y
CONFIG_JME=m
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKGE_GENESIS=y
@@ -2707,6 +2739,8 @@ CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
CONFIG_MLX5_CORE=m
CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_EN_DCB=y
+CONFIG_MLX5_CORE_EN_VXLAN=y
CONFIG_MLXSW_CORE=m
CONFIG_MLXSW_CORE_HWMON=y
CONFIG_MLXSW_PCI=m
@@ -3041,6 +3075,7 @@ CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
# CONFIG_IWLWIFI_UAPSD is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
#
# Debugging Options
@@ -3158,7 +3193,6 @@ CONFIG_WL1251_SDIO=m
CONFIG_WL12XX=m
CONFIG_WL18XX=m
CONFIG_WLCORE=m
-CONFIG_WLCORE_SPI=m
CONFIG_WLCORE_SDIO=m
CONFIG_WILINK_PLATFORM_DATA=y
CONFIG_WLAN_VENDOR_ZYDAS=y
@@ -3302,13 +3336,6 @@ CONFIG_HISAX_ST5481=m
CONFIG_HISAX_HFCUSB=m
CONFIG_HISAX_HFC4S8S=m
CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
-CONFIG_ISDN_DRV_ICN=m
-CONFIG_ISDN_DRV_PCBIT=m
-CONFIG_ISDN_DRV_ACT2000=m
CONFIG_ISDN_CAPI=m
CONFIG_CAPI_TRACE=y
CONFIG_ISDN_CAPI_CAPI20=m
@@ -3421,6 +3448,7 @@ CONFIG_KEYBOARD_CROS_EC=m
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_CYPRESS=y
@@ -3519,6 +3547,7 @@ CONFIG_TOUCHSCREEN_WACOM_I2C=m
CONFIG_TOUCHSCREEN_MAX11801=m
CONFIG_TOUCHSCREEN_MCS5000=m
CONFIG_TOUCHSCREEN_MMS114=m
+CONFIG_TOUCHSCREEN_MELFAS_MIP4=m
CONFIG_TOUCHSCREEN_MTOUCH=m
CONFIG_TOUCHSCREEN_INEXIO=m
CONFIG_TOUCHSCREEN_INTEL_MID=m
@@ -3629,6 +3658,13 @@ CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_DRV260X_HAPTICS=m
CONFIG_INPUT_DRV2665_HAPTICS=m
CONFIG_INPUT_DRV2667_HAPTICS=m
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_SPI=m
+CONFIG_RMI4_2D_SENSOR=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
#
# Hardware I/O ports
@@ -3713,6 +3749,7 @@ CONFIG_SERIAL_8250_DW=m
CONFIG_SERIAL_8250_RT288X=y
CONFIG_SERIAL_8250_FINTEK=m
CONFIG_SERIAL_8250_MID=m
+CONFIG_SERIAL_8250_MOXA=m
#
# Non-8250 serial port support
@@ -3744,6 +3781,7 @@ CONFIG_SERIAL_RP2=m
CONFIG_SERIAL_RP2_NR_UARTS=32
CONFIG_SERIAL_FSL_LPUART=m
CONFIG_SERIAL_MEN_Z135=m
+# CONFIG_SERIAL_MVEBU_UART is not set
CONFIG_TTY_PRINTK=y
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
@@ -3913,14 +3951,18 @@ CONFIG_SPI_MASTER=y
# SPI Master Controller Drivers
#
CONFIG_SPI_ALTERA=m
+CONFIG_SPI_AXI_SPI_ENGINE=m
CONFIG_SPI_BITBANG=m
CONFIG_SPI_BUTTERFLY=m
CONFIG_SPI_CADENCE=m
+CONFIG_SPI_DESIGNWARE=m
+CONFIG_SPI_DW_PCI=m
+CONFIG_SPI_DW_MID_DMA=y
+CONFIG_SPI_DW_MMIO=m
CONFIG_SPI_DLN2=m
CONFIG_SPI_GPIO=m
CONFIG_SPI_LM70_LLP=m
CONFIG_SPI_OC_TINY=m
-CONFIG_SPI_PXA2XX_DMA=y
CONFIG_SPI_PXA2XX=m
CONFIG_SPI_PXA2XX_PCI=m
CONFIG_SPI_SC18IS602=m
@@ -3928,10 +3970,6 @@ CONFIG_SPI_TOPCLIFF_PCH=m
CONFIG_SPI_XCOMM=m
# CONFIG_SPI_XILINX is not set
CONFIG_SPI_ZYNQMP_GQSPI=m
-CONFIG_SPI_DESIGNWARE=m
-CONFIG_SPI_DW_PCI=m
-CONFIG_SPI_DW_MID_DMA=y
-CONFIG_SPI_DW_MMIO=m
#
# SPI Protocol Masters
@@ -4012,18 +4050,21 @@ CONFIG_GPIO_DWAPB=m
CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_ICH=m
CONFIG_GPIO_LYNXPOINT=y
+CONFIG_GPIO_MENZ127=m
CONFIG_GPIO_VX855=m
CONFIG_GPIO_ZX=y
#
# Port-mapped I/O GPIO drivers
#
+CONFIG_GPIO_104_DIO_48E=m
CONFIG_GPIO_104_IDIO_16=m
CONFIG_GPIO_104_IDI_48=m
CONFIG_GPIO_F7188X=m
CONFIG_GPIO_IT87=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_SCH311X=m
+CONFIG_GPIO_WS16C48=m
#
# I2C GPIO expanders
@@ -4034,6 +4075,7 @@ CONFIG_GPIO_MAX732X=m
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
CONFIG_GPIO_SX150X=y
+CONFIG_GPIO_TPIC2810=m
#
# MFD GPIO expanders
@@ -4052,6 +4094,8 @@ CONFIG_GPIO_MSIC=y
CONFIG_GPIO_PALMAS=y
CONFIG_GPIO_RC5T583=y
CONFIG_GPIO_TIMBERDALE=y
+CONFIG_GPIO_TPS65086=m
+CONFIG_GPIO_TPS65218=m
CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
@@ -4076,6 +4120,7 @@ CONFIG_GPIO_RDC321X=m
#
CONFIG_GPIO_MAX7301=m
CONFIG_GPIO_MC33880=m
+CONFIG_GPIO_PISOSR=m
#
# SPI or I2C GPIO expanders
@@ -4231,6 +4276,7 @@ CONFIG_SENSORS_JC42=m
CONFIG_SENSORS_POWR1220=m
CONFIG_SENSORS_LINEAGE=m
CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
CONFIG_SENSORS_LTC4151=m
CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4222=m
@@ -4388,6 +4434,7 @@ CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_EBC_C384_WDT=m
CONFIG_F71808E_WDT=m
CONFIG_SP5100_TCO=m
CONFIG_SBC_FITPC2_WATCHDOG=m
@@ -4422,7 +4469,8 @@ CONFIG_W83877F_WDT=m
CONFIG_W83977F_WDT=m
CONFIG_MACHZ_WDT=m
CONFIG_SBC_EPX_C3_WATCHDOG=m
-CONFIG_BCM7038_WDT=m
+CONFIG_INTEL_MEI_WDT=m
+CONFIG_NI903X_WDT=m
CONFIG_MEN_A21_WDT=m
CONFIG_XEN_WDT=m
@@ -4487,7 +4535,8 @@ CONFIG_MFD_AS3711=y
CONFIG_PMIC_ADP5520=y
CONFIG_MFD_AAT2870_CORE=y
CONFIG_MFD_BCM590XX=m
-CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
CONFIG_MFD_CROS_EC=m
CONFIG_MFD_CROS_EC_I2C=m
CONFIG_MFD_CROS_EC_SPI=m
@@ -4557,6 +4606,7 @@ CONFIG_MFD_PALMAS=y
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+CONFIG_MFD_TPS65086=m
CONFIG_MFD_TPS65090=y
CONFIG_MFD_TPS65217=m
CONFIG_MFD_TPS65218=m
@@ -4658,6 +4708,7 @@ CONFIG_REGULATOR_TPS6105X=m
CONFIG_REGULATOR_TPS62360=m
CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65086=m
CONFIG_REGULATOR_TPS65090=m
CONFIG_REGULATOR_TPS65217=m
CONFIG_REGULATOR_TPS6524X=m
@@ -4985,7 +5036,6 @@ CONFIG_DVB_NETUP_UNIDVB=m
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_VIDEO_CAFE_CCIC=m
CONFIG_VIDEO_VIA_CAMERA=m
-CONFIG_VIDEO_TIMBERDALE=m
CONFIG_SOC_CAMERA=m
CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
@@ -5378,6 +5428,7 @@ CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
@@ -5399,6 +5450,11 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_CIK is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMD_POWERPLAY is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
@@ -5406,6 +5462,7 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_I810=m
CONFIG_DRM_I915=m
# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+CONFIG_DRM_I915_USERPTR=y
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
CONFIG_DRM_VIA=m
@@ -5624,11 +5681,13 @@ CONFIG_SOUND_OSS_CORE=y
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
+CONFIG_SND_PCM_ELD=y
CONFIG_SND_DMAENGINE_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_COMPRESS_OFFLOAD=m
CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
@@ -5917,11 +5976,14 @@ CONFIG_SND_SOC_CS4349=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES8328=m
CONFIG_SND_SOC_GTM601=m
+CONFIG_SND_SOC_HDAC_HDMI=m
CONFIG_SND_SOC_INNO_RK3036=m
CONFIG_SND_SOC_MAX98090=m
CONFIG_SND_SOC_MAX98357A=m
CONFIG_SND_SOC_PCM1681=m
CONFIG_SND_SOC_PCM179X=m
+CONFIG_SND_SOC_PCM179X_I2C=m
+CONFIG_SND_SOC_PCM179X_SPI=m
CONFIG_SND_SOC_PCM3168A=m
CONFIG_SND_SOC_PCM3168A_I2C=m
CONFIG_SND_SOC_PCM3168A_SPI=m
@@ -5931,6 +5993,7 @@ CONFIG_SND_SOC_PCM512x_SPI=m
CONFIG_SND_SOC_RL6231=m
CONFIG_SND_SOC_RL6347A=m
CONFIG_SND_SOC_RT286=m
+CONFIG_SND_SOC_RT5616=m
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5640=m
CONFIG_SND_SOC_RT5645=m
@@ -6010,6 +6073,7 @@ CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
CONFIG_HID_CORSAIR=m
CONFIG_HID_PRODIKEYS=m
+CONFIG_HID_CMEDIA=m
CONFIG_HID_CP2112=m
CONFIG_HID_CYPRESS=m
CONFIG_HID_DRAGONRISE=m
@@ -6592,6 +6656,7 @@ CONFIG_INFINIBAND_MTHCA=m
CONFIG_INFINIBAND_CXGB3=m
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB4=m
+CONFIG_INFINIBAND_I40IW=m
CONFIG_MLX4_INFINIBAND=m
CONFIG_MLX5_INFINIBAND=m
CONFIG_INFINIBAND_NES=m
@@ -6655,10 +6720,10 @@ CONFIG_RTC_DRV_88PM80X=m
CONFIG_RTC_DRV_ABB5ZES3=m
CONFIG_RTC_DRV_ABX80X=m
CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
CONFIG_RTC_DRV_DS1374=m
CONFIG_RTC_DRV_DS1374_WDT=y
CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
CONFIG_RTC_DRV_LP8788=m
CONFIG_RTC_DRV_MAX6900=m
CONFIG_RTC_DRV_MAX8907=m
@@ -6670,16 +6735,15 @@ CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m
CONFIG_RTC_DRV_ISL12057=m
CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PALMAS=m
-CONFIG_RTC_DRV_PCF2127=m
CONFIG_RTC_DRV_PCF8523=m
-CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF85063=m
+CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
CONFIG_RTC_DRV_M41T80_WDT=y
CONFIG_RTC_DRV_BQ32K=m
CONFIG_RTC_DRV_TWL4030=m
+CONFIG_RTC_DRV_PALMAS=m
CONFIG_RTC_DRV_TPS6586X=m
CONFIG_RTC_DRV_TPS65910=m
CONFIG_RTC_DRV_TPS80031=m
@@ -6691,6 +6755,7 @@ CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_S5M=m
@@ -6703,13 +6768,20 @@ CONFIG_RTC_DRV_DS1305=m
CONFIG_RTC_DRV_DS1343=m
CONFIG_RTC_DRV_DS1347=m
CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RX4581=m
+CONFIG_RTC_DRV_RX6110=m
CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
+CONFIG_RTC_DRV_MAX6902=m
CONFIG_RTC_DRV_PCF2123=m
-CONFIG_RTC_DRV_RX4581=m
CONFIG_RTC_DRV_MCP795=m
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
#
# Platform RTC drivers
@@ -6768,6 +6840,8 @@ CONFIG_DMA_ACPI=y
CONFIG_INTEL_IDMA64=m
CONFIG_PCH_DMA=m
CONFIG_TIMB_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
CONFIG_DW_DMAC_CORE=m
CONFIG_DW_DMAC=m
CONFIG_DW_DMAC_PCI=m
@@ -6803,6 +6877,7 @@ CONFIG_VFIO_PCI=m
CONFIG_VFIO_PCI_VGA=y
CONFIG_VFIO_PCI_MMAP=y
CONFIG_VFIO_PCI_INTX=y
+CONFIG_VFIO_PCI_IGD=y
CONFIG_IRQ_BYPASS_MANAGER=m
CONFIG_VIRT_DRIVERS=y
CONFIG_VIRTIO=y
@@ -6993,10 +7068,6 @@ CONFIG_COMEDI_ISADMA=m
CONFIG_COMEDI_NI_LABPC=m
CONFIG_COMEDI_NI_LABPC_ISADMA=m
CONFIG_COMEDI_NI_TIO=m
-CONFIG_PANEL=m
-CONFIG_PANEL_PARPORT=0
-CONFIG_PANEL_PROFILE=5
-# CONFIG_PANEL_CHANGE_MESSAGE is not set
CONFIG_RTL8192U=m
CONFIG_RTLLIB=m
CONFIG_RTLLIB_CRYPTO_CCMP=m
@@ -7079,13 +7150,6 @@ CONFIG_TSL2583=m
CONFIG_TSL2x7x=m
#
-# Magnetometer sensors
-#
-CONFIG_SENSORS_HMC5843=m
-CONFIG_SENSORS_HMC5843_I2C=m
-CONFIG_SENSORS_HMC5843_SPI=m
-
-#
# Active energy metering IC
#
CONFIG_ADE7753=m
@@ -7106,7 +7170,6 @@ CONFIG_AD2S1210=m
#
# Triggers - standalone
#
-CONFIG_IIO_PERIODIC_RTC_TRIGGER=m
CONFIG_FB_SM750=m
CONFIG_FB_XGI=m
@@ -7129,12 +7192,11 @@ CONFIG_SPEAKUP_SYNTH_SOFT=m
CONFIG_SPEAKUP_SYNTH_SPKOUT=m
CONFIG_SPEAKUP_SYNTH_TXPRT=m
CONFIG_SPEAKUP_SYNTH_DUMMY=m
-CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_STAGING_MEDIA=y
CONFIG_I2C_BCM2048=m
CONFIG_DVB_CXD2099=m
CONFIG_DVB_MN88472=m
-CONFIG_DVB_MN88473=m
+CONFIG_VIDEO_TIMBERDALE=m
CONFIG_LIRC_STAGING=y
CONFIG_LIRC_BT829=m
CONFIG_LIRC_IMON=m
@@ -7149,22 +7211,18 @@ CONFIG_STAGING_RDMA=m
#
# Android
#
-CONFIG_WIMAX_GDM72XX=m
-CONFIG_WIMAX_GDM72XX_QOS=y
-CONFIG_WIMAX_GDM72XX_K_MODE=y
-CONFIG_WIMAX_GDM72XX_WIMAX2=y
-CONFIG_WIMAX_GDM72XX_USB=y
-# CONFIG_WIMAX_GDM72XX_SDIO is not set
-CONFIG_WIMAX_GDM72XX_USB_PM=y
CONFIG_LTE_GDM724X=m
CONFIG_FIREWIRE_SERIAL=m
CONFIG_FWTTY_MAX_TOTAL_PORTS=64
CONFIG_FWTTY_MAX_CARD_PORTS=32
CONFIG_MTD_SPINAND_MT29F=m
CONFIG_MTD_SPINAND_ONDIEECC=y
+CONFIG_LNET=m
+CONFIG_LNET_MAX_PAYLOAD=1048576
+# CONFIG_LNET_SELFTEST is not set
+CONFIG_LNET_XPRT_IB=m
# CONFIG_LUSTRE_FS is not set
CONFIG_DGNC=m
-CONFIG_DGAP=m
CONFIG_GS_FPGABOOT=m
CONFIG_FB_TFT=m
CONFIG_FB_TFT_AGM1264K_FL=m
@@ -7185,7 +7243,9 @@ CONFIG_FB_TFT_RA8875=m
CONFIG_FB_TFT_S6D02A1=m
CONFIG_FB_TFT_S6D1121=m
CONFIG_FB_TFT_SSD1289=m
+CONFIG_FB_TFT_SSD1305=m
CONFIG_FB_TFT_SSD1306=m
+CONFIG_FB_TFT_SSD1325=m
CONFIG_FB_TFT_SSD1331=m
CONFIG_FB_TFT_SSD1351=m
CONFIG_FB_TFT_ST7735R=m
@@ -7211,11 +7271,19 @@ CONFIG_AIM_V4L2=m
CONFIG_HDM_DIM2=m
CONFIG_HDM_I2C=m
CONFIG_HDM_USB=m
+
+#
+# Old ISDN4Linux (deprecated)
+#
+CONFIG_ISDN_DRV_ICN=m
+CONFIG_ISDN_DRV_PCBIT=m
+CONFIG_ISDN_DRV_ACT2000=m
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
CONFIG_ALIENWARE_WMI=m
CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
CONFIG_DELL_LAPTOP=m
CONFIG_DELL_WMI=m
CONFIG_DELL_WMI_AIO=m
@@ -7291,6 +7359,7 @@ CONFIG_COMMON_CLK=y
#
CONFIG_COMMON_CLK_WM831X=m
CONFIG_COMMON_CLK_SI5351=m
+CONFIG_COMMON_CLK_CDCE706=m
CONFIG_COMMON_CLK_CS2000_CP=m
CONFIG_COMMON_CLK_S2MPS11=m
CONFIG_CLK_TWL6040=m
@@ -7298,7 +7367,6 @@ CONFIG_CLK_TWL6040=m
CONFIG_COMMON_CLK_PALMAS=m
CONFIG_COMMON_CLK_PWM=m
# CONFIG_COMMON_CLK_PXA is not set
-CONFIG_COMMON_CLK_CDCE706=m
#
# Hardware Spinlock drivers
@@ -7446,7 +7514,9 @@ CONFIG_PALMAS_GPADC=m
CONFIG_QCOM_SPMI_IADC=m
CONFIG_QCOM_SPMI_VADC=m
CONFIG_TI_ADC081C=m
+CONFIG_TI_ADC0832=m
CONFIG_TI_ADC128S052=m
+CONFIG_TI_ADS1015=m
CONFIG_TI_AM335X_ADC=m
CONFIG_TWL4030_MADC=m
CONFIG_TWL6030_GPADC=m
@@ -7460,6 +7530,7 @@ CONFIG_AD8366=m
#
# Chemical Sensors
#
+CONFIG_ATLAS_PH_SENSOR=m
CONFIG_IAQCORE=m
CONFIG_VZ89X=m
@@ -7492,6 +7563,7 @@ CONFIG_AD5504=m
CONFIG_AD5624R_SPI=m
CONFIG_AD5686=m
CONFIG_AD5755=m
+CONFIG_AD5761=m
CONFIG_AD5764=m
CONFIG_AD5791=m
CONFIG_AD7303=m
@@ -7499,6 +7571,7 @@ CONFIG_M62332=m
CONFIG_MAX517=m
CONFIG_MCP4725=m
CONFIG_MCP4922=m
+CONFIG_STX104=m
#
# IIO dummy driver
@@ -7539,8 +7612,14 @@ CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
CONFIG_ITG3200=m
#
-# Health sensors
+# Health Sensors
#
+
+#
+# Heart Rate Monitors
+#
+CONFIG_AFE4403=m
+CONFIG_AFE4404=m
CONFIG_MAX30100=m
#
@@ -7559,6 +7638,8 @@ CONFIG_ADIS16400=m
CONFIG_ADIS16480=m
CONFIG_KMX61=m
CONFIG_INV_MPU6050_IIO=m
+CONFIG_INV_MPU6050_I2C=m
+CONFIG_INV_MPU6050_SPI=m
CONFIG_IIO_ADIS_LIB=m
CONFIG_IIO_ADIS_LIB_BUFFER=y
@@ -7605,6 +7686,9 @@ CONFIG_MMC35240=m
CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
+CONFIG_SENSORS_HMC5843=m
+CONFIG_SENSORS_HMC5843_I2C=m
+CONFIG_SENSORS_HMC5843_SPI=m
#
# Inclinometer sensors
@@ -7623,6 +7707,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m
# Digital potentiometers
#
CONFIG_MCP4531=m
+CONFIG_TPL0102=m
#
# Pressure sensors
@@ -7630,6 +7715,8 @@ CONFIG_MCP4531=m
CONFIG_BMP280=m
CONFIG_HID_SENSOR_PRESS=m
CONFIG_MPL115=m
+CONFIG_MPL115_I2C=m
+CONFIG_MPL115_SPI=m
CONFIG_MPL3115=m
CONFIG_MS5611=m
CONFIG_MS5611_I2C=m
@@ -7692,7 +7779,6 @@ CONFIG_PWM_PCA9685=m
CONFIG_PWM_TWL=m
CONFIG_PWM_TWL_LED=m
CONFIG_ARM_GIC_MAX_NR=1
-CONFIG_TS4800_IRQ=m
CONFIG_IPACK_BUS=m
CONFIG_BOARD_TPCI200=m
CONFIG_SERIAL_IPOCTAL=m
@@ -7741,6 +7827,7 @@ CONFIG_NVMEM=m
CONFIG_STM=m
CONFIG_STM_DUMMY=m
CONFIG_STM_SOURCE_CONSOLE=m
+CONFIG_STM_SOURCE_HEARTBEAT=m
CONFIG_INTEL_TH=m
CONFIG_INTEL_TH_PCI=m
CONFIG_INTEL_TH_GTH=m
@@ -7768,6 +7855,8 @@ CONFIG_DMI_SYSFS=m
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
CONFIG_ISCSI_IBFT_FIND=y
CONFIG_ISCSI_IBFT=m
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
# CONFIG_GOOGLE_FIRMWARE is not set
#
@@ -7843,6 +7932,7 @@ CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=m
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
@@ -7890,6 +7980,7 @@ CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
@@ -7913,6 +8004,7 @@ CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=m
CONFIG_EFIVAR_FS=y
CONFIG_MISC_FILESYSTEMS=y
+CONFIG_ORANGEFS_FS=m
CONFIG_ADFS_FS=m
# CONFIG_ADFS_FS_RW is not set
CONFIG_AFFS_FS=m
@@ -8012,7 +8104,8 @@ CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
-CONFIG_NFSD_PNFS=y
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+# CONFIG_NFSD_SCSILAYOUT is not set
CONFIG_NFSD_V4_SECURITY_LABEL=y
# CONFIG_NFSD_FAULT_INJECTION is not set
CONFIG_GRACE_PERIOD=m
@@ -8155,6 +8248,8 @@ CONFIG_DEBUG_KERNEL=y
#
CONFIG_PAGE_EXTENSION=y
# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
@@ -8230,6 +8325,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60
# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
CONFIG_NOTIFIER_ERROR_INJECTION=m
CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
CONFIG_PM_NOTIFIER_ERROR_INJECT=m
@@ -8303,6 +8399,7 @@ CONFIG_TEST_HEXDUMP=m
CONFIG_TEST_STRING_HELPERS=m
CONFIG_TEST_KSTRTOX=m
CONFIG_TEST_PRINTF=m
+CONFIG_TEST_BITMAP=m
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set
@@ -8335,7 +8432,6 @@ 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
@@ -8359,7 +8455,6 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=1
CONFIG_OPTIMIZE_INLINING=y
# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
CONFIG_X86_DEBUG_FPU=y
CONFIG_PUNIT_ATOM_DEBUG=m
@@ -8455,11 +8550,9 @@ CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=m
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_AKCIPHER2=y
-CONFIG_CRYPTO_AKCIPHER=m
-CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_RSA=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
@@ -8560,7 +8653,6 @@ CONFIG_CRYPTO_TWOFISH_586=m
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_842=m
CONFIG_CRYPTO_LZ4=m
@@ -8599,7 +8691,6 @@ CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
-CONFIG_PUBLIC_KEY_ALGO_RSA=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
CONFIG_PKCS7_TEST_KEY=m
@@ -8610,6 +8701,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
#
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_IRQFD=y
diff --git a/gnu/packages/linux-libre-4.5-x86_64.conf b/gnu/packages/linux-libre-4.6-x86_64.conf
index 8625ce6af5..a7c11eeae3 100644
--- a/gnu/packages/linux-libre-4.5-x86_64.conf
+++ b/gnu/packages/linux-libre-4.6-x86_64.conf
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 4.5.0-gnu Kernel Configuration
+# Linux/x86 4.6.0-gnu Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -43,6 +43,7 @@ CONFIG_X86_64_SMP=y
CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-rdi -fcall-saved-rsi -fcall-saved-rdx -fcall-saved-rcx -fcall-saved-r8 -fcall-saved-r9 -fcall-saved-r10 -fcall-saved-r11"
CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_FIX_EARLYCON_MEM=y
+CONFIG_DEBUG_RODATA=y
CONFIG_PGTABLE_LEVELS=4
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
CONFIG_IRQ_WORK=y
@@ -204,6 +205,8 @@ CONFIG_SYSFS_SYSCALL=y
CONFIG_SYSCTL_SYSCALL=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
+CONFIG_KALLSYMS_ABSOLUTE_PERCPU=y
+CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
@@ -301,6 +304,7 @@ CONFIG_ARCH_MMAP_RND_BITS=28
CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
CONFIG_HAVE_COPY_THREAD_TLS=y
+CONFIG_HAVE_STACK_VALIDATION=y
CONFIG_OLD_SIGSUSPEND3=y
CONFIG_COMPAT_OLD_SIGACTION=y
@@ -393,6 +397,7 @@ CONFIG_X86_FEATURE_NAMES=y
CONFIG_X86_FAST_FEATURE_TESTS=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
+# CONFIG_GOLDFISH is not set
CONFIG_X86_EXTENDED_PLATFORM=y
CONFIG_X86_NUMACHIP=y
# CONFIG_X86_VSMP is not set
@@ -471,6 +476,7 @@ CONFIG_MICROCODE=y
CONFIG_MICROCODE_INTEL=y
CONFIG_MICROCODE_AMD=y
CONFIG_MICROCODE_OLD_INTERFACE=y
+CONFIG_PERF_EVENTS_AMD_POWER=m
CONFIG_X86_MSR=m
CONFIG_X86_CPUID=m
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
@@ -544,6 +550,8 @@ CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT=y
CONFIG_IDLE_PAGE_TRACKING=y
CONFIG_ZONE_DEVICE=y
CONFIG_FRAME_VECTOR=y
+CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y
+CONFIG_ARCH_HAS_PKEYS=y
CONFIG_X86_PMEM_LEGACY_DEVICE=y
CONFIG_X86_PMEM_LEGACY=y
CONFIG_X86_CHECK_BIOS_CORRUPTION=y
@@ -558,6 +566,7 @@ CONFIG_ARCH_USES_PG_UNCACHED=y
CONFIG_ARCH_RANDOM=y
CONFIG_X86_SMAP=y
CONFIG_X86_INTEL_MPX=y
+CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y
CONFIG_EFI=y
CONFIG_EFI_STUB=y
CONFIG_EFI_MIXED=y
@@ -755,10 +764,19 @@ CONFIG_PCI_IOV=y
CONFIG_PCI_PRI=y
CONFIG_PCI_PASID=y
CONFIG_PCI_LABEL=y
+CONFIG_PCI_HYPERV=m
+CONFIG_HOTPLUG_PCI=y
+CONFIG_HOTPLUG_PCI_ACPI=y
+CONFIG_HOTPLUG_PCI_ACPI_IBM=m
+CONFIG_HOTPLUG_PCI_CPCI=y
+CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
+CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
+CONFIG_HOTPLUG_PCI_SHPC=m
#
# PCI host controller drivers
#
+# CONFIG_PCIE_DW_PLAT is not set
CONFIG_ISA_DMA_API=y
CONFIG_AMD_NB=y
CONFIG_PCCARD=m
@@ -778,13 +796,6 @@ CONFIG_YENTA_TOSHIBA=y
CONFIG_PD6729=m
CONFIG_I82092=m
CONFIG_PCCARD_NONSTATIC=y
-CONFIG_HOTPLUG_PCI=y
-CONFIG_HOTPLUG_PCI_ACPI=y
-CONFIG_HOTPLUG_PCI_ACPI_IBM=m
-CONFIG_HOTPLUG_PCI_CPCI=y
-CONFIG_HOTPLUG_PCI_CPCI_ZT5550=m
-CONFIG_HOTPLUG_PCI_CPCI_GENERIC=m
-CONFIG_HOTPLUG_PCI_SHPC=m
CONFIG_RAPIDIO=y
CONFIG_RAPIDIO_TSI721=m
CONFIG_RAPIDIO_DISC_TIMEOUT=30
@@ -792,6 +803,7 @@ CONFIG_RAPIDIO_DISC_TIMEOUT=30
CONFIG_RAPIDIO_DMA_ENGINE=y
# CONFIG_RAPIDIO_DEBUG is not set
CONFIG_RAPIDIO_ENUM_BASIC=m
+CONFIG_RAPIDIO_MPORT_CDEV=m
#
# RapidIO Switch drivers
@@ -877,7 +889,6 @@ CONFIG_INET_TUNNEL=m
CONFIG_INET_XFRM_MODE_TRANSPORT=m
CONFIG_INET_XFRM_MODE_TUNNEL=m
CONFIG_INET_XFRM_MODE_BEET=m
-CONFIG_INET_LRO=y
CONFIG_INET_DIAG=m
CONFIG_INET_TCP_DIAG=m
CONFIG_INET_UDP_DIAG=m
@@ -1422,11 +1433,15 @@ CONFIG_NET_ACT_CSUM=m
CONFIG_NET_ACT_VLAN=m
CONFIG_NET_ACT_BPF=m
CONFIG_NET_ACT_CONNMARK=m
+CONFIG_NET_ACT_IFE=m
+CONFIG_NET_IFE_SKBMARK=m
+CONFIG_NET_IFE_SKBPRIO=m
# CONFIG_NET_CLS_IND is not set
CONFIG_NET_SCH_FIFO=y
CONFIG_DCB=y
CONFIG_DNS_RESOLVER=y
CONFIG_BATMAN_ADV=m
+# CONFIG_BATMAN_ADV_BATMAN_V is not set
CONFIG_BATMAN_ADV_BLA=y
CONFIG_BATMAN_ADV_DAT=y
CONFIG_BATMAN_ADV_NC=y
@@ -1438,7 +1453,6 @@ CONFIG_OPENVSWITCH_VXLAN=m
CONFIG_OPENVSWITCH_GENEVE=m
CONFIG_VSOCKETS=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
-CONFIG_NETLINK_MMAP=y
CONFIG_NETLINK_DIAG=m
CONFIG_MPLS=y
CONFIG_NET_MPLS_GSO=m
@@ -1498,6 +1512,14 @@ CONFIG_CAN_DEV=m
CONFIG_CAN_CALC_BITTIMING=y
CONFIG_CAN_LEDS=y
CONFIG_CAN_JANZ_ICAN3=m
+CONFIG_CAN_C_CAN=m
+CONFIG_CAN_C_CAN_PLATFORM=m
+CONFIG_CAN_C_CAN_PCI=m
+CONFIG_CAN_CC770=m
+CONFIG_CAN_CC770_ISA=m
+CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_IFI_CANFD=m
+CONFIG_CAN_M_CAN=m
CONFIG_CAN_SJA1000=m
CONFIG_CAN_SJA1000_ISA=m
CONFIG_CAN_SJA1000_PLATFORM=m
@@ -1508,13 +1530,8 @@ CONFIG_CAN_PEAK_PCI=m
CONFIG_CAN_PEAK_PCIEC=y
CONFIG_CAN_KVASER_PCI=m
CONFIG_CAN_PLX_PCI=m
-CONFIG_CAN_C_CAN=m
-CONFIG_CAN_C_CAN_PLATFORM=m
-CONFIG_CAN_C_CAN_PCI=m
-CONFIG_CAN_M_CAN=m
-CONFIG_CAN_CC770=m
-CONFIG_CAN_CC770_ISA=m
-CONFIG_CAN_CC770_PLATFORM=m
+CONFIG_CAN_SOFTING=m
+CONFIG_CAN_SOFTING_CS=m
#
# CAN SPI interfaces
@@ -1530,8 +1547,6 @@ CONFIG_CAN_GS_USB=m
CONFIG_CAN_KVASER_USB=m
CONFIG_CAN_PEAK_USB=m
CONFIG_CAN_8DEV_USB=m
-CONFIG_CAN_SOFTING=m
-CONFIG_CAN_SOFTING_CS=m
# CONFIG_CAN_DEBUG_DEVICES is not set
CONFIG_IRDA=m
@@ -1601,6 +1616,7 @@ CONFIG_BT_HIDP=m
CONFIG_BT_HS=y
CONFIG_BT_LE=y
CONFIG_BT_6LOWPAN=m
+# CONFIG_BT_LEDS is not set
# CONFIG_BT_SELFTEST is not set
CONFIG_BT_DEBUGFS=y
@@ -1624,6 +1640,7 @@ CONFIG_BT_HCIUART_3WIRE=y
CONFIG_BT_HCIUART_INTEL=y
CONFIG_BT_HCIUART_BCM=y
CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIUART_AG6XX=y
CONFIG_BT_HCIBCM203X=m
CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
@@ -1639,6 +1656,7 @@ CONFIG_BT_WILINK=m
CONFIG_AF_RXRPC=m
# CONFIG_AF_RXRPC_DEBUG is not set
CONFIG_RXKAD=m
+CONFIG_AF_KCM=m
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
@@ -1649,7 +1667,6 @@ CONFIG_WEXT_PRIV=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE is not set
# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
-# CONFIG_CFG80211_REG_DEBUG is not set
# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
CONFIG_CFG80211_DEFAULT_PS=y
CONFIG_CFG80211_DEBUGFS=y
@@ -1734,6 +1751,9 @@ CONFIG_NFC_S3FWRN5=m
CONFIG_NFC_S3FWRN5_I2C=m
CONFIG_NFC_ST95HF=m
CONFIG_LWTUNNEL=y
+CONFIG_DST_CACHE=y
+CONFIG_NET_DEVLINK=m
+CONFIG_MAY_USE_DEVLINK=m
CONFIG_HAVE_BPF_JIT=y
#
@@ -1998,6 +2018,7 @@ CONFIG_VIRTIO_BLK=y
# CONFIG_BLK_DEV_HD is not set
CONFIG_BLK_DEV_RBD=m
CONFIG_BLK_DEV_RSXX=m
+CONFIG_NVME_CORE=m
CONFIG_BLK_DEV_NVME=m
# CONFIG_BLK_DEV_NVME_SCSI is not set
@@ -2028,12 +2049,16 @@ CONFIG_HMC6352=m
CONFIG_DS1682=m
CONFIG_TI_DAC7512=m
CONFIG_VMWARE_BALLOON=m
-CONFIG_BMP085=y
+CONFIG_BMP085=m
CONFIG_BMP085_I2C=m
CONFIG_BMP085_SPI=m
CONFIG_USB_SWITCH_FSA9480=m
CONFIG_LATTICE_ECP3_CONFIG=m
CONFIG_SRAM=y
+CONFIG_PANEL=m
+CONFIG_PANEL_PARPORT=0
+CONFIG_PANEL_PROFILE=5
+# CONFIG_PANEL_CHANGE_MESSAGE is not set
CONFIG_C2PORT=m
CONFIG_C2PORT_DURAMAR_2150=m
@@ -2076,6 +2101,11 @@ CONFIG_INTEL_MIC_BUS=m
CONFIG_SCIF_BUS=m
#
+# VOP Bus Driver
+#
+CONFIG_VOP_BUS=m
+
+#
# Intel MIC Host Driver
#
CONFIG_INTEL_MIC_HOST=m
@@ -2094,6 +2124,11 @@ CONFIG_SCIF=m
# Intel MIC Coprocessor State Management (COSM) Drivers
#
CONFIG_MIC_COSM=m
+
+#
+# VOP Driver
+#
+CONFIG_VOP=m
CONFIG_GENWQE=m
CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
CONFIG_ECHO=m
@@ -2373,7 +2408,6 @@ CONFIG_DM_CRYPT=m
CONFIG_DM_SNAPSHOT=m
CONFIG_DM_THIN_PROVISIONING=m
CONFIG_DM_CACHE=m
-CONFIG_DM_CACHE_MQ=m
CONFIG_DM_CACHE_SMQ=m
CONFIG_DM_CACHE_CLEANER=m
CONFIG_DM_ERA=m
@@ -2438,6 +2472,7 @@ CONFIG_MACVTAP=m
CONFIG_IPVLAN=m
CONFIG_VXLAN=m
CONFIG_GENEVE=m
+CONFIG_MACSEC=m
CONFIG_NETCONSOLE=m
CONFIG_NETCONSOLE_DYNAMIC=y
CONFIG_NETPOLL=y
@@ -2556,6 +2591,7 @@ CONFIG_TIGON3=m
CONFIG_BNX2X=m
CONFIG_BNX2X_SRIOV=y
CONFIG_BNX2X_VXLAN=y
+# CONFIG_BNX2X_GENEVE is not set
CONFIG_BNXT=m
CONFIG_BNXT_SRIOV=y
CONFIG_NET_VENDOR_BROCADE=y
@@ -2571,6 +2607,7 @@ CONFIG_CHELSIO_T1_1G=y
CONFIG_CHELSIO_T3=m
CONFIG_CHELSIO_T4=m
CONFIG_CHELSIO_T4_DCB=y
+# CONFIG_CHELSIO_T4_UWIRE is not set
CONFIG_CHELSIO_T4_FCOE=y
CONFIG_CHELSIO_T4VF=m
CONFIG_NET_VENDOR_CISCO=y
@@ -2611,6 +2648,7 @@ CONFIG_NET_VENDOR_INTEL=y
CONFIG_E100=m
CONFIG_E1000=m
CONFIG_E1000E=m
+CONFIG_E1000E_HWTS=y
CONFIG_IGB=m
CONFIG_IGB_HWMON=y
CONFIG_IGB_DCA=y
@@ -2634,6 +2672,7 @@ CONFIG_NET_VENDOR_I825XX=y
CONFIG_JME=m
CONFIG_NET_VENDOR_MARVELL=y
CONFIG_MVMDIO=m
+# CONFIG_MVNETA_BM is not set
CONFIG_SKGE=m
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKGE_GENESIS=y
@@ -2647,6 +2686,8 @@ CONFIG_MLX4_CORE=m
CONFIG_MLX4_DEBUG=y
CONFIG_MLX5_CORE=m
CONFIG_MLX5_CORE_EN=y
+CONFIG_MLX5_CORE_EN_DCB=y
+CONFIG_MLX5_CORE_EN_VXLAN=y
CONFIG_MLXSW_CORE=m
CONFIG_MLXSW_CORE_HWMON=y
CONFIG_MLXSW_PCI=m
@@ -2790,7 +2831,9 @@ CONFIG_MICROCHIP_PHY=m
CONFIG_FIXED_PHY=y
CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_GPIO=m
+CONFIG_MDIO_CAVIUM=m
CONFIG_MDIO_OCTEON=m
+CONFIG_MDIO_THUNDER=m
CONFIG_MDIO_BCM_UNIMAC=m
CONFIG_MICREL_KS8995MA=m
CONFIG_PLIP=m
@@ -2978,6 +3021,7 @@ CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
# CONFIG_IWLWIFI_UAPSD is not set
+# CONFIG_IWLWIFI_PCIE_RTPM is not set
#
# Debugging Options
@@ -3095,7 +3139,6 @@ CONFIG_WL1251_SDIO=m
CONFIG_WL12XX=m
CONFIG_WL18XX=m
CONFIG_WLCORE=m
-CONFIG_WLCORE_SPI=m
CONFIG_WLCORE_SDIO=m
CONFIG_WILINK_PLATFORM_DATA=y
CONFIG_WLAN_VENDOR_ZYDAS=y
@@ -3223,10 +3266,6 @@ CONFIG_HISAX_ST5481=m
CONFIG_HISAX_HFCUSB=m
CONFIG_HISAX_HFC4S8S=m
CONFIG_HISAX_FRITZ_PCIPNP=m
-
-#
-# Active cards
-#
CONFIG_ISDN_CAPI=m
CONFIG_CAPI_TRACE=y
CONFIG_ISDN_CAPI_CAPI20=m
@@ -3337,6 +3376,7 @@ CONFIG_KEYBOARD_CROS_EC=m
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=m
CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_BYD=y
CONFIG_MOUSE_PS2_LOGIPS2PP=y
CONFIG_MOUSE_PS2_SYNAPTICS=y
CONFIG_MOUSE_PS2_CYPRESS=y
@@ -3432,6 +3472,7 @@ CONFIG_TOUCHSCREEN_WACOM_I2C=m
CONFIG_TOUCHSCREEN_MAX11801=m
CONFIG_TOUCHSCREEN_MCS5000=m
CONFIG_TOUCHSCREEN_MMS114=m
+CONFIG_TOUCHSCREEN_MELFAS_MIP4=m
CONFIG_TOUCHSCREEN_MTOUCH=m
CONFIG_TOUCHSCREEN_INEXIO=m
CONFIG_TOUCHSCREEN_MK712=m
@@ -3539,6 +3580,13 @@ CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_DRV260X_HAPTICS=m
CONFIG_INPUT_DRV2665_HAPTICS=m
CONFIG_INPUT_DRV2667_HAPTICS=m
+CONFIG_RMI4_CORE=m
+CONFIG_RMI4_I2C=m
+CONFIG_RMI4_SPI=m
+CONFIG_RMI4_2D_SENSOR=y
+CONFIG_RMI4_F11=y
+CONFIG_RMI4_F12=y
+CONFIG_RMI4_F30=y
#
# Hardware I/O ports
@@ -3618,6 +3666,7 @@ CONFIG_SERIAL_8250_DW=m
CONFIG_SERIAL_8250_RT288X=y
CONFIG_SERIAL_8250_FINTEK=m
CONFIG_SERIAL_8250_MID=m
+CONFIG_SERIAL_8250_MOXA=m
#
# Non-8250 serial port support
@@ -3647,6 +3696,7 @@ CONFIG_SERIAL_RP2=m
CONFIG_SERIAL_RP2_NR_UARTS=32
CONFIG_SERIAL_FSL_LPUART=m
CONFIG_SERIAL_MEN_Z135=m
+# CONFIG_SERIAL_MVEBU_UART is not set
CONFIG_TTY_PRINTK=y
CONFIG_PRINTER=m
# CONFIG_LP_CONSOLE is not set
@@ -3807,24 +3857,24 @@ CONFIG_SPI_MASTER=y
# SPI Master Controller Drivers
#
CONFIG_SPI_ALTERA=m
+CONFIG_SPI_AXI_SPI_ENGINE=m
CONFIG_SPI_BITBANG=m
CONFIG_SPI_BUTTERFLY=m
CONFIG_SPI_CADENCE=m
+CONFIG_SPI_DESIGNWARE=m
+CONFIG_SPI_DW_PCI=m
+CONFIG_SPI_DW_MID_DMA=y
+CONFIG_SPI_DW_MMIO=m
CONFIG_SPI_DLN2=m
CONFIG_SPI_GPIO=m
CONFIG_SPI_LM70_LLP=m
CONFIG_SPI_OC_TINY=m
-CONFIG_SPI_PXA2XX_DMA=y
CONFIG_SPI_PXA2XX=m
CONFIG_SPI_PXA2XX_PCI=m
CONFIG_SPI_SC18IS602=m
CONFIG_SPI_XCOMM=m
# CONFIG_SPI_XILINX is not set
CONFIG_SPI_ZYNQMP_GQSPI=m
-CONFIG_SPI_DESIGNWARE=m
-CONFIG_SPI_DW_PCI=m
-CONFIG_SPI_DW_MID_DMA=y
-CONFIG_SPI_DW_MMIO=m
#
# SPI Protocol Masters
@@ -3904,18 +3954,21 @@ CONFIG_GPIO_DWAPB=m
CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_ICH=m
CONFIG_GPIO_LYNXPOINT=y
+CONFIG_GPIO_MENZ127=m
CONFIG_GPIO_VX855=m
CONFIG_GPIO_ZX=y
#
# Port-mapped I/O GPIO drivers
#
+CONFIG_GPIO_104_DIO_48E=m
CONFIG_GPIO_104_IDIO_16=m
CONFIG_GPIO_104_IDI_48=m
CONFIG_GPIO_F7188X=m
CONFIG_GPIO_IT87=m
CONFIG_GPIO_SCH=m
CONFIG_GPIO_SCH311X=m
+CONFIG_GPIO_WS16C48=m
#
# I2C GPIO expanders
@@ -3926,6 +3979,7 @@ CONFIG_GPIO_MAX732X=m
CONFIG_GPIO_PCA953X=m
CONFIG_GPIO_PCF857X=m
CONFIG_GPIO_SX150X=y
+CONFIG_GPIO_TPIC2810=m
#
# MFD GPIO expanders
@@ -3941,6 +3995,8 @@ CONFIG_GPIO_KEMPLD=m
CONFIG_GPIO_LP3943=m
CONFIG_GPIO_PALMAS=y
CONFIG_GPIO_RC5T583=y
+CONFIG_GPIO_TPS65086=m
+CONFIG_GPIO_TPS65218=m
CONFIG_GPIO_TPS6586X=y
CONFIG_GPIO_TPS65910=y
CONFIG_GPIO_TPS65912=m
@@ -3964,6 +4020,7 @@ CONFIG_GPIO_RDC321X=m
#
CONFIG_GPIO_MAX7301=m
CONFIG_GPIO_MC33880=m
+CONFIG_GPIO_PISOSR=m
#
# SPI or I2C GPIO expanders
@@ -4118,6 +4175,7 @@ CONFIG_SENSORS_JC42=m
CONFIG_SENSORS_POWR1220=m
CONFIG_SENSORS_LINEAGE=m
CONFIG_SENSORS_LTC2945=m
+CONFIG_SENSORS_LTC2990=m
CONFIG_SENSORS_LTC4151=m
CONFIG_SENSORS_LTC4215=m
CONFIG_SENSORS_LTC4222=m
@@ -4275,6 +4333,7 @@ CONFIG_ACQUIRE_WDT=m
CONFIG_ADVANTECH_WDT=m
CONFIG_ALIM1535_WDT=m
CONFIG_ALIM7101_WDT=m
+CONFIG_EBC_C384_WDT=m
CONFIG_F71808E_WDT=m
CONFIG_SP5100_TCO=m
CONFIG_SBC_FITPC2_WATCHDOG=m
@@ -4304,7 +4363,8 @@ CONFIG_W83877F_WDT=m
CONFIG_W83977F_WDT=m
CONFIG_MACHZ_WDT=m
CONFIG_SBC_EPX_C3_WATCHDOG=m
-CONFIG_BCM7038_WDT=m
+CONFIG_INTEL_MEI_WDT=m
+CONFIG_NI903X_WDT=m
CONFIG_MEN_A21_WDT=m
CONFIG_XEN_WDT=m
@@ -4361,7 +4421,8 @@ CONFIG_MFD_AS3711=y
CONFIG_PMIC_ADP5520=y
CONFIG_MFD_AAT2870_CORE=y
CONFIG_MFD_BCM590XX=m
-CONFIG_MFD_AXP20X=y
+CONFIG_MFD_AXP20X=m
+CONFIG_MFD_AXP20X_I2C=m
CONFIG_MFD_CROS_EC=m
CONFIG_MFD_CROS_EC_I2C=m
CONFIG_MFD_CROS_EC_SPI=m
@@ -4430,6 +4491,7 @@ CONFIG_MFD_PALMAS=y
CONFIG_TPS6105X=m
CONFIG_TPS65010=m
CONFIG_TPS6507X=m
+CONFIG_MFD_TPS65086=m
CONFIG_MFD_TPS65090=y
CONFIG_MFD_TPS65217=m
CONFIG_MFD_TPS65218=m
@@ -4530,6 +4592,7 @@ CONFIG_REGULATOR_TPS6105X=m
CONFIG_REGULATOR_TPS62360=m
CONFIG_REGULATOR_TPS65023=m
CONFIG_REGULATOR_TPS6507X=m
+CONFIG_REGULATOR_TPS65086=m
CONFIG_REGULATOR_TPS65090=m
CONFIG_REGULATOR_TPS65217=m
CONFIG_REGULATOR_TPS6524X=m
@@ -5226,6 +5289,7 @@ CONFIG_VGA_ARB_MAX_GPUS=16
CONFIG_VGA_SWITCHEROO=y
CONFIG_DRM=m
CONFIG_DRM_MIPI_DSI=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_FBDEV_EMULATION=y
@@ -5247,6 +5311,11 @@ CONFIG_DRM_AMDGPU=m
# CONFIG_DRM_AMDGPU_CIK is not set
CONFIG_DRM_AMDGPU_USERPTR=y
# CONFIG_DRM_AMD_POWERPLAY is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+# CONFIG_DRM_AMD_ACP is not set
CONFIG_DRM_NOUVEAU=m
CONFIG_NOUVEAU_DEBUG=5
CONFIG_NOUVEAU_DEBUG_DEFAULT=3
@@ -5254,6 +5323,7 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_I810=m
CONFIG_DRM_I915=m
# CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT is not set
+CONFIG_DRM_I915_USERPTR=y
CONFIG_DRM_MGA=m
CONFIG_DRM_SIS=m
CONFIG_DRM_VIA=m
@@ -5465,11 +5535,13 @@ CONFIG_SOUND_OSS_CORE=y
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m
+CONFIG_SND_PCM_ELD=y
CONFIG_SND_DMAENGINE_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
CONFIG_SND_COMPRESS_OFFLOAD=m
CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
CONFIG_SND_OSSEMUL=y
@@ -5701,11 +5773,14 @@ CONFIG_SND_SOC_CS4349=m
CONFIG_SND_SOC_DMIC=m
CONFIG_SND_SOC_ES8328=m
CONFIG_SND_SOC_GTM601=m
+CONFIG_SND_SOC_HDAC_HDMI=m
CONFIG_SND_SOC_INNO_RK3036=m
CONFIG_SND_SOC_MAX98090=m
CONFIG_SND_SOC_MAX98357A=m
CONFIG_SND_SOC_PCM1681=m
CONFIG_SND_SOC_PCM179X=m
+CONFIG_SND_SOC_PCM179X_I2C=m
+CONFIG_SND_SOC_PCM179X_SPI=m
CONFIG_SND_SOC_PCM3168A=m
CONFIG_SND_SOC_PCM3168A_I2C=m
CONFIG_SND_SOC_PCM3168A_SPI=m
@@ -5715,6 +5790,7 @@ CONFIG_SND_SOC_PCM512x_SPI=m
CONFIG_SND_SOC_RL6231=m
CONFIG_SND_SOC_RL6347A=m
CONFIG_SND_SOC_RT286=m
+CONFIG_SND_SOC_RT5616=m
CONFIG_SND_SOC_RT5631=m
CONFIG_SND_SOC_RT5640=m
CONFIG_SND_SOC_RT5645=m
@@ -5793,6 +5869,7 @@ CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
CONFIG_HID_CORSAIR=m
CONFIG_HID_PRODIKEYS=m
+CONFIG_HID_CMEDIA=m
CONFIG_HID_CP2112=m
CONFIG_HID_CYPRESS=m
CONFIG_HID_DRAGONRISE=m
@@ -6375,6 +6452,7 @@ CONFIG_INFINIBAND_QIB_DCA=y
CONFIG_INFINIBAND_CXGB3=m
# CONFIG_INFINIBAND_CXGB3_DEBUG is not set
CONFIG_INFINIBAND_CXGB4=m
+CONFIG_INFINIBAND_I40IW=m
CONFIG_MLX4_INFINIBAND=m
CONFIG_MLX5_INFINIBAND=m
CONFIG_INFINIBAND_NES=m
@@ -6388,6 +6466,7 @@ CONFIG_INFINIBAND_SRP=m
CONFIG_INFINIBAND_SRPT=m
CONFIG_INFINIBAND_ISER=m
CONFIG_INFINIBAND_ISERT=m
+CONFIG_INFINIBAND_RDMAVT=m
CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y
CONFIG_EDAC=y
@@ -6434,10 +6513,10 @@ CONFIG_RTC_DRV_88PM80X=m
CONFIG_RTC_DRV_ABB5ZES3=m
CONFIG_RTC_DRV_ABX80X=m
CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS1307_HWMON=y
CONFIG_RTC_DRV_DS1374=m
CONFIG_RTC_DRV_DS1374_WDT=y
CONFIG_RTC_DRV_DS1672=m
-CONFIG_RTC_DRV_DS3232=m
CONFIG_RTC_DRV_LP8788=m
CONFIG_RTC_DRV_MAX6900=m
CONFIG_RTC_DRV_MAX8907=m
@@ -6449,16 +6528,15 @@ CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m
CONFIG_RTC_DRV_ISL12057=m
CONFIG_RTC_DRV_X1205=m
-CONFIG_RTC_DRV_PALMAS=m
-CONFIG_RTC_DRV_PCF2127=m
CONFIG_RTC_DRV_PCF8523=m
-CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF85063=m
+CONFIG_RTC_DRV_PCF8563=m
CONFIG_RTC_DRV_PCF8583=m
CONFIG_RTC_DRV_M41T80=m
CONFIG_RTC_DRV_M41T80_WDT=y
CONFIG_RTC_DRV_BQ32K=m
CONFIG_RTC_DRV_TWL4030=m
+CONFIG_RTC_DRV_PALMAS=m
CONFIG_RTC_DRV_TPS6586X=m
CONFIG_RTC_DRV_TPS65910=m
CONFIG_RTC_DRV_TPS80031=m
@@ -6470,6 +6548,7 @@ CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
CONFIG_RTC_DRV_RV3029C2=m
+CONFIG_RTC_DRV_RV3029_HWMON=y
CONFIG_RTC_DRV_RV8803=m
CONFIG_RTC_DRV_S5M=m
@@ -6482,13 +6561,20 @@ CONFIG_RTC_DRV_DS1305=m
CONFIG_RTC_DRV_DS1343=m
CONFIG_RTC_DRV_DS1347=m
CONFIG_RTC_DRV_DS1390=m
-CONFIG_RTC_DRV_MAX6902=m
CONFIG_RTC_DRV_R9701=m
+CONFIG_RTC_DRV_RX4581=m
+CONFIG_RTC_DRV_RX6110=m
CONFIG_RTC_DRV_RS5C348=m
-CONFIG_RTC_DRV_DS3234=m
+CONFIG_RTC_DRV_MAX6902=m
CONFIG_RTC_DRV_PCF2123=m
-CONFIG_RTC_DRV_RX4581=m
CONFIG_RTC_DRV_MCP795=m
+CONFIG_RTC_I2C_AND_SPI=y
+
+#
+# SPI and I2C RTC drivers
+#
+CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_PCF2127=m
#
# Platform RTC drivers
@@ -6546,6 +6632,8 @@ CONFIG_DMA_ACPI=y
CONFIG_INTEL_IDMA64=m
CONFIG_INTEL_IOATDMA=m
CONFIG_INTEL_MIC_X100_DMA=m
+CONFIG_QCOM_HIDMA_MGMT=m
+CONFIG_QCOM_HIDMA=m
CONFIG_DW_DMAC_CORE=m
CONFIG_DW_DMAC=m
CONFIG_DW_DMAC_PCI=m
@@ -6582,6 +6670,7 @@ CONFIG_VFIO_PCI=m
CONFIG_VFIO_PCI_VGA=y
CONFIG_VFIO_PCI_MMAP=y
CONFIG_VFIO_PCI_INTX=y
+CONFIG_VFIO_PCI_IGD=y
CONFIG_IRQ_BYPASS_MANAGER=m
CONFIG_VIRT_DRIVERS=y
CONFIG_VIRTIO=y
@@ -6773,10 +6862,6 @@ CONFIG_COMEDI_ISADMA=m
CONFIG_COMEDI_NI_LABPC=m
CONFIG_COMEDI_NI_LABPC_ISADMA=m
CONFIG_COMEDI_NI_TIO=m
-CONFIG_PANEL=m
-CONFIG_PANEL_PARPORT=0
-CONFIG_PANEL_PROFILE=5
-# CONFIG_PANEL_CHANGE_MESSAGE is not set
CONFIG_RTL8192U=m
CONFIG_RTLLIB=m
CONFIG_RTLLIB_CRYPTO_CCMP=m
@@ -6859,13 +6944,6 @@ CONFIG_TSL2583=m
CONFIG_TSL2x7x=m
#
-# Magnetometer sensors
-#
-CONFIG_SENSORS_HMC5843=m
-CONFIG_SENSORS_HMC5843_I2C=m
-CONFIG_SENSORS_HMC5843_SPI=m
-
-#
# Active energy metering IC
#
CONFIG_ADE7753=m
@@ -6886,7 +6964,6 @@ CONFIG_AD2S1210=m
#
# Triggers - standalone
#
-CONFIG_IIO_PERIODIC_RTC_TRIGGER=m
CONFIG_FB_SM750=m
CONFIG_FB_XGI=m
@@ -6905,12 +6982,10 @@ CONFIG_SPEAKUP_SYNTH_SOFT=m
CONFIG_SPEAKUP_SYNTH_SPKOUT=m
CONFIG_SPEAKUP_SYNTH_TXPRT=m
CONFIG_SPEAKUP_SYNTH_DUMMY=m
-CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_STAGING_MEDIA=y
CONFIG_I2C_BCM2048=m
CONFIG_DVB_CXD2099=m
CONFIG_DVB_MN88472=m
-CONFIG_DVB_MN88473=m
CONFIG_LIRC_STAGING=y
CONFIG_LIRC_BT829=m
CONFIG_LIRC_IMON=m
@@ -6925,27 +7000,22 @@ CONFIG_INFINIBAND_HFI1=m
# CONFIG_HFI1_DEBUG_SDMA_ORDER is not set
CONFIG_HFI1_VERBS_31BIT_PSN=y
# CONFIG_SDMA_VERBOSITY is not set
-# CONFIG_PRESCAN_RXQ is not set
#
# Android
#
-CONFIG_WIMAX_GDM72XX=m
-CONFIG_WIMAX_GDM72XX_QOS=y
-CONFIG_WIMAX_GDM72XX_K_MODE=y
-CONFIG_WIMAX_GDM72XX_WIMAX2=y
-CONFIG_WIMAX_GDM72XX_USB=y
-# CONFIG_WIMAX_GDM72XX_SDIO is not set
-CONFIG_WIMAX_GDM72XX_USB_PM=y
CONFIG_LTE_GDM724X=m
CONFIG_FIREWIRE_SERIAL=m
CONFIG_FWTTY_MAX_TOTAL_PORTS=64
CONFIG_FWTTY_MAX_CARD_PORTS=32
CONFIG_MTD_SPINAND_MT29F=m
CONFIG_MTD_SPINAND_ONDIEECC=y
+CONFIG_LNET=m
+CONFIG_LNET_MAX_PAYLOAD=1048576
+# CONFIG_LNET_SELFTEST is not set
+CONFIG_LNET_XPRT_IB=m
# CONFIG_LUSTRE_FS is not set
CONFIG_DGNC=m
-CONFIG_DGAP=m
CONFIG_GS_FPGABOOT=m
CONFIG_CRYPTO_SKEIN=y
CONFIG_UNISYSSPAR=y
@@ -6972,7 +7042,9 @@ CONFIG_FB_TFT_RA8875=m
CONFIG_FB_TFT_S6D02A1=m
CONFIG_FB_TFT_S6D1121=m
CONFIG_FB_TFT_SSD1289=m
+CONFIG_FB_TFT_SSD1305=m
CONFIG_FB_TFT_SSD1306=m
+CONFIG_FB_TFT_SSD1325=m
CONFIG_FB_TFT_SSD1331=m
CONFIG_FB_TFT_SSD1351=m
CONFIG_FB_TFT_ST7735R=m
@@ -6998,11 +7070,16 @@ CONFIG_AIM_V4L2=m
CONFIG_HDM_DIM2=m
CONFIG_HDM_I2C=m
CONFIG_HDM_USB=m
+
+#
+# Old ISDN4Linux (deprecated)
+#
CONFIG_X86_PLATFORM_DEVICES=y
CONFIG_ACER_WMI=m
CONFIG_ACERHDF=m
CONFIG_ALIENWARE_WMI=m
CONFIG_ASUS_LAPTOP=m
+CONFIG_DELL_SMBIOS=m
CONFIG_DELL_LAPTOP=m
CONFIG_DELL_WMI=m
CONFIG_DELL_WMI_AIO=m
@@ -7073,6 +7150,7 @@ CONFIG_COMMON_CLK=y
#
CONFIG_COMMON_CLK_WM831X=m
CONFIG_COMMON_CLK_SI5351=m
+CONFIG_COMMON_CLK_CDCE706=m
CONFIG_COMMON_CLK_CS2000_CP=m
CONFIG_COMMON_CLK_S2MPS11=m
CONFIG_CLK_TWL6040=m
@@ -7080,7 +7158,6 @@ CONFIG_CLK_TWL6040=m
CONFIG_COMMON_CLK_PALMAS=m
CONFIG_COMMON_CLK_PWM=m
# CONFIG_COMMON_CLK_PXA is not set
-CONFIG_COMMON_CLK_CDCE706=m
#
# Hardware Spinlock drivers
@@ -7230,7 +7307,9 @@ CONFIG_PALMAS_GPADC=m
CONFIG_QCOM_SPMI_IADC=m
CONFIG_QCOM_SPMI_VADC=m
CONFIG_TI_ADC081C=m
+CONFIG_TI_ADC0832=m
CONFIG_TI_ADC128S052=m
+CONFIG_TI_ADS1015=m
CONFIG_TI_AM335X_ADC=m
CONFIG_TWL4030_MADC=m
CONFIG_TWL6030_GPADC=m
@@ -7244,6 +7323,7 @@ CONFIG_AD8366=m
#
# Chemical Sensors
#
+CONFIG_ATLAS_PH_SENSOR=m
CONFIG_IAQCORE=m
CONFIG_VZ89X=m
@@ -7276,6 +7356,7 @@ CONFIG_AD5504=m
CONFIG_AD5624R_SPI=m
CONFIG_AD5686=m
CONFIG_AD5755=m
+CONFIG_AD5761=m
CONFIG_AD5764=m
CONFIG_AD5791=m
CONFIG_AD7303=m
@@ -7323,8 +7404,14 @@ CONFIG_IIO_ST_GYRO_SPI_3AXIS=m
CONFIG_ITG3200=m
#
-# Health sensors
+# Health Sensors
+#
+
#
+# Heart Rate Monitors
+#
+CONFIG_AFE4403=m
+CONFIG_AFE4404=m
CONFIG_MAX30100=m
#
@@ -7343,6 +7430,8 @@ CONFIG_ADIS16400=m
CONFIG_ADIS16480=m
CONFIG_KMX61=m
CONFIG_INV_MPU6050_IIO=m
+CONFIG_INV_MPU6050_I2C=m
+CONFIG_INV_MPU6050_SPI=m
CONFIG_IIO_ADIS_LIB=m
CONFIG_IIO_ADIS_LIB_BUFFER=y
@@ -7389,6 +7478,9 @@ CONFIG_MMC35240=m
CONFIG_IIO_ST_MAGN_3AXIS=m
CONFIG_IIO_ST_MAGN_I2C_3AXIS=m
CONFIG_IIO_ST_MAGN_SPI_3AXIS=m
+CONFIG_SENSORS_HMC5843=m
+CONFIG_SENSORS_HMC5843_I2C=m
+CONFIG_SENSORS_HMC5843_SPI=m
#
# Inclinometer sensors
@@ -7407,6 +7499,7 @@ CONFIG_IIO_SYSFS_TRIGGER=m
# Digital potentiometers
#
CONFIG_MCP4531=m
+CONFIG_TPL0102=m
#
# Pressure sensors
@@ -7414,6 +7507,8 @@ CONFIG_MCP4531=m
CONFIG_BMP280=m
CONFIG_HID_SENSOR_PRESS=m
CONFIG_MPL115=m
+CONFIG_MPL115_I2C=m
+CONFIG_MPL115_SPI=m
CONFIG_MPL3115=m
CONFIG_MS5611=m
CONFIG_MS5611_I2C=m
@@ -7478,7 +7573,6 @@ CONFIG_PWM_PCA9685=m
CONFIG_PWM_TWL=m
CONFIG_PWM_TWL_LED=m
CONFIG_ARM_GIC_MAX_NR=1
-CONFIG_TS4800_IRQ=m
CONFIG_IPACK_BUS=m
CONFIG_BOARD_TPCI200=m
CONFIG_SERIAL_IPOCTAL=m
@@ -7529,6 +7623,7 @@ CONFIG_NVMEM=m
CONFIG_STM=m
CONFIG_STM_DUMMY=m
CONFIG_STM_SOURCE_CONSOLE=m
+CONFIG_STM_SOURCE_HEARTBEAT=m
CONFIG_INTEL_TH=m
CONFIG_INTEL_TH_PCI=m
CONFIG_INTEL_TH_GTH=m
@@ -7556,6 +7651,8 @@ CONFIG_DMI_SYSFS=m
CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
CONFIG_ISCSI_IBFT_FIND=y
CONFIG_ISCSI_IBFT=m
+CONFIG_FW_CFG_SYSFS=m
+# CONFIG_FW_CFG_SYSFS_CMDLINE is not set
# CONFIG_GOOGLE_FIRMWARE is not set
#
@@ -7632,6 +7729,7 @@ CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
CONFIG_MANDATORY_FILE_LOCKING=y
+CONFIG_FS_ENCRYPTION=m
CONFIG_FSNOTIFY=y
CONFIG_DNOTIFY=y
CONFIG_INOTIFY_USER=y
@@ -7680,6 +7778,7 @@ CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_FAT_DEFAULT_UTF8 is not set
CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
# CONFIG_NTFS_RW is not set
@@ -7703,6 +7802,7 @@ CONFIG_HUGETLB_PAGE=y
CONFIG_CONFIGFS_FS=m
CONFIG_EFIVAR_FS=y
CONFIG_MISC_FILESYSTEMS=y
+CONFIG_ORANGEFS_FS=m
CONFIG_ADFS_FS=m
# CONFIG_ADFS_FS_RW is not set
CONFIG_AFFS_FS=m
@@ -7802,7 +7902,8 @@ CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
-CONFIG_NFSD_PNFS=y
+# CONFIG_NFSD_BLOCKLAYOUT is not set
+# CONFIG_NFSD_SCSILAYOUT is not set
CONFIG_NFSD_V4_SECURITY_LABEL=y
# CONFIG_NFSD_FAULT_INJECTION is not set
CONFIG_GRACE_PERIOD=m
@@ -7935,6 +8036,7 @@ CONFIG_DEBUG_FS=y
CONFIG_SECTION_MISMATCH_WARN_ONLY=y
CONFIG_ARCH_WANT_FRAME_POINTERS=y
CONFIG_FRAME_POINTER=y
+# CONFIG_STACK_VALIDATION is not set
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
@@ -7945,6 +8047,8 @@ CONFIG_DEBUG_KERNEL=y
#
# CONFIG_PAGE_EXTENSION is not set
# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_PAGE_REF is not set
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_SLUB_DEBUG_ON is not set
# CONFIG_SLUB_STATS is not set
@@ -7961,6 +8065,8 @@ CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
CONFIG_HAVE_ARCH_KASAN=y
# CONFIG_KASAN is not set
+CONFIG_ARCH_HAS_KCOV=y
+# CONFIG_KCOV is not set
# CONFIG_DEBUG_SHIRQ is not set
#
@@ -8021,6 +8127,7 @@ CONFIG_RCU_CPU_STALL_TIMEOUT=60
# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set
CONFIG_NOTIFIER_ERROR_INJECTION=m
CONFIG_CPU_NOTIFIER_ERROR_INJECT=m
CONFIG_PM_NOTIFIER_ERROR_INJECT=m
@@ -8095,6 +8202,7 @@ CONFIG_TEST_HEXDUMP=m
CONFIG_TEST_STRING_HELPERS=m
CONFIG_TEST_KSTRTOX=m
CONFIG_TEST_PRINTF=m
+CONFIG_TEST_BITMAP=m
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set
@@ -8127,7 +8235,6 @@ 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
@@ -8152,7 +8259,6 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=1
CONFIG_OPTIMIZE_INLINING=y
# CONFIG_DEBUG_ENTRY is not set
# CONFIG_DEBUG_NMI_SELFTEST is not set
-# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
CONFIG_X86_DEBUG_FPU=y
CONFIG_PUNIT_ATOM_DEBUG=m
@@ -8248,11 +8354,9 @@ CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_RNG2=y
CONFIG_CRYPTO_RNG_DEFAULT=m
-CONFIG_CRYPTO_PCOMP=m
-CONFIG_CRYPTO_PCOMP2=y
CONFIG_CRYPTO_AKCIPHER2=y
-CONFIG_CRYPTO_AKCIPHER=m
-CONFIG_CRYPTO_RSA=m
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_RSA=y
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
@@ -8372,7 +8476,6 @@ CONFIG_CRYPTO_TWOFISH_AVX_X86_64=m
# Compression
#
CONFIG_CRYPTO_DEFLATE=m
-CONFIG_CRYPTO_ZLIB=m
CONFIG_CRYPTO_LZO=y
CONFIG_CRYPTO_842=m
CONFIG_CRYPTO_LZ4=m
@@ -8410,7 +8513,6 @@ CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m
CONFIG_CRYPTO_DEV_QAT_C62XVF=m
CONFIG_ASYMMETRIC_KEY_TYPE=y
CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
-CONFIG_PUBLIC_KEY_ALGO_RSA=y
CONFIG_X509_CERTIFICATE_PARSER=y
CONFIG_PKCS7_MESSAGE_PARSER=y
CONFIG_PKCS7_TEST_KEY=m
@@ -8421,6 +8523,7 @@ CONFIG_SIGNED_PE_FILE_VERIFICATION=y
#
CONFIG_SYSTEM_TRUSTED_KEYRING=y
CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
CONFIG_HAVE_KVM=y
CONFIG_HAVE_KVM_IRQCHIP=y
CONFIG_HAVE_KVM_IRQFD=y
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 90f56025f6..2ca9fe7600 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -225,7 +225,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
(search-path %load-path file)))
(define-public linux-libre
- (let* ((version "4.5.5")
+ (let* ((version "4.6.1")
(build-phase
'(lambda* (#:key system inputs #:allow-other-keys #:rest args)
;; Avoid introducing timestamps
@@ -303,7 +303,7 @@ for SYSTEM and optionally VARIANT, or #f if there is no such configuration."
(uri (linux-libre-urls version))
(sha256
(base32
- "1zys74hfdi13yyk17x45hvvbx7m97wk7pala3cd8k93xbq8qnai0"))))
+ "16cwr2jhd688bxdjfjpymap7sq0qsl24k5dylbz1rwfblnv2wn51"))))
(build-system gnu-build-system)
(supported-systems '("x86_64-linux" "i686-linux"))
(native-inputs `(("perl" ,perl)
@@ -340,13 +340,13 @@ It has been modified to remove all non-free binary blobs.")
(define-public linux-libre-4.4
(package
(inherit linux-libre)
- (version "4.4.11")
+ (version "4.4.12")
(source (origin
(method url-fetch)
(uri (linux-libre-urls version))
(sha256
(base32
- "17pb9w72vigdrhm8hnkdyw9kwc2l06nabzygpdkwbvf7fg3j03vc"))))
+ "1zbds4ihk4x3lxr1jw7yrjzv1dkl995m41a54dfgqm0kj70li8ws"))))
(native-inputs
(let ((conf (kernel-config (or (%current-target-system)
(%current-system))
@@ -357,13 +357,13 @@ It has been modified to remove all non-free binary blobs.")
(define-public linux-libre-4.1
(package
(inherit linux-libre)
- (version "4.1.24")
+ (version "4.1.25")
(source (origin
(method url-fetch)
(uri (linux-libre-urls version))
(sha256
(base32
- "14jlnq0k86bl4wj8shmvgf34w90bbm9in44j1pdjwwvn169zh9ra"))))
+ "1vpgcnmfnn005rcd60wyyg0f84fgapdmz2dpcy77p2l66mw4pakf"))))
(native-inputs
(let ((conf (kernel-config (or (%current-target-system)
(%current-system))
@@ -883,7 +883,7 @@ MIDI functionality to the Linux-based operating system.")
(define-public iptables
(package
(name "iptables")
- (version "1.4.16.2")
+ (version "1.4.21")
(source (origin
(method url-fetch)
(uri (string-append
@@ -891,7 +891,7 @@ MIDI functionality to the Linux-based operating system.")
version ".tar.bz2"))
(sha256
(base32
- "0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
+ "1q6kg7sf0pgpq0qhab6sywl23cngxxfzc9zdzscsba8x09l4q02j"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; no test suite
@@ -1307,18 +1307,15 @@ processes currently causing I/O.")
(define-public fuse
(package
(name "fuse")
- (version "2.9.5")
+ (version "2.9.6")
(source (origin
(method url-fetch)
- (uri (let ((version-with-underscores
- (string-join (string-split version #\.) "_")))
- (string-append
- "https://github.com/libfuse/libfuse/"
- "releases/download/fuse_" version-with-underscores
- "/fuse-" version ".tar.gz")))
+ (uri (string-append "https://github.com/libfuse/libfuse/releases/"
+ "download/fuse-" version
+ "/fuse-" version ".tar.gz"))
(sha256
(base32
- "1dfvbi1p57svbv2sfnbqwpnsk219spvjnlapf35azhgzqlf3g7sp"))))
+ "0szi2vlsjxg03y4ji51jks34p269jqj5ify6l0ajsqq6f6y8pd0c"))))
(build-system gnu-build-system)
(inputs `(("util-linux" ,util-linux)))
(arguments
@@ -1354,7 +1351,7 @@ processes currently causing I/O.")
(("-DFUSERMOUNT_DIR=[[:graph:]]+")
"-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")))
%standard-phases)))
- (home-page "http://fuse.sourceforge.net/")
+ (home-page "https://github.com/libfuse/libfuse")
(synopsis "Support file systems implemented in user space")
(description
"As a consequence of its monolithic design, file system code for Linux
diff --git a/gnu/packages/lirc.scm b/gnu/packages/lirc.scm
index b077825529..6b1eee3ef2 100644
--- a/gnu/packages/lirc.scm
+++ b/gnu/packages/lirc.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
+;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,6 +23,7 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages libusb)
#:use-module (gnu packages linux)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
@@ -31,23 +32,46 @@
(define-public lirc
(package
(name "lirc")
- (version "0.9.3")
+ (version "0.9.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/lirc/lirc-"
version ".tar.bz2"))
(sha256
(base32
- "19c6ldjsdnk1md66q3nb035ja1xj217k8iabhxpsb8rs10a6kwi6"))
+ "1l2xzhnm4hrla51ik09hcafki0y8wnww7svfm7j63zbl2rssc66x"))
(patches (search-patches "lirc-localstatedir.patch"))))
(build-system gnu-build-system)
(arguments
- '(#:configure-flags '("--localstatedir=/var")))
+ '(#:configure-flags '("--localstatedir=/var")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-lirc-make-devinput
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; 'lirc-make-devinput' script assumes that linux headers
+ ;; are placed in "/usr/...".
+ (let ((headers (assoc-ref inputs "linux-headers")))
+ (substitute* "tools/lirc-make-devinput"
+ (("/usr/include") (string-append headers "/include"))))
+ #t))
+ (add-after 'unpack 'patch-doc/Makefile.in
+ (lambda _
+ ;; Lirc wants to install several images and a useless html page
+ ;; to "$(localstatedir)/lib/lirc/". This makes 'install' phase
+ ;; fail as localstatedir is "/var", so do not install these
+ ;; files there (the same images are installed in
+ ;; "share/doc/lirc/images/" anyway).
+ (substitute* "doc/Makefile.in"
+ (("^vardocs_DATA =.*") "vardocs_DATA =\n")
+ (("^varimage_DATA =.*") "varimage_DATA =\n"))
+ #t)))))
(native-inputs
`(("pkg-config" ,pkg-config)
("libxslt" ,libxslt)))
(inputs
`(("libx11" ,libx11)
+ ("libusb-compat" ,libusb-compat)
+ ("linux-headers" ,linux-libre-headers)
("alsa-lib" ,alsa-lib)
("python" ,python)))
(home-page "http://www.lirc.org/")
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 85f3f3cebb..e349907f14 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -26,7 +26,7 @@
#:use-module (guix packages)
#:use-module (gnu packages readline)
#:use-module (gnu packages texinfo)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages m4)
#:use-module (guix download)
#:use-module (guix git-download)
diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm
index 17874f86ab..b4b5dee8be 100644
--- a/gnu/packages/lua.scm
+++ b/gnu/packages/lua.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2014 Raimon Grau <raimonster@gmail.com>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -30,13 +31,13 @@
(define-public lua
(package
(name "lua")
- (version "5.2.3")
+ (version "5.2.4")
(source (origin
(method url-fetch)
(uri (string-append "http://www.lua.org/ftp/lua-"
version ".tar.gz"))
(sha256
- (base32 "0b8034v1s82n4dg5rzcn12067ha3nxaylp2vdp8gg08kjsbzphhk"))
+ (base32 "0jwznq0l8qg9wh5grwg07b5cy3lzngvl5m2nl1ikp6vqssmf9qmr"))
(patches (search-patches "lua-pkgconfig.patch"
"lua52-liblua-so.patch"))))
(build-system gnu-build-system)
@@ -46,18 +47,18 @@
(guix build utils)
(srfi srfi-1))
#:test-target "test"
- #:phases (alist-replace
- 'build
- (lambda _ (zero? (system* "make" "CFLAGS=-fPIC" "linux")))
- (alist-replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (zero? (system* "make" "install"
- (string-append "INSTALL_TOP=" out)
- (string-append "INSTALL_MAN=" out
- "/share/man/man1")))))
- (alist-delete 'configure %standard-phases)))))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _ (zero? (system* "make" "CFLAGS=-fPIC" "linux"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (zero? (system* "make" "install"
+ (string-append "INSTALL_TOP=" out)
+ (string-append "INSTALL_MAN=" out
+ "/share/man/man1")))))))))
(home-page "http://www.lua.org/")
(synopsis "Embeddable scripting language")
(description
@@ -78,18 +79,19 @@ for configuration, scripting, and rapid prototyping.")
version ".tar.gz"))
(sha256
(base32 "0cskd4w0g6rdm2q8q3i4n1h3j8kylhs3rq8mxwl9vwlmlxbgqh16"))
- (patches (search-patches "lua51-liblua-so.patch"))))))
+ (patches (search-patches "lua51-liblua-so.patch"
+ "lua-CVE-2014-5461.patch"))))))
(define-public luajit
(package
(name "luajit")
- (version "2.0.3")
+ (version "2.0.4")
(source (origin
(method url-fetch)
(uri (string-append "http://luajit.org/download/LuaJIT-"
version ".tar.gz"))
(sha256
- (base32 "0ydxpqkmsn2c341j4r2v6r5r0ig3kbwv3i9jran3iv81s6r6rgjm"))
+ (base32 "0zc0y7p6nx1c0pp4nhgbdgjljpfxsb5kgwp4ysz22l1p2bms83v2"))
(patches (search-patches "luajit-symlinks.patch"
"luajit-no_ldconfig.patch"))))
(build-system gnu-build-system)
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index cbc7509416..2ccf0f2557 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,12 +22,15 @@
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module (guix download)
+ #:use-module (guix svn-download)
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system r)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages boost)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages dejagnu)
#:use-module (gnu packages gcc)
#:use-module (gnu packages maths)
#:use-module (gnu packages pkg-config)
@@ -107,6 +111,95 @@ classification.")
`(("python" ,python)))
(synopsis "Python bindings of libSVM")))
+(define-public ghmm
+ ;; The latest release candidate is several years and a couple of fixes have
+ ;; been published since. This is why we download the sources from the SVN
+ ;; repository.
+ (let ((svn-revision 2341))
+ (package
+ (name "ghmm")
+ (version (string-append "0.9-rc3-0." (number->string svn-revision)))
+ (source (origin
+ (method svn-fetch)
+ (uri (svn-reference
+ (url "http://svn.code.sf.net/p/ghmm/code/trunk")
+ (revision svn-revision)))
+ (file-name (string-append name "-" version))
+ (sha256
+ (base32
+ "0qbq1rqp94l530f043qzp8aw5lj7dng9wq0miffd7spd1ff638wq"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'enter-dir
+ (lambda _ (chdir "ghmm") #t))
+ (add-after 'enter-dir 'fix-PYTHONPATH
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The Python tests fail as the library is assumed to be stored
+ ;; in ./build/lib.linux-i686-*. To fix this we detect the CPU
+ ;; and use it in the path.
+ (substitute* "configure.in"
+ (("AM_INIT_AUTOMAKE" line)
+ (string-append line "\nAC_CANONICAL_HOST\n")))
+ (substitute* "ghmmwrapper/Makefile.am"
+ (("i686") "@host_cpu@"))
+ #t))
+ (add-after 'enter-dir 'fix-runpath
+ (lambda* (#:key outputs #:allow-other-keys)
+ (substitute* "ghmmwrapper/setup.py"
+ (("^(.*)extra_compile_args = \\[" line indent)
+ (string-append indent
+ "extra_link_args = [\"-Wl,-rpath="
+ (assoc-ref outputs "out") "/lib\"],\n"
+ line
+ "\"-Wl,-rpath="
+ (assoc-ref outputs "out")
+ "/lib\", ")))
+ #t))
+ (add-after 'enter-dir 'disable-broken-tests
+ (lambda _
+ (substitute* "tests/Makefile.am"
+ ;; GHMM_SILENT_TESTS is assumed to be a command.
+ (("TESTS_ENVIRONMENT.*") "")
+ ;; Do not build broken tests.
+ (("chmm .*") "")
+ (("read_fa .*") "")
+ (("mcmc .*") "")
+ (("label_higher_order_test.*$")
+ "label_higher_order_test\n"))
+
+ ;; These Python unittests are broken as there is no gato.
+ ;; See https://sourceforge.net/p/ghmm/support-requests/3/
+ (substitute* "ghmmwrapper/ghmmunittests.py"
+ (("^(.*)def (testNewXML|testMultipleTransitionClasses|testNewXML)"
+ line indent)
+ (string-append indent
+ "@unittest.skip(\"Disabled by Guix\")\n"
+ line)))
+ #t))
+ (add-before 'configure 'autogen
+ (lambda _
+ (zero? (system* "bash" "./autogen.sh")))))))
+ (inputs
+ `(("python" ,python-2) ; only Python 2 is supported
+ ("libxml2" ,libxml2)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("dejagnu" ,dejagnu)
+ ("swig" ,swig)
+ ("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (home-page "http://ghmm.org")
+ (synopsis "Hidden Markov Model library")
+ (description
+ "The General Hidden Markov Model library (GHMM) is a C library with
+additional Python bindings implementing a wide range of types of @dfn{Hidden
+Markov Models} (HMM) and algorithms: discrete, continous emissions, basic
+training, HMM clustering, HMM mixtures.")
+ (license license:lgpl2.0+))))
+
(define-public randomjungle
(package
(name "randomjungle")
@@ -138,7 +231,8 @@ classification.")
("libxml2" ,libxml2)
("zlib" ,zlib)))
(native-inputs
- `(("gfortran" ,gfortran)))
+ `(("gfortran" ,gfortran)
+ ("gfortran:lib" ,gfortran "lib")))
(home-page "http://www.imbs-luebeck.de/imbs/de/node/227/")
(synopsis "Implementation of the Random Forests machine learning method")
(description
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index e86afb2f2d..b4563277aa 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -344,12 +344,12 @@ repository and Maildir/IMAP as LOCAL repository.")
("glib" ,glib "bin") ; for gtester
("autoconf" ,autoconf)
("automake" ,automake)
+ ("emacs" ,emacs-minimal)
("libtool" ,libtool)
("texinfo" ,texinfo)))
;; TODO: Add webkit and gtk to build the mug GUI.
(inputs
`(("xapian" ,xapian)
- ("emacs" ,emacs-no-x)
("guile" ,guile-2.0)
("glib" ,glib)
("gmime" ,gmime)
@@ -1149,7 +1149,8 @@ deliver it in various ways.")
;; The following patch fixes an ambiguous definition of
;; getline() in formail.c. The patch is provided by Debian as
;; patch 24.
- (patches (search-patches "procmail-ambiguous-getline-debian.patch"))))
+ (patches (search-patches "procmail-ambiguous-getline-debian.patch"
+ "procmail-CVE-2014-3618.patch"))))
(arguments
`(#:phases (modify-phases %standard-phases
(replace 'configure
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 19ed44f2c9..3b860a957f 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -81,7 +81,7 @@
#:use-module (gnu packages tcsh)
#:use-module (gnu packages tcl)
#:use-module (gnu packages texinfo)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages tls)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xml)
@@ -582,6 +582,102 @@ common interface for a number of different free optimization routines available
online as well as original implementations of various other algorithms.")
(license license:lgpl2.1+)))
+(define-public ipopt
+ (package
+ (name "ipopt")
+ (version "3.12.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://www.coin-or.org/download/source/Ipopt/Ipopt-"
+ version".tgz"))
+ (sha256
+ (base32
+ "09bk2hqy2vgi4yi76xng9zxakddwqy3wij9nx7wf2vfbxxpazrsk"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Make sure we don't use the bundled software.
+ '(delete-file-recursively "ThirdParty"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (add-after 'install 'add--L-flags-in-ipopt.pc
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; The '.pc' file lists '-llapack -lblas' in "Libs";
+ ;; move it to "Libs.private" where it belongs, and add a
+ ;; '-L' flag for LAPACK.
+ (let ((out (assoc-ref outputs "out"))
+ (lapack (assoc-ref inputs "lapack")))
+ (substitute* (string-append out "/lib/pkgconfig/"
+ "ipopt.pc")
+ (("Libs: (.*)-llapack -lblas(.*)$" _ before after)
+ (string-append "Libs: " before " " after "\n"
+ "Libs.private: " before
+ "-L" lapack "/lib -llapack -lblas "
+ after "\n")))
+ #t))))))
+ (native-inputs
+ `(("gfortran" ,gfortran)))
+ (inputs
+ ;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL.
+ `(("lapack" ,lapack))) ;for both libblas and liblapack
+ (home-page "http://www.coin-or.org")
+ (synopsis "Large-scale nonlinear optimizer")
+ (description
+ "The Interior Point Optimizer (IPOPT) is a software package for
+large-scale nonlinear optimization. It provides C++, C, and Fortran
+interfaces.")
+ (license license:epl1.0)))
+
+(define-public ceres
+ (package
+ (name "ceres-solver")
+ (version "1.11.0")
+ (home-page "http://ceres-solver.org/")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append home-page "ceres-solver-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0i7qkbf8g6pd8arxzldppga26ckv93y8zldsfz6wbd4n6b1nqrjd"))))
+ (build-system cmake-build-system)
+ (arguments
+ ;; TODO: Build HTML user documentation and install separately.
+ ;; XXX: Use the embedded "miniglog" as a replacement for
+ ;; <https://github.com/google/glog>. TODO: Use Glog when it's available.
+ '(#:configure-flags '("-DMINIGLOG=ON"
+ "-DBUILD_EXAMPLES=OFF"
+ "-DBUILD_SHARED_LIBS=ON")
+
+ #:phases (modify-phases %standard-phases
+ (add-before 'configure 'set-library-directory
+ (lambda _
+ ;; Install libraries to lib/, not lib64/.
+ (substitute* "internal/ceres/CMakeLists.txt"
+ (("set\\(LIB_SUFFIX \"64\"\\)")
+ "set(LIB_SUFFIX \"\")"))
+ #t)))))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("eigen" ,eigen)
+ ("blas" ,openblas)
+ ("lapack" ,lapack)
+ ("suitesparse" ,suitesparse)
+ ("gflags" ,gflags)))
+ (synopsis "C++ library for solving large optimization problems")
+ (description
+ "Ceres Solver is a C++ library for modeling and solving large,
+complicated optimization problems. It is a feature rich, mature and
+performant library which has been used in production since 2010. Ceres Solver
+can solve two kinds of problems:
+@enumerate
+@item non-linear least squares problems with bounds constraints;
+@item general unconstrained optimization problems.
+@end enumerate\n")
+ (license license:bsd-3)))
+
;; For a fully featured Octave, users are strongly recommended also to install
;; the following packages: texinfo, less, ghostscript, gnuplot.
(define-public octave
@@ -1610,7 +1706,11 @@ point numbers.")
(build-system gnu-build-system)
(inputs
`(("wxwidgets" ,wxwidgets)
- ("maxima" ,maxima)))
+ ("maxima" ,maxima)
+ ;; Runtime support.
+ ("adwaita-icon-theme" ,adwaita-icon-theme)
+ ("gtk+" ,gtk+)
+ ("shared-mime-info" ,shared-mime-info)))
(arguments
`(#:phases (modify-phases %standard-phases
(add-after
@@ -1620,7 +1720,18 @@ point numbers.")
"/bin/wxmaxima")
`("PATH" ":" prefix
(,(string-append (assoc-ref inputs "maxima")
- "/bin"))))
+ "/bin")))
+ ;; For GtkFileChooserDialog.
+ `("GSETTINGS_SCHEMA_DIR" =
+ (,(string-append (assoc-ref inputs "gtk+")
+ "/share/glib-2.0/schemas")))
+ `("XDG_DATA_DIRS" ":" prefix
+ (;; Needed by gdk-pixbuf to know supported icon formats.
+ ,(string-append
+ (assoc-ref inputs "shared-mime-info") "/share")
+ ;; The default icon theme of GTK+.
+ ,(string-append
+ (assoc-ref inputs "adwaita-icon-theme") "/share"))))
#t)))))
(home-page "https://andrejv.github.io/wxmaxima/")
(synopsis "Graphical user interface for the Maxima computer algebra system")
diff --git a/gnu/packages/mcrypt.scm b/gnu/packages/mcrypt.scm
index a683ad7ac9..7ac0b92d81 100644
--- a/gnu/packages/mcrypt.scm
+++ b/gnu/packages/mcrypt.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,7 +37,11 @@
version ".tar.gz"))
(sha256
(base32
- "161031n1w9pb4yzz9i47szc12a4mwpcpvyxnvafsik2l9s2aliai"))))
+ "161031n1w9pb4yzz9i47szc12a4mwpcpvyxnvafsik2l9s2aliai"))
+ (patches (search-patches
+ "mcrypt-CVE-2012-4409.patch"
+ "mcrypt-CVE-2012-4426.patch"
+ "mcrypt-CVE-2012-4527.patch"))))
(build-system gnu-build-system)
(inputs
`(("zlib" ,zlib)
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 3ac3888da4..215fa19bb8 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -378,14 +378,14 @@ compromised.")
(define-public znc
(package
(name "znc")
- (version "1.6.2")
+ (version "1.6.3")
(source (origin
(method url-fetch)
(uri (string-append "http://znc.in/releases/archive/znc-"
version ".tar.gz"))
(sha256
(base32
- "14q5dyr5zg99hm6j6g1gilcn1zf7dskhxfpz3bnkyhy6q0kpgwgf"))))
+ "09xqi5fs40x6nj9gq99bnw1a7saq96bvqxknxx0ilq7yfvg4c733"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f ; tries to download GoogleTest with wget
diff --git a/gnu/packages/moreutils.scm b/gnu/packages/moreutils.scm
index eebb20790d..79e2a42762 100644
--- a/gnu/packages/moreutils.scm
+++ b/gnu/packages/moreutils.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,7 +29,7 @@
(define-public moreutils
(package
(name "moreutils")
- (version "0.57")
+ (version "0.58")
(source (origin
(method url-fetch)
(uri (string-append
@@ -36,7 +37,7 @@
version ".orig.tar.gz"))
(sha256
(base32
- "078dpkwwwrv8hxnylbc901kib2d1rr3hsja37j6dlpjfcfq58z9s"))))
+ "02n00vqp6jxbxr5v3rdjxmzp6kxxjdkjgcclam6wrw8qamsbljww"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)
("libxml2" ,libxml2)
@@ -45,18 +46,17 @@
("docbook-xsl" ,docbook-xsl)))
(arguments
`(#:phases
- (alist-replace
- 'configure
- (lambda* (#:key inputs #:allow-other-keys)
- (use-modules (srfi srfi-1))
- (substitute* "Makefile"
- (("/usr/share/xml/.*/docbook.xsl")
- (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl"))
- (files (find-files docbook-xsl "^docbook\\.xsl$")))
- (find (lambda (file)
- (string-suffix? "/manpages/docbook.xsl" file))
- files)))))
- %standard-phases)
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs #:allow-other-keys)
+ (use-modules (srfi srfi-1))
+ (substitute* "Makefile"
+ (("/usr/share/xml/.*/docbook.xsl")
+ (let* ((docbook-xsl (assoc-ref inputs "docbook-xsl"))
+ (files (find-files docbook-xsl "^docbook\\.xsl$")))
+ (find (lambda (file)
+ (string-suffix? "/manpages/docbook.xsl" file))
+ files)))))))
#:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out"))
"CC=gcc")))
diff --git a/gnu/packages/mp3.scm b/gnu/packages/mp3.scm
index fe1d13b382..8451f0ac9f 100644
--- a/gnu/packages/mp3.scm
+++ b/gnu/packages/mp3.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -107,11 +108,11 @@ versions of ID3v2.")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/id3lib/id3lib/"
- version "/id3lib-"
- version ".tar.gz"))
+ version "/id3lib-" version ".tar.gz"))
(sha256
(base32
- "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))))
+ "0yfhqwk0w8q2hyv1jib1008jvzmwlpsxvc8qjllhna6p1hycqj97"))
+ (patches (search-patches "id3lib-CVE-2007-4460.patch"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@@ -417,36 +418,36 @@ format.")
(version "0.2.4")
(source (origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/mpc123/version%20"
- version "/mpc123-" version ".tar.gz"))
+ (uri (list (string-append "mirror://sourceforge/mpc123/version%20"
+ version "/mpc123-" version ".tar.gz")
+ (string-append "mirror://debian/pool/main/m/" name
+ "/" name "_" version ".orig.tar.gz")))
(sha256
(base32
"0sf4pns0245009z6mbxpx7kqy4kwl69bc95wz9v23wgappsvxgy1"))
(patches (search-patches "mpc123-initialize-ao.patch"))))
(build-system gnu-build-system)
(arguments
- '(#:phases (alist-replace
- 'configure
- (lambda _
- (substitute* "Makefile"
- (("CC[[:blank:]]*:=.*")
- "CC := gcc\n")))
- (alist-replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin")))
- (mkdir-p bin)
- (install-file "mpc123" bin)))
- %standard-phases))
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ (substitute* "Makefile"
+ (("CC[[:blank:]]*:=.*")
+ "CC := gcc\n"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (mkdir-p bin)
+ (install-file "mpc123" bin)))))
#:tests? #f))
-
(native-inputs
`(("gettext" ,gnu-gettext)))
(inputs
`(("libao" ,ao)
("libmpcdec" ,libmpcdec)))
- (home-page "http://mpc123.sourceforge.net/")
+ (home-page "https://github.com/bucciarati/mpc123")
(synopsis "Audio player for Musepack-formatted files")
(description
"Mpc123 is a command-line player for files in the Musepack audio
@@ -456,7 +457,7 @@ compression format (.mpc files).")
(define-public eyed3
(package
(name "eyed3")
- (version "0.7.8")
+ (version "0.7.9")
(source (origin
(method url-fetch)
(uri (string-append
@@ -464,7 +465,7 @@ compression format (.mpc files).")
version ".tar.gz"))
(sha256
(base32
- "1nv7nhfn1d0qm7rgkzksbccgqisng8klf97np0nwaqwd5dbmdf86"))))
+ "08mzhqg3k63d244cgwd0y1xrb8x9m6b99ykyskpnwyxl4wxrgrzp"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2))
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index f2787ee2d1..d491aa605e 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -85,7 +85,7 @@
#:use-module (gnu packages sdl)
#:use-module (gnu packages tcl)
#:use-module (gnu packages texinfo)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages web)
@@ -437,10 +437,10 @@ Guile.")
(define-public non-sequencer
;; The latest tagged release is three years old and uses a custom build
;; system, so we take the last commit affecting the "sequencer" directory.
- (let ((commit "1d9bd576"))
+ (let ((commit "1d9bd576f6bf7ea240af5f7a60260592750af0dd"))
(package
(name "non-sequencer")
- (version (string-append "1.9.5-" commit))
+ (version (string-append "1.9.5-" (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index ffad1db2f2..ba8023aeaa 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2016 Raimon Grau <raimonster@gmail.com>
;;; Copyright © 2016 Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>
;;; Copyright 2016 John Darrington <jmd@gnu.org>
+;;; Copyright © 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -26,12 +27,25 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
- #:use-module (gnu packages tls)
- #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages admin)
+ #:use-module (gnu packages adns)
+ #:use-module (gnu packages audio)
+ #:use-module (gnu packages bison)
#:use-module (gnu packages check)
+ #:use-module (gnu packages compression)
+ #:use-module (gnu packages flex)
+ #:use-module (gnu packages gnupg)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages linux)
+ #:use-module (gnu packages lua)
+ #:use-module (gnu packages mit-krb5)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages compression))
+ #:use-module (gnu packages python)
+ #:use-module (gnu packages tls))
(define-public macchanger
(package
@@ -115,14 +129,14 @@ or server shell scripts with network connections.")
(define-public zeromq
(package
(name "zeromq")
- (version "4.0.5")
+ (version "4.0.7")
(source (origin
(method url-fetch)
(uri (string-append "http://download.zeromq.org/zeromq-"
version ".tar.gz"))
(sha256
(base32
- "0arl8fy8d03xd5h0mgda1s5bajwg8iyh1kk4hd1420rpcxgkrj9v"))))
+ "00vvwhgcdr1lva2pavicvy92iad0hj8cf71n702hv6blw1kjj2z0"))))
(build-system gnu-build-system)
(home-page "http://zeromq.org")
(synopsis "Library for message-based applications")
@@ -273,3 +287,54 @@ DNS queries are allowed. The bandwidth is asymmetrical, with limited upstream
and up to 1 Mbit/s downstream.")
;; src/md5.[ch] is released under the zlib license
(license (list license:isc license:zlib))))
+
+(define-public wireshark
+ (package
+ (name "wireshark")
+ (version "2.0.3")
+ (synopsis "Network traffic analyzer")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.wireshark.org/download/src/wireshark-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "1z358k65frp9m0l07cppwxhvbcp1w9ya5sml87pzs8gyfmp3g5p1"))))
+ (build-system glib-or-gtk-build-system)
+ (inputs `(("bison" ,bison)
+ ("c-ares" ,c-ares)
+ ("flex" ,flex)
+ ("gnutls" ,gnutls)
+ ("gtk+" ,gtk+)
+ ("libcap" ,libcap)
+ ("libgcrypt" ,libgcrypt)
+ ("libnl" ,libnl)
+ ("libpcap" ,libpcap)
+ ("lua" ,lua)
+ ("krb5" ,mit-krb5)
+ ("openssl" ,openssl)
+ ("portaudio" ,portaudio)
+ ("sbc" ,sbc)
+ ("zlib" ,zlib)))
+ (native-inputs `(("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-wrapper)))
+ (arguments
+ `(#:configure-flags
+ (list (string-append "--with-c-ares=" (assoc-ref %build-inputs "c-ares"))
+ (string-append "--with-krb5=" (assoc-ref %build-inputs "krb5"))
+ (string-append "--with-libcap=" (assoc-ref %build-inputs "libcap"))
+ (string-append "--with-lua=" (assoc-ref %build-inputs "lua"))
+ (string-append "--with-pcap=" (assoc-ref %build-inputs "libpcap"))
+ (string-append "--with-portaudio="
+ (assoc-ref %build-inputs "portaudio"))
+ (string-append "--with-sbc=" (assoc-ref %build-inputs "sbc"))
+ (string-append "--with-ssl=" (assoc-ref %build-inputs "openssl"))
+ (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib"))
+ "--without-qt")))
+ (description "Wireshark is a network protocol analyzer, or @dfn{packet
+sniffer}, that lets you capture and interactively browse the contents of
+network frames.")
+ (license license:gpl2+)
+ (home-page "https://www.wireshark.org/")))
diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 4ae25450e8..bb8bffc40d 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -39,16 +39,20 @@
(define-public ntp
(package
(name "ntp")
- (version "4.2.8p7")
+ (version "4.2.8p8")
(source (origin
(method url-fetch)
- (uri (string-append
- "http://archive.ntp.org/ntp4/ntp-"
- (version-major+minor version)
- "/ntp-" version ".tar.gz"))
+ (uri (list (string-append
+ "http://archive.ntp.org/ntp4/ntp-"
+ (version-major+minor version)
+ "/ntp-" version ".tar.gz")
+ (string-append
+ "https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-"
+ (version-major+minor version)
+ "/ntp-" version ".tar.gz")))
(sha256
(base32
- "1p100856h17nb0kpnppy70nja57hbcc95h7shhxvw6mhl030rll1"))
+ "1vlpgd0dk2wkpmmf869sfxi8f46sfnmjgk51vl8n6vj5y2sx1cra"))
(modules '((guix build utils)))
(snippet
'(begin
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 434fb132bb..a0a4b936db 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -38,7 +38,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages compression)
#:use-module (gnu packages xorg)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages lynx)
#:use-module (gnu packages perl)
@@ -386,7 +386,7 @@ It is developed using Objective Caml and Camlp5.")
(build-system gnu-build-system)
(native-inputs
`(("which" ,which)
- ("emacs" ,emacs-no-x)
+ ("emacs" ,emacs-minimal)
("texinfo" ,texinfo)))
(inputs
`(("host-emacs" ,emacs)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 314dc90888..46743fefb5 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -152,7 +152,7 @@
#t))))))
(native-inputs `(("pkg-config" ,pkg-config)
- ("emacs" ,emacs-no-x))) ;for guix.el
+ ("emacs" ,emacs-minimal))) ;for guix.el
(inputs
(let ((boot-guile (lambda (arch hash)
(origin
@@ -327,14 +327,15 @@ symlinks to the files in a common directory such as /usr/local.")
(define-public rpm
(package
(name "rpm")
- (version "4.12.0")
+ (version "4.12.0.1")
(source (origin
(method url-fetch)
(uri (string-append "http://rpm.org/releases/rpm-4.12.x/rpm-"
version ".tar.bz2"))
(sha256
(base32
- "18hk47hc755nslvb7xkq4jb095z7va0nlcyxdpxayc4lmb8mq3bp"))))
+ "0a82ym8phx7g0f3k6smvxnvzh7yv857l42xafk49689kzhld5pbp"))
+ (patches (search-patches "rpm-CVE-2014-8118.patch"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--with-external-db" ;use the system's bdb
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index 828bd26cf8..b0984a823e 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,6 +29,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages autotools)
+ #:use-module (gnu packages base)
#:use-module (gnu packages freeipmi)
#:use-module (gnu packages linux)
#:use-module (gnu packages mpi)
@@ -121,3 +123,30 @@ framework for starting, executing, and monitoring work (typically a parallel
job) on a set of allocated nodes, and arbitrates contention for resources
by managing a queue of pending work.")
(license license:gpl2+)))
+
+(define-public slurm-drmaa
+ (package
+ (name "slurm-drmaa")
+ (version "1.0.7")
+ (source (origin
+ (method url-fetch)
+ (uri "http://apps.man.poznan.pl/trac/slurm-drmaa/downloads/9")
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0grw55hmny2mc4nc0y1arnvxd2k0dcdfn476kzs180fibjxgfw14"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("slurm" ,slurm)))
+ (native-inputs
+ `(("which" ,which)))
+ (home-page "http://apps.man.poznan.pl/trac/slurm-drmaa")
+ (synopsis "Distributed resource management application API for SLURM")
+ (description
+ "PSNC DRMAA for Simple Linux Utility for Resource Management (SLURM) is
+an implementation of Open Grid Forum DRMAA 1.0 (Distributed Resource
+Management Application API) specification for submission and control of jobs
+to SLURM. Using DRMAA, grid applications builders, portal developers and ISVs
+can use the same high-level API to link their software with different
+cluster/resource management systems.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/patches/a2ps-CVE-2001-1593.patch b/gnu/packages/patches/a2ps-CVE-2001-1593.patch
new file mode 100644
index 0000000000..17b7e7d932
--- /dev/null
+++ b/gnu/packages/patches/a2ps-CVE-2001-1593.patch
@@ -0,0 +1,69 @@
+Index: b/lib/routines.c
+===================================================================
+--- a/lib/routines.c
++++ b/lib/routines.c
+@@ -242,3 +242,50 @@
+ /* Don't complain if you can't unlink. Who cares of a tmp file? */
+ unlink (filename);
+ }
++
++/*
++ * Securely generate a temp file, and make sure it gets
++ * deleted upon exit.
++ */
++static char ** tempfiles;
++static unsigned ntempfiles;
++
++static void
++cleanup_tempfiles()
++{
++ while (ntempfiles--)
++ unlink(tempfiles[ntempfiles]);
++}
++
++char *
++safe_tempnam(const char *pfx)
++{
++ char *dirname, *filename;
++ int fd;
++
++ if (!(dirname = getenv("TMPDIR")))
++ dirname = "/tmp";
++
++ tempfiles = (char **) realloc(tempfiles,
++ (ntempfiles+1) * sizeof(char *));
++ if (tempfiles == NULL)
++ return NULL;
++
++ filename = malloc(strlen(dirname) + strlen(pfx) + sizeof("/XXXXXX"));
++ if (!filename)
++ return NULL;
++
++ sprintf(filename, "%s/%sXXXXXX", dirname, pfx);
++
++ if ((fd = mkstemp(filename)) < 0) {
++ free(filename);
++ return NULL;
++ }
++ close(fd);
++
++ if (ntempfiles == 0)
++ atexit(cleanup_tempfiles);
++ tempfiles[ntempfiles++] = filename;
++
++ return filename;
++}
+Index: b/lib/routines.h
+===================================================================
+--- a/lib/routines.h
++++ b/lib/routines.h
+@@ -255,7 +255,8 @@
+ /* If _STR_ is not defined, give it a tempname in _TMPDIR_ */
+ #define tempname_ensure(Str) \
+ do { \
+- (Str) = (Str) ? (Str) : tempnam (NULL, "a2_"); \
++ (Str) = (Str) ? (Str) : safe_tempnam("a2_"); \
+ } while (0)
++char * safe_tempnam(const char *);
+
+ #endif
diff --git a/gnu/packages/patches/a2ps-CVE-2014-0466.patch b/gnu/packages/patches/a2ps-CVE-2014-0466.patch
new file mode 100644
index 0000000000..85199e35b0
--- /dev/null
+++ b/gnu/packages/patches/a2ps-CVE-2014-0466.patch
@@ -0,0 +1,30 @@
+Description: CVE-2014-0466: fixps does not invoke gs with -dSAFER
+ A malicious PostScript file could delete files with the privileges of
+ the invoking user.
+Origin: vendor
+Bug-Debian: http://bugs.debian.org/742902
+Author: Salvatore Bonaccorso <carnil@debian.org>
+Last-Update: 2014-03-28
+
+--- a/contrib/fixps.in
++++ b/contrib/fixps.in
+@@ -389,7 +389,7 @@
+ eval "$command" ;;
+ gs)
+ $verbose "$program: making a full rewrite of the file ($gs)." >&2
+- $gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
++ $gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
+ esac
+ )
+ fi
+--- a/contrib/fixps.m4
++++ b/contrib/fixps.m4
+@@ -307,7 +307,7 @@
+ eval "$command" ;;
+ gs)
+ $verbose "$program: making a full rewrite of the file ($gs)." >&2
+- $gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
++ $gs -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=- -c save pop -f $file ;;
+ esac
+ )
+ fi
diff --git a/gnu/packages/patches/antiword-CVE-2014-8123.patch b/gnu/packages/patches/antiword-CVE-2014-8123.patch
new file mode 100644
index 0000000000..d8d346a634
--- /dev/null
+++ b/gnu/packages/patches/antiword-CVE-2014-8123.patch
@@ -0,0 +1,21 @@
+Description: Add check for buffer overflow with malformed input files
+ This was later re-found and became CVE-2014-8123.
+Author: <eriks@debian.org>
+Bug-Debian: http://bugs.debian.org/407015
+Bug-Debian: https://bugs.debian.org/771768
+Forwarded: http://seclists.org/oss-sec/2014/q4/870
+Last-Update: 2016-01-11
+
+--- antiword-0.37~/wordole.c 2005-08-26 21:49:57.000000000 +0200
++++ antiword-0.37/wordole.c 2009-06-03 22:31:15.948014682 +0200
+@@ -259,6 +259,10 @@
+ }
+ tNameSize = (size_t)usGetWord(0x40, aucBytes);
+ tNameSize = (tNameSize + 1) / 2;
++ if ( tNameSize > sizeof(atPPSlist[iIndex].szName)) {
++ werr(0, "Name Size of PPS %d is too large", iIndex);
++ tNameSize = sizeof(atPPSlist[iIndex].szName);
++ }
+ vName2String(atPPSlist[iIndex].szName, aucBytes, tNameSize);
+ atPPSlist[iIndex].ucType = ucGetByte(0x42, aucBytes);
+ if (atPPSlist[iIndex].ucType == 5) {
diff --git a/gnu/packages/patches/devil-CVE-2009-3994.patch b/gnu/packages/patches/devil-CVE-2009-3994.patch
new file mode 100644
index 0000000000..e009a95c44
--- /dev/null
+++ b/gnu/packages/patches/devil-CVE-2009-3994.patch
@@ -0,0 +1,24 @@
+Fix CVE-2009-3994 (buffer overflow in GetUID() allows remote DOS or
+arbitrary code execution via crafted DICOM file).
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3994
+
+Copied from Fedora
+https://pkgs.fedoraproject.org/cgit/rpms/DevIL.git/tree/DevIL-1.7.8-CVE-2009-3994.patch?id=9c656a75393d6c455aef9f4968fbbee9c53f4fdb
+
+diff -up devil-1.7.8/src-IL/src/il_dicom.c~ devil-1.7.8/src-IL/src/il_dicom.c
+--- devil-1.7.8/src-IL/src/il_dicom.c~ 2009-03-08 08:10:09.000000000 +0100
++++ devil-1.7.8/src-IL/src/il_dicom.c 2009-12-03 12:07:45.000000000 +0100
+@@ -427,9 +427,11 @@ ILboolean GetUID(ILubyte *UID)
+ return IL_FALSE;
+
+ ValLen = GetLittleUShort();
++ if (ValLen > 64)
++ return IL_FALSE;
+ if (iread(UID, ValLen, 1) != 1)
+ return IL_FALSE;
+- UID[64] = 0; // Just to make sure that our string is terminated.
++ UID[ValLen] = 0; // Just to make sure that our string is terminated.
+
+ return IL_TRUE;
+ }
diff --git a/gnu/packages/patches/emacs-fix-scheme-indent-function.patch b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
new file mode 100644
index 0000000000..c5a426802c
--- /dev/null
+++ b/gnu/packages/patches/emacs-fix-scheme-indent-function.patch
@@ -0,0 +1,29 @@
+Fix 'scheme-indent-function' to indent s-expressions starting with a keyword
+properly, like this:
+
+(#:foo 1
+ #:bar 2)
+
+instead of like this:
+
+(#:foo 1
+ #:bar 2)
+
+The fix is made by Mark H Weaver <mhw@netris.org>:
+<http://www.netris.org/~mhw/scheme-indent-function.el>
+
+--- a/lisp/progmodes/scheme.el
++++ b/lisp/progmodes/scheme.el
+@@ -482,6 +482,12 @@
+ (> (length function) 3)
+ (string-match "\\`def" function)))
+ (lisp-indent-defform state indent-point))
++ ((and (null method)
++ (> (length function) 1)
++ ;; The '#' in '#:' seems to get lost, not sure why
++ (string-match "\\`:" function))
++ (let ((lisp-body-indent 1))
++ (lisp-indent-defform state indent-point)))
+ ((integerp method)
+ (lisp-indent-specform method state
+ indent-point normal-indent))
diff --git a/gnu/packages/patches/gd-CVE-2016-3074.patch b/gnu/packages/patches/gd-CVE-2016-3074.patch
deleted file mode 100644
index a90c51d77b..0000000000
--- a/gnu/packages/patches/gd-CVE-2016-3074.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-Adapted from upstream commit 2bb97f407c1145c850416a3bfbcc8cf124e68a19
-(gd2: handle corrupt images better (CVE-2016-3074)).
-
-This patch omits the upstream changes to '.gitignore', and the test
-added in files 'tests/Makefile.am', 'tests/gd2/gd2_read_corrupt.c', and
-'tests/gd2/invalid_neg_size.gd2'.
-
-We omit the test because its input data,
-'tests/gd2/invalid_neg_size.gd2', is provided as a binary Git diff,
-which is not supported by `patch`.
-
-https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-3074
-https://github.com/libgd/libgd/commit/2bb97f407c1145c850416a3bfbcc8cf124e68a19
----
- .gitignore | 1 +
- src/gd_gd2.c | 2 ++
- tests/Makefile.am | 3 ++-
- tests/gd2/gd2_read_corrupt.c | 25 +++++++++++++++++++++++++
- tests/gd2/invalid_neg_size.gd2 | Bin 0 -> 1676 bytes
- 5 files changed, 30 insertions(+), 1 deletion(-)
- create mode 100644 tests/gd2/gd2_read_corrupt.c
- create mode 100644 tests/gd2/invalid_neg_size.gd2
-
-diff --git a/src/gd_gd2.c b/src/gd_gd2.c
-index 6f28461..a50b33d 100644
---- a/src/gd_gd2.c
-+++ b/src/gd_gd2.c
-@@ -165,6 +165,8 @@ _gd2GetHeader (gdIOCtxPtr in, int *sx, int *sy,
- if (gdGetInt (&cidx[i].size, in) != 1) {
- goto fail2;
- };
-+ if (cidx[i].offset < 0 || cidx[i].size < 0)
-+ goto fail2;
- };
- *chunkIdx = cidx;
- };
diff --git a/gnu/packages/patches/gegl-CVE-2012-4433.patch b/gnu/packages/patches/gegl-CVE-2012-4433.patch
new file mode 100644
index 0000000000..7352b78dba
--- /dev/null
+++ b/gnu/packages/patches/gegl-CVE-2012-4433.patch
@@ -0,0 +1,117 @@
+From: Michael Gilbert <mgilbert@debian.org>
+Date: Mon, 9 Sep 2013 17:34:32 +0200
+Subject: Fix_CVE-2012-4433
+
+Multiple buffer overflow issues.
+
+Closes: #692435
+---
+ operations/external/ppm-load.c | 62 ++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 53 insertions(+), 9 deletions(-)
+
+diff --git a/operations/external/ppm-load.c b/operations/external/ppm-load.c
+index efe6d56..465096d 100644
+--- a/operations/external/ppm-load.c
++++ b/operations/external/ppm-load.c
+@@ -36,6 +36,7 @@ gegl_chant_file_path (path, _("File"), "", _("Path of file to load."))
+ #include "gegl-chant.h"
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <errno.h>
+
+ typedef enum {
+ PIXMAP_ASCII = 51,
+@@ -44,8 +45,8 @@ typedef enum {
+
+ typedef struct {
+ map_type type;
+- gint width;
+- gint height;
++ glong width;
++ glong height;
+ gsize numsamples; /* width * height * channels */
+ gsize bpc; /* bytes per channel */
+ guchar *data;
+@@ -82,12 +83,33 @@ ppm_load_read_header(FILE *fp,
+ }
+
+ /* Get Width and Height */
+- img->width = strtol (header,&ptr,0);
+- img->height = atoi (ptr);
+- img->numsamples = img->width * img->height * CHANNEL_COUNT;
++ errno = 0;
++ img->width = strtol (header,&ptr,10);
++ if (errno)
++ {
++ g_warning ("Error reading width: %s", strerror(errno));
++ return FALSE;
++ }
++ else if (img->width < 0)
++ {
++ g_warning ("Error: width is negative");
++ return FALSE;
++ }
++
++ img->height = strtol (ptr,&ptr,10);
++ if (errno)
++ {
++ g_warning ("Error reading height: %s", strerror(errno));
++ return FALSE;
++ }
++ else if (img->width < 0)
++ {
++ g_warning ("Error: height is negative");
++ return FALSE;
++ }
+
+ fgets (header,MAX_CHARS_IN_ROW,fp);
+- maxval = strtol (header,&ptr,0);
++ maxval = strtol (header,&ptr,10);
+
+ if ((maxval != 255) && (maxval != 65535))
+ {
+@@ -109,6 +131,16 @@ ppm_load_read_header(FILE *fp,
+ g_warning ("%s: Programmer stupidity error", G_STRLOC);
+ }
+
++ /* Later on, img->numsamples is multiplied with img->bpc to allocate
++ * memory. Ensure it doesn't overflow. */
++ if (!img->width || !img->height ||
++ G_MAXSIZE / img->width / img->height / CHANNEL_COUNT < img->bpc)
++ {
++ g_warning ("Illegal width/height: %ld/%ld", img->width, img->height);
++ return FALSE;
++ }
++ img->numsamples = img->width * img->height * CHANNEL_COUNT;
++
+ return TRUE;
+ }
+
+@@ -229,12 +261,24 @@ process (GeglOperation *operation,
+ if (!ppm_load_read_header (fp, &img))
+ goto out;
+
+- rect.height = img.height;
+- rect.width = img.width;
+-
+ /* Allocating Array Size */
++
++ /* Should use g_try_malloc(), but this causes crashes elsewhere because the
++ * error signalled by returning FALSE isn't properly acted upon. Therefore
++ * g_malloc() is used here which aborts if the requested memory size can't be
++ * allocated causing a controlled crash. */
+ img.data = (guchar*) g_malloc (img.numsamples * img.bpc);
+
++ /* No-op without g_try_malloc(), see above. */
++ if (! img.data)
++ {
++ g_warning ("Couldn't allocate %" G_GSIZE_FORMAT " bytes, giving up.", ((gsize)img.numsamples * img.bpc));
++ goto out;
++ }
++
++ rect.height = img.height;
++ rect.width = img.width;
++
+ switch (img.bpc)
+ {
+ case 1:
diff --git a/gnu/packages/patches/icedtea-remove-overrides.patch b/gnu/packages/patches/icedtea-remove-overrides.patch
new file mode 100644
index 0000000000..e4d68a9e58
--- /dev/null
+++ b/gnu/packages/patches/icedtea-remove-overrides.patch
@@ -0,0 +1,291 @@
+Upstream patch:
+http://icedtea.classpath.org/hg/icedtea6/rev/60be25a84f2d
+
+Fixes build failure:
+http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2954
+
+Changes to the files 'NEWS' and 'ChangeLog' are omitted here.
+
+# HG changeset patch
+# User Andrew John Hughes <gnu.andrew@redhat.com>
+# Date 1463144538 -3600
+# Node ID 60be25a84f2dd2bce8ff277cc3854cca1b3f7931
+# Parent c23ceebb80a19a33316f1e743eb93bdf79aac220
+PR2954: ecj/override.patch is missing new @Overrides in RMIJRMPServerImpl.java
+
+2016-05-13 Andrew John Hughes <gnu.andrew@redhat.com>
+
+ PR2954: ecj/override.patch is missing new
+ @Overrides in RMIJRMPServerImpl.java
+ * patches/ecj/override.patch:
+ Add cases in RMIJRMPServerImpl and others
+ which show up when source/target 5 is
+ used in the rt-class-files pre-build.
+ * patches/openjdk/8014205-blank_swing_dialogs_windows.patch:
+ Remove addition of @Override.
+
+diff -r c23ceebb80a1 -r 60be25a84f2d patches/ecj/override.patch
+--- a/patches/ecj/override.patch Sun May 08 21:28:21 2016 +0100
++++ b/patches/ecj/override.patch Fri May 13 14:02:18 2016 +0100
+@@ -362,3 +362,240 @@
+ public Class<?> run() {
+ try {
+ ReflectUtil.checkPackageAccess(className);
++diff -r 545db1dd8c2a src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java
++--- openjdk-ecj/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/com/sun/jmx/interceptor/DefaultMBeanServerInterceptor.java Thu May 12 01:30:54 2016 +0100
++@@ -1870,7 +1870,6 @@
++
++ private ModifiableClassLoaderRepository getInstantiatorCLR() {
++ return AccessController.doPrivileged(new PrivilegedAction<ModifiableClassLoaderRepository>() {
++- @Override
++ public ModifiableClassLoaderRepository run() {
++ return instantiator != null ? instantiator.getClassLoaderRepository() : null;
++ }
++diff -r 545db1dd8c2a src/share/classes/com/sun/media/sound/Platform.java
++--- openjdk-ecj/jdk/src/share/classes/com/sun/media/sound/Platform.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/com/sun/media/sound/Platform.java Thu May 12 01:30:54 2016 +0100
++@@ -160,7 +160,6 @@
++ try {
++ // load the main library
++ AccessController.doPrivileged(new PrivilegedAction<Void>() {
++- @Override
++ public Void run() {
++ System.loadLibrary(libNameMain);
++ return null;
++@@ -182,7 +181,6 @@
++ final String lib = st.nextToken();
++ try {
++ AccessController.doPrivileged(new PrivilegedAction<Void>() {
++- @Override
++ public Void run() {
++ System.loadLibrary(lib);
++ return null;
++diff -r 545db1dd8c2a src/share/classes/java/awt/EventQueue.java
++--- openjdk-ecj/jdk/src/share/classes/java/awt/EventQueue.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/java/awt/EventQueue.java Thu May 12 01:30:54 2016 +0100
++@@ -190,7 +190,6 @@
++ EventQueue.invokeAndWait(source, r);
++ }
++
++- @Override
++ public long getMostRecentEventTime(EventQueue eventQueue) {
++ return eventQueue.getMostRecentEventTimeImpl();
++ }
++diff -r 545db1dd8c2a src/share/classes/java/io/ObjectInputStream.java
++--- openjdk-ecj/jdk/src/share/classes/java/io/ObjectInputStream.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/java/io/ObjectInputStream.java Thu May 12 01:30:54 2016 +0100
++@@ -3571,7 +3571,6 @@
++ }
++ static {
++ SharedSecrets.setJavaObjectInputStreamAccess(new JavaObjectInputStreamAccess() {
++- @Override
++ public void setValidator(ObjectInputStream ois, ObjectStreamClassValidator validator) {
++ ObjectInputStream.setValidator(ois, validator);
++ }
++diff -r 545db1dd8c2a src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java
++--- openjdk-ecj/jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/java/rmi/server/RemoteObjectInvocationHandler.java Thu May 12 01:30:54 2016 +0100
++@@ -64,7 +64,6 @@
++ final String propName = "sun.rmi.server.invocationhandler.allowFinalizeInvocation";
++ String allowProp = java.security.AccessController.doPrivileged(
++ new PrivilegedAction<String>() {
++- @Override
++ public String run() {
++ return System.getProperty(propName);
++ }
++diff -r 545db1dd8c2a src/share/classes/sun/awt/image/SunVolatileImage.java
++--- openjdk-ecj/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/awt/image/SunVolatileImage.java Thu May 12 01:30:54 2016 +0100
++@@ -262,7 +262,6 @@
++ *
++ * @see sun.java2d.DestSurfaceProvider#getDestSurface
++ */
++- @Override
++ public Surface getDestSurface() {
++ return volSurfaceManager.getPrimarySurfaceData();
++ }
++diff -r 545db1dd8c2a src/share/classes/sun/java2d/SunGraphics2D.java
++--- openjdk-ecj/jdk/src/share/classes/sun/java2d/SunGraphics2D.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/java2d/SunGraphics2D.java Thu May 12 01:30:54 2016 +0100
++@@ -3294,7 +3294,6 @@
++ *
++ * @see sun.java2d.DestSurfaceProvider#getDestSurface
++ */
++- @Override
++ public Surface getDestSurface() {
++ return surfaceData;
++ }
++diff -r 545db1dd8c2a src/share/classes/sun/rmi/server/UnicastServerRef.java
++--- openjdk-ecj/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/rmi/server/UnicastServerRef.java Thu May 12 01:30:54 2016 +0100
++@@ -630,12 +630,10 @@
++ this.callID = callID;
++ }
++
++- @Override
++ public void validateDescriptor(ObjectStreamClass descriptor) {
++ descriptorCheck.check(method, descriptor, parameterIndex, callID);
++ }
++
++- @Override
++ public void checkProxyInterfaceNames(String[] ifaces) {
++ descriptorCheck.checkProxyClass(method, ifaces, parameterIndex, callID);
++ }
++diff -r 545db1dd8c2a src/share/classes/sun/rmi/transport/Transport.java
++--- openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/Transport.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/Transport.java Thu May 12 01:30:54 2016 +0100
++@@ -133,7 +133,6 @@
++ */
++ private static void setContextClassLoader(final ClassLoader ccl) {
++ AccessController.doPrivileged(new PrivilegedAction<Void> () {
++- @Override
++ public Void run() {
++ Thread.currentThread().setContextClassLoader(ccl);
++ return null;
++diff -r 545db1dd8c2a src/share/classes/sun/rmi/transport/tcp/TCPTransport.java
++--- openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/sun/rmi/transport/tcp/TCPTransport.java Thu May 12 01:30:54 2016 +0100
++@@ -676,7 +676,6 @@
++ connectionCount.incrementAndGet() +
++ ")-" + remoteHost);
++ AccessController.doPrivileged(new PrivilegedAction<Void>() {
++- @Override
++ public Void run() {
++ run0();
++ return null;
++diff -r 545db1dd8c2a src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java
++--- openjdk-ecj/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/solaris/classes/sun/java2d/opengl/GLXGraphicsConfig.java Thu May 12 01:30:54 2016 +0100
++@@ -92,7 +92,6 @@
++ return this;
++ }
++
++- @Override
++ public SurfaceData createManagedSurface(int w, int h, int transparency) {
++ return GLXSurfaceData.createData(this, w, h,
++ getColorModel(transparency),
++@@ -165,12 +164,10 @@
++ * Returns true if the provided capability bit is present for this config.
++ * See OGLContext.java for a list of supported capabilities.
++ */
++- @Override
++ public final boolean isCapPresent(int cap) {
++ return ((oglCaps.getCaps() & cap) != 0);
++ }
++
++- @Override
++ public final long getNativeConfigInfo() {
++ return pConfigInfo;
++ }
++@@ -180,7 +177,6 @@
++ *
++ * @see sun.java2d.pipe.hw.BufferedContextProvider#getContext
++ */
++- @Override
++ public final OGLContext getContext() {
++ return context;
++ }
++@@ -394,7 +390,6 @@
++ *
++ * @see sun.java2d.pipe.hw.AccelGraphicsConfig#createCompatibleVolatileImage
++ */
++- @Override
++ public VolatileImage
++ createCompatibleVolatileImage(int width, int height,
++ int transparency, int type)
++@@ -434,17 +429,14 @@
++ *
++ * @see sun.java2d.pipe.hw.AccelGraphicsConfig#getContextCapabilities
++ */
++- @Override
++ public ContextCapabilities getContextCapabilities() {
++ return oglCaps;
++ }
++
++- @Override
++ public void addDeviceEventListener(AccelDeviceEventListener l) {
++ AccelDeviceEventNotifier.addListener(l, screen.getScreen());
++ }
++
++- @Override
++ public void removeDeviceEventListener(AccelDeviceEventListener l) {
++ AccelDeviceEventNotifier.removeListener(l);
++ }
++diff -r 545db1dd8c2a src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java
++--- openjdk-ecj/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java Wed May 04 23:23:55 2016 +0100
+++++ openjdk-ecj/jdk/src/share/classes/com/sun/jmx/mbeanserver/JmxMBeanServer.java Thu May 12 01:51:42 2016 +0100
++@@ -236,7 +236,6 @@
++ final MBeanInstantiator fInstantiator = instantiator;
++ this.secureClr = new
++ SecureClassLoaderRepository(AccessController.doPrivileged(new PrivilegedAction<ClassLoaderRepository>() {
++- @Override
++ public ClassLoaderRepository run() {
++ return fInstantiator.getClassLoaderRepository();
++ }
++@@ -1257,7 +1256,6 @@
++ ClassLoader myLoader = outerShell.getClass().getClassLoader();
++ final ModifiableClassLoaderRepository loaders = AccessController.doPrivileged(new PrivilegedAction<ModifiableClassLoaderRepository>() {
++
++- @Override
++ public ModifiableClassLoaderRepository run() {
++ return instantiator.getClassLoaderRepository();
++ }
++diff -r b72e7b89dda9 src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java
++--- openjdk-ecj/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java Thu Sep 08 11:00:33 2011 -0700
+++++ openjdk-ecj/jdk/src/share/classes/javax/management/remote/rmi/RMIJRMPServerImpl.java Thu May 12 16:39:37 2016 +0100
++@@ -227,17 +227,14 @@
++ allowedTypes = credentialsTypes;
++ }
++
++- @Override
++ public String getVersion() throws RemoteException {
++ return impl.getVersion();
++ }
++
++- @Override
++ public RMIConnection newClient(Object credentials) throws IOException {
++ return impl.newClient(credentials);
++ }
++
++- @Override
++ public void check(Method method, ObjectStreamClass descriptor,
++ int paramIndex, int callID) {
++
++@@ -247,7 +244,6 @@
++ }
++ }
++
++- @Override
++ public void checkProxyClass(Method method, String[] ifaces,
++ int paramIndex, int callID) {
++ if (ifaces != null && ifaces.length > 0) {
++@@ -259,7 +255,6 @@
++ }
++ }
++
++- @Override
++ public void end(int callID) {
++ /* Do nothing */
++ }
+diff -r c23ceebb80a1 -r 60be25a84f2d patches/openjdk/8014205-blank_swing_dialogs_windows.patch
+--- a/patches/openjdk/8014205-blank_swing_dialogs_windows.patch Sun May 08 21:28:21 2016 +0100
++++ b/patches/openjdk/8014205-blank_swing_dialogs_windows.patch Fri May 13 14:02:18 2016 +0100
+@@ -116,7 +116,7 @@
+ {
+ if (numBands == 3 && !ccm.hasAlpha()) {
+ imageType = TYPE_3BYTE_BGR;
+-@@ -804,6 +801,27 @@
++@@ -804,6 +801,26 @@
+ } // else if ((raster instanceof ByteComponentRaster) &&
+ }
+
+@@ -129,7 +129,6 @@
+ + new PrivilegedAction<Boolean>()
+ + {
+ +
+-+ @Override
+ + public Boolean run() {
+ + final ClassLoader std = System.class.getClassLoader();
+ +
+
diff --git a/gnu/packages/patches/id3lib-CVE-2007-4460.patch b/gnu/packages/patches/id3lib-CVE-2007-4460.patch
new file mode 100644
index 0000000000..36c84179fc
--- /dev/null
+++ b/gnu/packages/patches/id3lib-CVE-2007-4460.patch
@@ -0,0 +1,54 @@
+This patch fixes an issues where temporary files were created in an insecure
+way.
+
+It was first intruduced in version 3.8.3-7 and fixes
+http://bugs.debian.org/438540
+--- a/src/tag_file.cpp
++++ b/src/tag_file.cpp
+@@ -242,8 +242,8 @@
+ strcpy(sTempFile, filename.c_str());
+ strcat(sTempFile, sTmpSuffix.c_str());
+
+-#if ((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
+- // This section is for Windows folk && gcc 3.x folk
++#if !defined(HAVE_MKSTEMP)
++ // This section is for Windows folk
+ fstream tmpOut;
+ createFile(sTempFile, tmpOut);
+
+@@ -257,7 +257,7 @@
+ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+-#else //((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#else //!defined(HAVE_MKSTEMP)
+
+ // else we gotta make a temp file, copy the tag into it, copy the
+ // rest of the old file after the tag, delete the old file, rename
+@@ -270,7 +270,7 @@
+ //ID3_THROW_DESC(ID3E_NoFile, "couldn't open temp file");
+ }
+
+- ofstream tmpOut(fd);
++ ofstream tmpOut(sTempFile);
+ if (!tmpOut)
+ {
+ tmpOut.close();
+@@ -285,14 +285,14 @@
+ uchar tmpBuffer[BUFSIZ];
+ while (file)
+ {
+- file.read(tmpBuffer, BUFSIZ);
++ file.read((char *)tmpBuffer, BUFSIZ);
+ size_t nBytes = file.gcount();
+- tmpOut.write(tmpBuffer, nBytes);
++ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+ close(fd); //closes the file
+
+-#endif ////((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#endif ////!defined(HAVE_MKSTEMP)
+
+ tmpOut.close();
+ file.close();
diff --git a/gnu/packages/patches/jansson-CVE-2016-4425.patch b/gnu/packages/patches/jansson-CVE-2016-4425.patch
new file mode 100644
index 0000000000..ebe9aa7809
--- /dev/null
+++ b/gnu/packages/patches/jansson-CVE-2016-4425.patch
@@ -0,0 +1,125 @@
+From 64ce0ad3731ebd77e02897b07920eadd0e2cc318 Mon Sep 17 00:00:00 2001
+From: Dmitry Janushkevich <gauri@tut.by>
+Date: Mon, 2 May 2016 13:59:26 +0200
+Subject: [PATCH] Fix for issue #282
+
+The fix limits recursion depths when parsing arrays and objects.
+The limit is configurable via the `JSON_PARSER_MAX_DEPTH` setting
+within `jansson_config.h` and is set by default to 2048.
+
+Update the RFC conformance document to note the limit; the RFC
+allows limits to be set by the implementation so nothing has
+actually changed w.r.t. conformance state.
+
+Reported by Gustavo Grieco.
+---
+ android/jansson_config.h | 4 ++++
+ cmake/jansson_config.h.cmake | 4 ++++
+ doc/conformance.rst | 10 ++++++++++
+ src/jansson_config.h.in | 4 ++++
+ src/load.c | 10 ++++++++++
+ test/suites/invalid/recursion-depth/error | 2 ++
+ test/suites/invalid/recursion-depth/input | 1 +
+ 7 files changed, 35 insertions(+)
+ create mode 100644 test/suites/invalid/recursion-depth/error
+ create mode 100644 test/suites/invalid/recursion-depth/input
+
+--- a/android/jansson_config.h
++++ b/android/jansson_config.h
+@@ -36,4 +36,8 @@
+ otherwise to 0. */
+ #define JSON_HAVE_LOCALECONV 0
+
++/* Maximum recursion depth for parsing JSON input.
++ This limits the depth of e.g. array-within-array constructions. */
++#define JSON_PARSER_MAX_DEPTH 2048
++
+ #endif
+--- a/cmake/jansson_config.h.cmake
++++ b/cmake/jansson_config.h.cmake
+@@ -60,5 +60,9 @@
+ #define JSON_HAVE_LOCALECONV @JSON_HAVE_LOCALECONV@
+
+
++/* Maximum recursion depth for parsing JSON input.
++ This limits the depth of e.g. array-within-array constructions. */
++#define JSON_PARSER_MAX_DEPTH 2048
++
+
+ #endif
+--- a/doc/conformance.rst
++++ b/doc/conformance.rst
+@@ -108,3 +108,13 @@
+ are implicitly handled via the ordinary C type coercion rules (subject
+ to overflow semantics). Also, no support or hooks are provided for any
+ supplemental "bignum" type add-on packages.
++
++Depth of nested values
++----------------------
++
++To avoid stack exhaustion, Jansson currently limits the nesting depth
++for arrays and objects to a certain value (default: 2048), defined as
++a macro ``JSON_PARSER_MAX_DEPTH`` within ``jansson_config.h``.
++
++The limit is allowed to be set by the RFC; there is no recommended value
++or required minimum depth to be supported.
+--- a/src/jansson_config.h.in
++++ b/src/jansson_config.h.in
+@@ -36,4 +36,8 @@
+ otherwise to 0. */
+ #define JSON_HAVE_LOCALECONV @json_have_localeconv@
+
++/* Maximum recursion depth for parsing JSON input.
++ This limits the depth of e.g. array-within-array constructions. */
++#define JSON_PARSER_MAX_DEPTH 2048
++
+ #endif
+--- a/src/load.c
++++ b/src/load.c
+@@ -61,6 +61,7 @@
+ typedef struct {
+ stream_t stream;
+ strbuffer_t saved_text;
++ size_t depth;
+ int token;
+ union {
+ struct {
+@@ -800,6 +801,12 @@
+ json_t *json;
+ double value;
+
++ lex->depth++;
++ if(lex->depth > JSON_PARSER_MAX_DEPTH) {
++ error_set(error, lex, "maximum parsing depth reached");
++ return NULL;
++ }
++
+ switch(lex->token) {
+ case TOKEN_STRING: {
+ const char *value = lex->value.string.val;
+@@ -870,6 +877,7 @@
+ if(!json)
+ return NULL;
+
++ lex->depth--;
+ return json;
+ }
+
+@@ -877,6 +885,8 @@
+ {
+ json_t *result;
+
++ lex->depth = 0;
++
+ lex_scan(lex, error);
+ if(!(flags & JSON_DECODE_ANY)) {
+ if(lex->token != '[' && lex->token != '{') {
+--- /dev/null
++++ b/test/suites/invalid/recursion-depth/error
+@@ -0,0 +1,2 @@
++1 2049 2049
++maximum parsing depth reached near '['
+--- /dev/null
++++ b/test/suites/invalid/recursion-depth/input
+@@ -0,0 +1 @@
++[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
diff --git a/gnu/packages/patches/libtar-CVE-2013-4420.patch b/gnu/packages/patches/libtar-CVE-2013-4420.patch
new file mode 100644
index 0000000000..cc64711ae9
--- /dev/null
+++ b/gnu/packages/patches/libtar-CVE-2013-4420.patch
@@ -0,0 +1,118 @@
+Author: Raphael Geissert <geissert@debian.org>
+Bug-Debian: https://bugs.debian.org/731860
+Description: Avoid directory traversal when extracting archives
+ by skipping over leading slashes and any prefix containing ".." components.
+Forwarded: yes
+
+--- a/lib/decode.c
++++ b/lib/decode.c
+@@ -22,6 +22,36 @@
+ #endif
+
+
++char *
++safer_name_suffix (char const *file_name)
++{
++ char const *p, *t;
++ p = t = file_name;
++ while (*p == '/') t = ++p;
++ while (*p)
++ {
++ while (p[0] == '.' && p[0] == p[1] && p[2] == '/')
++ {
++ p += 3;
++ t = p;
++ }
++ /* advance pointer past the next slash */
++ while (*p && (p++)[0] != '/');
++ }
++
++ if (!*t)
++ {
++ t = ".";
++ }
++
++ if (t != file_name)
++ {
++ /* TODO: warn somehow that the path was modified */
++ }
++ return (char*)t;
++}
++
++
+ /* determine full path name */
+ char *
+ th_get_pathname(TAR *t)
+@@ -29,17 +59,17 @@ th_get_pathname(TAR *t)
+ static char filename[MAXPATHLEN];
+
+ if (t->th_buf.gnu_longname)
+- return t->th_buf.gnu_longname;
++ return safer_name_suffix(t->th_buf.gnu_longname);
+
+ if (t->th_buf.prefix[0] != '\0')
+ {
+ snprintf(filename, sizeof(filename), "%.155s/%.100s",
+ t->th_buf.prefix, t->th_buf.name);
+- return filename;
++ return safer_name_suffix(filename);
+ }
+
+ snprintf(filename, sizeof(filename), "%.100s", t->th_buf.name);
+- return filename;
++ return safer_name_suffix(filename);
+ }
+
+
+--- a/lib/extract.c
++++ b/lib/extract.c
+@@ -298,14 +298,14 @@ tar_extract_hardlink(TAR * t, char *real
+ if (mkdirhier(dirname(filename)) == -1)
+ return -1;
+ libtar_hashptr_reset(&hp);
+- if (libtar_hash_getkey(t->h, &hp, th_get_linkname(t),
++ if (libtar_hash_getkey(t->h, &hp, safer_name_suffix(th_get_linkname(t)),
+ (libtar_matchfunc_t)libtar_str_match) != 0)
+ {
+ lnp = (char *)libtar_hashptr_data(&hp);
+ linktgt = &lnp[strlen(lnp) + 1];
+ }
+ else
+- linktgt = th_get_linkname(t);
++ linktgt = safer_name_suffix(th_get_linkname(t));
+
+ #ifdef DEBUG
+ printf(" ==> extracting: %s (link to %s)\n", filename, linktgt);
+@@ -343,9 +343,9 @@ tar_extract_symlink(TAR *t, char *realna
+
+ #ifdef DEBUG
+ printf(" ==> extracting: %s (symlink to %s)\n",
+- filename, th_get_linkname(t));
++ filename, safer_name_suffix(th_get_linkname(t)));
+ #endif
+- if (symlink(th_get_linkname(t), filename) == -1)
++ if (symlink(safer_name_suffix(th_get_linkname(t)), filename) == -1)
+ {
+ #ifdef DEBUG
+ perror("symlink()");
+--- a/lib/internal.h
++++ b/lib/internal.h
+@@ -15,3 +15,4 @@
+
+ #include <libtar.h>
+
++char* safer_name_suffix(char const*);
+--- a/lib/output.c
++++ b/lib/output.c
+@@ -123,9 +123,9 @@ th_print_long_ls(TAR *t)
+ else
+ printf(" link to ");
+ if ((t->options & TAR_GNU) && t->th_buf.gnu_longlink != NULL)
+- printf("%s", t->th_buf.gnu_longlink);
++ printf("%s", safer_name_suffix(t->th_buf.gnu_longlink));
+ else
+- printf("%.100s", t->th_buf.linkname);
++ printf("%.100s", safer_name_suffix(t->th_buf.linkname));
+ }
+
+ putchar('\n');
diff --git a/gnu/packages/patches/libyaml-CVE-2014-9130.patch b/gnu/packages/patches/libyaml-CVE-2014-9130.patch
new file mode 100644
index 0000000000..800358c0d6
--- /dev/null
+++ b/gnu/packages/patches/libyaml-CVE-2014-9130.patch
@@ -0,0 +1,30 @@
+Fixes CVE-2014-9130
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9130
+
+Upstream source:
+https://bitbucket.org/xi/libyaml/commits/2b9156756423e967cfd09a61d125d883fca6f4f2
+
+# HG changeset patch
+# User Kirill Simonov <xi@resolvent.net>
+# Date 1417197312 21600
+# Node ID 2b9156756423e967cfd09a61d125d883fca6f4f2
+# Parent 053f53a381ff6adbbc93a31ab7fdee06a16c8a33
+Removed invalid simple key assertion (thank to Jonathan Gray).
+
+diff --git a/src/scanner.c b/src/scanner.c
+--- a/src/scanner.c
++++ b/src/scanner.c
+@@ -1106,13 +1106,6 @@
+ && parser->indent == (ptrdiff_t)parser->mark.column);
+
+ /*
+- * A simple key is required only when it is the first token in the current
+- * line. Therefore it is always allowed. But we add a check anyway.
+- */
+-
+- assert(parser->simple_key_allowed || !required); /* Impossible. */
+-
+- /*
+ * If the current position may start a simple key, save it.
+ */
+
diff --git a/gnu/packages/patches/lua-CVE-2014-5461.patch b/gnu/packages/patches/lua-CVE-2014-5461.patch
new file mode 100644
index 0000000000..bc72ef14ad
--- /dev/null
+++ b/gnu/packages/patches/lua-CVE-2014-5461.patch
@@ -0,0 +1,20 @@
+From: Enrico Tassi <gareuselesinge@debian.org>
+Date: Tue, 26 Aug 2014 16:20:55 +0200
+Subject: Fix stack overflow in vararg functions
+
+---
+ src/ldo.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ldo.c b/src/ldo.c
+index d1bf786..30333bf 100644
+--- a/src/ldo.c
++++ b/src/ldo.c
+@@ -274,7 +274,7 @@ int luaD_precall (lua_State *L, StkId func, int nresults) {
+ CallInfo *ci;
+ StkId st, base;
+ Proto *p = cl->p;
+- luaD_checkstack(L, p->maxstacksize);
++ luaD_checkstack(L, p->maxstacksize + p->numparams);
+ func = restorestack(L, funcr);
+ base = func + 1;
diff --git a/gnu/packages/patches/mcrypt-CVE-2012-4409.patch b/gnu/packages/patches/mcrypt-CVE-2012-4409.patch
new file mode 100644
index 0000000000..60cf8e0430
--- /dev/null
+++ b/gnu/packages/patches/mcrypt-CVE-2012-4409.patch
@@ -0,0 +1,33 @@
+From 4876e3a692739bb9ca00d0f500fd5f4b3eb16ce3 Mon Sep 17 00:00:00 2001
+From: Tom Callaway <spot@fedoraproject.org>
+Date: Fri, 7 Sep 2012 11:39:29 -0400
+Subject: apply fix for CVE-2012-4409 (thanks to Raphael Geissert)
+
+---
+ mcrypt-CVE-2012-4409.patch | 12 ++++++++++++
+ mcrypt.spec | 10 +++++++++-
+ 2 files changed, 21 insertions(+), 1 deletion(-)
+ create mode 100644 mcrypt-CVE-2012-4409.patch
+
+diff --git a/mcrypt-CVE-2012-4409.patch b/mcrypt-CVE-2012-4409.patch
+new file mode 100644
+index 0000000..747f428
+--- /dev/null
++++ b/mcrypt-CVE-2012-4409.patch
+@@ -0,0 +1,12 @@
++diff -up mcrypt-2.6.8/src/extra.c.CVE-2012-4409 mcrypt-2.6.8/src/extra.c
++--- mcrypt-2.6.8/src/extra.c.CVE-2012-4409 2012-09-07 11:00:55.906870746 -0400
+++++ mcrypt-2.6.8/src/extra.c 2012-09-07 11:00:27.967858365 -0400
++@@ -242,6 +242,8 @@ int check_file_head(FILE * fstream, char
++ if (m_getbit(0, sflag) != 0) { /* if the first bit is set */
++ *salt_size = m_setbit(0, sflag, 0);
++ if (*salt_size > 0) {
+++ if (*salt_size > sizeof(tmp_buf))
+++ err_quit(_("Salt is too long\n"));
++ fread(tmp_buf, 1, *salt_size,
++ fstream);
++ memmove(salt, tmp_buf, *salt_size);
+
+--
+cgit v0.12
+
diff --git a/gnu/packages/patches/mcrypt-CVE-2012-4426.patch b/gnu/packages/patches/mcrypt-CVE-2012-4426.patch
new file mode 100644
index 0000000000..61c197b0c9
--- /dev/null
+++ b/gnu/packages/patches/mcrypt-CVE-2012-4426.patch
@@ -0,0 +1,36 @@
+diff --git a/mcrypt-CVE-2012-4426.patch b/mcrypt-CVE-2012-4426.patch
+new file mode 100644
+index 0000000..747f428
+--- mcrypt-2.6.8/src/errors.c
++++ mcrypt-2.6.8/src/errors.c
+@@ -25,24 +25,24 @@
+
+ void err_quit(char *errmsg)
+ {
+- fprintf(stderr, errmsg);
++ fprintf(stderr, "%s", errmsg);
+ exit(-1);
+ }
+
+ void err_warn(char *errmsg)
+ {
+ if (quiet <= 1)
+- fprintf(stderr, errmsg);
++ fprintf(stderr, "%s", errmsg);
+ }
+
+ void err_info(char *errmsg)
+ {
+ if (quiet == 0)
+- fprintf(stderr, errmsg);
++ fprintf(stderr, "%s", errmsg);
+ }
+
+ void err_crit(char *errmsg)
+ {
+ if (quiet <= 2)
+- fprintf(stderr, errmsg);
++ fprintf(stderr, "%s", errmsg);
+ }
+
+---
diff --git a/gnu/packages/patches/mcrypt-CVE-2012-4527.patch b/gnu/packages/patches/mcrypt-CVE-2012-4527.patch
new file mode 100644
index 0000000000..d931dd174b
--- /dev/null
+++ b/gnu/packages/patches/mcrypt-CVE-2012-4527.patch
@@ -0,0 +1,111 @@
+From b0716eac4e800a0ea53e1b949250f671702f28a0 Mon Sep 17 00:00:00 2001
+From: Tom Callaway <spot@fedoraproject.org>
+Date: Tue, 30 Oct 2012 15:39:24 -0400
+Subject: apply workaround to CVE-2012-4527
+
+---
+ mcrypt-CVE-2012-4527-80-width-patch | 91 +++++++++++++++++++++++++++++++++++++
+ mcrypt.spec | 10 +++-
+ 2 files changed, 100 insertions(+), 1 deletion(-)
+ create mode 100644 mcrypt-CVE-2012-4527-80-width-patch
+
+diff --git a/mcrypt-CVE-2012-4527-80-width-patch b/mcrypt-CVE-2012-4527-80-width-patch
+new file mode 100644
+index 0000000..0eb94d8
+--- /dev/null
++++ b/mcrypt-CVE-2012-4527-80-width-patch
+@@ -0,0 +1,91 @@
++--- mcrypt-2.6.8.orig/src/mcrypt.c
+++++ mcrypt-2.6.8/src/mcrypt.c
++@@ -41,6 +41,8 @@
++ # include <time.h>
++ #endif
++
+++#define WIDTH 80
+++
++ static char rcsid[] =
++ "$Id: mcrypt.c,v 1.2 2007/11/07 17:10:21 nmav Exp $";
++
++@@ -482,7 +484,7 @@
++ #ifdef HAVE_STAT
++ if (stream_flag == FALSE) {
++ if (is_normal_file(file[i]) == FALSE) {
++- sprintf(tmperr,
+++ snprintf(tmperr, WIDTH,
++ _
++ ("%s: %s is not a regular file. Skipping...\n"),
++ program_name, file[i]);
++@@ -501,7 +503,7 @@
++ dinfile = file[i];
++ if ((isatty(fileno((FILE *) (stdin))) == 1)
++ && (stream_flag == TRUE) && (force == 0)) { /* not a tty */
++- sprintf(tmperr,
+++ snprintf(tmperr, WIDTH,
++ _
++ ("%s: Encrypted data will not be read from a terminal.\n"),
++ program_name);
++@@ -520,7 +522,7 @@
++ einfile = file[i];
++ if ((isatty(fileno((FILE *) (stdout))) == 1)
++ && (stream_flag == TRUE) && (force == 0)) { /* not a tty */
++- sprintf(tmperr,
+++ snprintf(tmperr, WIDTH,
++ _
++ ("%s: Encrypted data will not be written to a terminal.\n"),
++ program_name);
++@@ -544,7 +546,7 @@
++ strcpy(outfile, einfile);
++ /* if file has already the .nc ignore it */
++ if (strstr(outfile, ".nc") != NULL) {
++- sprintf(tmperr,
+++ snprintf(tmperr, WIDTH,
++ _
++ ("%s: file %s has the .nc suffix... skipping...\n"),
++ program_name, outfile);
++@@ -590,10 +592,10 @@
++
++ if (x == 0) {
++ if (stream_flag == FALSE) {
++- sprintf(tmperr, _("File %s was decrypted.\n"), dinfile);
+++ snprintf(tmperr, WIDTH, _("File %s was decrypted.\n"), dinfile);
++ err_warn(tmperr);
++ } else {
++- sprintf(tmperr, _("Stdin was decrypted.\n"));
+++ snprintf(tmperr, WIDTH, _("Stdin was decrypted.\n"));
++ err_warn(tmperr);
++ }
++ #ifdef HAVE_STAT
++@@ -610,7 +612,7 @@
++
++ } else {
++ if (stream_flag == FALSE) {
++- sprintf(tmperr,
+++ snprintf(tmperr, WIDTH,
++ _
++ ("File %s was NOT decrypted successfully.\n"),
++ dinfile);
++@@ -636,10 +638,10 @@
++
++ if (x == 0) {
++ if (stream_flag == FALSE) {
++- sprintf(tmperr, _("File %s was encrypted.\n"), einfile);
+++ snprintf(tmperr, WIDTH, _("File %s was encrypted.\n"), einfile);
++ err_warn(tmperr);
++ } else {
++- sprintf(tmperr, _("Stdin was encrypted.\n"));
+++ snprintf(tmperr, WIDTH, _("Stdin was encrypted.\n"));
++ err_warn(tmperr);
++ }
++ #ifdef HAVE_STAT
++@@ -655,7 +657,7 @@
++
++ } else {
++ if (stream_flag == FALSE) {
++- sprintf(tmperr,
+++ snprintf(tmperr, WIDTH,
++ _
++ ("File %s was NOT encrypted successfully.\n"),
++ einfile);
+--
+cgit v0.12
+
diff --git a/gnu/packages/patches/pcre2-CVE-2016-3191.patch b/gnu/packages/patches/pcre2-CVE-2016-3191.patch
new file mode 100644
index 0000000000..80f9d3d4f1
--- /dev/null
+++ b/gnu/packages/patches/pcre2-CVE-2016-3191.patch
@@ -0,0 +1,179 @@
+Fixes CVE-2016-3191 (remote execution of arbitrary code or denial of
+service (stack-based buffer overflow) via a crafted regular expression).
+
+See <https://bugzilla.redhat.com/show_bug.cgi?id=1311503>.
+
+This is svn r489 at <svn://vcs.exim.org/pcre2/code>, omitting the
+changes to 'testdata/testoutput8-16-4', which does not exist in the
+source tarball.
+
+git-svn-id: svn://vcs.exim.org/pcre2/code/trunk@489 6239d852-aaf2-0410-a92c-79f79f948069
+---
+ ChangeLog | 4 ++++
+ src/pcre2_compile.c | 16 ++++++++++++++--
+ testdata/testinput8 | 2 ++
+ testdata/testoutput8-16-2 | 3 +++
+ testdata/testoutput8-16-3 | 3 +++
+ testdata/testoutput8-16-4 | 3 +++
+ testdata/testoutput8-32-2 | 3 +++
+ testdata/testoutput8-32-3 | 3 +++
+ testdata/testoutput8-32-4 | 3 +++
+ testdata/testoutput8-8-2 | 3 +++
+ testdata/testoutput8-8-3 | 3 +++
+ testdata/testoutput8-8-4 | 3 +++
+ 12 files changed, 47 insertions(+), 2 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index 3ce0207..65e333e 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -58,6 +58,10 @@ some head-scratching the next time this happens.
+ assertion, caused pcre2test to output a very large number of spaces when the
+ callout was taken, making the program appearing to loop.
+
++12. A pattern that included (*ACCEPT) in the middle of a sufficiently deeply
++nested set of parentheses of sufficient size caused an overflow of the
++compiling workspace (which was diagnosed, but of course is not desirable).
++
+
+ Version 10.21 12-January-2016
+ -----------------------------
+diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c
+index e33d620..887fbfd 100644
+--- a/src/pcre2_compile.c
++++ b/src/pcre2_compile.c
+@@ -5901,10 +5901,22 @@ for (;; ptr++)
+ goto FAILED;
+ }
+ cb->had_accept = TRUE;
++
++ /* In the first pass, just accumulate the length required;
++ otherwise hitting (*ACCEPT) inside many nested parentheses can
++ cause workspace overflow. */
++
+ for (oc = cb->open_caps; oc != NULL; oc = oc->next)
+ {
+- *code++ = OP_CLOSE;
+- PUT2INC(code, 0, oc->number);
++ if (lengthptr != NULL)
++ {
++ *lengthptr += CU2BYTES(1) + IMM2_SIZE;
++ }
++ else
++ {
++ *code++ = OP_CLOSE;
++ PUT2INC(code, 0, oc->number);
++ }
+ }
+ setverb = *code++ =
+ (cb->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT;
+diff --git a/testdata/testinput8 b/testdata/testinput8
+index ca3b1b9..7e2a1f0 100644
+--- a/testdata/testinput8
++++ b/testdata/testinput8
+@@ -182,4 +182,6 @@
+
+ /((?1)(?2)(?3)(?4)(?5)(?6)(?7)(?8)(?9)(?9)(?8)(?7)(?6)(?5)(?4)(?3)(?2)(?1)(?0)){2,}()()()()()()()()()/debug
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-16-2 b/testdata/testoutput8-16-2
+index 05669bb..a5e8dec 100644
+--- a/testdata/testoutput8-16-2
++++ b/testdata/testoutput8-16-2
+@@ -1027,4 +1027,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 186 at offset 490: regular expression is too complicated
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-16-3 b/testdata/testoutput8-16-3
+index 31884e1..36133b3 100644
+--- a/testdata/testoutput8-16-3
++++ b/testdata/testoutput8-16-3
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-32-2 b/testdata/testoutput8-32-2
+index babd0c7..99c4fad 100644
+--- a/testdata/testoutput8-32-2
++++ b/testdata/testoutput8-32-2
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-32-3 b/testdata/testoutput8-32-3
+index babd0c7..99c4fad 100644
+--- a/testdata/testoutput8-32-3
++++ b/testdata/testoutput8-32-3
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-32-4 b/testdata/testoutput8-32-4
+index babd0c7..99c4fad 100644
+--- a/testdata/testoutput8-32-4
++++ b/testdata/testoutput8-32-4
+@@ -1023,4 +1023,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-8-2 b/testdata/testoutput8-8-2
+index 6a9aa0a..6dc1f42 100644
+--- a/testdata/testoutput8-8-2
++++ b/testdata/testoutput8-8-2
+@@ -1026,4 +1026,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-8-3 b/testdata/testoutput8-8-3
+index 2fe1168..ae14946 100644
+--- a/testdata/testoutput8-8-3
++++ b/testdata/testoutput8-8-3
+@@ -1024,4 +1024,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+diff --git a/testdata/testoutput8-8-4 b/testdata/testoutput8-8-4
+index 91993b2..6c79956 100644
+--- a/testdata/testoutput8-8-4
++++ b/testdata/testoutput8-8-4
+@@ -1022,4 +1022,7 @@ Capturing subpattern count = 10
+ May match empty string
+ Subject length lower bound = 0
+
++/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
++Failed: error 114 at offset 509: missing closing parenthesis
++
+ # End of testinput8
+--
+2.8.3
+
diff --git a/gnu/packages/patches/procmail-CVE-2014-3618.patch b/gnu/packages/patches/procmail-CVE-2014-3618.patch
new file mode 100644
index 0000000000..e3f2759738
--- /dev/null
+++ b/gnu/packages/patches/procmail-CVE-2014-3618.patch
@@ -0,0 +1,26 @@
+Fixes CVE-2014-3618 (heap overflow in formisc.c allowing denial of
+service and potential remote execution of arbitrary code).
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3618
+
+Source:
+http://seclists.org/oss-sec/2014/q3/495
+
+Adopted by Debian as patch '27':
+https://sources.debian.net/src/procmail/3.22-25/debian/patches/27/
+
+--- a/src/formisc.c
++++ b/src/formisc.c
+@@ -84,12 +84,11 @@
+ case '"':*target++=delim='"';start++;
+ }
+ ;{ int i;
+- do
++ while(*start)
+ if((i= *target++= *start++)==delim) /* corresponding delimiter? */
+ break;
+ else if(i=='\\'&&*start) /* skip quoted character */
+ *target++= *start++;
+- while(*start); /* anything? */
+ }
+ hitspc=2;
+ }
diff --git a/gnu/packages/patches/rpm-CVE-2014-8118.patch b/gnu/packages/patches/rpm-CVE-2014-8118.patch
new file mode 100644
index 0000000000..5fdb0f0eb2
--- /dev/null
+++ b/gnu/packages/patches/rpm-CVE-2014-8118.patch
@@ -0,0 +1,25 @@
+Fix CVE-2014-8118 (integer overflow allowing arbitrary remote code
+execution via crafted CPIO header).
+
+https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8118
+
+Source:
+https://bugzilla.redhat.com/attachment.cgi?id=962159&action=diff
+
+Adopted by Debian:
+http://anonscm.debian.org/cgit/collab-maint/rpm.git/plain/debian/patches/CVE-2014-8118.patch
+
+diff --git a/lib/cpio.c b/lib/cpio.c
+index 253ff0f..600633a 100644
+--- a/lib/cpio.c
++++ b/lib/cpio.c
+@@ -399,6 +399,9 @@ int rpmcpioHeaderRead(rpmcpio_t cpio, char ** path, int * fx)
+
+ GET_NUM_FIELD(hdr.filesize, fsize);
+ GET_NUM_FIELD(hdr.namesize, nameSize);
++ if (nameSize <= 0 || nameSize > 4096) {
++ return RPMERR_BAD_HEADER;
++ }
+
+ char name[nameSize + 1];
+ read = Fread(name, nameSize, 1, cpio->fd);
diff --git a/gnu/packages/patches/rush-CVE-2013-6889.patch b/gnu/packages/patches/rush-CVE-2013-6889.patch
new file mode 100644
index 0000000000..862528a12c
--- /dev/null
+++ b/gnu/packages/patches/rush-CVE-2013-6889.patch
@@ -0,0 +1,23 @@
+commit 00bdccd429517f12dbf37ab4397ddec3e51a2738
+Author: Mats Erik Andersson <gnu@gisladisker.se>
+Date: Mon Jan 20 13:33:52 2014 +0200
+
+ Protect against CVE-2013-6889 (tiny change).
+
+ Reset the effective user identification in testing mode.
+
+diff --git a/src/rush.c b/src/rush.c
+index 45d737a..dc6518e 100644
+--- a/src/rush.c
++++ b/src/rush.c
+@@ -980,6 +980,10 @@ main(int argc, char **argv)
+ } else if (argc > optind)
+ die(usage_error, NULL, _("invalid command line"));
+
++ /* Relinquish root privileges in test mode */
++ if (lint_option)
++ setuid(getuid());
++
+ if (test_user_name) {
+ struct passwd *pw = getpwnam(test_user_name);
+ if (!pw)
diff --git a/gnu/packages/patches/t1lib-CVE-2010-2642.patch b/gnu/packages/patches/t1lib-CVE-2010-2642.patch
new file mode 100644
index 0000000000..cd54889585
--- /dev/null
+++ b/gnu/packages/patches/t1lib-CVE-2010-2642.patch
@@ -0,0 +1,24 @@
+diff --git a/lib/t1lib/parseAFM.c b/lib/t1lib/parseAFM.c
+index 6a31d7f..ba64541 100644
+--- a/lib/t1lib/parseAFM.c
++++ b/lib/t1lib/parseAFM.c
+@@ -199,7 +199,9 @@ static char *token(stream)
+ idx = 0;
+
+ while (ch != EOF && ch != ' ' && ch != CR && ch != LF &&
+- ch != CTRL_Z && ch != '\t' && ch != ':' && ch != ';'){
++ ch != CTRL_Z && ch != '\t' && ch != ':' && ch != ';'
++ && idx < (MAX_NAME -1))
++ {
+ ident[idx++] = ch;
+ ch = fgetc(stream);
+ } /* while */
+@@ -235,7 +237,7 @@ static char *linetoken(stream)
+ while ((ch = fgetc(stream)) == ' ' || ch == '\t' );
+
+ idx = 0;
+- while (ch != EOF && ch != CR && ch != LF && ch != CTRL_Z)
++ while (ch != EOF && ch != CR && ch != LF && ch != CTRL_Z && idx < (MAX_NAME - 1))
+ {
+ ident[idx++] = ch;
+ ch = fgetc(stream);
diff --git a/gnu/packages/patches/t1lib-CVE-2011-0764.patch b/gnu/packages/patches/t1lib-CVE-2011-0764.patch
new file mode 100644
index 0000000000..c2d9e173b7
--- /dev/null
+++ b/gnu/packages/patches/t1lib-CVE-2011-0764.patch
@@ -0,0 +1,32 @@
+Description: Don't lookup previous point if there isn't any
+Author: Marc Deslauriers <marc.deslauriers@canonical.com>
+Forwarded: no
+
+Index: t1lib-5.1.2/lib/type1/type1.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/type1.c 2011-12-13 14:24:14.280965637 -0600
++++ t1lib-5.1.2/lib/type1/type1.c 2011-12-13 14:25:25.893320747 -0600
+@@ -1700,6 +1700,7 @@
+ long pindex = 0;
+
+ /* compute hinting for previous segment! */
++ if (ppoints == NULL) Error0i("RLineTo: No previous point!\n");
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx, dy);
+
+ /* Allocate a new path point and pre-setup data */
+@@ -1728,6 +1729,7 @@
+ long pindex = 0;
+
+ /* compute hinting for previous point! */
++ if (ppoints == NULL) Error0i("RRCurveTo: No previous point!\n");
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx1, dy1);
+
+ /* Allocate three new path points and pre-setup data */
+@@ -1903,6 +1905,7 @@
+ FindStems( currx, curry, 0, 0, dx, dy);
+ }
+ else {
++ if (ppoints == NULL) Error0i("RMoveTo: No previous point!\n");
+ FindStems( currx, curry, ppoints[numppoints-2].x, ppoints[numppoints-2].y, dx, dy);
+ }
+
diff --git a/gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch b/gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch
new file mode 100644
index 0000000000..aaa31f7b93
--- /dev/null
+++ b/gnu/packages/patches/t1lib-CVE-2011-1552+CVE-2011-1553+CVE-2011-1554.patch
@@ -0,0 +1,133 @@
+Author: Jaroslav Škarvada <jskarvad@redhat.com>
+Description: Fix more crashes on oversized fonts
+Bug-Redhat: http://bugzilla.redhat.com/show_bug.cgi?id=692909
+Index: t1lib-5.1.2/lib/type1/lines.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/lines.c 2007-12-23 09:49:42.000000000 -0600
++++ t1lib-5.1.2/lib/type1/lines.c 2012-01-17 14:15:08.000000000 -0600
+@@ -67,6 +67,10 @@
+ None.
+ */
+
++#define BITS (sizeof(LONG)*8)
++#define HIGHTEST(p) (((p)>>(BITS-2)) != 0) /* includes sign bit */
++#define TOOBIG(xy) ((xy < 0) ? HIGHTEST(-xy) : HIGHTEST(xy))
++
+ /*
+ :h2.StepLine() - Produces Run Ends for a Line After Checks
+
+@@ -84,6 +88,9 @@
+ IfTrace4((LineDebug > 0), ".....StepLine: (%d,%d) to (%d,%d)\n",
+ x1, y1, x2, y2);
+
++ if ( TOOBIG(x1) || TOOBIG(x2) || TOOBIG(y1) || TOOBIG(y2))
++ abort("Lines this big not supported", 49);
++
+ dy = y2 - y1;
+
+ /*
+Index: t1lib-5.1.2/lib/type1/objects.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/objects.c 2007-12-23 09:49:42.000000000 -0600
++++ t1lib-5.1.2/lib/type1/objects.c 2012-01-17 14:15:08.000000000 -0600
+@@ -1137,12 +1137,13 @@
+ "Context: out of them", /* 46 */
+ "MatrixInvert: can't", /* 47 */
+ "xiStub called", /* 48 */
+- "Illegal access type1 abort() message" /* 49 */
++ "Lines this big not supported", /* 49 */
++ "Illegal access type1 abort() message" /* 50 */
+ };
+
+- /* no is valid from 1 to 48 */
+- if ( (number<1)||(number>48))
+- number=49;
++ /* no is valid from 1 to 49 */
++ if ( (number<1)||(number>49))
++ number=50;
+ return( err_msgs[number-1]);
+
+ }
+Index: t1lib-5.1.2/lib/type1/type1.c
+===================================================================
+--- t1lib-5.1.2.orig/lib/type1/type1.c 2012-01-17 14:13:28.000000000 -0600
++++ t1lib-5.1.2/lib/type1/type1.c 2012-01-17 14:19:54.000000000 -0600
+@@ -1012,6 +1012,7 @@
+ double nextdtana = 0.0; /* tangent of post-delta against horizontal line */
+ double nextdtanb = 0.0; /* tangent of post-delta against vertical line */
+
++ if (ppoints == NULL || numppoints < 1) Error0v("FindStems: No previous point!\n");
+
+ /* setup default hinted position */
+ ppoints[numppoints-1].ax = ppoints[numppoints-1].x;
+@@ -1289,7 +1290,7 @@
+ static int DoRead(CodeP)
+ int *CodeP;
+ {
+- if (strindex >= CharStringP->len) return(FALSE); /* end of string */
++ if (!CharStringP || strindex >= CharStringP->len) return(FALSE); /* end of string */
+ /* We handle the non-documented Adobe convention to use lenIV=-1 to
+ suppress charstring encryption. */
+ if (blues->lenIV==-1) {
+@@ -1700,7 +1701,7 @@
+ long pindex = 0;
+
+ /* compute hinting for previous segment! */
+- if (ppoints == NULL) Error0i("RLineTo: No previous point!\n");
++ if (ppoints == NULL || numppoints < 2) Error0i("RLineTo: No previous point!\n");
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx, dy);
+
+ /* Allocate a new path point and pre-setup data */
+@@ -1729,7 +1730,7 @@
+ long pindex = 0;
+
+ /* compute hinting for previous point! */
+- if (ppoints == NULL) Error0i("RRCurveTo: No previous point!\n");
++ if (ppoints == NULL || numppoints < 2) Error0i("RRCurveTo: No previous point!\n");
+ FindStems( currx, curry, currx-ppoints[numppoints-2].x, curry-ppoints[numppoints-2].y, dx1, dy1);
+
+ /* Allocate three new path points and pre-setup data */
+@@ -1788,7 +1789,9 @@
+ long tmpind;
+ double deltax = 0.0;
+ double deltay = 0.0;
+-
++
++ if (ppoints == NULL || numppoints < 1) Error0i("DoClosePath: No previous point!");
++
+ /* If this ClosePath command together with the starting point of this
+ path completes to a segment aligned to a stem, we would miss
+ hinting for this point. --> Check and explicitly care for this! */
+@@ -1803,6 +1806,7 @@
+ deltax = ppoints[i].x - ppoints[numppoints-1].x;
+ deltay = ppoints[i].y - ppoints[numppoints-1].y;
+
++ if (ppoints == NULL || numppoints <= i + 1) Error0i("DoClosePath: No previous point!");
+ /* save nummppoints and reset to move point */
+ tmpind = numppoints;
+ numppoints = i + 1;
+@@ -1905,7 +1909,7 @@
+ FindStems( currx, curry, 0, 0, dx, dy);
+ }
+ else {
+- if (ppoints == NULL) Error0i("RMoveTo: No previous point!\n");
++ if (ppoints == NULL || numppoints < 2) Error0i("RMoveTo: No previous point!\n");
+ FindStems( currx, curry, ppoints[numppoints-2].x, ppoints[numppoints-2].y, dx, dy);
+ }
+
+@@ -2155,6 +2159,7 @@
+ DOUBLE cx, cy;
+ DOUBLE ex, ey;
+
++ if (ppoints == NULL || numppoints < 8) Error0v("FlxProc: No previous point!");
+
+ /* Our PPOINT list now contains 7 moveto commands which
+ are about to be consumed by the Flex mechanism. --> Remove these
+@@ -2324,6 +2329,7 @@
+ /* Returns currentpoint on stack */
+ static void FlxProc2()
+ {
++ if (ppoints == NULL || numppoints < 1) Error0v("FlxProc2: No previous point!");
+ /* Push CurrentPoint on fake PostScript stack */
+ PSFakePush( ppoints[numppoints-1].x);
+ PSFakePush( ppoints[numppoints-1].y);
diff --git a/gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch b/gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch
new file mode 100644
index 0000000000..6e389dd59e
--- /dev/null
+++ b/gnu/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch
@@ -0,0 +1,83 @@
+From: Petter Reinholdtsen <pere@debian.org>
+Date: Tue, 22 Sep 2015 15:14:06 +0200
+Subject: oggenc: validate count of channels in the header (CVE-2014-9638 &
+ CVE-2014-9639)
+
+Author: Kamil Dudka <kdudka@redhat.com>
+Origin: http://lists.xiph.org/pipermail/vorbis-dev/2015-February/020423.html
+Bug: https://trac.xiph.org/ticket/2136
+Bug: https://trac.xiph.org/ticket/2137
+Bug-Debian: https://bugs.debian.org/776086
+Forwarded: not-needed
+Reviewed-By: Petter Reinholdtsen <pere@hungry.com>
+Last-Update: 2015-09-22
+---
+ oggenc/audio.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/oggenc/audio.c b/oggenc/audio.c
+index 05e42b3..1b3f179 100644
+--- a/oggenc/audio.c
++++ b/oggenc/audio.c
+@@ -13,6 +13,7 @@
+ #include <config.h>
+ #endif
+
++#include <limits.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -251,6 +252,7 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+ aiff_fmt format;
+ aifffile *aiff = malloc(sizeof(aifffile));
+ int i;
++ long channels;
+
+ if(buf[11]=='C')
+ aifc=1;
+@@ -277,11 +279,16 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+ return 0;
+ }
+
+- format.channels = READ_U16_BE(buffer);
++ format.channels = channels = READ_U16_BE(buffer);
+ format.totalframes = READ_U32_BE(buffer+2);
+ format.samplesize = READ_U16_BE(buffer+6);
+ format.rate = (int)read_IEEE80(buffer+8);
+
++ if(channels <= 0L || SHRT_MAX < channels)
++ {
++ fprintf(stderr, _("Warning: Unsupported count of channels in AIFF header\n"));
++ return 0;
++ }
+ aiff->bigendian = 1;
+
+ if(aifc)
+@@ -412,6 +419,7 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen)
+ wav_fmt format;
+ wavfile *wav = malloc(sizeof(wavfile));
+ int i;
++ long channels;
+
+ /* Ok. At this point, we know we have a WAV file. Now we have to detect
+ * whether we support the subtype, and we have to find the actual data
+@@ -449,12 +457,18 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen)
+ }
+
+ format.format = READ_U16_LE(buf);
+- format.channels = READ_U16_LE(buf+2);
++ format.channels = channels = READ_U16_LE(buf+2);
+ format.samplerate = READ_U32_LE(buf+4);
+ format.bytespersec = READ_U32_LE(buf+8);
+ format.align = READ_U16_LE(buf+12);
+ format.samplesize = READ_U16_LE(buf+14);
+
++ if(channels <= 0L || SHRT_MAX < channels)
++ {
++ fprintf(stderr, _("Warning: Unsupported count of channels in WAV header\n"));
++ return 0;
++ }
++
+ if(format.format == -2) /* WAVE_FORMAT_EXTENSIBLE */
+ {
+ if(len<40)
diff --git a/gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch b/gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch
new file mode 100644
index 0000000000..97d18e0db7
--- /dev/null
+++ b/gnu/packages/patches/vorbis-tools-CVE-2014-9640.patch
@@ -0,0 +1,29 @@
+Index: vorbis-tools/oggenc/oggenc.c
+===================================================================
+--- vorbis-tools/oggenc/oggenc.c (revision 19116)
++++ vorbis-tools/oggenc/oggenc.c (revision 19117)
+@@ -98,4 +98,6 @@
+ 0,0,0.f,
+ 0, 0, 0, 0, 0};
++ input_format raw_format = {NULL, 0, raw_open, wav_close, "raw",
++ N_("RAW file reader")};
+
+ int i;
+@@ -240,6 +242,4 @@
+ if(opt.rawmode)
+ {
+- input_format raw_format = {NULL, 0, raw_open, wav_close, "raw",
+- N_("RAW file reader")};
+
+ enc_opts.rate=opt.raw_samplerate;
+Index: vorbis-tools/oggenc/skeleton.h
+===================================================================
+--- vorbis-tools/oggenc/skeleton.h (revision 19116)
++++ vorbis-tools/oggenc/skeleton.h (revision 19117)
+@@ -42,5 +42,5 @@
+ ogg_int64_t start_granule; /* start granule value */
+ ogg_uint32_t preroll; /* preroll */
+- unsigned char granule_shift; // a 8-bit field /* 1 byte value holding the granule shift */
++ unsigned char granule_shift; /* 1 byte value holding the granule shift */
+ char *message_header_fields; /* holds all the message header fields */
+ /* current total size of the message header fields, for realloc purpose, initially zero */
diff --git a/gnu/packages/patches/vte-CVE-2012-2738-pt1.patch b/gnu/packages/patches/vte-CVE-2012-2738-pt1.patch
new file mode 100644
index 0000000000..fd45407939
--- /dev/null
+++ b/gnu/packages/patches/vte-CVE-2012-2738-pt1.patch
@@ -0,0 +1,40 @@
+From feeee4b5832b17641e505b7083e0d299fdae318e Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe@gnome.org>
+Date: Sat, 19 May 2012 17:36:09 +0000
+Subject: emulation: Limit integer arguments to 65535
+
+To guard against malicious sequences containing excessively big numbers,
+limit all parsed numbers to 16 bit range. Doing this here in the parsing
+routine is a catch-all guard; this doesn't preclude enforcing
+more stringent limits in the handlers themselves.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=676090
+---
+diff --git a/src/table.c b/src/table.c
+index 140e8c8..85cf631 100644
+--- a/src/table.c
++++ b/src/table.c
+@@ -550,7 +550,7 @@ _vte_table_extract_numbers(GValueArray **array,
+ if (G_UNLIKELY (*array == NULL)) {
+ *array = g_value_array_new(1);
+ }
+- g_value_set_long(&value, total);
++ g_value_set_long(&value, CLAMP (total, 0, G_MAXUSHORT));
+ g_value_array_append(*array, &value);
+ } while (i++ < arginfo->length);
+ g_value_unset(&value);
+diff --git a/src/vteseq.c b/src/vteseq.c
+index 457c06a..46def5b 100644
+--- a/src/vteseq.c
++++ b/src/vteseq.c
+@@ -557,7 +557,7 @@ vte_sequence_handler_multiple(VteTerminal *terminal,
+ GValueArray *params,
+ VteTerminalSequenceHandler handler)
+ {
+- vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXLONG);
++ vte_sequence_handler_multiple_limited(terminal, params, handler, G_MAXUSHORT);
+ }
+
+ static void
+--
+cgit v0.9.0.2
diff --git a/gnu/packages/patches/vte-CVE-2012-2738-pt2.patch b/gnu/packages/patches/vte-CVE-2012-2738-pt2.patch
new file mode 100644
index 0000000000..e98fd35b95
--- /dev/null
+++ b/gnu/packages/patches/vte-CVE-2012-2738-pt2.patch
@@ -0,0 +1,82 @@
+From 98ce2f265f986fb88c38d508286bb5e3716b9e74 Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe@gnome.org>
+Date: Sat, 19 May 2012 18:04:12 +0000
+Subject: emulation: Limit repetitions
+
+Don't allow malicious sequences to cause excessive repetitions.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=676090
+---
+diff --git a/src/vteseq.c b/src/vteseq.c
+index 46def5b..7fb4707 100644
+--- a/src/vteseq.c
++++ b/src/vteseq.c
+@@ -1397,7 +1397,7 @@ vte_sequence_handler_dc (VteTerminal *terminal, GValueArray *params)
+ static void
+ vte_sequence_handler_DC (VteTerminal *terminal, GValueArray *params)
+ {
+- vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_dc);
++ vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_dc);
+ }
+
+ /* Delete a line at the current cursor position. */
+@@ -1790,7 +1790,7 @@ vte_sequence_handler_reverse_index (VteTerminal *terminal, GValueArray *params)
+ static void
+ vte_sequence_handler_RI (VteTerminal *terminal, GValueArray *params)
+ {
+- vte_sequence_handler_multiple(terminal, params, vte_sequence_handler_nd);
++ vte_sequence_handler_multiple_r(terminal, params, vte_sequence_handler_nd);
+ }
+
+ /* Save cursor (position). */
+@@ -2782,8 +2782,7 @@ vte_sequence_handler_insert_lines (VteTerminal *terminal, GValueArray *params)
+ {
+ GValue *value;
+ VteScreen *screen;
+- long param, end, row;
+- int i;
++ long param, end, row, i, limit;
+ screen = terminal->pvt->screen;
+ /* The default is one. */
+ param = 1;
+@@ -2801,7 +2800,13 @@ vte_sequence_handler_insert_lines (VteTerminal *terminal, GValueArray *params)
+ } else {
+ end = screen->insert_delta + terminal->row_count - 1;
+ }
+- /* Insert the new lines at the cursor. */
++
++ /* Only allow to insert as many lines as there are between this row
++ * and the end of the scrolling region. See bug #676090.
++ */
++ limit = end - row + 1;
++ param = MIN (param, limit);
++
+ for (i = 0; i < param; i++) {
+ /* Clear a line off the end of the region and add one to the
+ * top of the region. */
+@@ -2822,8 +2827,7 @@ vte_sequence_handler_delete_lines (VteTerminal *terminal, GValueArray *params)
+ {
+ GValue *value;
+ VteScreen *screen;
+- long param, end, row;
+- int i;
++ long param, end, row, i, limit;
+
+ screen = terminal->pvt->screen;
+ /* The default is one. */
+@@ -2842,6 +2846,13 @@ vte_sequence_handler_delete_lines (VteTerminal *terminal, GValueArray *params)
+ } else {
+ end = screen->insert_delta + terminal->row_count - 1;
+ }
++
++ /* Only allow to delete as many lines as there are between this row
++ * and the end of the scrolling region. See bug #676090.
++ */
++ limit = end - row + 1;
++ param = MIN (param, limit);
++
+ /* Clear them from below the current cursor. */
+ for (i = 0; i < param; i++) {
+ /* Insert a line at the end of the region and remove one from
+--
+cgit v0.9.0.2
diff --git a/gnu/packages/patches/wordnet-CVE-2008-2149.patch b/gnu/packages/patches/wordnet-CVE-2008-2149.patch
new file mode 100644
index 0000000000..9828efa4bc
--- /dev/null
+++ b/gnu/packages/patches/wordnet-CVE-2008-2149.patch
@@ -0,0 +1,19 @@
+Fix CVE-2008-2149: buffer overflows by limiting the length of the string in sprintf
+format string
+Closes: #481186 (CVE-2008-2149)
+Please note: The WordNet code contains several other occurences of potentially
+exploitable functions like strcpy()/strcat()/... and so even if there are no
+known exploits the code needs a full security audit.
+
+--- a/src/wn.c
++++ b/src/wn.c
+@@ -206,7 +206,8 @@ static int searchwn(int ac, char *av[])
+ outsenses += do_search(av[1], optptr->pos, optptr->search,
+ whichsense, optptr->label);
+ } else {
+- sprintf(tmpbuf, "wn: invalid search option: %s\n", av[j]);
++ /* Fix CVE-2008-2149: buffer overflows Andreas Tille <tille@debian.org> */
++ sprintf(tmpbuf, "wn: invalid search option: %.200s\n", av[j]);
+ display_message(tmpbuf);
+ errcount++;
+ }
diff --git a/gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch b/gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch
new file mode 100644
index 0000000000..a2e796b535
--- /dev/null
+++ b/gnu/packages/patches/wordnet-CVE-2008-3908-pt1.patch
@@ -0,0 +1,710 @@
+Author: Anton Gladky <gladk@debian.org>
+LastChanged: Tue, 26 Feb 2013 20:40:25 +0100
+BugDebian: http://bugs.debian.org/700914
+Description: This patch was created by oCert according to
+ http://www.ocert.org/advisories/ocert-2008-014.html
+ and can be downloaded from
+ http://www.ocert.org/analysis/2008-014/wordnet.patch
+ Unfortunately the original patch had a problem which
+ caused 'wordnet test -synsn' to fail. The critical
+ part of the patch was removed from the whole patch
+ set and is moved to 51_overflows_memcpy.patch which
+ uses memcpy instead of the formerly used strcpy.
+
+--- a/lib/binsrch.c
++++ b/lib/binsrch.c
+@@ -28,7 +28,7 @@ char *read_index(long offset, FILE *fp)
+ char *linep;
+
+ linep = line;
+- line[0] = '0';
++ line[0] = '\0';
+
+ fseek( fp, offset, SEEK_SET );
+ fgets(linep, LINE_LEN, fp);
+@@ -58,6 +58,8 @@ char *bin_search(char *searchkey, FILE *
+ last_bin_search_offset = ftell( fp );
+ fgets(linep, LINE_LEN, fp);
+ length = (int)(strchr(linep, ' ') - linep);
++ if (length > (sizeof(key) - 1))
++ return(NULL);
+ strncpy(key, linep, length);
+ key[length] = '\0';
+ if(strcmp(key, searchkey) < 0) {
+@@ -110,6 +112,8 @@ static int bin_search_key(char *searchke
+ line[length++] = c;
+ if (getc(fp) == EOF) { /* only 1 line in file */
+ length = (int)(strchr(linep, ' ') - linep);
++ if (length > (sizeof(key) - 1))
++ return(0);
+ strncpy(key, linep, length);
+ key[length] = '\0';
+ if(strcmp(key, searchkey) > 0) {
+@@ -132,6 +136,8 @@ static int bin_search_key(char *searchke
+ if (fgets(linep, LINE_LEN, fp) != NULL) {
+ offset2 = ftell(fp); /* offset at start of next line */
+ length = (int)(strchr(linep, ' ') - linep);
++ if (length > (sizeof(key) - 1))
++ return(0);
+ strncpy(key, linep, length);
+ key[length] = '\0';
+ if(strcmp(key, searchkey) < 0) { /* further in file */
+--- a/lib/morph.c
++++ b/lib/morph.c
+@@ -51,21 +51,21 @@ static struct {
+ char *str;
+ int strlen;
+ } prepositions[NUMPREPS] = {
+- "to", 2,
+- "at", 2,
+- "of", 2,
+- "on", 2,
+- "off", 3,
+- "in", 2,
+- "out", 3,
+- "up", 2,
+- "down", 4,
+- "from", 4,
+- "with", 4,
+- "into", 4,
+- "for", 3,
+- "about", 5,
+- "between", 7,
++ { "to", 2 },
++ { "at", 2 },
++ { "of", 2 },
++ { "on", 2 },
++ { "off", 3 },
++ { "in", 2 },
++ { "out", 3 },
++ { "up", 2 },
++ { "down", 4 },
++ { "from", 4 },
++ { "with", 4 },
++ { "into", 4 },
++ { "for", 3 },
++ { "about", 5 },
++ { "between", 7 }
+ };
+
+ static FILE *exc_fps[NUMPARTS + 1];
+@@ -144,18 +144,19 @@ static int do_init(void)
+ } else
+ sprintf(searchdir, DEFAULTPATH);
+ #else
+- if ((env = getenv("WNSEARCHDIR")) != NULL)
+- strcpy(searchdir, env);
+- else if ((env = getenv("WNHOME")) != NULL)
+- sprintf(searchdir, "%s%s", env, DICTDIR);
+- else
++ if ((env = getenv("WNSEARCHDIR")) != NULL) {
++ snprintf(searchdir, sizeof(searchdir), "%s", env);
++ } else if ((env = getenv("WNHOME")) != NULL) {
++ snprintf(searchdir, sizeof(searchdir), "%s%s", env, DICTDIR);
++ } else {
+ strcpy(searchdir, DEFAULTPATH);
++ }
+ #endif
+
+ for (i = 1; i <= NUMPARTS; i++) {
+- sprintf(fname, EXCFILE, searchdir, partnames[i]);
++ snprintf(fname, sizeof(fname), EXCFILE, searchdir, partnames[i]);
+ if ((exc_fps[i] = fopen(fname, "r")) == NULL) {
+- sprintf(msgbuf,
++ snprintf(msgbuf, sizeof(msgbuf),
+ "WordNet library error: Can't open exception file(%s)\n\n",
+ fname);
+ display_message(msgbuf);
+@@ -178,13 +179,16 @@ char *morphstr(char *origstr, int pos)
+ int prep;
+ char *end_idx1, *end_idx2;
+ char *append;
+-
++
+ if (pos == SATELLITE)
+ pos = ADJ;
+
+ /* First time through for this string */
+
+ if (origstr != NULL) {
++ if (strlen(origstr) > WORDBUF - 1)
++ return(NULL);
++
+ /* Assume string hasn't had spaces substitued with '_' */
+ strtolower(strsubst(strcpy(str, origstr), ' ', '_'));
+ searchstr[0] = '\0';
+@@ -232,7 +236,7 @@ char *morphstr(char *origstr, int pos)
+ if (end_idx < 0) return(NULL); /* shouldn't do this */
+ strncpy(word, str + st_idx, end_idx - st_idx);
+ word[end_idx - st_idx] = '\0';
+- if(tmp = morphword(word, pos))
++ if ((tmp = morphword(word, pos)) != NULL)
+ strcat(searchstr,tmp);
+ else
+ strcat(searchstr,word);
+@@ -240,7 +244,7 @@ char *morphstr(char *origstr, int pos)
+ st_idx = end_idx + 1;
+ }
+
+- if(tmp = morphword(strcpy(word, str + st_idx), pos))
++ if ((tmp = morphword(strcpy(word, str + st_idx), pos)) != NULL)
+ strcat(searchstr,tmp);
+ else
+ strcat(searchstr,word);
+@@ -270,16 +274,15 @@ char *morphword(char *word, int pos)
+ {
+ int offset, cnt;
+ int i;
+- static char retval[WORDBUF];
+- char *tmp, tmpbuf[WORDBUF], *end;
+-
+- sprintf(retval,"");
+- sprintf(tmpbuf, "");
+- end = "";
+-
++ static char retval[WORDBUF] = "";
++ char *tmp, tmpbuf[WORDBUF] = "", *end = "";
++
+ if(word == NULL)
+ return(NULL);
+
++ if (strlen(word) > WORDBUF - 1)
++ return(NULL);
++
+ /* first look for word on exception list */
+
+ if((tmp = exc_lookup(word, pos)) != NULL)
+@@ -335,7 +338,10 @@ static char *wordbase(char *word, int en
+ {
+ char *pt1;
+ static char copy[WORDBUF];
+-
++
++ if (strlen(word) > WORDBUF - 1)
++ return(NULL);
++
+ strcpy(copy, word);
+ if(strend(copy,sufx[ender])) {
+ pt1=strchr(copy,'\0');
+@@ -368,13 +374,14 @@ static char *exc_lookup(char *word, int
+ {
+ static char line[WORDBUF], *beglp, *endlp;
+ char *excline;
+- int found = 0;
+
+ if (exc_fps[pos] == NULL)
+ return(NULL);
+
+ /* first time through load line from exception file */
+ if(word != NULL){
++ if (strlen(word) > WORDBUF - 1)
++ return(NULL);
+ if ((excline = bin_search(word, exc_fps[pos])) != NULL) {
+ strcpy(line, excline);
+ endlp = strchr(line,' ');
+@@ -403,6 +410,9 @@ static char *morphprep(char *s)
+ char word[WORDBUF], end[WORDBUF];
+ static char retval[WORDBUF];
+
++ if (strlen(s) > WORDBUF - 1)
++ return (NULL);
++
+ /* Assume that the verb is the first word in the phrase. Strip it
+ off, check for validity, then try various morphs with the
+ rest of the phrase tacked on, trying to find a match. */
+@@ -410,7 +420,7 @@ static char *morphprep(char *s)
+ rest = strchr(s, '_');
+ last = strrchr(s, '_');
+ if (rest != last) { /* more than 2 words */
+- if (lastwd = morphword(last + 1, NOUN)) {
++ if ((lastwd = morphword(last + 1, NOUN)) != NULL) {
+ strncpy(end, rest, last - rest + 1);
+ end[last-rest+1] = '\0';
+ strcat(end, lastwd);
+--- a/lib/search.c
++++ b/lib/search.c
+@@ -13,6 +13,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <assert.h>
++#include <limits.h>
+
+ #include "wn.h"
+
+@@ -119,33 +120,22 @@ IndexPtr parse_index(long offset, int db
+ if ( !line )
+ line = read_index( offset, indexfps[dbase] );
+
+- idx = (IndexPtr)malloc(sizeof(Index));
++ idx = (IndexPtr)calloc(1, sizeof(Index));
+ assert(idx);
+
+ /* set offset of entry in index file */
+ idx->idxoffset = offset;
+
+- idx->wd='\0';
+- idx->pos='\0';
+- idx->off_cnt=0;
+- idx->tagged_cnt = 0;
+- idx->sense_cnt=0;
+- idx->offset='\0';
+- idx->ptruse_cnt=0;
+- idx->ptruse='\0';
+-
+ /* get the word */
+ ptrtok=strtok(line," \n");
+
+- idx->wd = malloc(strlen(ptrtok) + 1);
++ idx->wd = strdup(ptrtok);
+ assert(idx->wd);
+- strcpy(idx->wd, ptrtok);
+
+ /* get the part of speech */
+ ptrtok=strtok(NULL," \n");
+- idx->pos = malloc(strlen(ptrtok) + 1);
++ idx->pos = strdup(ptrtok);
+ assert(idx->pos);
+- strcpy(idx->pos, ptrtok);
+
+ /* get the collins count */
+ ptrtok=strtok(NULL," \n");
+@@ -154,7 +144,12 @@ IndexPtr parse_index(long offset, int db
+ /* get the number of pointers types */
+ ptrtok=strtok(NULL," \n");
+ idx->ptruse_cnt = atoi(ptrtok);
+-
++
++ if (idx->ptruse_cnt < 0 || (unsigned int)idx->ptruse_cnt > UINT_MAX/sizeof(int)) {
++ free_index(idx);
++ return(NULL);
++ }
++
+ if (idx->ptruse_cnt) {
+ idx->ptruse = (int *) malloc(idx->ptruse_cnt * (sizeof(int)));
+ assert(idx->ptruse);
+@@ -173,9 +168,14 @@ IndexPtr parse_index(long offset, int db
+ /* get the number of senses that are tagged */
+ ptrtok=strtok(NULL," \n");
+ idx->tagged_cnt = atoi(ptrtok);
+-
++
++ if (idx->off_cnt < 0 || (unsigned long)idx->off_cnt > ULONG_MAX/sizeof(long)) {
++ free_index(idx);
++ return(NULL);
++ }
++
+ /* make space for the offsets */
+- idx->offset = (long *) malloc(idx->off_cnt * (sizeof(long)));
++ idx->offset = (unsigned long *) malloc(idx->off_cnt * sizeof(long));
+ assert(idx->offset);
+
+ /* get the offsets */
+@@ -197,15 +197,21 @@ IndexPtr getindex(char *searchstr, int d
+ char strings[MAX_FORMS][WORDBUF]; /* vector of search strings */
+ static IndexPtr offsets[MAX_FORMS];
+ static int offset;
+-
++
+ /* This works like strrok(): if passed with a non-null string,
+ prepare vector of search strings and offsets. If string
+ is null, look at current list of offsets and return next
+ one, or NULL if no more alternatives for this word. */
+
+ if (searchstr != NULL) {
++ /* Bail out if the input is too long for us to handle */
++ if (strlen(searchstr) > (WORDBUF - 1)) {
++ strcpy(msgbuf, "WordNet library error: search term is too long\n");
++ display_message(msgbuf);
++ return(NULL);
++ }
+
+- offset = 0;
++ offset = 0;
+ strtolower(searchstr);
+ for (i = 0; i < MAX_FORMS; i++) {
+ strcpy(strings[i], searchstr);
+@@ -229,11 +235,11 @@ IndexPtr getindex(char *searchstr, int d
+ /* Get offset of first entry. Then eliminate duplicates
+ and get offsets of unique strings. */
+
+- if (strings[0][0] != NULL)
++ if (strings[0] != NULL)
+ offsets[0] = index_lookup(strings[0], dbase);
+
+ for (i = 1; i < MAX_FORMS; i++)
+- if ((strings[i][0]) != NULL && (strcmp(strings[0], strings[i])))
++ if (strings[i] != NULL && (strcmp(strings[0], strings[i])))
+ offsets[i] = index_lookup(strings[i], dbase);
+ }
+
+@@ -272,7 +278,7 @@ SynsetPtr read_synset(int dbase, long bo
+ SynsetPtr parse_synset(FILE *fp, int dbase, char *word)
+ {
+ static char line[LINEBUF];
+- char tbuf[SMLINEBUF];
++ char tbuf[SMLINEBUF] = "";
+ char *ptrtok;
+ char *tmpptr;
+ int foundpert = 0;
+@@ -286,33 +292,11 @@ SynsetPtr parse_synset(FILE *fp, int dba
+ if ((tmpptr = fgets(line, LINEBUF, fp)) == NULL)
+ return(NULL);
+
+- synptr = (SynsetPtr)malloc(sizeof(Synset));
++ synptr = (SynsetPtr)calloc(1, sizeof(Synset));
+ assert(synptr);
+-
+- synptr->hereiam = 0;
++
+ synptr->sstype = DONT_KNOW;
+- synptr->fnum = 0;
+- synptr->pos = '\0';
+- synptr->wcount = 0;
+- synptr->words = '\0';
+- synptr->whichword = 0;
+- synptr->ptrcount = 0;
+- synptr->ptrtyp = '\0';
+- synptr->ptroff = '\0';
+- synptr->ppos = '\0';
+- synptr->pto = '\0';
+- synptr->pfrm = '\0';
+- synptr->fcount = 0;
+- synptr->frmid = '\0';
+- synptr->frmto = '\0';
+- synptr->defn = '\0';
+- synptr->key = 0;
+- synptr->nextss = NULL;
+- synptr->nextform = NULL;
+ synptr->searchtype = -1;
+- synptr->ptrlist = NULL;
+- synptr->headword = NULL;
+- synptr->headsense = 0;
+
+ ptrtok = line;
+
+@@ -322,7 +306,7 @@ SynsetPtr parse_synset(FILE *fp, int dba
+
+ /* sanity check - make sure starting file offset matches first field */
+ if (synptr->hereiam != loc) {
+- sprintf(msgbuf, "WordNet library error: no synset at location %d\n",
++ sprintf(msgbuf, "WordNet library error: no synset at location %ld\n",
+ loc);
+ display_message(msgbuf);
+ free(synptr);
+@@ -335,16 +319,20 @@ SynsetPtr parse_synset(FILE *fp, int dba
+
+ /* looking at POS */
+ ptrtok = strtok(NULL, " \n");
+- synptr->pos = malloc(strlen(ptrtok) + 1);
++ synptr->pos = strdup(ptrtok);
+ assert(synptr->pos);
+- strcpy(synptr->pos, ptrtok);
+ if (getsstype(synptr->pos) == SATELLITE)
+ synptr->sstype = INDIRECT_ANT;
+
+ /* looking at numwords */
+ ptrtok = strtok(NULL, " \n");
+ synptr->wcount = strtol(ptrtok, NULL, 16);
+-
++
++ if (synptr->wcount < 0 || (unsigned int)synptr->wcount > UINT_MAX/sizeof(char *)) {
++ free_syns(synptr);
++ return(NULL);
++ }
++
+ synptr->words = (char **)malloc(synptr->wcount * sizeof(char *));
+ assert(synptr->words);
+ synptr->wnsns = (int *)malloc(synptr->wcount * sizeof(int));
+@@ -354,9 +342,8 @@ SynsetPtr parse_synset(FILE *fp, int dba
+
+ for (i = 0; i < synptr->wcount; i++) {
+ ptrtok = strtok(NULL, " \n");
+- synptr->words[i] = malloc(strlen(ptrtok) + 1);
++ synptr->words[i] = strdup(ptrtok);
+ assert(synptr->words[i]);
+- strcpy(synptr->words[i], ptrtok);
+
+ /* is this the word we're looking for? */
+
+@@ -371,6 +358,12 @@ SynsetPtr parse_synset(FILE *fp, int dba
+ ptrtok = strtok(NULL," \n");
+ synptr->ptrcount = atoi(ptrtok);
+
++ /* Should we check for long here as well? */
++ if (synptr->ptrcount < 0 || (unsigned int)synptr->ptrcount > UINT_MAX/sizeof(int)) {
++ free_syns(synptr);
++ return(NULL);
++ }
++
+ if (synptr->ptrcount) {
+
+ /* alloc storage for the pointers */
+@@ -455,21 +448,23 @@ SynsetPtr parse_synset(FILE *fp, int dba
+ ptrtok = strtok(NULL," \n");
+ if (ptrtok) {
+ ptrtok = strtok(NULL," \n");
+- sprintf(tbuf, "");
+ while (ptrtok != NULL) {
++ if (strlen(ptrtok) + strlen(tbuf) + 1 + 1 > sizeof(tbuf)) {
++ free_syns(synptr);
++ return(NULL);
++ }
+ strcat(tbuf,ptrtok);
+ ptrtok = strtok(NULL, " \n");
+ if(ptrtok)
+ strcat(tbuf," ");
+ }
+- assert((1 + strlen(tbuf)) < sizeof(tbuf));
+- synptr->defn = malloc(strlen(tbuf) + 4);
++ synptr->defn = malloc(strlen(tbuf) + 3);
+ assert(synptr->defn);
+ sprintf(synptr->defn,"(%s)",tbuf);
+ }
+
+ if (keyindexfp) { /* we have unique keys */
+- sprintf(tmpbuf, "%c:%8.8d", partchars[dbase], synptr->hereiam);
++ sprintf(tmpbuf, "%c:%8.8ld", partchars[dbase], synptr->hereiam);
+ synptr->key = GetKeyForOffset(tmpbuf);
+ }
+
+@@ -635,7 +630,7 @@ static void traceptrs(SynsetPtr synptr,
+
+ if ((ptrtyp == PERTPTR || ptrtyp == PPLPTR) &&
+ synptr->pto[i] != 0) {
+- sprintf(tbuf, " (Sense %d)\n",
++ snprintf(tbuf, sizeof(tbuf), " (Sense %d)\n",
+ cursyn->wnsns[synptr->pto[i] - 1]);
+ printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
+ SKIP_ANTS, PRINT_MARKER);
+@@ -656,7 +651,7 @@ static void traceptrs(SynsetPtr synptr,
+ traceptrs(cursyn, HYPERPTR, getpos(cursyn->pos), 0);
+ }
+ } else if (ptrtyp == ANTPTR && dbase != ADJ && synptr->pto[i] != 0) {
+- sprintf(tbuf, " (Sense %d)\n",
++ snprintf(tbuf, sizeof(tbuf), " (Sense %d)\n",
+ cursyn->wnsns[synptr->pto[i] - 1]);
+ printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
+ SKIP_ANTS, PRINT_MARKER);
+@@ -817,7 +812,7 @@ static void tracenomins(SynsetPtr synptr
+
+ cursyn = read_synset(synptr->ppos[i], synptr->ptroff[i], "");
+
+- sprintf(tbuf, "#%d\n",
++ snprintf(tbuf, sizeof(tbuf), "#%d\n",
+ cursyn->wnsns[synptr->pto[i] - 1]);
+ printsynset(prefix, cursyn, tbuf, DEFOFF, synptr->pto[i],
+ SKIP_ANTS, SKIP_MARKER);
+@@ -989,12 +984,12 @@ void getexample(char *offset, char *wd)
+ char sentbuf[512];
+
+ if (vsentfilefp != NULL) {
+- if (line = bin_search(offset, vsentfilefp)) {
++ if ((line = bin_search(offset, vsentfilefp)) != NULL) {
+ while(*line != ' ')
+ line++;
+
+ printbuffer(" EX: ");
+- sprintf(sentbuf, line, wd);
++ snprintf(sentbuf, sizeof(sentbuf), line, wd);
+ printbuffer(sentbuf);
+ }
+ }
+@@ -1011,7 +1006,7 @@ int findexample(SynsetPtr synptr)
+ if (vidxfilefp != NULL) {
+ wdnum = synptr->whichword - 1;
+
+- sprintf(tbuf,"%s%%%-1.1d:%-2.2d:%-2.2d::",
++ snprintf(tbuf, sizeof(tbuf), "%s%%%-1.1d:%-2.2d:%-2.2d::",
+ synptr->words[wdnum],
+ getpos(synptr->pos),
+ synptr->fnum,
+@@ -1124,7 +1119,7 @@ static void freq_word(IndexPtr index)
+ if (cnt >= 17 && cnt <= 32) familiar = 6;
+ if (cnt > 32 ) familiar = 7;
+
+- sprintf(tmpbuf,
++ snprintf(tmpbuf, sizeof(tmpbuf),
+ "\n%s used as %s is %s (polysemy count = %d)\n",
+ index->wd, a_an[getpos(index->pos)], freqcats[familiar], cnt);
+ printbuffer(tmpbuf);
+@@ -1147,6 +1142,9 @@ void wngrep (char *word_passed, int pos)
+ }
+ rewind(inputfile);
+
++ if (strlen(word_passed) + 1 > sizeof(word))
++ return;
++
+ strcpy (word, word_passed);
+ ToLowerCase(word); /* map to lower case for index file search */
+ strsubst (word, ' ', '_'); /* replace spaces with underscores */
+@@ -1169,7 +1167,7 @@ void wngrep (char *word_passed, int pos)
+ ((line[loc + wordlen] == '-') || (line[loc + wordlen] == '_')))
+ ) {
+ strsubst (line, '_', ' ');
+- sprintf (tmpbuf, "%s\n", line);
++ snprintf (tmpbuf, sizeof(tmpbuf), "%s\n", line);
+ printbuffer (tmpbuf);
+ break;
+ }
+@@ -1683,9 +1681,8 @@ SynsetPtr traceptrs_ds(SynsetPtr synptr,
+ cursyn = read_synset(synptr->ppos[i],
+ synptr->ptroff[i],
+ "");
+- synptr->headword = malloc(strlen(cursyn->words[0]) + 1);
++ synptr->headword = strdup(cursyn->words[0]);
+ assert(synptr->headword);
+- strcpy(synptr->headword, cursyn->words[0]);
+ synptr->headsense = cursyn->lexid[0];
+ free_synset(cursyn);
+ break;
+@@ -2013,7 +2010,7 @@ static int getsearchsense(SynsetPtr synp
+ strsubst(strcpy(wdbuf, synptr->words[whichword - 1]), ' ', '_');
+ strtolower(wdbuf);
+
+- if (idx = index_lookup(wdbuf, getpos(synptr->pos))) {
++ if ((idx = index_lookup(wdbuf, getpos(synptr->pos))) != NULL) {
+ for (i = 0; i < idx->off_cnt; i++)
+ if (idx->offset[i] == synptr->hereiam) {
+ free_index(idx);
+@@ -2037,7 +2034,7 @@ static void printsynset(char *head, Syns
+ by flags */
+
+ if (offsetflag) /* print synset offset */
+- sprintf(tbuf + strlen(tbuf),"{%8.8d} ", synptr->hereiam);
++ sprintf(tbuf + strlen(tbuf),"{%8.8ld} ", synptr->hereiam);
+ if (fileinfoflag) { /* print lexicographer file information */
+ sprintf(tbuf + strlen(tbuf), "<%s> ", lexfiles[synptr->fnum]);
+ prlexid = 1; /* print lexicographer id after word */
+@@ -2072,7 +2069,7 @@ static void printantsynset(SynsetPtr syn
+ tbuf[0] = '\0';
+
+ if (offsetflag)
+- sprintf(tbuf,"{%8.8d} ", synptr->hereiam);
++ sprintf(tbuf,"{%8.8ld} ", synptr->hereiam);
+ if (fileinfoflag) {
+ sprintf(tbuf + strlen(tbuf),"<%s> ", lexfiles[synptr->fnum]);
+ prlexid = 1;
+--- a/lib/wnutil.c
++++ b/lib/wnutil.c
+@@ -48,7 +48,7 @@ int wninit(void)
+ char *env;
+
+ if (!done) {
+- if (env = getenv("WNDBVERSION")) {
++ if ((env = getenv("WNDBVERSION")) != NULL) {
+ wnrelease = strdup(env); /* set release */
+ assert(wnrelease);
+ }
+@@ -70,7 +70,7 @@ int re_wninit(void)
+
+ closefps();
+
+- if (env = getenv("WNDBVERSION")) {
++ if ((env = getenv("WNDBVERSION")) != NULL) {
+ wnrelease = strdup(env); /* set release */
+ assert(wnrelease);
+ }
+@@ -149,25 +149,25 @@ static int do_init(void)
+ sprintf(searchdir, DEFAULTPATH);
+ #else
+ if ((env = getenv("WNSEARCHDIR")) != NULL)
+- strcpy(searchdir, env);
++ snprintf(searchdir, sizeof(searchdir), "%s", env);
+ else if ((env = getenv("WNHOME")) != NULL)
+- sprintf(searchdir, "%s%s", env, DICTDIR);
++ snprintf(searchdir, sizeof(searchdir), "%s%s", env, DICTDIR);
+ else
+ strcpy(searchdir, DEFAULTPATH);
+ #endif
+
+ for (i = 1; i < NUMPARTS + 1; i++) {
+- sprintf(tmpbuf, DATAFILE, searchdir, partnames[i]);
++ snprintf(tmpbuf, sizeof(tmpbuf), DATAFILE, searchdir, partnames[i]);
+ if((datafps[i] = fopen(tmpbuf, "r")) == NULL) {
+- sprintf(msgbuf,
++ snprintf(msgbuf, sizeof(msgbuf),
+ "WordNet library error: Can't open datafile(%s)\n",
+ tmpbuf);
+ display_message(msgbuf);
+ openerr = -1;
+ }
+- sprintf(tmpbuf, INDEXFILE, searchdir, partnames[i]);
++ snprintf(tmpbuf, sizeof(tmpbuf), INDEXFILE, searchdir, partnames[i]);
+ if((indexfps[i] = fopen(tmpbuf, "r")) == NULL) {
+- sprintf(msgbuf,
++ snprintf(msgbuf, sizeof(msgbuf),
+ "WordNet library error: Can't open indexfile(%s)\n",
+ tmpbuf);
+ display_message(msgbuf);
+@@ -178,35 +178,35 @@ static int do_init(void)
+ /* This file isn't used by the library and doesn't have to
+ be present. No error is reported if the open fails. */
+
+- sprintf(tmpbuf, SENSEIDXFILE, searchdir);
++ snprintf(tmpbuf, sizeof(tmpbuf), SENSEIDXFILE, searchdir);
+ sensefp = fopen(tmpbuf, "r");
+
+ /* If this file isn't present, the runtime code will skip printint out
+ the number of times each sense was tagged. */
+
+- sprintf(tmpbuf, CNTLISTFILE, searchdir);
++ snprintf(tmpbuf, sizeof(tmpbuf), CNTLISTFILE, searchdir);
+ cntlistfp = fopen(tmpbuf, "r");
+
+ /* This file doesn't have to be present. No error is reported if the
+ open fails. */
+
+- sprintf(tmpbuf, KEYIDXFILE, searchdir);
++ snprintf(tmpbuf, sizeof(tmpbuf), KEYIDXFILE, searchdir);
+ keyindexfp = fopen(tmpbuf, "r");
+
+- sprintf(tmpbuf, REVKEYIDXFILE, searchdir);
++ snprintf(tmpbuf, sizeof(tmpbuf), REVKEYIDXFILE, searchdir);
+ revkeyindexfp = fopen(tmpbuf, "r");
+
+- sprintf(tmpbuf, VRBSENTFILE, searchdir);
++ snprintf(tmpbuf, sizeof(tmpbuf), VRBSENTFILE, searchdir);
+ if ((vsentfilefp = fopen(tmpbuf, "r")) == NULL) {
+- sprintf(msgbuf,
++ snprintf(msgbuf, sizeof(msgbuf),
+ "WordNet library warning: Can't open verb example sentence file(%s)\n",
+ tmpbuf);
+ display_message(msgbuf);
+ }
+
+- sprintf(tmpbuf, VRBIDXFILE, searchdir);
++ snprintf(tmpbuf, sizeof(tmpbuf), VRBIDXFILE, searchdir);
+ if ((vidxfilefp = fopen(tmpbuf, "r")) == NULL) {
+- sprintf(msgbuf,
++ snprintf(msgbuf, sizeof(msgbuf),
+ "WordNet library warning: Can't open verb example sentence index file(%s)\n",
+ tmpbuf);
+ display_message(msgbuf);
+--- a/src/wn.c
++++ b/src/wn.c
+@@ -131,7 +131,7 @@ static void printusage(), printlicense()
+ printsearches(char *, int, unsigned long);
+ static int error_message(char *);
+
+-main(int argc,char *argv[])
++int main(int argc,char *argv[])
+ {
+ display_message = error_message;
+
+@@ -228,14 +228,14 @@ static int do_search(char *searchword, i
+ printf("\n%s of %s %s\n%s",
+ label, partnames[pos], searchword, outbuf);
+
+- if (morphword = morphstr(searchword, pos))
++ if ((morphword = morphstr(searchword, pos)) != NULL)
+ do {
+ outbuf = findtheinfo(morphword, pos, search, whichsense);
+ totsenses += wnresults.printcnt;
+ if (strlen(outbuf) > 0)
+ printf("\n%s of %s %s\n%s",
+ label, partnames[pos], morphword, outbuf);
+- } while (morphword = morphstr(NULL, pos));
++ } while ((morphword = morphstr(NULL, pos)) != NULL);
+
+ return(totsenses);
+ }
diff --git a/gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch b/gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch
new file mode 100644
index 0000000000..2ef2239a7f
--- /dev/null
+++ b/gnu/packages/patches/wordnet-CVE-2008-3908-pt2.patch
@@ -0,0 +1,18 @@
+This patch was created by oCert according to
+ http://www.ocert.org/advisories/ocert-2008-014.html
+Unfortunately the original patch contained a bug which was
+later fixed by the issuer of the patch Rob Holland <rob@ocert.org>
+This part was now separated in this file.
+
+--- a/lib/search.c
++++ b/lib/search.c
+@@ -1568,7 +1568,8 @@ char *findtheinfo(char *searchstr, int d
+ bufstart[0] = '\n';
+ bufstart++;
+ }
+- strncpy(bufstart, tmpbuf, strlen(tmpbuf));
++ /* Avoid writing a trailing \0 after the string */
++ memcpy(bufstart, tmpbuf, strlen(tmpbuf));
+ bufstart = searchbuffer + strlen(searchbuffer);
+ }
+ }
diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm
index e022b6a81d..553e3f8cac 100644
--- a/gnu/packages/pciutils.scm
+++ b/gnu/packages/pciutils.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,50 +24,48 @@
#:use-module (guix build-system gnu)
#:use-module (gnu packages compression)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages base))
(define-public pciutils
(package
(name "pciutils")
- (version "3.3.1")
+ (version "3.5.1")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://kernel.org/software/utils/pciutils/pciutils-"
- version
- ".tar.xz"))
+ version ".tar.xz"))
(sha256
(base32
- "1ag3skny1bamqil46dlppw8j1fp08spqa60fjygbxkg4fzdknjji"))))
+ "0byl2f897w5lhs4bvr6p7qwcz9bllj2zyfv7nywbcbsnb9ha9wrb"))))
(build-system gnu-build-system)
(arguments
- '(#:phases (alist-replace
- 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- ;; There's no 'configure' script, just a raw makefile.
- (substitute* "Makefile"
- (("^PREFIX=.*$")
- (string-append "PREFIX := " (assoc-ref outputs "out")
- "\n"))
- (("^MANDIR:=.*$")
- ;; By default the thing tries to automatically
- ;; determine whether to use $prefix/man or
- ;; $prefix/share/man, and wrongly so.
- (string-append "MANDIR := " (assoc-ref outputs "out")
- "/share/man\n"))
- (("^SHARED=.*$")
- ;; Build libpciutils.so.
- "SHARED := yes\n")
- (("^ZLIB=.*$")
- ;; Ask for zlib support.
- "ZLIB := yes\n")))
-
- (alist-replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Install the commands, library, and .pc files.
- (zero? (system* "make" "install" "install-lib")))
- %standard-phases))
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; There's no 'configure' script, just a raw makefile.
+ (substitute* "Makefile"
+ (("^PREFIX=.*$")
+ (string-append "PREFIX := " (assoc-ref outputs "out")
+ "\n"))
+ (("^MANDIR:=.*$")
+ ;; By default the thing tries to automatically
+ ;; determine whether to use $prefix/man or
+ ;; $prefix/share/man, and wrongly so.
+ (string-append "MANDIR := " (assoc-ref outputs "out")
+ "/share/man\n"))
+ (("^SHARED=.*$")
+ ;; Build libpciutils.so.
+ "SHARED := yes\n")
+ (("^ZLIB=.*$")
+ ;; Ask for zlib support.
+ "ZLIB := yes\n"))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Install the commands, library, and .pc files.
+ (zero? (system* "make" "install" "install-lib")))))
;; Make sure programs have an RPATH so they can find libpciutils.so.
#:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
@@ -78,8 +77,8 @@
`(("which" ,which)
("pkg-config" ,pkg-config)))
(inputs
- ;; TODO: Add dependency on Linux libkmod.
- `(("zlib" ,zlib)))
+ `(("kmod" ,kmod)
+ ("zlib" ,zlib)))
(home-page "http://mj.ucw.cz/sw/pciutils/")
(synopsis "Programs for inspecting and manipulating PCI devices")
(description
diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm
index aea7d6fcb3..fe9157af12 100644
--- a/gnu/packages/pcre.scm
+++ b/gnu/packages/pcre.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -78,6 +79,7 @@ POSIX regular expression API.")
(uri (string-append "mirror://sourceforge/pcre/pcre2/"
version "/pcre2-" version ".tar.bz2"))
+ (patches (search-patches "pcre2-CVE-2016-3191.patch"))
(sha256
(base32
"1q6lrj9b08l1q39vxipb0fi88x6ybvkr6439h8bjb9r8jd81fsn6"))))
diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm
index 4edf965afd..7c2651764a 100644
--- a/gnu/packages/pdf.scm
+++ b/gnu/packages/pdf.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014, 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
+;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -112,6 +113,13 @@
,@(package-inputs poppler)))
(synopsis "Qt4 frontend for the Poppler PDF rendering library")))
+(define-public poppler-qt5
+ (package (inherit poppler)
+ (name "poppler-qt5")
+ (inputs `(("qt" ,qt)
+ ,@(package-inputs poppler)))
+ (synopsis "Qt5 frontend for the Poppler PDF rendering library")))
+
(define-public python-poppler-qt4
(package
(name "python-poppler-qt4")
diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm
index 6af4e4a214..4b21926105 100644
--- a/gnu/packages/photo.scm
+++ b/gnu/packages/photo.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,11 +37,13 @@
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages libusb)
+ #:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages readline)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages web)
#:use-module (gnu packages xfig)
#:use-module (gnu packages xml))
@@ -218,7 +221,7 @@ overlapping images, as well as some command line tools.")
(define-public enblend-enfuse
(package
(name "enblend-enfuse")
- (version "4.1.3")
+ (version "4.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/enblend/"
@@ -227,7 +230,7 @@ overlapping images, as well as some command line tools.")
name "-" version ".tar.gz"))
(sha256
(base32
- "1b7r1nnwaind0344ckwggy0ghl0ipbk9jzylsxcjfl05rnasw00w"))))
+ "0j5x011ilalb47ssah50ag0a4phgh1b0wdgxdbbp1gcyjcjf60w7"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@@ -235,8 +238,10 @@ overlapping images, as well as some command line tools.")
("perl-timedate" ,perl-timedate)
;; for building the documentation
("gnuplot" ,gnuplot)
+ ("help2man" ,help2man)
("imagemagick" ,imagemagick)
("libxml2" ,libxml2)
+ ("texlive-minimal" ,texlive-minimal)
("tidy" ,tidy)
("transfig" ,transfig)))
(inputs
diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm
index ef61239cab..3edb25a42a 100644
--- a/gnu/packages/plotutils.scm
+++ b/gnu/packages/plotutils.scm
@@ -38,7 +38,7 @@
#:use-module (gnu packages python)
#:use-module (gnu packages readline)
#:use-module (gnu packages texinfo)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages compression)
#:use-module (gnu packages))
@@ -189,7 +189,7 @@ colors, styles, options and details.")
`(("gs" ,ghostscript) ;For tests
("texinfo" ,texinfo) ;For generating documentation
("texlive" ,texlive) ;For tests and documentation
- ("emacs" ,emacs-no-x)
+ ("emacs" ,emacs-minimal)
("perl" ,perl)))
(inputs
`(("fftw" ,fftw)
diff --git a/gnu/packages/popt.scm b/gnu/packages/popt.scm
index 7739c7a276..0832766512 100644
--- a/gnu/packages/popt.scm
+++ b/gnu/packages/popt.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
@@ -20,7 +20,9 @@
(define-module (gnu packages popt)
#:use-module (guix packages)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system cmake)
#:use-module (guix licenses))
(define-public argtable
@@ -88,3 +90,32 @@ similar to getopt(3), it contains a number of enhancements, including:
- popt provides convience functions for parsing strings into argv[] style
arrays.")
(license x11)))
+
+(define-public gflags
+ (package
+ (name "gflags")
+ (version "2.1.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (commit (string-append "v" version))
+ (url "https://github.com/gflags/gflags.git")))
+ (sha256
+ (base32
+ "0qxvr9cyxq3px60jglkm94pq5bil8dkjjdb99l3ypqcds7iypx9w"))
+ (file-name (string-append name "-" version "-checkout"))))
+ (build-system cmake-build-system)
+ (arguments
+ '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON"
+ "-DBUILD_TESTING=ON")))
+ (home-page "https://gflags.github.io/gflags/")
+ (synopsis "C++ library for command-line argument parsing")
+ (description
+ "Gflags is a C++ library to parse command-line flags. It differs from
+other such libraries in that command-line flag definitions can be scattered
+around the source code, and not just listed in one place such as @code{main}.
+This means that a single source-code file will define and use flags that are
+meaningful to that file. Any application that links in that file will get the
+flags, and the gflags library will automatically handle that flag
+appropriately.")
+ (license bsd-3)))
diff --git a/gnu/packages/pretty-print.scm b/gnu/packages/pretty-print.scm
index a1692dd4de..8ba9780685 100644
--- a/gnu/packages/pretty-print.scm
+++ b/gnu/packages/pretty-print.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -43,7 +44,10 @@
version ".tar.gz"))
(sha256
(base32
- "195k78m1h03m961qn7jr120z815iyb93gwi159p1p9348lyqvbpk"))))
+ "195k78m1h03m961qn7jr120z815iyb93gwi159p1p9348lyqvbpk"))
+ (patches (search-patches
+ "a2ps-CVE-2001-1593.patch"
+ "a2ps-CVE-2014-0466.patch"))))
(build-system gnu-build-system)
(inputs
`(("psutils" ,psutils)
@@ -54,37 +58,36 @@
`(("gperf" ,gperf)
("perl" ,perl)))
(arguments
- '(#:phases (alist-cons-before
- 'build 'patch-scripts
- (lambda _
- (substitute*
- '("afm/make_fonts_map.sh"
- "tests/defs"
- "tests/backup.tst"
- "tests/styles.tst")
- (("/bin/rm") (which "rm"))))
- (alist-cons-before
- 'check 'patch-test-files
- ;; Alternatively, we could unpatch the shebangs in tstfiles
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((perl (assoc-ref inputs "perl")))
- (substitute* '("tests/ps-ref/includeres.ps"
- "tests/gps-ref/includeres.ps")
- (("/usr/local/bin/perl")
- (string-append perl "/bin/perl"))))
- ;; Some of the reference postscript contain a 'version 3'
- ;; string that in inconsistent with the source text in the
- ;; tstfiles directory. Erroneous search-and-replace?
- (substitute* '("tests/ps-ref/InsertBlock.ps"
- "tests/gps-ref/InsertBlock.ps"
- "tests/ps-ref/bookie.ps"
- "tests/gps-ref/bookie.ps")
- (("version 3") "version 2"))
- (substitute* '("tests/ps-ref/psmandup.ps"
- "tests/gps-ref/psmandup.ps")
- (("#! */bin/sh") (string-append
- "#!" (which "sh")))))
- %standard-phases))))
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'patch-scripts
+ (lambda _
+ (substitute*
+ '("afm/make_fonts_map.sh"
+ "tests/defs"
+ "tests/backup.tst"
+ "tests/styles.tst")
+ (("/bin/rm") (which "rm")))))
+ (add-before 'check 'patch-test-files
+ ;; Alternatively, we could unpatch the shebangs in tstfiles
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((perl (assoc-ref inputs "perl")))
+ (substitute* '("tests/ps-ref/includeres.ps"
+ "tests/gps-ref/includeres.ps")
+ (("/usr/local/bin/perl")
+ (string-append perl "/bin/perl"))))
+ ;; Some of the reference postscript contain a 'version 3'
+ ;; string that in inconsistent with the source text in the
+ ;; tstfiles directory. Erroneous search-and-replace?
+ (substitute* '("tests/ps-ref/InsertBlock.ps"
+ "tests/gps-ref/InsertBlock.ps"
+ "tests/ps-ref/bookie.ps"
+ "tests/gps-ref/bookie.ps")
+ (("version 3") "version 2"))
+ (substitute* '("tests/ps-ref/psmandup.ps"
+ "tests/gps-ref/psmandup.ps")
+ (("#! */bin/sh") (string-append
+ "#!" (which "sh")))))))))
(home-page "http://www.gnu.org/software/a2ps")
(synopsis "Any file to PostScript, including pretty-printing")
(description
diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index d2698d4231..0c86183e42 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -19,6 +19,7 @@
;;; Copyright © 2015, 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
+;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -44,6 +45,7 @@
#:use-module ((guix licenses) #:select (expat zlib) #:prefix license:)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
+ #:use-module (gnu packages adns)
#:use-module (gnu packages attr)
#:use-module (gnu packages backup)
#:use-module (gnu packages compression)
@@ -57,6 +59,7 @@
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages imagemagick)
+ #:use-module (gnu packages libevent)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages maths)
@@ -68,7 +71,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages readline)
#:use-module (gnu packages statistics)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
@@ -5462,7 +5465,7 @@ should be stored on various operating systems.")
(define-public python-llfuse
(package
(name "python-llfuse")
- (version "1.0")
+ (version "1.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -5470,7 +5473,7 @@ should be stored on various operating systems.")
"llfuse-" version ".tar.bz2"))
(sha256
(base32
- "1li7q04ljrvwharw4fblcbfhvk6s0l3lnv8yqb4c22lcgbkiqlps"))))
+ "1ywzbqkahrfl9kkcasxrmgilv6fybapvh6pqvimimnfh7sgxal72"))))
(build-system python-build-system)
(inputs
`(("fuse" ,fuse)
@@ -5806,6 +5809,35 @@ IPv6 addresses and networks. This is a port of the Python 3.3 ipaddress
module to older versions of Python.")
(license psfl)))
+(define-public python2-ipaddr
+ (package
+ (name "python2-ipaddr")
+ (version "2.1.11")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "ipaddr" version))
+ (sha256
+ (base32 "1dwq3ngsapjc93fw61rp17fvzggmab5x1drjzvd4y4q0i255nm8v"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:python ,python-2 ;version 2 only
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* _
+ (zero? (system* "python" "ipaddr_test.py")))))))
+ (home-page "https://github.com/google/ipaddr-py")
+ (synopsis "IP address manipulation library")
+ (description
+ "Ipaddr is a Python@tie{}2 library for creating and manupilating IPv4 and
+IPv6 addresses and networks.
+
+For new implementations you may prefer to use the standard module
+@code{ipaddress}, which was introduced in Python 3.3 and backported to older
+versions of Python.")
+ (license asl2.0)))
+
(define-public python-idna
(package
(name "python-idna")
@@ -8807,3 +8839,192 @@ the renaming, moving and extracting of attributes, functions, modules, fields
and parameters in Python 2 source code. These refactorings can also be applied
to occurences in strings and comments.")
(license gpl2)))
+
+(define-public python-py3status
+ (package
+ (name "python-py3status")
+ (version "2.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "py3status" version))
+ (sha256
+ (base32
+ "09y7h8rjay5kzwk5akq7f5f9wqnvjkxhivck04hdc8ny1nw3vqzp"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "https://github.com/ultrabug/py3status")
+ (synopsis "Extensible i3status wrapper written in Python")
+ (description "py3status is an i3status wrapper which extends i3status
+functionality in a modular way, allowing you to extend your panel with your
+own code, responding to click events and updating clock every second.")
+ (license bsd-3)))
+
+(define-public python-tblib
+ (package
+ (name "python-tblib")
+ (version "1.3.0")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "tblib" version))
+ (sha256 (base32
+ "02iahfkfa927hb4jq2bak36ldihwapzacfiq5lyxg8llwn98a1yi"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ ;; Upstream runs tests after installation and the package itself
+ ;; resides in a subdirectory. Extend PYTHONPATH so it will be
+ ;; found.
+ (setenv "PYTHONPATH"
+ (string-append (getcwd) "/build/lib:"
+ (getenv "PYTHONPATH")))
+ (zero? (system* "py.test" "-vv" "tests" "README.rst")))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-setuptools" ,python-setuptools)
+ ("python-six" ,python-six)))
+ (home-page "https://github.com/ionelmc/python-tblib")
+ (synopsis "Traceback serialization library")
+ (description
+ "Traceback serialization allows you to:
+
+@enumerate
+@item Pickle tracebacks and raise exceptions with pickled tracebacks in
+different processes. This allows better error handling when running code over
+multiple processes (imagine multiprocessing, billiard, futures, celery etc).
+
+@item Parse traceback strings and raise with the parsed tracebacks.
+@end itemize")
+ (license bsd-3)))
+
+(define-public python2-tblib
+ (package-with-python2 python-tblib))
+
+(define-public python-sqlparse
+ (package
+ (name "python-sqlparse")
+ (version "0.1.19")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "sqlparse" version))
+ (sha256
+ (base32
+ "1s2fvaxgh9kqzrd6iwy5h7i61ckn05plx9np13zby93z3hdbx5nq"))))
+ (build-system python-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda* _
+ ;; setup.py-integrated 2to3 only affects the build files, but
+ ;; py.test is using the source files. So we need to convert them
+ ;; manually.
+ (when (zero? (system* "python3"))
+ (system* "2to3" "--no-diff" "-wn" "sqlparse" "tests"))
+ (zero? (system* "py.test")))))))
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-setuptools" ,python-setuptools)))
+ (home-page "https://github.com/andialbrecht/sqlparse")
+ (synopsis "Non-validating SQL parser")
+ (description "Sqlparse is a non-validating SQL parser for Python. It
+provides support for parsing, splitting and formatting SQL statements.")
+ (license bsd-3)))
+
+(define-public python2-sqlparse
+ (package-with-python2 python-sqlparse))
+
+(define-public python-greenlet
+ (package
+ (name "python-greenlet")
+ (version "0.4.9")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "greenlet" version))
+ (sha256
+ (base32
+ "04h0m54dyqg49vyarq26mry6kbivnpl47rnmmrk9qn8wpfxviybr"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)))
+ (home-page "https://greenlet.readthedocs.io/")
+ (synopsis "Lightweight in-process concurrent programming")
+ (description
+ "Greenlet package is a spin-off of Stackless, a version of CPython
+that supports micro-threads called \"tasklets\". Tasklets run
+pseudo-concurrently (typically in a single or a few OS-level threads) and
+are synchronized with data exchanges on \"channels\".")
+ (license (list psfl license:expat))))
+
+(define-public python2-greenlet
+ (package-with-python2 python-greenlet))
+
+(define-public python-gevent
+ (package
+ (name "python-gevent")
+ (version "1.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (pypi-uri "gevent" version))
+ (sha256
+ (base32
+ "1smf3kvidpdiyi2c81alal74p2zm0clrm6xbyy6y1k9a3f2vkrbf"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; unbunding libev and c-ares
+ (for-each delete-file-recursively '("libev" "c-ares"))
+ ;; fixing testsuite
+ (call-with-output-file "greentest/__init__.py" noop)
+ (substitute* "greentest/testrunner.py"
+ (("import util") "from . import util")
+ (("from util import log") "from .util import log"))))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-greenlet" ,python-greenlet)))
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)
+ ("python-six" ,python-six)))
+ (inputs
+ `(("c-ares" ,c-ares)
+ ("libev" ,libev)))
+ (home-page "http://www.gevent.org/")
+ (synopsis "Coroutine-based network library")
+ (description
+ "gevent is a coroutine-based Python networking library that uses greenlet
+to provide a high-level synchronous API on top of the libev event loop.")
+ (license license:expat)))
+
+(define-public python2-gevent
+ (package-with-python2 python-gevent))
+
+(define-public python-twisted
+ (package
+ (name "python-twisted")
+ (version "16.2.0")
+ (source (origin
+ (method url-fetch)
+ (uri (list (pypi-uri "Twisted" version ".tar.bz2") ; 404
+ (string-append
+ "https://pypi.io/packages/source/T/Twisted/"
+ "Twisted-" version ".tar.bz2")))
+ (sha256
+ (base32
+ "0ydxrp9myw1mvsz3qfzx5579y5llmqa82pxvqchgp5syczffi450"))))
+ (build-system python-build-system)
+ (native-inputs
+ `(("python-setuptools" ,python-setuptools)
+ ("python-zope-interface" ,python-zope-interface)))
+ (home-page "https://twistedmatrix.com/")
+ (synopsis "Asynchronous networking framework written in Python")
+ (description
+ "Twisted is an extensible framework for Python programming, with special
+focus on event-based network programming and multiprotocol integration.")
+ (license license:expat)))
+
+(define-public python2-twisted
+ (package-with-python2 python-twisted))
diff --git a/gnu/packages/qemu.scm b/gnu/packages/qemu.scm
index 6dd6ce4d76..4d78f9b086 100644
--- a/gnu/packages/qemu.scm
+++ b/gnu/packages/qemu.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 © 2015, 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
@@ -65,55 +65,58 @@
"1v1lhhd6m59hqgmiz100g779rjq70pik5v4b3g936ci73djlmb69"))))
(build-system gnu-build-system)
(arguments
- '(#:phases (alist-replace
- 'configure
- (lambda* (#:key inputs outputs (configure-flags '())
- #:allow-other-keys)
- ;; The `configure' script doesn't understand some of the
- ;; GNU options. Thus, add a new phase that's compatible.
- (let ((out (assoc-ref outputs "out")))
- (setenv "SHELL" (which "bash"))
+ '(;; Running tests in parallel can occasionally lead to failures, like:
+ ;; boot_sector_test: assertion failed (signature == SIGNATURE): (0x00000000 == 0x0000dead)
+ #:parallel-tests? #f
- ;; While we're at it, patch for tests.
- (substitute* "tests/libqtest.c"
- (("/bin/sh") (which "sh")))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs (configure-flags '())
+ #:allow-other-keys)
+ ;; The `configure' script doesn't understand some of the
+ ;; GNU options. Thus, add a new phase that's compatible.
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "SHELL" (which "bash"))
- ;; The binaries need to be linked against -lrt.
- (setenv "LDFLAGS" "-lrt")
- (zero?
- (apply system*
- `("./configure"
- ,(string-append "--cc=" (which "gcc"))
- "--disable-debug-info" ; save build space
- "--enable-virtfs" ; just to be sure
- ,(string-append "--prefix=" out)
- ,@configure-flags)))))
- (alist-cons-after
- 'install 'install-info
- (lambda* (#:key inputs outputs #:allow-other-keys)
- ;; Install the Info manual, unless Texinfo is missing.
- (or (not (assoc-ref inputs "texinfo"))
- (let ((out (assoc-ref outputs "out")))
- (and (zero? (system* "make" "info"))
- (let ((infodir (string-append out "/share/info")))
- (mkdir-p infodir)
- (for-each (lambda (info)
- (copy-file
- info
- (string-append infodir "/" info)))
- (find-files "." "\\.info$"))
- #t)))))
- (alist-cons-before
- 'check 'disable-test-qga
- (lambda _
- (substitute* "tests/Makefile"
- ;; Comment out the test-qga test, which needs /sys and
- ;; fails within the build environment.
- (("check-unit-.* tests/test-qga" all)
- (string-append "# " all)))
- #t)
- %standard-phases)))))
+ ;; While we're at it, patch for tests.
+ (substitute* "tests/libqtest.c"
+ (("/bin/sh") (which "sh")))
+ ;; The binaries need to be linked against -lrt.
+ (setenv "LDFLAGS" "-lrt")
+ (zero?
+ (apply system*
+ `("./configure"
+ ,(string-append "--cc=" (which "gcc"))
+ "--disable-debug-info" ; save build space
+ "--enable-virtfs" ; just to be sure
+ ,(string-append "--prefix=" out)
+ ,@configure-flags))))))
+ (add-after 'install 'install-info
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Install the Info manual, unless Texinfo is missing.
+ (or (not (assoc-ref inputs "texinfo"))
+ (let ((out (assoc-ref outputs "out")))
+ (and (zero? (system* "make" "info"))
+ (let ((infodir (string-append out "/share/info")))
+ (mkdir-p infodir)
+ (for-each (lambda (info)
+ (install-file info infodir))
+ (find-files "." "\\.info$"))
+ #t))))))
+ (add-before 'check 'make-gtester-verbose
+ (lambda _
+ ;; Make GTester verbose to facilitate investigation upon failure.
+ (setenv "V" "1")))
+ (add-before 'check 'disable-test-qga
+ (lambda _
+ (substitute* "tests/Makefile"
+ ;; Comment out the test-qga test, which needs /sys and
+ ;; fails within the build environment.
+ (("check-unit-.* tests/test-qga" all)
+ (string-append "# " all)))
+ #t)))))
(inputs ; TODO: Add optional inputs.
`(("sdl" ,sdl)
("mesa" ,mesa)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 47720384c2..acfda4a2df 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -20,7 +20,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages qt)
- #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ x11-style))
+ #:use-module ((guix licenses) #:select (bsd-3 gpl2 gpl3 lgpl2.1 lgpl2.1+ lgpl3 x11-style))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build utils)
@@ -298,6 +298,139 @@ developers using C++ or QML, a CSS & JavaScript like language.")
(delete-file-recursively olddoc)
#t))))))))
+(define-public qtbase
+ (package
+ (name "qtbase")
+ (version "5.6.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://download.qt.io/official_releases/qt/"
+ (version-major+minor version) "/" version
+ "/submodules/" name "-opensource-src-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0ynnvcs5idivzldsq5ciqg9myg82b3l3906l4vjv54lyamf8mykf"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Remove one of the two bundled harfbuzz copies in addition
+ ;; to passing "-system-harfbuzz".
+ (delete-file-recursively "src/3rdparty/harfbuzz-ng")
+ ;; Remove the bundled sqlite copy in addition to
+ ;; passing "-system-sqlite".
+ (delete-file-recursively "src/3rdparty/sqlite")))))
+ (build-system gnu-build-system)
+ (propagated-inputs
+ `(("mesa" ,mesa)))
+ (inputs
+ `(("alsa-lib" ,alsa-lib)
+ ("cups" ,cups)
+ ("dbus" ,dbus)
+ ("expat" ,expat)
+ ("fontconfig" ,fontconfig)
+ ("freetype" ,freetype)
+ ("glib" ,glib)
+ ("harfbuzz" ,harfbuzz)
+ ("icu4c" ,icu4c)
+ ("libjpeg" ,libjpeg)
+ ("libmng" ,libmng)
+ ("libpng" ,libpng)
+ ("libx11" ,libx11)
+ ("libxcomposite" ,libxcomposite)
+ ("libxcursor" ,libxcursor)
+ ("libxfixes" ,libxfixes)
+ ("libxi" ,libxi)
+ ("libxinerama" ,libxinerama)
+ ("libxkbcommon" ,libxkbcommon)
+ ("libxml2" ,libxml2)
+ ("libxrandr" ,libxrandr)
+ ("libxrender" ,libxrender)
+ ("libxslt" ,libxslt)
+ ("libxtst" ,libxtst)
+ ("mtdev" ,mtdev)
+ ("mysql" ,mysql)
+ ("nss" ,nss)
+ ("openssl" ,openssl)
+ ("pcre" ,pcre)
+ ("postgresql" ,postgresql)
+ ("pulseaudio" ,pulseaudio)
+ ("sqlite" ,sqlite)
+ ("unixodbc" ,unixodbc)
+ ("xcb-util" ,xcb-util)
+ ("xcb-util-image" ,xcb-util-image)
+ ("xcb-util-keysyms" ,xcb-util-keysyms)
+ ("xcb-util-renderutil" ,xcb-util-renderutil)
+ ("xcb-util-wm" ,xcb-util-wm)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("gperf" ,gperf)
+ ("perl" ,perl)
+ ("pkg-config" ,pkg-config)
+ ("python" ,python-2)
+ ("ruby" ,ruby)
+ ("which" ,(@ (gnu packages base) which))))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'configure 'patch-bin-sh
+ (lambda _
+ (substitute* '("config.status"
+ "configure"
+ "mkspecs/features/qt_functions.prf"
+ "qmake/library/qmakebuiltins.cpp")
+ (("/bin/sh") (which "sh")))
+ #t))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "configure"
+ (("/bin/pwd") (which "pwd")))
+ (substitute* "src/corelib/global/global.pri"
+ (("/bin/ls") (which "ls")))
+ ;; do not pass "--enable-fast-install", which makes the
+ ;; configure process fail
+ (zero? (system*
+ "./configure"
+ "-verbose"
+ "-prefix" out
+ "-opensource"
+ "-confirm-license"
+ ;; Do not build examples; if desired, these could go
+ ;; into a separate output, but for the time being, we
+ ;; prefer to save the space and build time.
+ "-nomake" "examples"
+ ;; Most "-system-..." are automatic, but some use
+ ;; the bundled copy by default.
+ "-system-sqlite"
+ "-system-harfbuzz"
+ ;; explicitly link with openssl instead of dlopening it
+ "-openssl-linked"
+ ;; explicitly link with dbus instead of dlopening it
+ "-dbus-linked"
+ ;; drop special machine instructions not supported
+ ;; on all instances of the target
+ ,@(if (string-prefix? "x86_64"
+ (or (%current-target-system)
+ (%current-system)))
+ '()
+ '("-no-sse2"))
+ "-no-sse3"
+ "-no-ssse3"
+ "-no-sse4.1"
+ "-no-sse4.2"
+ "-no-avx"
+ "-no-avx2"
+ "-no-mips_dsp"
+ "-no-mips_dspr2"))))))))
+ (home-page "https://www.qt.io/")
+ (synopsis "Cross-platform GUI library")
+ (description "Qt is a cross-platform application and UI framework for
+developers using C++ or QML, a CSS & JavaScript like language.")
+ (license (list lgpl2.1 lgpl3))))
+
(define-public qjson
(package
(name "qjson")
@@ -325,17 +458,16 @@ while JSON objects are mapped to QVariantMap.")
(define-public python-sip
(package
(name "python-sip")
- (version "4.16.9")
+ (version "4.18")
(source
(origin
(method url-fetch)
(uri
(string-append "mirror://sourceforge/pyqt/sip/"
- "sip-" version "/sip-"
- version ".tar.gz"))
+ "sip-" version "/sip-" version ".tar.gz"))
(sha256
(base32
- "0m85dgm3g9s9h7s5sfxvcxi423vqxwq1vg5wnl5wl9kfasm77qfv"))))
+ "1dlw4kyiwd9bzmd1djm79c121r219abaz86lvizdk6ksq20mrp7i"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-wrapper)))
@@ -344,29 +476,28 @@ while JSON objects are mapped to QVariantMap.")
#:modules ((srfi srfi-1)
,@%gnu-build-system-modules)
#:phases
- (alist-replace
- 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (include (string-append out "/include"))
- (python (assoc-ref inputs "python"))
- (python-version
- (last (string-split python #\-)))
- (python-major+minor
- (string-join
- (take (string-split python-version #\.) 2)
- "."))
- (lib (string-append out "/lib/python"
- python-major+minor
- "/site-packages")))
- (zero?
- (system* "python" "configure.py"
- "--bindir" bin
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (include (string-append out "/include"))
+ (python (assoc-ref inputs "python"))
+ (python-version
+ (last (string-split python #\-)))
+ (python-major+minor
+ (string-join
+ (take (string-split python-version #\.) 2)
+ "."))
+ (lib (string-append out "/lib/python"
+ python-major+minor
+ "/site-packages")))
+ (zero?
+ (system* "python" "configure.py"
+ "--bindir" bin
"--destdir" lib
- "--incdir" include))))
- %standard-phases)))
- (home-page "http://www.riverbankcomputing.com/software/sip/intro")
+ "--incdir" include))))))))
+ (home-page "https://www.riverbankcomputing.com/software/sip/intro")
(synopsis "Python binding creator for C and C++ libraries")
(description
"SIP is a tool to create Python bindings for C and C++ libraries. It
@@ -390,56 +521,55 @@ module provides support functions to the automatically generated code.")
(define-public python-pyqt
(package
(name "python-pyqt")
- (version "5.5")
+ (version "5.6")
(source
(origin
(method url-fetch)
(uri
(string-append "mirror://sourceforge/pyqt/PyQt5/"
- "PyQt-" version "/PyQt-gpl-"
+ "PyQt-" version "/PyQt5_gpl-"
version ".tar.gz"))
(sha256
(base32
- "056qmkv02wdcfblqdaxiswrgn4wa88sz22i1x58dpb1iniavplfd"))
+ "1qgh42zsr9jppl9k7fcdbhxcd1wrb7wyaj9lng9nxfa19in1lj1f"))
(patches (search-patches "pyqt-configure.patch"))))
(build-system gnu-build-system)
(native-inputs
`(("python-sip" ,python-sip)
- ("qt" ,qt))) ; for qmake
+ ("qtbase" ,qtbase))) ; for qmake
(inputs
`(("python" ,python-wrapper)))
(arguments
`(#:modules ((srfi srfi-1)
,@%gnu-build-system-modules)
#:phases
- (alist-replace
- 'configure
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (bin (string-append out "/bin"))
- (sip (string-append out "/share/sip"))
- (plugins (string-append out "/plugins"))
- (designer (string-append plugins "/designer"))
- (qml (string-append plugins "/PyQt5"))
- (python (assoc-ref inputs "python"))
- (python-version
- (last (string-split python #\-)))
- (python-major+minor
- (string-join
- (take (string-split python-version #\.) 2)
- "."))
- (lib (string-append out "/lib/python"
- python-major+minor
- "/site-packages")))
- (zero? (system* "python" "configure.py"
- "--confirm-license"
- "--bindir" bin
- "--destdir" lib
- "--designer-plugindir" designer
- "--qml-plugindir" qml
- "--sipdir" sip))))
- %standard-phases)))
- (home-page "http://www.riverbankcomputing.com/software/pyqt/intro")
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (sip (string-append out "/share/sip"))
+ (plugins (string-append out "/plugins"))
+ (designer (string-append plugins "/designer"))
+ (qml (string-append plugins "/PyQt5"))
+ (python (assoc-ref inputs "python"))
+ (python-version
+ (last (string-split python #\-)))
+ (python-major+minor
+ (string-join
+ (take (string-split python-version #\.) 2)
+ "."))
+ (lib (string-append out "/lib/python"
+ python-major+minor
+ "/site-packages")))
+ (zero? (system* "python" "configure.py"
+ "--confirm-license"
+ "--bindir" bin
+ "--destdir" lib
+ "--designer-plugindir" designer
+ "--qml-plugindir" qml
+ "--sipdir" sip))))))))
+ (home-page "https://www.riverbankcomputing.com/software/pyqt/intro")
(synopsis "Python bindings for Qt")
(description
"PyQt is a set of Python v2 and v3 bindings for the Qt application
@@ -452,7 +582,7 @@ contain over 620 classes.")
(name "python2-pyqt")
(native-inputs
`(("python-sip" ,python2-sip)
- ("qt" ,qt)))
+ ("qtbase" ,qtbase)))
(inputs
`(("python" ,python-2)))))
@@ -505,7 +635,7 @@ contain over 620 classes.")
(define-public qtkeychain
(package
(name "qtkeychain")
- (version "0.6.2")
+ (version "0.7.0")
(source
(origin
(method url-fetch)
@@ -513,7 +643,7 @@ contain over 620 classes.")
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
- (base32 "0g76pa786mg0fxy52hrljw09dvi6kffk2ms42lxapvpy6j94a4xf"))))
+ (base32 "0fka5q5cdzlf79igcjgbnb2smvwbwfasqawkzkbr34whispgm6lz"))))
(build-system cmake-build-system)
(inputs
`(("qt" ,qt)))
diff --git a/gnu/packages/rails.scm b/gnu/packages/rails.scm
new file mode 100644
index 0000000000..e1e14f5b70
--- /dev/null
+++ b/gnu/packages/rails.scm
@@ -0,0 +1,95 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages rails)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix download)
+ #:use-module (guix packages)
+ #:use-module (gnu packages ruby)
+ #:use-module (guix build-system ruby))
+
+(define-public ruby-spring
+ (package
+ (name "ruby-spring")
+ (version "1.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append "https://github.com/rails/spring/archive/v"
+ version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0czc4mkwfngcqmna49a0l98f6wlhdq2i8gwr63lrmk90d9k25x1n"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:test-target "test:unit"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'remove-bump
+ (lambda _
+ (substitute* "spring.gemspec"
+ (("gem.add_development_dependency 'bump'") ""))
+ (substitute* "Rakefile"
+ (("require \\\"bump/tasks\\\"") ""))
+ #t)))))
+ (native-inputs
+ `(("bundler" ,bundler)
+ ("ruby-activesupport" ,ruby-activesupport)))
+ (synopsis "Ruby on Rails application preloader")
+ (description
+ "Spring is a Ruby on Rails application preloader. It speeds up
+development by keeping your application running in the background so the
+application does need to boot it every time you run a test, rake task or
+migration.")
+ (home-page "https://github.com/rails/spring")
+ (license license:expat)))
+
+(define-public ruby-debug-inspector
+ (package
+ (name "ruby-debug-inspector")
+ (version "0.0.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "debug_inspector" version))
+ (sha256
+ (base32
+ "109761g00dbrw5q0dfnbqg8blfm699z4jj70l4zrgf9mzn7ii50m"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'check
+ (lambda _
+ (and
+ (zero? (system* "rake" "compile"))
+ (zero?
+ (system*
+ "ruby" "-Ilib" "-e"
+ (string-append
+ "require 'debug_inspector'; RubyVM::DebugInspector."
+ "open{|dc| p dc.backtrace_locations}")))))))))
+ (synopsis "Ruby wrapper for the MRI 2.0 debug_inspector API")
+ (description
+ "This package provides a Ruby wrapper for the MRI 2.0 debug_inspector
+API.")
+ (home-page
+ "https://github.com/banister/debug_inspector")
+ (license license:expat)))
diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
index 6c2e08f29d..c6b6eedb9d 100644
--- a/gnu/packages/ruby.scm
+++ b/gnu/packages/ruby.scm
@@ -423,13 +423,13 @@ expectations and mocks frameworks.")
(define-public bundler
(package
(name "bundler")
- (version "1.11.2")
+ (version "1.12.5")
(source (origin
(method url-fetch)
(uri (rubygems-uri "bundler" version))
(sha256
(base32
- "0s37j1hyngc4shq0in8f9y1knjdqkisdg3dd1mfwgq7n1bz8zan7"))))
+ "1q84xiwm9j771lpmiply0ls9l2bpvl5axn3jblxjvrldh8di2pkc"))))
(build-system ruby-build-system)
(arguments
'(#:tests? #f)) ; avoid dependency cycles
@@ -1707,6 +1707,33 @@ instance, it provides @code{assert_true}, @code{assert_false} and
(home-page "http://blowmage.com/minitest-rg")
(license license:expat)))
+(define-public ruby-minitest-hooks
+ (package
+ (name "ruby-minitest-hooks")
+ (version "1.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "minitest-hooks" version))
+ (sha256
+ (base32
+ "092fymh0c09v3a585qw3hc15b0zf159s74rxx1ga87drk5jr958z"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:test-target "spec"))
+ (native-inputs
+ `(("ruby-sequel" ,ruby-sequel)
+ ("ruby-sqlite3" ,ruby-sqlite3)))
+ (synopsis "Hooks for the minitest framework")
+ (description
+ "Minitest-hooks adds @code{around}, @code{before_all}, @code{after_all},
+@code{around_all} hooks for Minitest. This allows, for instance, running each
+suite of specs inside a database transaction, running each spec inside its own
+savepoint inside that transaction. This can significantly speed up testing
+for specs that share expensive database setup code.")
+ (home-page "http://github.com/jeremyevans/minitest-hooks")
+ (license license:expat)))
+
(define-public ruby-daemons
(package
(name "ruby-daemons")
@@ -1871,24 +1898,24 @@ to reproduce user environments.")
(define-public ruby-mini-portile-2
(package (inherit ruby-mini-portile)
- (version "2.0.0")
+ (version "2.1.0")
(source (origin
(method url-fetch)
(uri (rubygems-uri "mini_portile2" version))
(sha256
(base32
- "056drbn5m4khdxly1asmiik14nyllswr6sh3wallvsywwdiryz8l"))))))
+ "1y25adxb1hgg1wb2rn20g3vl07qziq6fz364jc5694611zz863hb"))))))
(define-public ruby-nokogiri
(package
(name "ruby-nokogiri")
- (version "1.6.7.1")
+ (version "1.6.7.2")
(source (origin
(method url-fetch)
(uri (rubygems-uri "nokogiri" version))
(sha256
(base32
- "12nwv3lad5k2k73aa1d1xy4x577c143ixks6rs70yp78sinbglk2"))))
+ "11sbmpy60ynak6s3794q32lc99hs448msjy8rkp84ay7mq7zqspv"))))
(build-system ruby-build-system)
(arguments
;; Tests fail because Nokogiri can only test with an installed extension,
@@ -1897,7 +1924,13 @@ to reproduce user environments.")
#:gem-flags (list "--" "--use-system-libraries"
(string-append "--with-xml2-include="
(assoc-ref %build-inputs "libxml2")
- "/include/libxml2" ))))
+ "/include/libxml2" ))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'extract-gemspec 'update-dependency
+ (lambda _
+ (substitute* ".gemspec" (("2.0.0.rc2") "2.0"))
+ #t)))))
(native-inputs
`(("ruby-hoe" ,ruby-hoe)
("ruby-rake-compiler" ,ruby-rake-compiler)))
@@ -2505,67 +2538,68 @@ multibyte strings, internationalization, time zones, and testing.")
(license license:expat)))
(define-public ruby-nokogumbo
- (package
- (name "ruby-nokogumbo")
- (version "1.4.6")
- (source (origin
- ;; We use the git reference, because there's no Rakefile in the
- ;; published gem and the tarball on Github is outdated.
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/rubys/nokogumbo.git")
- (commit "d56f954d20a")))
- (file-name (string-append name "-" version "-checkout"))
- (sha256
- (base32
- "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
- (build-system ruby-build-system)
- (arguments
- `(#:modules ((guix build ruby-build-system)
- (guix build utils)
- (ice-9 rdelim))
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'build-gemspec
- (lambda _
- (substitute* "Rakefile"
- ;; Build Makefile even without a copy of gumbo-parser sources
- (("'gumbo-parser/src',") "")
- ;; We don't bundle gumbo-parser sources
- (("'gumbo-parser/src/\\*',") "")
- (("'gumbo-parser/visualc/include/\\*',") "")
- ;; The definition of SOURCES will be cut in gemspec, and
- ;; "FileList" will be undefined.
- (("SOURCES \\+ FileList\\[")
- "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
-
- ;; Copy the Rakefile and cut out the gemspec.
- (copy-file "Rakefile" ".gemspec")
- (with-atomic-file-replacement ".gemspec"
- (lambda (in out)
- (let loop ((line (read-line in 'concat))
- (skipping? #t))
- (if (eof-object? line)
- #t
- (let ((skip-next? (if skipping?
- (not (string-prefix? "SPEC =" line))
- (string-prefix? "end" line))))
- (when (or (not skipping?)
- (and skipping? (not skip-next?)))
- (format #t "~a" line)
- (display line out))
- (loop (read-line in 'concat) skip-next?))))))
- #t)))))
- (inputs
- `(("gumbo-parser" ,gumbo-parser)))
- (propagated-inputs
- `(("ruby-nokogiri" ,ruby-nokogiri)))
- (synopsis "Ruby bindings to the Gumbo HTML5 parser")
- (description
- "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
+ (let ((commit "fb51ff299a1c34346837580b6d1d9a60fadf5dbd"))
+ (package
+ (name "ruby-nokogumbo")
+ (version (string-append "1.4.7-1." (string-take commit 8)))
+ (source (origin
+ ;; We use the git reference, because there's no Rakefile in the
+ ;; published gem and the tarball on Github is outdated.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/rubys/nokogumbo.git")
+ (commit "d56f954d20a")))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "0bnppjy96xiadrsrc9dp8y6wvdwnkfa930n7acrp0mqm4qywl2wl"))))
+ (build-system ruby-build-system)
+ (arguments
+ `(#:modules ((guix build ruby-build-system)
+ (guix build utils)
+ (ice-9 rdelim))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'build 'build-gemspec
+ (lambda _
+ (substitute* "Rakefile"
+ ;; Build Makefile even without a copy of gumbo-parser sources
+ (("'gumbo-parser/src',") "")
+ ;; We don't bundle gumbo-parser sources
+ (("'gumbo-parser/src/\\*',") "")
+ (("'gumbo-parser/visualc/include/\\*',") "")
+ ;; The definition of SOURCES will be cut in gemspec, and
+ ;; "FileList" will be undefined.
+ (("SOURCES \\+ FileList\\[")
+ "['ext/nokogumboc/extconf.rb', 'ext/nokogumboc/nokogumbo.c', "))
+
+ ;; Copy the Rakefile and cut out the gemspec.
+ (copy-file "Rakefile" ".gemspec")
+ (with-atomic-file-replacement ".gemspec"
+ (lambda (in out)
+ (let loop ((line (read-line in 'concat))
+ (skipping? #t))
+ (if (eof-object? line)
+ #t
+ (let ((skip-next? (if skipping?
+ (not (string-prefix? "SPEC =" line))
+ (string-prefix? "end" line))))
+ (when (or (not skipping?)
+ (and skipping? (not skip-next?)))
+ (format #t "~a" line)
+ (display line out))
+ (loop (read-line in 'concat) skip-next?))))))
+ #t)))))
+ (inputs
+ `(("gumbo-parser" ,gumbo-parser)))
+ (propagated-inputs
+ `(("ruby-nokogiri" ,ruby-nokogiri)))
+ (synopsis "Ruby bindings to the Gumbo HTML5 parser")
+ (description
+ "Nokogumbo allows a Ruby program to invoke the Gumbo HTML5 parser and
access the result as a Nokogiri parsed document.")
- (home-page "https://github.com/rubys/nokogumbo/")
- (license license:asl2.0)))
+ (home-page "https://github.com/rubys/nokogumbo/")
+ (license license:asl2.0))))
(define-public ruby-sanitize
(package
@@ -3129,14 +3163,14 @@ that TURN is no longer being maintained.")
(define-public ruby-mime-types-data
(package
(name "ruby-mime-types-data")
- (version "3.2015.1120")
+ (version "3.2016.0221")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "mime-types-data" version))
(sha256
(base32
- "04fzvy02w8d0rrsg8avncn7h58pvwdxj82aps54srb3sam2dkhic"))))
+ "05ygjn0nnfh6yp1wsi574jckk95wqg9a6g598wk4svvrkmkrzkpn"))))
(build-system ruby-build-system)
(native-inputs
`(("ruby-hoe" ,ruby-hoe)))
@@ -3153,14 +3187,14 @@ look up the likely MIME type definitions.")
(define-public ruby-mime-types
(package
(name "ruby-mime-types")
- (version "3.0")
+ (version "3.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "mime-types" version))
(sha256
(base32
- "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra"))))
+ "0087z9kbnlqhci7fxh9f6il63hj1k02icq2rs0c6cppmqchr753m"))))
(build-system ruby-build-system)
(propagated-inputs
`(("ruby-mime-types-data" ,ruby-mime-types-data)))
@@ -3169,7 +3203,8 @@ look up the likely MIME type definitions.")
("ruby-fivemat" ,ruby-fivemat)
("ruby-minitest-focus" ,ruby-minitest-focus)
("ruby-minitest-rg" ,ruby-minitest-rg)
- ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)))
+ ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions)
+ ("ruby-minitest-hooks" ,ruby-minitest-hooks)))
(synopsis "Library and registry for MIME content type definitions")
(description "The mime-types library provides a library and registry for
information about Multipurpose Internet Mail Extensions (MIME) content type
@@ -3265,26 +3300,18 @@ names.")
(define-public ruby-shoulda-matchers
(package
(name "ruby-shoulda-matchers")
- (version "3.0.1")
+ (version "3.1.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "shoulda-matchers" version))
(sha256
(base32
- "1agabvb8i39mjrp3kb78nvhl41xk1i258hdwdlj0fm8nj9yzn1jb"))))
+ "1cf6d2d9br82vylr9p362yk9cfrd14jz8v77n0yb0lbcxdbk7xzq"))))
(build-system ruby-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
- (add-before 'build 'fix-import
- (lambda _
- ;; A presumed bug reported upstream at
- ;; https://github.com/thoughtbot/shoulda-matchers/pull/871
- (substitute* (string-append "lib/shoulda/matchers/active_model/"
- "validate_inclusion_of_matcher.rb")
- (("^require 'bigdecimal'")
- "require 'bigdecimal'; require 'date'"))))
(replace 'check
(lambda _
;; Do not run tests to avoid circular dependence with rails. Instead
@@ -3380,14 +3407,14 @@ support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and
(define-public ruby-domain-name
(package
(name "ruby-domain-name")
- (version "0.5.25")
+ (version "0.5.20160310")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "domain_name" version))
(sha256
(base32
- "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav"))))
+ "0g1175zspkqhlvl9s11g7p2nbmqpvpxxv02q8csd0ryc81laapys"))))
(build-system ruby-build-system)
(arguments
`(#:phases
@@ -3878,3 +3905,25 @@ part of the Prawn PDF generator.")
;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE
;; for details."
(license (list license:gpl2 license:gpl3 license:ruby))))
+
+(define-public ruby-sequel
+ (package
+ (name "ruby-sequel")
+ (version "4.34.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (rubygems-uri "sequel" version))
+ (sha256
+ (base32
+ "0qscddpfwcajggxvbm4a4jv8kkpn6q056bgdg03km34bz8bis1x1"))))
+ (build-system ruby-build-system)
+ (arguments
+ '(#:tests? #f)) ; Avoid dependency loop with ruby-minitest-hooks.
+ (synopsis "Database toolkit for Ruby")
+ (description "Sequel provides thread safety, connection pooling and a
+concise DSL for constructing SQL queries and table schemas. It includes a
+comprehensive ORM layer for mapping records to Ruby objects and handling
+associated records.")
+ (home-page "http://sequel.jeremyevans.net")
+ (license license:expat)))
diff --git a/gnu/packages/rush.scm b/gnu/packages/rush.scm
index 6926f68787..cf9e49a7e3 100644
--- a/gnu/packages/rush.scm
+++ b/gnu/packages/rush.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2016 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -36,7 +36,8 @@
(sha256
(base32
"0fh0gbbp0iiq3wbkf503xb40r8ljk42vyj9bnlflbz82d6ipy1rm"))
- (patches (search-patches "cpio-gets-undeclared.patch"))))
+ (patches (search-patches "cpio-gets-undeclared.patch"
+ "rush-CVE-2013-6889.patch"))))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/rush/")
(synopsis "Restricted user (login) shell")
diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm
index c345d59ed3..e409dd546e 100644
--- a/gnu/packages/scheme.scm
+++ b/gnu/packages/scheme.scm
@@ -41,7 +41,7 @@
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages texinfo)
- #:use-module (gnu packages texlive)
+ #:use-module (gnu packages tex)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages pkg-config)
@@ -736,7 +736,7 @@ and 32-bit PowerPC architectures.")
(build-system gnu-build-system)
(inputs
`(("mit-scheme" ,mit-scheme)
- ("emacs" ,emacs-no-x)))
+ ("emacs" ,emacs-minimal)))
(arguments
`(#:tests? #f ;; no tests-suite
#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm
index 4b9bacf3e5..5827a1c53e 100644
--- a/gnu/packages/screen.scm
+++ b/gnu/packages/screen.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -67,23 +68,23 @@ view to show two terminals at once.")
(define-public dtach
(package
(name "dtach")
- (version "0.8")
+ (version "0.9")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/dtach/dtach-"
version ".tar.gz"))
(sha256
(base32
- "1agjp08zxxxfni62sqx9qsd9526yqwlz7ry07lfq3clavyylwq8n"))))
+ "1wwj2hlngi8qn2pisvhyfxxs8gyqjlgrrv5lz91w8ly54dlzvs9j"))))
(build-system gnu-build-system)
(arguments
;; No install target.
- '(#:phases (alist-replace
- 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (install-file "dtach" (string-append out "/bin"))))
- %standard-phases)
+ '(#:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "dtach" (string-append out "/bin"))))))
;; No check target.
#:tests? #f))
(home-page "http://dtach.sourceforge.net/")
diff --git a/gnu/packages/speech.scm b/gnu/packages/speech.scm
new file mode 100644
index 0000000000..95c7591480
--- /dev/null
+++ b/gnu/packages/speech.scm
@@ -0,0 +1,51 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 David Thompson <davet@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages speech)
+ #:use-module ((guix licenses) #:prefix license:)
+ #:use-module (guix packages)
+ #:use-module (guix download)
+ #:use-module (guix build-system gnu)
+ #:use-module (gnu packages)
+ #:use-module (gnu packages gcc))
+
+(define-public mitlm
+ (package
+ (name "mitlm")
+ (version "0.4.1")
+ ;; No official release tarballs, so for now we use the one from Debian
+ ;; that is maintained by one of the project developers.
+ ;;
+ ;; See: https://github.com/mitlm/mitlm/issues/54
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "mirror://debian/pool/main/m/mitlm/mitlm_"
+ version ".orig.tar.gz"))
+ (sha256
+ (base32
+ "12m09xxx8jbir9cnzzaysvni5sfijpfj96z1x1520qqvmpc8lmn7"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("gfortran" ,gfortran)))
+ (synopsis "The MIT Language Modeling toolkit")
+ (description "The MIT Language Modeling (MITLM) toolkit is a set of
+tools designed for the efficient estimation of statistical n-gram language
+models involving iterative parameter estimation. It achieves much of its
+efficiency through the use of a compact vector representation of n-grams.")
+ (home-page "https://github.com/mitlm/mitlm")
+ (license license:expat)))
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 43f9042e9c..1288d9d7ef 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -792,6 +792,29 @@ generation in R using Literate Programming techniques.")
;; here.
(license license:gpl2+)))
+(define-public r-knitrbootstrap
+ (package
+ (name "r-knitrbootstrap")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "knitrBootstrap" version))
+ (sha256
+ (base32
+ "0pshn2slzqwpryklslsxwh1dmqcnwv6bwi7yfm6m342wjybpk0wl"))))
+ (properties `((upstream-name . "knitrBootstrap")))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-knitr" ,r-knitr)
+ ("r-rmarkdown" ,r-rmarkdown)))
+ (home-page "https://github.com/jimhester/knitrBootstrap")
+ (synopsis "Knitr bootstrap framework")
+ (description
+ "This package provides a framework to create Bootstrap 3 HTML reports
+from knitr Rmarkdown.")
+ (license license:expat)))
+
(define-public r-microbenchmark
(package
(name "r-microbenchmark")
@@ -2617,6 +2640,46 @@ noncentral hypergeometric distribution (also called extended hypergeometric
distribution).")
(license license:gpl3+)))
+(define-public r-runit
+ (package
+ (name "r-runit")
+ (version "0.4.31")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (cran-uri "RUnit" version))
+ (sha256
+ (base32
+ "1jqr871jkll2xmk7wk5hv1z3a36hyn2ibgivw7bwk4b346940xlx"))))
+ (properties `((upstream-name . "RUnit")))
+ (build-system r-build-system)
+ (home-page "http://cran.r-project.org/web/packages/RUnit")
+ (synopsis "R unit test framework")
+ (description
+ "This package provides R functions implementing a standard unit testing
+framework, with additional code inspection and report generation tools.")
+ (license license:gpl2+)))
+
+(define-public r-zoo
+ (package
+ (name "r-zoo")
+ (version "1.7-13")
+ (source (origin
+ (method url-fetch)
+ (uri (cran-uri "zoo" version))
+ (sha256
+ (base32
+ "0m67bnrg7r1jxvs9p7rpa430szp5qfp65r056yb8bivpc16jd98c"))))
+ (build-system r-build-system)
+ (propagated-inputs
+ `(("r-lattice" ,r-lattice)))
+ (home-page "http://zoo.R-Forge.R-project.org/")
+ (synopsis "S3 infrastructure for regular and irregular time series")
+ (description "This package contains an S3 class with methods for totally
+ordered indexed observations. It is particularly aimed at irregular time
+series of numeric vectors/matrices and factors.")
+ (license license:gpl2+)))
+
(define-public r-ztable
(package
(name "r-ztable")
diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm
index bc70eaf838..ecff82ce7b 100644
--- a/gnu/packages/synergy.scm
+++ b/gnu/packages/synergy.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -32,16 +33,16 @@
(define-public synergy
(package
(name "synergy")
- (version "1.7.4")
+ (version "1.7.6")
(source
(origin
(method url-fetch)
- (uri (string-append "https://github.com/synergy/synergy/archive/"
+ (uri (string-append "https://github.com/symless/synergy/archive/"
"v" version "-stable.tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1prb06dmi4bhfsraih4hzlsfiraiczgzhqy9gjsxygczif8w6p91"))
+ "07a1g2kh4f064nqjdqgfzrjfayls31scnssphbndmnvfc20bhlx4"))
(modules '((guix build utils)))
(snippet
;; Remove ~14MB of unnecessary bundled source and binaries
@@ -65,25 +66,23 @@
(arguments
`(#:phases
(let ((srcdir (string-append "../synergy-" ,version "-stable")))
- (alist-cons-before
- 'configure 'unpack-aux-src
- ;; TODO: package and use from system
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((unzip (string-append
- (assoc-ref inputs "unzip")
- "/bin/unzip")))
- (with-directory-excursion "ext"
- (for-each
- (lambda (f)
- (system* unzip "-d" f (string-append f ".zip")))
- '("gmock-1.6.0" "gtest-1.6.0")))))
- (alist-replace
- 'check
- ;; Don't run "integtests" as it requires network and X an display.
- (lambda _
- (zero? (system* (string-append srcdir "/bin/unittests"))))
- (alist-replace
- 'install
+ (modify-phases %standard-phases
+ (add-before 'configure 'unpack-aux-src
+ ;; TODO: package and use from system
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((unzip (string-append
+ (assoc-ref inputs "unzip")
+ "/bin/unzip")))
+ (with-directory-excursion "ext"
+ (for-each
+ (lambda (f)
+ (system* unzip "-d" f (string-append f ".zip")))
+ '("gmock-1.6.0" "gtest-1.6.0"))))))
+ (replace 'check
+ ;; Don't run "integtests" as it requires network and X an display.
+ (lambda _
+ (zero? (system* (string-append srcdir "/bin/unittests")))))
+ (replace 'install
;; There currently is no installation process, see:
;; http://synergy-project.org/spit/issues/details/3317/
(lambda* (#:key outputs #:allow-other-keys)
@@ -103,9 +102,8 @@
(install-file (string-append srcdir "/doc/" e) ex))
'("synergy.conf.example"
"synergy.conf.example-advanced"
- "synergy.conf.example-basic")))))
- %standard-phases))))))
- (home-page "http://www.synergy-project.org")
+ "synergy.conf.example-basic"))))))))))
+ (home-page "http://symless.com/")
(synopsis "Mouse and keyboard sharing utility")
(description
"Synergy brings your computers together in one cohesive experience; its
diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm
index 340475c666..701e14a5e2 100644
--- a/gnu/packages/task-management.scm
+++ b/gnu/packages/task-management.scm
@@ -28,14 +28,14 @@
(define-public taskwarrior
(package
(name "taskwarrior")
- (version "2.4.3")
+ (version "2.5.1")
(source
(origin
(method url-fetch)
(uri (string-append
"http://taskwarrior.org/download/task-" version ".tar.gz"))
(sha256 (base32
- "1lkbw2fhshynbl7hppar1viapyrs712s14xhd8p3l8gyhvxbh0mv"))))
+ "059a9yc58wcicc6xxsjh1ph7k2yrag0spsahp1wqmsq6h7jwwyyq"))))
(build-system cmake-build-system)
(inputs
`(("gnutls" ,gnutls)
diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm
index 50a83fbcf3..b27dd1f6d6 100644
--- a/gnu/packages/telephony.scm
+++ b/gnu/packages/telephony.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@
(define-module (gnu packages telephony)
#:use-module (gnu packages)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
@@ -211,3 +213,42 @@ Real-time Transport Protocol (SRTP), the Universal Security Transform (UST),
and a supporting cryptographic kernel.")
(home-page "https://github.com/cisco/libsrtp")
(license bsd-3)))
+
+(define-public libiax2
+ (let ((commit "0e5980f1d78ce462e2d1ed6bc39ff35c8341f201"))
+ ;; This is the commit used by the Ring Project.
+ (package
+ (name "libiax2")
+ (version (string-append "0.0.0-1." (string-take commit 7)))
+ (source
+ (origin
+ (method url-fetch)
+ (uri
+ (string-append
+ "https://gitlab.savoirfairelinux.com/sflphone/libiax2/"
+ "repository/archive.tar.gz?ref="
+ commit))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0cj5293bixp3k5x3hjwyd0iq7z8w5p7yavxvvkqk5817hjq386y2"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("libtool" ,libtool)))
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-before 'configure 'autoconf
+ (lambda _
+ (zero? (system* "autoreconf" "-vfi")))))))
+ (home-page "https://gitlab.savoirfairelinux.com/sflphone/libiax2")
+ (synopsis "Inter-Asterisk-Protocol library")
+ (description "LibIAX2 implements the Inter-Asterisk-Protocol for relaying
+Voice-over-IP (VoIP) communications.")
+ ;; The file 'src/md5.c' is released into the public domain by RSA Data
+ ;; Security. The files 'src/answer.h', 'src/miniphone.c',
+ ;; 'src/options.c', 'src/options.h', 'src/ring10.h', 'src/winiphone.c' are
+ ;; covered under the 'GPL'.
+ ;; The package as a whole is distributed under the LGPL 2.0.
+ (license (list lgpl2.0 public-domain gpl2+)))))
diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm
index 1a83eda3c0..ee36f64354 100644
--- a/gnu/packages/terminals.scm
+++ b/gnu/packages/terminals.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2016 Mckinley Olsen <mck.olsen@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@
#:use-module (guix build utils)
#:use-module (guix build-system gnu)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages gettext)
@@ -28,7 +30,10 @@
#:use-module (gnu packages gnome)
#:use-module (gnu packages gtk)
#:use-module (gnu packages pkg-config)
- #:use-module (gnu packages wm))
+ #:use-module (gnu packages wm)
+ #:use-module (gnu packages ncurses)
+ #:use-module (gnu packages gtk)
+ #:use-module (gnu packages gnome))
(define-public tilda
(package
@@ -67,3 +72,52 @@ is similar to the built-in consoles in some applications. Tilda is highly
configureable through a graphical wizard.")
(home-page "https://github.com/lanoxx/tilda")
(license license:gpl2+)))
+
+(define-public termite
+ (package
+ (name "termite")
+ (version "11")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url (string-append "https://github.com/thestinger/"
+ name ".git"))
+ (commit (string-append "v" version))
+ (recursive? #t)))
+ (file-name (string-append name "-" version "-checkout"))
+ (sha256
+ (base32
+ "1cw4yw7n9m2si8b7zcfyz9pyihncabxm5g39v1mxslfajxgwzmd8"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases (alist-delete 'configure %standard-phases)
+ #:tests? #f
+ ;; This sets the destination when installing the necessary terminal
+ ;; capability data, which are not provided by 'ncurses'. See
+ ;; <https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html>.
+ #:make-flags (list "PREFIX="
+ (string-append "VERSION=v" (version))
+ (string-append "DESTDIR="
+ (assoc-ref %outputs "out")))))
+ (inputs
+ `(("vte", vte-ng)
+ ("gtk+", gtk+)
+ ("ncurses", ncurses)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+
+ ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
+ ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
+ (native-search-paths
+ (list (search-path-specification
+ (variable "TERMINFO_DIRS")
+ (files '("share/terminfo")))))
+ (home-page "https://github.com/thestinger/termite/")
+ (synopsis "Keyboard-centric, VTE-based terminal")
+ (description "Termite is a minimal terminal emulator designed for use with
+tiling window managers. It is a modal application, similar to Vim, with an
+insert mode and command mode where keybindings have different functions.")
+
+ ;; Files under util/ are under the Expat license; the rest is LGPLv2+.
+ (license license:lgpl2.0+)))
diff --git a/gnu/packages/texlive.scm b/gnu/packages/tex.scm
index cbcb6c87fc..c1ab8b3f5c 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/tex.scm
@@ -2,6 +2,7 @@
;;; 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>
+;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -18,7 +19,7 @@
;;; 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 texlive)
+(define-module (gnu packages tex)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
@@ -40,6 +41,7 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages qt)
#:use-module (gnu packages ruby)
#:use-module (gnu packages tcsh)
#:use-module (gnu packages base)
@@ -387,3 +389,40 @@ to manage bibliographic references. Automatic execution of dvips to produce
PostScript documents is also included, as well as usage of pdfLaTeX to produce
PDF documents.")
(license license:gpl2+)))
+
+(define-public texmaker
+ (package
+ (name "texmaker")
+ (version "4.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://www.xm1math.net/texmaker/texmaker-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "056njk6j8wma23mlp7xa3rgfaxx0q8ynwx8wkmj7iy0b85p9ds9c"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ ;; Qt has its own configuration utility.
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (zero? (system* "qmake"
+ (string-append "PREFIX=" out)
+ (string-append "DESKTOPDIR=" out
+ "/share/applications")
+ (string-append "ICONDIR=" out "/share/pixmaps")
+ "texmaker.pro"))))))))
+ (inputs
+ `(("poppler-qt5" ,poppler-qt5)
+ ("qt" ,qt)
+ ("zlib" ,zlib)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (home-page "http://www.xm1math.net/texmaker/")
+ (synopsis "LaTeX editor")
+ (description "Texmaker is a program that integrates many tools needed to
+develop documents with LaTeX, in a single application.")
+ (license license:gpl2+)))
diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm
index 080c95ba1c..ebcf4b9a1f 100644
--- a/gnu/packages/textutils.scm
+++ b/gnu/packages/textutils.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2015 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -29,6 +30,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system cmake)
#:use-module (guix build-system trivial)
+ #:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages python)
#:use-module (gnu packages zip))
@@ -306,7 +308,8 @@ regular expression object can be specified.")
"/antiword-" version ".tar.gz"))
(sha256
(base32
- "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f"))))
+ "1b7mi1l20jhj09kyh0bq14qzz8vdhhyf35gzwsq43mn6rc7h0b4f"))
+ (patches (search-patches "antiword-CVE-2014-8123.patch"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; There are no tests
diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
index cedb306957..8895fd774e 100644
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@ -351,16 +351,16 @@ security, and applying best practice development processes.")
(define-public python-acme
(package
(name "python-acme")
- (version "0.6.0")
+ (version "0.8.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/"
- "af/33/703e5ec3d7efde7c4d2fcea9cdf88953a33d4e72aafd5b0a330173a7b395/"
+ "45/17/6fdcede92c7fe4d9c1ab9d7513ded5aa969a0b9c90f3d7b3b074cd37e898/"
"acme-" version ".tar.gz"))
(sha256
(base32
- "1ipck25c6nr0x54w2cc8ziwjmyyrpyz6pc1y8xc9nqmxvw4n0kpc"))))
+ "1nk48p0pi6xmqpsqjvw6xkx5vv4vl33yzq67fpr33ci8fra6pa6z"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -413,30 +413,27 @@ security, and applying best practice development processes.")
(define-public certbot
(package
(name "certbot")
- (version "0.6.0")
+ (version "0.8.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://pypi.python.org/packages/"
- "fc/eb/7594bf16d89909a9d52c46edbeae669d4b2ee6e12453bd97e674d0371920/"
+ "da/b8/fa6d7f0f8c0d37944ca4a1940b1e933fc6673498995a45db03c034bb11dd/"
name "-" version ".tar.gz"))
(sha256
(base32
- "0ba95cf6shmyhi4vzvk64vbkrmr8qvkn32k3xwb2iv7ybbfbgc40"))))
+ "052338jdiy8dniskqxm2hzbca084ms0xqnjicshl6cpvhjs70g1w"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2
#:phases
(modify-phases %standard-phases
- (add-after 'install 'docs
+ (add-after 'build 'docs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man1 (string-append out "/share/man/man1"))
(man7 (string-append out "/share/man/man7"))
(info (string-append out "/info")))
- (substitute* "docs/man/certbot.rst"
- (("certbot --help all")
- (string-append out "/bin/certbot" " --help all")))
(and
(zero? (system* "make" "-C" "docs" "man" "info"))
(install-file "docs/_build/texinfo/Certbot.info" info)
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index db3e9f1768..346f9753a8 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -112,14 +112,14 @@ as well as the classic centralized workflow.")
;; Keep in sync with 'git-manpages'!
(package
(name "git")
- (version "2.7.4")
+ (version "2.8.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "0ys55v2xrhzj74jrrqx75xpr458klnyxshh8d8swfpp0zgg79rfy"))))
+ "14dafk7rz8cy2z5b92yf009qf4pc70s0viwq7hxsgd4898knr3kx"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@@ -292,7 +292,7 @@ everything from small to very large projects with speed and efficiency.")
version ".tar.xz"))
(sha256
(base32
- "09ffk5c0dl1xg7xcvr0kadhspx4fr2spmlmcajzfycmap0ddhkyh"))))
+ "1ilbi4xdn77a5yrjyrcx0nap0j4raw3h1fr0k32zs9y35c6f29cx"))))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))
@@ -479,7 +479,7 @@ will work.")
(method git-fetch)
(uri (git-reference
(url "https://github.com/nvie/gitflow/")
- (commit "15aab26")))
+ (commit "15aab26490facf285acef56cb5d61025eacb3a69")))
(sha256
(base32
"01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
@@ -513,10 +513,10 @@ lot easier.")
(license bsd-2)))
(define-public git-test-sequence
- (let ((commit "48e5a2f"))
+ (let ((commit "48e5a2f5a13a5f30452647237e23362b459b9c76"))
(package
(name "git-test-sequence")
- (version (string-append "20140312." commit))
+ (version (string-append "20140312." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
@@ -851,8 +851,8 @@ masters from remote CVS hosts.")
"094pjwshvazlgagc254in2xvrp93vhcj0kb5ms17qs7sch99x9z2"))))
(build-system gnu-build-system)
(inputs `(("perl" ,perl)
- ("inetutils" ,inetutils) ; for `hostname', used in the tests
- ("emacs" ,emacs-no-x))) ; for `ctags'
+ ("inetutils" ,inetutils))) ; for `hostname', used in the tests
+ (native-inputs `(("emacs" ,emacs-minimal))) ; for `ctags'
(home-page "http://www.gnu.org/software/vc-dwim/")
(synopsis "Version-control-agnostic ChangeLog diff and commit tool")
(description
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 1bd5198d5b..4782ec4692 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -1167,7 +1167,7 @@ capabilities.")
(define-public vapoursynth
(package
(name "vapoursynth")
- (version "28")
+ (version "32")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1176,7 +1176,7 @@ capabilities.")
(file-name (string-append name "-" version))
(sha256
(base32
- "0pnrawcg1j65i46yim0z447lglq1af5zgx0lkqf1x5xl1bfwc0v7"))))
+ "1j08whj946v2kkpgxsfhpca8xf0ax9iqzn73wvwjx319p9j0ymp9"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
@@ -1189,7 +1189,8 @@ capabilities.")
(inputs
`(("ffmpeg" ,ffmpeg)
("libass" ,libass)
- ("tesseract-ocr" ,tesseract-ocr)))
+ ("tesseract-ocr" ,tesseract-ocr)
+ ("zimg" ,zimg)))
(arguments
'(#:phases
(modify-phases %standard-phases
@@ -1351,7 +1352,7 @@ be used for realtime video capture via Linux-specific APIs.")
(define-public obs
(package
(name "obs")
- (version "0.14.1")
+ (version "0.14.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/jp9000/obs-studio"
@@ -1359,7 +1360,7 @@ be used for realtime video capture via Linux-specific APIs.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1w07ign2swfigmsjd2jyaqqdnj2zpzs8hzsjzzk5l377jbx3ml5g"))))
+ "1cb8naa67kfnnngkzv1wpd4y241j29ggnk1w7jgnymp9j8dny1xl"))))
(build-system cmake-build-system)
(arguments '(#:tests? #f)) ; no tests
(native-inputs
diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index c86e0f03fc..6ac03fcce6 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -111,14 +111,14 @@ and its related documentation.")
(define-public nginx
(package
(name "nginx")
- (version "1.10.0")
+ (version "1.10.1")
(source (origin
(method url-fetch)
(uri (string-append "http://nginx.org/download/nginx-"
version ".tar.gz"))
(sha256
(base32
- "0kdyqa5xaxvhz6y75ixs05mzygk3kszzdq5h0gnlrg35vp1lgmlf"))))
+ "00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz"))))
(build-system gnu-build-system)
(inputs `(("pcre" ,pcre)
("openssl" ,openssl)
@@ -232,7 +232,8 @@ and UNIX socket support.")
version ".tar.gz"))
(sha256
(base32
- "1mvq9p85khsl818i4vbszyfab0fd45mdrwrxjkzw05mk1xcyc1br"))))
+ "1mvq9p85khsl818i4vbszyfab0fd45mdrwrxjkzw05mk1xcyc1br"))
+ (patches (search-patches "jansson-CVE-2016-4425.patch"))))
(build-system gnu-build-system)
(home-page "http://www.digip.org/jansson/")
(synopsis "JSON C library")
@@ -290,8 +291,7 @@ parse JSON formatted strings back into the C representation of JSON objects.")
"1fj5mf6wbwz7v74n2safbw7fpw32fik19vf0wdbc2srn82i8fiwz"))))
(build-system perl-build-system)
(arguments
- `(#:tests? #f ; no tests
- #:phases
+ `(#:phases
(modify-phases %standard-phases
;; There is no configure or build steps.
(delete 'configure)
@@ -313,9 +313,7 @@ parse JSON formatted strings back into the C representation of JSON objects.")
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin"))
(perl (string-append (assoc-ref outputs "out")
- "/lib/perl5/site_perl"))
- (share (string-append
- (assoc-ref outputs "out") "/share/krona-tools")))
+ "/lib/perl5/site_perl/krona-tools/lib")))
(mkdir-p bin)
(for-each
(lambda (script)
@@ -340,13 +338,13 @@ parse JSON formatted strings back into the C representation of JSON objects.")
"ImportTaxonomy"
"ImportText"
"ImportXML"))
- (mkdir-p share)
- (copy-recursively "data" (string-append share "/data"))
- (copy-recursively "img" (string-append share "/img"))
- (copy-recursively "taxonomy" (string-append share "/taxonomy"))
- (substitute* '("lib/KronaTools.pm")
- (("taxonomyDir = \".libPath/../taxonomy\"")
- (string-append "taxonomyDir = \"" share "/taxonomy\"")))
+ (copy-recursively "data" (string-append perl "/../data"))
+ (copy-recursively "img" (string-append perl "/../img"))
+ (copy-recursively "taxonomy" (string-append perl "/../taxonomy"))
+ (install-file "src/krona-2.0.js" (string-append perl "/../src"))
+ (substitute* "lib/KronaTools.pm"
+ (("`ktGetLibPath`")
+ (string-append "\"" perl "\"")))
(install-file "lib/KronaTools.pm" perl))))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
@@ -356,8 +354,14 @@ parse JSON formatted strings back into the C representation of JSON objects.")
(lambda (executable)
(wrap-program executable
`("PERL5LIB" ":" prefix
- (,(string-append out "/lib/perl5/site_perl")))))
- (find-files (string-append out "/bin/") ".*"))))))))
+ (,(string-append out "/lib/perl5/site_perl/krona-tools/lib")))))
+ (find-files (string-append out "/bin/") ".*")))))
+ (delete 'check)
+ (add-after 'wrap-program 'check
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (with-directory-excursion "data"
+ (zero? (system* (string-append (assoc-ref outputs "out") "/bin/ktImportText")
+ "ec.tsv"))))))))
(inputs
`(("perl" ,perl)))
(home-page "https://github.com/marbl/Krona/wiki")
@@ -527,16 +531,15 @@ used to validate and fix HTML data.")
(define-public tinyproxy
(package
(name "tinyproxy")
- (version "1.8.3")
+ (version "1.8.4")
(source (origin
(method url-fetch)
- (uri (string-append
- "https://download.banu.com/tinyproxy/"
- (version-major+minor version)
- "/tinyproxy-" version ".tar.gz"))
+ (uri (string-append "https://github.com/tinyproxy/tinyproxy/"
+ "releases/download/" version "/tinyproxy-"
+ version ".tar.xz"))
(sha256
(base32
- "05y0y2q9j10x72y1fipya6bmc8hjcdf3kfw7dh8ahczpy341c938"))))
+ "002hi97687czhfkwsjkr174yvlp10224qi6gd5s53z230bgls7x4"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@@ -559,7 +562,7 @@ used to validate and fix HTML data.")
("docbook-xml" ,docbook-xml)
("docbook-xsl" ,docbook-xsl)
("libxslt" ,libxslt)))
- (home-page "https://banu.com/tinyproxy/")
+ (home-page "https://tinyproxy.github.io/")
(synopsis "Light-weight HTTP/HTTPS proxy daemon")
(description "Tinyproxy is a light-weight HTTP/HTTPS proxy
daemon. Designed from the ground up to be fast and yet small, it is an ideal
@@ -604,16 +607,17 @@ of people.")
(define-public libyaml
(package
(name "libyaml")
- (version "0.1.5")
+ (version "0.1.6")
(source
(origin
(method url-fetch)
(uri (string-append
"http://pyyaml.org/download/libyaml/yaml-"
version ".tar.gz"))
+ (patches (search-patches "libyaml-CVE-2014-9130.patch"))
(sha256
(base32
- "1vrv5ly58bkmcyc049ad180f2m8iav6l9h3v8l2fqdmrny7yx1zs"))))
+ "0j9731s5zjb8mjx7wzf6vh7bsqi38ay564x6s9nri2nh9cdrg9kx"))))
(build-system gnu-build-system)
(home-page "http://pyyaml.org/wiki/LibYAML")
(synopsis "YAML 1.1 parser and emitter written in C")
@@ -701,7 +705,7 @@ from streaming URLs. It is a command-line wrapper for the libquvi library.")
(source
(origin
(method url-fetch)
- (uri (string-append "http://serf.googlecode.com/svn/src_releases/serf-"
+ (uri (string-append "https://archive.apache.org/dist/serf/serf-"
version ".tar.bz2"))
(sha256
(base32 "14155g48gamcv5s0828bzij6vr14nqmbndwq8j8f9g6vcph0nl70"))
@@ -752,7 +756,7 @@ from streaming URLs. It is a command-line wrapper for the libquvi library.")
(string-append "PREFIX=" out))))))
(replace 'check (lambda _ (zero? (system* "scons" "check"))))
(replace 'install (lambda _ (zero? (system* "scons" "install")))))))
- (home-page "https://code.google.com/p/serf/")
+ (home-page "https://serf.apache.org/")
(synopsis "High-performance asynchronous HTTP client library")
(description
"serf is a C-based HTTP client library built upon the Apache Portable
diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm
index 734e4fc0df..578b4c9847 100644
--- a/gnu/packages/webkit.scm
+++ b/gnu/packages/webkit.scm
@@ -53,14 +53,14 @@
(define-public webkitgtk
(package
(name "webkitgtk")
- (version "2.12.2")
+ (version "2.12.3")
(source (origin
(method url-fetch)
(uri (string-append "http://www.webkitgtk.org/releases/"
name "-" version ".tar.xz"))
(sha256
(base32
- "097i53ip93qfy8sgpv5qjf8fmi07gwm41q83jxrxldqwif89pi4x"))))
+ "01y34v62khf03w25fnzgd42rrai5mf1m95lr5vjyw8ya5sdbng0p"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no tests
diff --git a/gnu/packages/wordnet.scm b/gnu/packages/wordnet.scm
index 1823a624ed..dbc75860ef 100644
--- a/gnu/packages/wordnet.scm
+++ b/gnu/packages/wordnet.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -21,6 +22,7 @@
#:use-module (guix build-system gnu)
#:use-module (guix licenses)
#:use-module (guix download)
+ #:use-module (gnu packages)
#:use-module (gnu packages tcl))
(define-public wordnet
@@ -30,11 +32,14 @@
(source (origin
(method url-fetch)
(uri (string-append "http://wordnetcode.princeton.edu/"
- version "/WordNet-"
- version ".tar.bz2"))
+ version "/WordNet-" version ".tar.bz2"))
(sha256
(base32
- "08pgjvd2vvmqk3h641x63nxp7wqimb9r30889mkyfh2agc62sjbc"))))
+ "08pgjvd2vvmqk3h641x63nxp7wqimb9r30889mkyfh2agc62sjbc"))
+ (patches (search-patches
+ "wordnet-CVE-2008-2149.patch"
+ "wordnet-CVE-2008-3908-pt1.patch"
+ "wordnet-CVE-2008-3908-pt2.patch"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags (list (string-append "--with-tcl="
@@ -47,30 +52,30 @@
;; Provide the `result' field in `Tcl_Interp'.
;; See <https://bugs.gentoo.org/show_bug.cgi?id=452034>.
"CFLAGS=-DUSE_INTERP_RESULT")
- #:phases (alist-cons-after
- 'install 'post-install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (bin (assoc-ref outputs "tk"))
- (tk (assoc-ref inputs "tk"))
- (tkv ,(let ((v (package-version tk)))
- (string-take v (string-index-right v #\.)))))
- ;; Move `wishwn' and `wnb' to BIN.
- (for-each (lambda (prog)
- (let ((orig (string-append out "/bin/" prog))
- (dst (string-append bin "/bin/" prog))
- (dir (string-append tk "/lib/tk" tkv)))
- (mkdir-p (dirname dst))
- (copy-file orig dst)
- (delete-file orig)
- (wrap-program dst
- `("TK_LIBRARY" "" = (,dir))
- `("PATH" ":" prefix
- (,(string-append out
- "/bin"))))))
- '("wishwn" "wnb"))
- #t))
- %standard-phases)))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'post-install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out"))
+ (bin (assoc-ref outputs "tk"))
+ (tk (assoc-ref inputs "tk"))
+ (tkv ,(let ((v (package-version tk)))
+ (string-take v (string-index-right v #\.)))))
+ ;; Move `wishwn' and `wnb' to BIN.
+ (for-each (lambda (prog)
+ (let ((orig (string-append out "/bin/" prog))
+ (dst (string-append bin "/bin/" prog))
+ (dir (string-append tk "/lib/tk" tkv)))
+ (mkdir-p (dirname dst))
+ (copy-file orig dst)
+ (delete-file orig)
+ (wrap-program dst
+ `("TK_LIBRARY" "" = (,dir))
+ `("PATH" ":" prefix
+ (,(string-append out
+ "/bin"))))))
+ '("wishwn" "wnb"))
+ #t))))))
(outputs '("out"
"tk")) ; for the Tcl/Tk GUI
(inputs `(("tk" ,tk)
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index 2c4a26aeac..3231e3d48d 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -63,7 +63,7 @@
`(("pkg-config" ,pkg-config)))
(arguments
'(#:configure-flags
- '("--with-regex=sys" "--with-libmspack"
+ '("--with-regex" "--with-libmspack"
"--with-sdl"
"--enable-webview"
"--enable-webkit"
diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm
index c060a39009..bfcba473a8 100644
--- a/gnu/packages/xdisorg.scm
+++ b/gnu/packages/xdisorg.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -381,9 +382,12 @@ move windows, switch between desktops, etc.).")
(version "0.8")
(source (origin
(method url-fetch)
- (uri (string-append
- "http://linuxbrit.co.uk/downloads/scrot-"
- version ".tar.gz"))
+ (uri (list (string-append
+ "http://linuxbrit.co.uk/downloads/scrot-"
+ version ".tar.gz")
+ (string-append
+ "https://fossies.org/linux/privat/old/scrot-"
+ version ".tar.gz")))
(sha256
(base32
"1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
@@ -395,16 +399,16 @@ move windows, switch between desktops, etc.).")
(list (string-append "--mandir="
(assoc-ref %outputs "out")
"/share/man"))
- #:phases (alist-replace
- 'install
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((out (assoc-ref outputs "out"))
- (doc (string-append out "/share/doc/scrot")))
- (mkdir-p doc)
- (zero?
- (system* "make" "install"
- (string-append "docsdir=" doc)))))
- %standard-phases)))
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (doc (string-append out "/share/doc/scrot")))
+ (mkdir-p doc)
+ (zero?
+ (system* "make" "install"
+ (string-append "docsdir=" doc)))))))))
(inputs
`(("libx11" ,libx11)
("giblib" ,giblib)))
@@ -540,7 +544,7 @@ things less distracting.")
(define-public xlockmore
(package
(name "xlockmore")
- (version "5.46")
+ (version "5.47")
(source (origin
(method url-fetch)
(uri (list (string-append
@@ -549,10 +553,10 @@ things less distracting.")
(string-append
"http://www.tux.org/~bagleyd/xlock/xlockmore-old"
"/xlockmore-" version
- "/xlockmore-" version ".tar.bz2")))
+ "/xlockmore-" version ".tar.xz")))
(sha256
(base32
- "1ps0dmnh912x8mwns94y2607xk90rjxrjn5s1pkmmpjg5h9bxcrj"))))
+ "138d79b8zc2hambbr9fnxp3fhihlcljgqns04zf0kv2f53pavqwl"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list (string-append "--enable-appdefaultdir="
@@ -570,8 +574,7 @@ things less distracting.")
"XLockMore is a classic screen locker and screen saver for the
X Window System.")
(license (license:non-copyleft #f "See xlock.c.")
- ;; + GPLv2 in modes/glx/biof.c.
- )))
+ ))) ; + GPLv2 in modes/glx/biof.c.
(define-public xosd
(package
@@ -907,3 +910,44 @@ demos. It also acts as a nice screen locker.")
(string-append
"http://metadata.ftp-master.debian.org/changelogs/"
"/main/x/xscreensaver/xscreensaver_5.34-2_copyright")))))
+
+(define-public rofi
+ (package
+ (name "rofi")
+ (version "1.0.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/DaveDavenport/rofi/"
+ "releases/download/"
+ version "/rofi-" version ".tar.xz"))
+ (sha256
+ (base32
+ "01jxml9vk4cw7pngpan7dipmb98s6ibh6f0023lw3hbgxy650637"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("libx11" ,libx11)
+ ("pango" ,pango)
+ ("cairo" ,cairo)
+ ("glib" ,glib)
+ ("startup-notification" ,startup-notification)
+ ("libxkbcommon" ,libxkbcommon)
+ ("libxcb" ,libxcb)
+ ("xcb-util" ,xcb-util)
+ ("xcb-util-wm" ,xcb-util-wm)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'adjust-tests
+ (lambda _
+ (substitute* '("test/helper-expand.c")
+ (("~root") "/root")
+ (("~") "")
+ (("g_get_home_dir \\(\\)") "\"/\"")))))))
+ (home-page "https://davedavenport.github.io/rofi/")
+ (synopsis "Application Launcher")
+ (description "Rofi is a minimalist Application Launcher. It memorizes which
+applications you regularily use and also allows you to search for an application
+by name.")
+ (license license:expat)))
diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index 68f76d5c5c..d1597e96ea 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -270,7 +270,10 @@ Kate stream.")
(sha256
(base32
"1g12bnh5ah08v529y72kfdz5lhvy75iaz7f9jskyby23m9dkk2d3"))
- (patches (search-patches "vorbis-tools-CVE-2015-6749.patch"))))
+ (patches (search-patches
+ "vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch"
+ "vorbis-tools-CVE-2014-9640.patch"
+ "vorbis-tools-CVE-2015-6749.patch"))))
(build-system gnu-build-system)
(inputs `(("ao" ,ao)
("curl" ,curl)
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index a5ea3d0974..5b72c805bd 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.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, 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
@@ -67,6 +67,7 @@ things the parser might find in the XML document (like start tags).")
(package
(name "libxml2")
(version "2.9.3")
+ (replacement libxml2/fixed) ;multiple CVEs
(source (origin
(method url-fetch)
(uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
@@ -93,9 +94,24 @@ things the parser might find in the XML document (like start tags).")
project (but it is usable outside of the Gnome platform).")
(license license:x11)))
+(define libxml2/fixed
+ (package
+ (inherit libxml2)
+ (source
+ (let ((name "libxml2")
+ (version "2.9.4"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0g336cr0bw6dax1q48bblphmchgihx9p1pjmxdnrd6sh3qci3fgz")))))))
+
(define-public python-libxml2
(package (inherit libxml2)
(name "python-libxml2")
+ (replacement #f)
(build-system python-build-system)
(arguments
`(;; XXX: Tests are specified in 'Makefile.am', but not in 'setup.py'.
diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm
index 2eff1b28c3..ad81f975dc 100644
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@ -2810,10 +2810,10 @@ X server.")
(define-public xf86-video-intel
- (let ((commit "d167280"))
+ (let ((commit "d1672806a5222f00dcc2eb24ccddd03f727f71bc"))
(package
(name "xf86-video-intel")
- (version (string-append "2.99.917-1-" commit))
+ (version (string-append "2.99.917-1-" (string-take commit 7)))
(source
(origin
;; there's no current tarball
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 96bf8da02a..2780d124c7 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
+;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -93,6 +94,8 @@
gpm-service-type
gpm-service
+ urandom-seed-service
+
%base-services))
;;; Commentary:
@@ -422,6 +425,67 @@ stopped before 'kill' is called."
;;;
+;;; Preserve entropy to seed /dev/urandom on boot.
+;;;
+
+(define %random-seed-file
+ "/var/lib/random-seed")
+
+(define (urandom-seed-shepherd-service _)
+ "Return a shepherd service for the /dev/urandom seed."
+ (list (shepherd-service
+ (documentation "Preserve entropy across reboots for /dev/urandom.")
+ (provision '(urandom-seed))
+ (requirement '(user-processes))
+ (start #~(lambda _
+ ;; On boot, write random seed into /dev/urandom.
+ (when (file-exists? #$%random-seed-file)
+ (call-with-input-file #$%random-seed-file
+ (lambda (seed)
+ (call-with-output-file "/dev/urandom"
+ (lambda (urandom)
+ (dump-port seed urandom))))))
+ ;; Immediately refresh the seed in case the system doesn't
+ ;; shut down cleanly.
+ (call-with-input-file "/dev/urandom"
+ (lambda (urandom)
+ (let ((previous-umask (umask #o077))
+ (buf (make-bytevector 512)))
+ (mkdir-p (dirname #$%random-seed-file))
+ (get-bytevector-n! urandom buf 0 512)
+ (call-with-output-file #$%random-seed-file
+ (lambda (seed)
+ (put-bytevector seed buf)))
+ (umask previous-umask))))
+ #t))
+ (stop #~(lambda _
+ ;; During shutdown, write from /dev/urandom into random seed.
+ (let ((buf (make-bytevector 512)))
+ (call-with-input-file "/dev/urandom"
+ (lambda (urandom)
+ (let ((previous-umask (umask #o077)))
+ (get-bytevector-n! urandom buf 0 512)
+ (mkdir-p (dirname #$%random-seed-file))
+ (call-with-output-file #$%random-seed-file
+ (lambda (seed)
+ (put-bytevector seed buf)))
+ (umask previous-umask))
+ #t)))))
+ (modules `((rnrs bytevectors)
+ (rnrs io ports)
+ ,@%default-modules)))))
+
+(define urandom-seed-service-type
+ (service-type (name 'urandom-seed)
+ (extensions
+ (list (service-extension shepherd-root-service-type
+ urandom-seed-shepherd-service)))))
+
+(define (urandom-seed-service)
+ (service urandom-seed-service-type #f))
+
+
+;;;
;;; System-wide environment variables.
;;;
@@ -1200,7 +1264,6 @@ extra rules from the packages listed in @var{rules}."
"Return a service that uses @var{device} as a swap device."
(service swap-service-type device))
-
(define-record-type* <gpm-configuration>
gpm-configuration make-gpm-configuration gpm-configuration?
(gpm gpm-configuration-gpm) ;package
@@ -1281,6 +1344,7 @@ This is the GNU operating system, welcome!\n\n")))
(static-networking-service "lo" "127.0.0.1"
#:provision '(loopback))
(syslog-service)
+ (urandom-seed-service)
(guix-service)
(nscd-service)
diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm
new file mode 100644
index 0000000000..abab6a3eba
--- /dev/null
+++ b/gnu/services/dict.scm
@@ -0,0 +1,131 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services dict)
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:use-module (gnu services)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu system shadow)
+ #:use-module ((gnu packages admin) #:select (shadow))
+ #:use-module (gnu packages dico)
+ #:use-module (gnu packages dictionaries)
+ #:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-26)
+ #:use-module (ice-9 match)
+ #:export (dicod-service
+ dicod-configuration
+ dicod-database
+ %dicod-database:gcide))
+
+
+;;;
+;;; GNU Dico.
+;;;
+
+(define-record-type* <dicod-configuration>
+ dicod-configuration make-dicod-configuration
+ dicod-configuration?
+ (dico dicod-configuration-dico (default dico))
+ (databases dicod-configuration-databases
+ ;; list of <dicod-database>
+ (default (list %dicod-database:gcide))))
+
+(define-record-type* <dicod-database>
+ dicod-database make-dicod-database
+ dicod-database?
+ (name dicod-database-name)
+ (module dicod-database-module)
+ (options dicod-database-options (default '())))
+
+(define %dicod-database:gcide
+ (dicod-database
+ (name "gcide")
+ (module "gcide")
+ (options (list #~(string-append "dbdir=" #$gcide "/share/gcide")
+ "idxdir=/var/run/dicod"))))
+
+(define %dicod-accounts
+ (list (user-group
+ (name "dicod")
+ (system? #t))
+ (user-account
+ (name "dicod")
+ (group "dicod")
+ (system? #t)
+ (home-directory "/var/empty")
+ (shell #~(string-append #$shadow "/sbin/nologin")))))
+
+(define (dicod-configuration-file config)
+ (define dicod-configuration->text
+ (match-lambda
+ (($ <dicod-configuration> dico databases)
+ (append-map (match-lambda
+ (($ <dicod-database> name module options)
+ `("
+load-module " ,module ";
+database {
+ name \"" ,name "\";
+ handler \"" ,module
+ (string-join (list ,@options) " " 'prefix) "\";
+}\n")))
+ databases))))
+ (apply mixed-text-file "dicod.conf" (dicod-configuration->text config)))
+
+(define %dicod-activation
+ #~(begin
+ (use-modules (guix build utils))
+ (let ((user (getpwnam "dicod"))
+ (rundir "/var/run/dicod"))
+ (mkdir-p rundir)
+ (chown rundir (passwd:uid user) (passwd:gid user)))))
+
+(define (dicod-shepherd-service config)
+ (list (shepherd-service
+ (provision '(dicod))
+ (documentation "Run the dicod daemon.")
+ (start #~(make-forkexec-constructor
+ (list (string-append #$dico "/bin/dicod") "--foreground"
+ (string-append
+ "--config=" #$(dicod-configuration-file config)))
+ #:user "dicod" #:group "dicod"))
+ (stop #~(make-kill-destructor)))))
+
+(define dicod-service-type
+ (service-type
+ (name 'dict)
+ (extensions
+ (list (service-extension account-service-type
+ (const %dicod-accounts))
+ (service-extension activation-service-type
+ (const %dicod-activation))
+ (service-extension shepherd-root-service-type
+ dicod-shepherd-service)))))
+
+(define* (dicod-service #:key (config (dicod-configuration)))
+ "Return a service that runs the @command{dicod} daemon, an implementation
+of DICT server (@pxref{Dicod,,, dico, GNU Dico Manual}).
+
+The optional @var{config} argument specifies the configuration for
+@command{dicod}, which should be a @code{<dicod-configuration>} object, by
+default it serves the GNU Collaborative International Dictonary of English.
+
+You can add @command{open localhost} to your @file{~/.dico} file to make
+@code{localhost} the default server for @command{dico}
+client (@pxref{Initialization File,,, dico, GNU Dico Manual})."
+ (service dicod-service-type config))
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 7e8c4489dd..f4cfaf0990 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -18,7 +18,6 @@
(define-module (gnu system file-systems)
#:use-module (ice-9 match)
- #:use-module (guix gexp)
#:use-module (guix records)
#:use-module (guix store)
#:use-module ((gnu build file-systems)
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 07ad3cbcb2..a72613e9c5 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -145,6 +145,11 @@ current store is on a RAM disk."
(chmod #$directory #o1775)))
#~(begin
+ ;; Bind-mount TARGET's /tmp in case we need space to build things.
+ (let ((tmpdir (string-append #$target "/tmp")))
+ (mkdir-p tmpdir)
+ (mount tmpdir "/tmp" "none" MS_BIND))
+
(unless (file-exists? "/.ro-store")
(mkdir "/.ro-store")
(mount #$(%store-prefix) "/.ro-store" "none"
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 03c1eb2baf..a7982002b6 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -47,11 +47,7 @@
"Return the default Emacs package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((emacs-mod (resolve-interface '(gnu packages emacs))))
- ;; we use 'emacs' instead of 'emacs-no-x' because the latter appears not
- ;; to be loading some macros and causes problems to some packages. For
- ;; example, with the latter AUCTeX gives the error message:
- ;; "(invalid-function dbus-ignore-errors)".
- (module-ref emacs-mod 'emacs)))
+ (module-ref emacs-mod 'emacs-minimal)))
(define* (lower name
#:key source inputs native-inputs outputs system target
diff --git a/guix/build/bournish.scm b/guix/build/bournish.scm
index 4022796658..1f17e0a22d 100644
--- a/guix/build/bournish.scm
+++ b/guix/build/bournish.scm
@@ -134,8 +134,10 @@ commands such as 'ls' and 'cd'; it lacks globbing, pipes---everything.\n"))
(define (read-bournish port env)
"Read a Bournish expression from PORT, and return the corresponding Scheme
code as an sexp."
- (match (string-tokenize (read-line port))
- ((command args ...)
+ (match (read-line port)
+ ((? eof-object? eof)
+ eof)
+ ((= string-tokenize (command args ...))
(match (assoc command %commands)
((command proc) ;built-in command
(apply proc (map expand-variable args)))
@@ -147,11 +149,24 @@ code as an sexp."
(define %bournish-language
(let ((scheme (lookup-language 'scheme)))
+ ;; XXX: The 'scheme' language lacks a "joiner", so we add one here. This
+ ;; allows us to have 'read-bournish' read one shell statement at a time
+ ;; instead of having to read until EOF.
+ (set! (language-joiner scheme)
+ (lambda (exps env)
+ (match exps
+ (() '(begin))
+ ((exp) exp)
+ (_ `(begin ,@exps)))))
+
(make-language #:name 'bournish
#:title "Bournish"
+
+ ;; The reader does all the heavy lifting.
#:reader read-bournish
- #:compilers (language-compilers scheme)
- #:decompilers (language-decompilers scheme)
+ #:compilers `((scheme . ,(lambda (exp env options)
+ (values exp env env))))
+ #:decompilers '()
#:evaluator (language-evaluator scheme)
#:printer (language-printer scheme)
#:make-default-environment
diff --git a/guix/build/download.scm b/guix/build/download.scm
index 7741726c41..bd011ce878 100644
--- a/guix/build/download.scm
+++ b/guix/build/download.scm
@@ -234,9 +234,10 @@ and 'guix publish', something like
(string-drop path 33)
path)))
-(define (ftp-fetch uri file)
- "Fetch data from URI and write it to FILE. Return FILE on success."
- (let* ((conn (ftp-open (uri-host uri)))
+(define* (ftp-fetch uri file #:key timeout)
+ "Fetch data from URI and write it to FILE. Return FILE on success. Bail
+out if the connection could not be established in less than TIMEOUT seconds."
+ (let* ((conn (ftp-open (uri-host uri) #:timeout timeout))
(size (false-if-exception (ftp-size conn (uri-path uri))))
(in (ftp-retr conn (basename (uri-path uri))
(dirname (uri-path uri)))))
@@ -585,8 +586,10 @@ Return the resulting target URI."
#:query (uri-query ref)
#:fragment (uri-fragment ref)))))
-(define (http-fetch uri file)
- "Fetch data from URI and write it to FILE. Return FILE on success."
+(define* (http-fetch uri file #:key timeout)
+ "Fetch data from URI and write it to FILE; when TIMEOUT is true, bail out if
+the connection could not be established in less than TIMEOUT seconds. Return
+FILE on success."
(define post-2.0.7?
(or (> (string->number (major-version)) 2)
@@ -605,7 +608,7 @@ Return the resulting target URI."
(Accept . "*/*")))
(let*-values (((connection)
- (open-connection-for-uri uri))
+ (open-connection-for-uri uri #:timeout timeout))
((resp bv-or-port)
;; XXX: `http-get*' was introduced in 2.0.7, and replaced by
;; #:streaming? in 2.0.8. We know we're using it within the
@@ -646,7 +649,7 @@ Return the resulting target URI."
(format #t "following redirection to `~a'...~%"
(uri->string uri))
(close connection)
- (http-fetch uri file)))
+ (http-fetch uri file #:timeout timeout)))
(else
(error "download failed" (uri->string uri)
code (response-reason-phrase resp))))))
@@ -686,6 +689,7 @@ Return a list of URIs."
(define* (url-fetch url file
#:key
+ (timeout 10)
(mirrors '()) (content-addressed-mirrors '())
(hashes '()))
"Fetch FILE from URL; URL may be either a single string, or a list of
@@ -711,19 +715,19 @@ or #f."
file (uri->string uri))
(case (uri-scheme uri)
((http https)
- (false-if-exception* (http-fetch uri file)))
+ (false-if-exception* (http-fetch uri file #:timeout timeout)))
((ftp)
- (false-if-exception* (ftp-fetch uri file)))
+ (false-if-exception* (ftp-fetch uri file #:timeout timeout)))
(else
(format #t "skipping URI with unsupported scheme: ~s~%"
uri)
#f)))
- (define content-addressed-urls
+ (define content-addressed-uris
(append-map (lambda (make-url)
(filter-map (match-lambda
((hash-algo . hash)
- (make-url hash-algo hash)))
+ (string->uri (make-url hash-algo hash))))
hashes))
content-addressed-mirrors))
@@ -733,7 +737,7 @@ or #f."
(setvbuf (current-error-port) _IOLBF)
- (let try ((uri (append uri content-addressed-urls)))
+ (let try ((uri (append uri content-addressed-uris)))
(match uri
((uri tail ...)
(or (fetch uri file)
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index f0a9a6e125..ab970012a7 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -21,6 +21,7 @@
#:use-module (guix build utils)
#:use-module (guix build emacs-utils)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 regex)
@@ -39,6 +40,27 @@
;; archive signature.
(define %install-suffix "/share/emacs/site-lisp/guix.d")
+(define gnu:unpack (assoc-ref gnu:%standard-phases 'unpack))
+
+(define (store-file->elisp-source-file file)
+ "Convert FILE, a store file name for an Emacs Lisp source file, into a file
+name that has been stripped of the hash and version number."
+ (let-values (((name version)
+ (package-name->name+version
+ (strip-store-file-name file))))
+ (string-append name ".el")))
+
+(define* (unpack #:key source #:allow-other-keys)
+ "Unpack SOURCE into the build directory. SOURCE may be a compressed
+archive, a directory, or an Emacs Lisp file."
+ (if (string-suffix? ".el" source)
+ (begin
+ (mkdir "source")
+ (chdir "source")
+ (copy-file source (store-file->elisp-source-file source))
+ #t)
+ (gnu:unpack #:source source)))
+
(define* (build #:key outputs inputs #:allow-other-keys)
"Compile .el files."
(let* ((emacs (string-append (assoc-ref inputs "emacs") "/bin/emacs"))
@@ -151,6 +173,7 @@ second hyphen. This corresponds to 'name-version' as used in ELPA packages."
(define %standard-phases
(modify-phases gnu:%standard-phases
+ (replace 'unpack unpack)
(delete 'configure)
(delete 'check)
(delete 'install)
diff --git a/guix/build/graft.scm b/guix/build/graft.scm
index b61982dd64..fb21fc3af3 100644
--- a/guix/build/graft.scm
+++ b/guix/build/graft.scm
@@ -105,6 +105,19 @@ a list of store file name pairs."
(string-append (dirname file) "/" target))))
matches)))
+(define (exit-on-exception proc)
+ "Return a procedure that wraps PROC so that 'primitive-exit' is called when
+an exception is caught."
+ (lambda (arg)
+ (catch #t
+ (lambda ()
+ (proc arg))
+ (lambda (key . args)
+ ;; Since ports are not thread-safe as of Guile 2.0, reopen stderr.
+ (let ((port (fdopen 2 "w0")))
+ (print-exception port #f key args)
+ (primitive-exit 1))))))
+
(define* (rewrite-directory directory output mapping
#:optional (store (%store-directory)))
"Copy DIRECTORY to OUTPUT, replacing strings according to MAPPING, a list of
@@ -147,9 +160,13 @@ file name pairs."
;; #o777.
(umask #o022)
+ ;; Use 'exit-on-exception' to force an exit upon I/O errors, given that
+ ;; 'n-par-for-each' silently swallows exceptions.
+ ;; See <http://bugs.gnu.org/23581>.
(n-par-for-each (parallel-job-count)
- rewrite-leaf (find-files directory (const #t)
- #:directories? #t))
+ (exit-on-exception rewrite-leaf)
+ (find-files directory (const #t)
+ #:directories? #t))
(rename-matching-files output mapping))
;;; graft.scm ends here
diff --git a/guix/build/ruby-build-system.scm b/guix/build/ruby-build-system.scm
index a4ac3b307c..79ac380cb8 100644
--- a/guix/build/ruby-build-system.scm
+++ b/guix/build/ruby-build-system.scm
@@ -66,14 +66,13 @@ directory."
;; Use GNU unpack strategy for things that aren't gem archives.
(gnu:unpack #:source source)))
-(define* (build #:key source #:allow-other-keys)
- "Build a new gem using the gemspec from the SOURCE gem."
- (define (first-gemspec)
- (first-matching-file "\\.gemspec$"))
+(define (first-gemspec)
+ (first-matching-file "\\.gemspec$"))
- ;; Remove the original gemspec, if present, and replace it with a new one.
- ;; This avoids issues with upstream gemspecs requiring tools such as git to
- ;; generate the files list.
+(define* (extract-gemspec #:key source #:allow-other-keys)
+ "Remove the original gemspec, if present, and replace it with a new one.
+This avoids issues with upstream gemspecs requiring tools such as git to
+generate the files list."
(when (gem-archive? source)
(let ((gemspec (or (false-if-exception (first-gemspec))
;; Make new gemspec if one wasn't shipped.
@@ -94,7 +93,10 @@ directory."
(write-char (read-char pipe) out))))
#t)
(lambda ()
- (close-pipe pipe))))))
+ (close-pipe pipe)))))))
+
+(define* (build #:key source #:allow-other-keys)
+ "Build a new gem using the gemspec from the SOURCE gem."
;; Build a new gem from the current working directory. This also allows any
;; dynamic patching done in previous phases to be present in the installed
@@ -134,6 +136,7 @@ GEM-FLAGS are passed to the 'gem' invokation, if present."
(define %standard-phases
(modify-phases gnu:%standard-phases
(delete 'configure)
+ (add-before 'build 'extract-gemspec extract-gemspec)
(replace 'build build)
(replace 'unpack unpack)
(replace 'install install)
diff --git a/guix/build/union.scm b/guix/build/union.scm
index ccd2d5c103..6640b56523 100644
--- a/guix/build/union.scm
+++ b/guix/build/union.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
@@ -53,22 +53,24 @@
identical, #f otherwise."
(let ((st1 (stat file1))
(st2 (stat file2)))
- (and (eq? (stat:type st1) 'regular)
- (eq? (stat:type st2) 'regular)
- (= (stat:size st1) (stat:size st2))
- (call-with-input-file file1
- (lambda (port1)
- (call-with-input-file file2
- (lambda (port2)
- (define len 8192)
- (define buf1 (make-bytevector len))
- (define buf2 (make-bytevector len))
- (let loop ()
- (let ((n1 (get-bytevector-n! port1 buf1 0 len))
- (n2 (get-bytevector-n! port2 buf2 0 len)))
- (and (equal? n1 n2)
- (or (eof-object? n1)
- (loop))))))))))))
+ ;; When deduplication is enabled, identical files share the same inode.
+ (or (= (stat:ino st1) (stat:ino st2))
+ (and (eq? (stat:type st1) 'regular)
+ (eq? (stat:type st2) 'regular)
+ (= (stat:size st1) (stat:size st2))
+ (call-with-input-file file1
+ (lambda (port1)
+ (call-with-input-file file2
+ (lambda (port2)
+ (define len 8192)
+ (define buf1 (make-bytevector len))
+ (define buf2 (make-bytevector len))
+ (let loop ()
+ (let ((n1 (get-bytevector-n! port1 buf1 0 len))
+ (n2 (get-bytevector-n! port2 buf2 0 len)))
+ (and (equal? n1 n2)
+ (or (eof-object? n1)
+ (loop)))))))))))))
(define* (union-build output inputs
#:key (log-port (current-error-port)))
diff --git a/guix/cve.scm b/guix/cve.scm
index 8e76f42f0d..088e39837a 100644
--- a/guix/cve.scm
+++ b/guix/cve.scm
@@ -19,11 +19,14 @@
(define-module (guix cve)
#:use-module (guix utils)
#:use-module (guix http-client)
+ #:use-module ((guix build utils) #:select (mkdir-p))
#:use-module (sxml ssax)
#:use-module (web uri)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
+ #:use-module (srfi srfi-11)
#:use-module (srfi srfi-19)
+ #:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (ice-9 vlist)
@@ -46,8 +49,8 @@
(define-record-type <vulnerability>
(vulnerability id packages)
vulnerability?
- (id vulnerability-id)
- (packages vulnerability-packages))
+ (id vulnerability-id) ;string
+ (packages vulnerability-packages)) ;((p1 v1 v2 v3) (p2 v1) ...)
(define %now
(current-date))
@@ -73,7 +76,7 @@
(define (call-with-cve-port uri ttl proc)
"Pass PROC an input port from which to read the CVE stream."
- (let ((port (http-fetch/cached uri #:ttl ttl)))
+ (let ((port (http-fetch uri)))
(dynamic-wind
(const #t)
(lambda ()
@@ -91,18 +94,45 @@
(define (cpe->package-name cpe)
"Converts the Common Platform Enumeration (CPE) string CPE to a package
-name, in a very naive way. Return #f if CPE does not look like an application
-CPE string."
- (and=> (regexp-exec %cpe-package-rx (string-trim-both cpe))
+name, in a very naive way. Return two values: the package name, and its
+version string. Return #f and #f if CPE does not look like an application CPE
+string."
+ (cond ((regexp-exec %cpe-package-rx (string-trim-both cpe))
+ =>
(lambda (matches)
- (cons (match:substring matches 2)
- (string-append (match:substring matches 3)
- (match (match:substring matches 4)
- ("" "")
- (patch-level
- ;; Drop the colon from things like
- ;; "cpe:/a:openbsd:openssh:6.8:p1".
- (string-drop patch-level 1))))))))
+ (values (match:substring matches 2)
+ (string-append (match:substring matches 3)
+ (match (match:substring matches 4)
+ ("" "")
+ (patch-level
+ ;; Drop the colon from things like
+ ;; "cpe:/a:openbsd:openssh:6.8:p1".
+ (string-drop patch-level 1)))))))
+ (else
+ (values #f #f))))
+
+(define (cpe->product-alist products)
+ "Given PRODUCTS, a list of CPE names, return the subset limited to the
+applications listed in PRODUCTS, with names converted to package names:
+
+ (cpe->product-alist
+ '(\"cpe:/a:gnu:libtasn1:4.7\" \"cpe:/a:gnu:libtasn1:4.6\" \"cpe:/a:gnu:cpio:2.11\"))
+ => ((\"libtasn1\" \"4.7\" \"4.6\") (\"cpio\" \"2.11\"))
+"
+ (fold (lambda (product result)
+ (let-values (((name version) (cpe->package-name product)))
+ (if name
+ (match result
+ (((previous . versions) . tail)
+ ;; Attempt to coalesce NAME and PREVIOUS.
+ (if (string=? name previous)
+ (alist-cons name (cons version versions) tail)
+ (alist-cons name (list version) result)))
+ (()
+ (alist-cons name (list version) result)))
+ result)))
+ '()
+ (sort products string<?)))
(define %parse-vulnerability-feed
;; Parse the XML vulnerability feed from
@@ -130,12 +160,12 @@ CPE string."
;; Some entries have no vulnerable-software-list.
rest)
((products id . rest)
- (match (filter-map cpe->package-name products)
+ (match (cpe->product-alist products)
(()
;; No application among PRODUCTS.
rest)
(packages
- (cons (vulnerability id (reverse packages))
+ (cons (vulnerability id packages)
rest))))))
(x
seed)))
@@ -154,28 +184,85 @@ CPE string."
vulnerability objects."
(reverse (%parse-vulnerability-feed port '())))
-(define (current-vulnerabilities)
- "Return the current list of Common Vulnerabilities and Exposures (CVE) as
-published by the US NIST."
- (define (read-vulnerabilities uri ttl)
- (call-with-cve-port uri ttl
+(define vulnerability->sexp
+ (match-lambda
+ (($ <vulnerability> id packages)
+ `(v ,id ,packages))))
+
+(define sexp->vulnerability
+ (match-lambda
+ (('v id (packages ...))
+ (vulnerability id packages))))
+
+(define (fetch-vulnerabilities year ttl)
+ "Return the list of <vulnerability> for YEAR, assuming the on-disk cache has
+the given TTL (fetch from the NIST web site when TTL has expired)."
+ ;; Note: We used to keep the original XML files in cache but parsing it
+ ;; would take typically ~15s for a year of data. Thus, we instead store a
+ ;; summarized version thereof as an sexp, which can be parsed in 1s or so.
+ (define cache
+ (string-append (cache-directory) "/cve/" (number->string year)))
+
+ (define (do-fetch)
+ (call-with-cve-port (yearly-feed-uri year) ttl
(lambda (port)
;; XXX: The SSAX "error port" is used to send pointless warnings such as
;; "warning: Skipping PI". Turn that off.
+ (format (current-error-port) "fetching CVE database for ~a...~%" year)
(parameterize ((current-ssax-error-port (%make-void-port "w")))
(xml->vulnerabilities port)))))
- (append-map read-vulnerabilities
- (list (yearly-feed-uri %past-year)
- (yearly-feed-uri %current-year))
- (list %past-year-ttl
- %current-year-ttl)))
+ (define (update-cache)
+ (mkdir-p (dirname cache))
+ (let ((vulns (do-fetch)))
+ (with-atomic-file-output cache
+ (lambda (port)
+ (write `(vulnerabilities
+ 1 ;format version
+ ,(map vulnerability->sexp vulns))
+ port)))
+ vulns))
+
+ (define (old? file)
+ ;; Return true if PORT has passed TTL.
+ (let* ((s (stat file))
+ (now (current-time time-utc)))
+ (< (+ (stat:mtime s) ttl) (time-second now))))
+
+ (catch 'system-error
+ (lambda ()
+ (if (old? cache)
+ (update-cache)
+ (match (call-with-input-file cache read)
+ (('vulnerabilities 1 vulns)
+ (map sexp->vulnerability vulns))
+ (x
+ (update-cache)))))
+ (lambda args
+ (update-cache))))
+
+(define (current-vulnerabilities)
+ "Return the current list of Common Vulnerabilities and Exposures (CVE) as
+published by the US NIST."
+ (let ((past-years (unfold (cut > <> 3)
+ (lambda (n)
+ (- %current-year n))
+ 1+
+ 1))
+ (past-ttls (unfold (cut > <> 3)
+ (lambda (n)
+ (* n %past-year-ttl))
+ 1+
+ 1)))
+ (append-map fetch-vulnerabilities
+ (cons %current-year past-years)
+ (cons %current-year-ttl past-ttls))))
(define (vulnerabilities->lookup-proc vulnerabilities)
"Return a lookup procedure built from VULNERABILITIES that takes a package
name and optionally a version number. When the version is omitted, the lookup
-procedure returns a list of version/vulnerability pairs; otherwise, it returns
-a list of vulnerabilities affection the given package version."
+procedure returns a list of vulnerabilities; otherwise, it returns a list of
+vulnerabilities affecting the given package version."
(define table
;; Map package names to lists of version/vulnerability pairs.
(fold (lambda (vuln table)
@@ -183,8 +270,8 @@ a list of vulnerabilities affection the given package version."
(($ <vulnerability> id packages)
(fold (lambda (package table)
(match package
- ((name . version)
- (vhash-cons name (cons version vuln)
+ ((name . versions)
+ (vhash-cons name (cons vuln versions)
table))))
table
packages))))
@@ -195,11 +282,14 @@ a list of vulnerabilities affection the given package version."
(vhash-fold* (if version
(lambda (pair result)
(match pair
- ((v . vuln)
- (if (string=? v version)
+ ((vuln . versions)
+ (if (member version versions)
(cons vuln result)
result))))
- cons)
+ (lambda (pair result)
+ (match pair
+ ((vuln . _)
+ (cons vuln result)))))
'()
package table)))
diff --git a/guix/download.scm b/guix/download.scm
index 67c55aff33..9b238dcbdf 100644
--- a/guix/download.scm
+++ b/guix/download.scm
@@ -98,14 +98,28 @@
"http://savannah.c3sl.ufpr.br/"
"http://www.centervenus.com/mirrors/nongnu/"
"http://download.savannah.gnu.org/releases-noredirect/")
- (sourceforge
+ (sourceforge ; https://sourceforge.net/p/forge/documentation/Mirrors/
"http://prdownloads.sourceforge.net/"
"http://heanet.dl.sourceforge.net/sourceforge/"
- "http://surfnet.dl.sourceforge.net/sourceforge/"
"http://dfn.dl.sourceforge.net/sourceforge/"
- "http://mesh.dl.sourceforge.net/sourceforge/"
- "http://ovh.dl.sourceforge.net/sourceforge/"
- "http://osdn.dl.sourceforge.net/sourceforge/")
+ "http://freefr.dl.sourceforge.net/sourceforge/"
+ "http://internode.dl.sourceforge.net/sourceforge/"
+ "http://iweb.dl.sourceforge.net/sourceforge/"
+ "http://jaist.dl.sourceforge.net/sourceforge/"
+ "http://kaz.dl.sourceforge.net/sourceforge/"
+ "http://kent.dl.sourceforge.net/sourceforge/"
+ "http://liquidtelecom.dl.sourceforge.net/sourceforge/"
+ "http://nbtelecom.dl.sourceforge.net/sourceforge/"
+ "http://nchc.dl.sourceforge.net/sourceforge/"
+ "http://ncu.dl.sourceforge.net/sourceforge/"
+ "http://netcologne.dl.sourceforge.net/sourceforge/"
+ "http://netix.dl.sourceforge.net/sourceforge/"
+ "http://pilotfiber.dl.sourceforge.net/sourceforge/"
+ "http://superb-sea2.dl.sourceforge.net/sourceforge/"
+ "http://tenet.dl.sourceforge.net/sourceforge/"
+ "http://ufpr.dl.sourceforge.net/sourceforge/"
+ "http://vorboss.dl.sourceforge.net/sourceforge/"
+ "http://netassist.dl.sourceforge.net/sourceforge/")
(kernel.org
"http://www.all.kernel.org/pub/"
"http://ramses.wh2.tu-dresden.de/pub/mirrors/kernel.org/"
@@ -159,13 +173,22 @@
"ftp://artfiles.org/cpan.org/"
"http://www.cpan.org/"
"ftp://cpan.rinet.ru/pub/mirror/CPAN/"
- "http://cpan.cu.be/"
"ftp://cpan.inode.at/"
"ftp://cpan.iht.co.il/"
"ftp://ftp.osuosl.org/pub/CPAN/"
"ftp://ftp.nara.wide.ad.jp/pub/CPAN/"
"http://mirrors.163.com/cpan/"
- "ftp://cpan.mirror.ac.za/")
+ "ftp://cpan.mirror.ac.za/"
+ "http://cpan.mirrors.ionfish.org/"
+ "http://cpan.mirror.dkm.cz/pub/CPAN/"
+ "http://cpan.mirror.iphh.net/"
+ "http://mirrors.teentelecom.net/CPAN/"
+ "http://mirror.teklinks.com/CPAN/"
+ "http://cpan.weepeetelecom.be/"
+ "http://mirrors.xservers.ro/CPAN/"
+ "http://cpan.yimg.com/"
+ "http://mirror.yazd.ac.ir/cpan/"
+ "http://ftp.belnet.be/ftp.cpan.org/")
(cran
;; Arbitrary mirrors from http://cran.r-project.org/mirrors.html
;; This one automatically redirects to servers worldwide
diff --git a/guix/grafts.scm b/guix/grafts.scm
index 6bec999ad2..53e697688a 100644
--- a/guix/grafts.scm
+++ b/guix/grafts.scm
@@ -252,16 +252,23 @@ derivations to the corresponding set of grafts."
(deps ;one or more dependencies
(mlet %state-monad ((grafts (mapm %state-monad dependency-grafts deps))
(cache (current-state)))
- (let* ((grafts (delete-duplicates (concatenate grafts) equal?))
- (origins (map graft-origin-file-name grafts)))
- (if (find (cut member <> deps) origins)
- (let* ((new (graft-derivation/shallow store drv grafts
- #:guile guile
- #:system system))
- (grafts (cons (graft (origin drv) (replacement new))
- grafts)))
- (return/cache cache grafts))
- (return/cache cache grafts))))))))))
+ (let* ((grafts (delete-duplicates (concatenate grafts) equal?))
+ (origins (map graft-origin-file-name grafts)))
+ (match (filter (lambda (graft)
+ (member (graft-origin-file-name graft) deps))
+ grafts)
+ (()
+ (return/cache cache grafts))
+ ((applicable ..1)
+ ;; Use APPLICABLE, the subset of GRAFTS that is really
+ ;; applicable to DRV, to avoid creating several identical
+ ;; grafted variants of DRV.
+ (let* ((new (graft-derivation/shallow store drv applicable
+ #:guile guile
+ #:system system))
+ (grafts (cons (graft (origin drv) (replacement new))
+ grafts)))
+ (return/cache cache grafts))))))))))))
(define* (graft-derivation store drv grafts
#:key (guile (%guile-for-build))
diff --git a/guix/graph.scm b/guix/graph.scm
index ad93403a1e..735d340c2c 100644
--- a/guix/graph.scm
+++ b/guix/graph.scm
@@ -37,7 +37,9 @@
node-edges
node-back-edges
+ traverse/depth-first
node-transitive-edges
+ node-reachable-count
%graphviz-backend
graph-backend?
@@ -99,13 +101,13 @@ returns its back edges. NODES is taken to be the sinks of the global graph."
(lambda (source target edges)
(vhash-consq target source edges))))
-(define (node-transitive-edges nodes node-edges)
- "Return the list of nodes directly or indirectly connected to NODES
-according to the NODE-EDGES procedure. NODE-EDGES must be a one-argument
-procedure that, given a node, returns its list of direct dependents; it is
-typically returned by 'node-edges' or 'node-back-edges'."
+(define (traverse/depth-first proc seed nodes node-edges)
+ "Do a depth-first traversal of NODES along NODE-EDGES, calling PROC with
+each node and the current result, and visiting each reachable node exactly
+once. NODES must be a list of nodes, and NODE-EDGES must be a one-argument
+procedure as returned by 'node-edges' or 'node-back-edges'."
(let loop ((nodes (append-map node-edges nodes))
- (result '())
+ (result seed)
(visited (setq)))
(match nodes
(()
@@ -115,9 +117,23 @@ typically returned by 'node-edges' or 'node-back-edges'."
(loop tail result visited)
(let ((edges (node-edges head)))
(loop (append edges tail)
- (cons head result)
+ (proc head result)
(set-insert head visited))))))))
+(define (node-transitive-edges nodes node-edges)
+ "Return the list of nodes directly or indirectly connected to NODES
+according to the NODE-EDGES procedure. NODE-EDGES must be a one-argument
+procedure that, given a node, returns its list of direct dependents; it is
+typically returned by 'node-edges' or 'node-back-edges'."
+ (traverse/depth-first cons '() nodes node-edges))
+
+(define (node-reachable-count nodes node-edges)
+ "Return the number of nodes reachable from NODES along NODE-EDGES."
+ (traverse/depth-first (lambda (_ count)
+ (+ 1 count))
+ 0
+ nodes node-edges))
+
;;;
;;; Graphviz export.
diff --git a/guix/import/github.scm b/guix/import/github.scm
index 29116d79f0..9ba9a10ba0 100644
--- a/guix/import/github.scm
+++ b/guix/import/github.scm
@@ -43,8 +43,8 @@ failure."
(define (find-extension url)
"Return the extension of the archive e.g. '.tar.gz' given a URL, or
false if none is recognized"
- (find (lambda x (string-suffix? (first x) url))
- (list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar")))
+ (find (lambda (x) (string-suffix? x url))
+ (list ".tar.gz" ".tar.bz2" ".tar.xz" ".zip" ".tar" ".tgz")))
(define (updated-github-url old-package new-version)
;; Return a url for the OLD-PACKAGE with NEW-VERSION. If no source url in
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 8355af7a48..ce8a11fbe5 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -811,6 +811,7 @@ the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc."
#:search-paths search-paths)))
(gexp->derivation "profile" builder
+ #:system system
#:modules '((guix build profiles)
(guix build union)
(guix build utils)
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 9ba487d1eb..ebe966f9cf 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -333,11 +333,11 @@ requisite store items i.e. the union closure of all the inputs."
(requisites*
(match input
((drv output)
- (derivation->output-path drv output))
+ (list (derivation->output-path drv output)))
((drv)
- (derivation->output-path drv))
+ (list (derivation->output-path drv)))
((? direct-store-path? path)
- path))))
+ (list path)))))
(mlet %store-monad ((reqs (sequence %store-monad
(map input->requisites inputs))))
diff --git a/guix/scripts/gc.scm b/guix/scripts/gc.scm
index 4ec9ff9dca..8db28138c8 100644
--- a/guix/scripts/gc.scm
+++ b/guix/scripts/gc.scm
@@ -229,7 +229,8 @@ Invoke the garbage collector.\n"))
((list-references)
(list-relatives references))
((list-requisites)
- (list-relatives requisites))
+ (list-relatives (lambda (store item)
+ (requisites store (list item)))))
((list-referrers)
(list-relatives referrers))
((optimize)
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index d594be18e5..7db0c9d610 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.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.
;;;
@@ -24,6 +24,7 @@
#:use-module (guix serialization)
#:use-module (guix nar)
#:use-module (guix utils)
+ #:use-module ((guix build syscalls) #:select (fcntl-flock))
#:use-module ((guix build utils) #:select (which mkdir-p))
#:use-module (guix ui)
#:use-module (srfi srfi-1)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 697afc17c3..e2e37098fc 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -794,9 +794,13 @@ processed, #f otherwise."
(define transform (options->transformation opts))
(define (transform-entry entry)
- (manifest-entry
- (inherit entry)
- (item (transform store (manifest-entry-item entry)))))
+ (let ((item (transform store (manifest-entry-item entry))))
+ (manifest-entry
+ (inherit entry)
+ (item item)
+ (version (if (package? item)
+ (package-version item)
+ (manifest-entry-version entry))))))
;; First, process roll-backs, generation removals, etc.
(for-each (match-lambda
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index 0efc190b22..209f0d8be9 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -258,38 +258,36 @@ downloaded and authenticated; not updating~%")
(define (list-dependents packages)
"List all the things that would need to be rebuilt if PACKAGES are changed."
- (with-store store
- (run-with-store store
- ;; Using %BAG-NODE-TYPE is more accurate than using %PACKAGE-NODE-TYPE
- ;; because it includes implicit dependencies.
- (mlet %store-monad ((edges (node-back-edges %bag-node-type
- (all-packages))))
- (let* ((dependents (node-transitive-edges packages edges))
- (covering (filter (lambda (node)
- (null? (edges node)))
- dependents)))
- (match dependents
- (()
- (format (current-output-port)
- (N_ "No dependents other than itself: ~{~a~}~%"
- "No dependents other than themselves: ~{~a~^ ~}~%"
- (length packages))
- (map package-full-name packages)))
+ ;; Using %BAG-NODE-TYPE is more accurate than using %PACKAGE-NODE-TYPE
+ ;; because it includes implicit dependencies.
+ (mlet %store-monad ((edges (node-back-edges %bag-node-type
+ (all-packages))))
+ (let* ((dependents (node-transitive-edges packages edges))
+ (covering (filter (lambda (node)
+ (null? (edges node)))
+ dependents)))
+ (match dependents
+ (()
+ (format (current-output-port)
+ (N_ "No dependents other than itself: ~{~a~}~%"
+ "No dependents other than themselves: ~{~a~^ ~}~%"
+ (length packages))
+ (map package-full-name packages)))
- ((x)
- (format (current-output-port)
- (_ "A single dependent package: ~a~%")
- (package-full-name x)))
- (lst
- (format (current-output-port)
- (N_ "Building the following package would ensure ~d \
+ ((x)
+ (format (current-output-port)
+ (_ "A single dependent package: ~a~%")
+ (package-full-name x)))
+ (lst
+ (format (current-output-port)
+ (N_ "Building the following package would ensure ~d \
dependent packages are rebuilt: ~*~{~a~^ ~}~%"
- "Building the following ~d packages would ensure ~d \
+ "Building the following ~d packages would ensure ~d \
dependent packages are rebuilt: ~{~a~^ ~}~%"
- (length covering))
- (length covering) (length dependents)
- (map package-full-name covering))))
- (return #t))))))
+ (length covering))
+ (length covering) (length dependents)
+ (map package-full-name covering))))
+ (return #t))))
;;;
@@ -381,31 +379,36 @@ update would trigger a complete rebuild."
(some ; user-specified packages
some))))
(with-error-handling
- (cond
- (list-dependent?
- (list-dependents packages))
- (update?
- (let ((store (open-connection)))
- (parameterize ((%openpgp-key-server
- (or (assoc-ref opts 'key-server)
- (%openpgp-key-server)))
- (%gpg-command
- (or (assoc-ref opts 'gpg-command)
- (%gpg-command))))
- (for-each
- (cut update-package store <> updaters
- #:key-download key-download)
- packages))))
- (else
- (for-each (lambda (package)
- (match (package-update-path package updaters)
- ((? upstream-source? source)
- (let ((loc (or (package-field-location package 'version)
- (package-location package))))
- (format (current-error-port)
- (_ "~a: ~a would be upgraded from ~a to ~a~%")
- (location->string loc)
- (package-name package) (package-version package)
- (upstream-source-version source))))
- (#f #f)))
- packages))))))
+ (with-store store
+ (run-with-store store
+ (cond
+ (list-dependent?
+ (list-dependents packages))
+ (update?
+ (parameterize ((%openpgp-key-server
+ (or (assoc-ref opts 'key-server)
+ (%openpgp-key-server)))
+ (%gpg-command
+ (or (assoc-ref opts 'gpg-command)
+ (%gpg-command))))
+ (for-each
+ (cut update-package store <> updaters
+ #:key-download key-download)
+ packages)
+ (with-monad %store-monad
+ (return #t))))
+ (else
+ (for-each (lambda (package)
+ (match (package-update-path package updaters)
+ ((? upstream-source? source)
+ (let ((loc (or (package-field-location package 'version)
+ (package-location package))))
+ (format (current-error-port)
+ (_ "~a: ~a would be upgraded from ~a to ~a~%")
+ (location->string loc)
+ (package-name package) (package-version package)
+ (upstream-source-version source))))
+ (#f #f)))
+ packages)
+ (with-monad %store-monad
+ (return #t)))))))))
diff --git a/guix/scripts/size.scm b/guix/scripts/size.scm
index be1e8ca087..f28832ce90 100644
--- a/guix/scripts/size.scm
+++ b/guix/scripts/size.scm
@@ -91,15 +91,16 @@ if ITEM is not in the store."
(sort profile
(match-lambda*
((($ <profile> _ _ total1) ($ <profile> _ _ total2))
- (> total1 total2)))))))
+ (> total1 total2)))))
+ (format port (_ "total: ~,1f MiB~%") (/ whole MiB 1.))))
(define display-profile*
(lift display-profile %store-monad))
-(define (substitutable-requisites store item)
- "Return the list of requisites of ITEM based on information available in
+(define (substitutable-requisites store items)
+ "Return the list of requisites of ITEMS based on information available in
substitutes."
- (let loop ((items (list item))
+ (let loop ((items items)
(result '()))
(match items
(()
@@ -113,23 +114,23 @@ substitutes."
(append (append-map substitutable-references info)
result)))))))
-(define (requisites* item)
+(define (requisites* items)
"Return as a monadic value the requisites of ITEMS, based either on the
information available in the local store or using information about
substitutes."
(lambda (store)
(guard (c ((nix-protocol-error? c)
- (values (substitutable-requisites store item)
+ (values (substitutable-requisites store items)
store)))
- (values (requisites store item) store))))
+ (values (requisites store items) store))))
-(define (store-profile item)
+(define (store-profile items)
"Return as a monadic value a list of <profile> objects representing the
-profile of ITEM and its requisites."
- (mlet* %store-monad ((refs (>>= (requisites* item)
+profile of ITEMS and their requisites."
+ (mlet* %store-monad ((refs (>>= (requisites* items)
(lambda (refs)
(return (delete-duplicates
- (cons item refs))))))
+ (append items refs))))))
(sizes (mapm %store-monad
(lambda (item)
(>>= (file-size item)
@@ -137,7 +138,7 @@ profile of ITEM and its requisites."
(return (cons item size)))))
refs)))
(define (dependency-size item)
- (mlet %store-monad ((deps (requisites* item)))
+ (mlet %store-monad ((deps (requisites* (list item))))
(foldm %store-monad
(lambda (item total)
(return (+ (assoc-ref sizes item) total)))
@@ -273,7 +274,7 @@ Report the size of PACKAGE and its dependencies.\n"))
(match files
(()
(leave (_ "missing store item argument\n")))
- ((file)
+ ((files ..1)
(leave-on-EPIPE
;; Turn off grafts because (1) hydra.gnu.org does not serve grafted
;; packages, and (2) they do not make any difference on the
@@ -285,13 +286,12 @@ Report the size of PACKAGE and its dependencies.\n"))
#:substitute-urls urls)
(run-with-store store
- (mlet* %store-monad ((item (ensure-store-item file))
- (profile (store-profile item)))
+ (mlet* %store-monad ((items (mapm %store-monad
+ ensure-store-item files))
+ (profile (store-profile items)))
(if map-file
(begin
(profile->page-map profile map-file)
(return #t))
(display-profile* profile)))
- #:system system)))))
- ((files ...)
- (leave (_ "too many arguments\n")))))))
+ #:system system)))))))))
diff --git a/guix/scripts/substitute.scm b/guix/scripts/substitute.scm
index 5cdc55f2b2..81ce770dc5 100755
--- a/guix/scripts/substitute.scm
+++ b/guix/scripts/substitute.scm
@@ -889,7 +889,11 @@ DESTINATION as a nar file. Verify the substitute against ACL."
;; Tell the daemon what the expected hash of the Nar itself is.
(format #t "~a~%" (narinfo-hash narinfo))
- (format (current-error-port) "Downloading ~a~:[~*~; (~a installed)~]...~%"
+ (format (current-error-port)
+ ;; TRANSLATORS: The second part of this message looks like
+ ;; "(4.1MiB installed)"; it shows the size of the package once
+ ;; installed.
+ (_ "Downloading ~a~:[~*~; (~a installed)~]...~%")
(store-path-abbreviation store-item)
;; Use the Nar size as an estimate of the installed size.
(narinfo-size narinfo)
diff --git a/guix/store.scm b/guix/store.scm
index 4d89f4a413..e3033ee61a 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -803,12 +803,12 @@ the list of references")
(loop items tail
(cons head result)))))))))
-(define* (fold-path store proc seed path
+(define* (fold-path store proc seed paths
#:optional (relatives (cut references store <>)))
- "Call PROC for each of the RELATIVES of PATH, exactly once, and return the
+ "Call PROC for each of the RELATIVES of PATHS, exactly once, and return the
result formed from the successive calls to PROC, the first of which is passed
SEED."
- (let loop ((paths (list path))
+ (let loop ((paths paths)
(result seed)
(seen vlist-null))
(match paths
@@ -822,10 +822,10 @@ SEED."
(()
result))))
-(define (requisites store path)
- "Return the requisites of PATH, including PATH---i.e., its closure (all its
-references, recursively)."
- (fold-path store cons '() path))
+(define (requisites store paths)
+ "Return the requisites of PATHS, including PATHS---i.e., their closures (all
+its references, recursively)."
+ (fold-path store cons '() paths))
(define (topologically-sorted store paths)
"Return a list containing PATHS and all their references sorted in
diff --git a/guix/ui.scm b/guix/ui.scm
index 8310974ac7..cbc9dc841a 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -6,7 +6,7 @@
;;; Copyright © 2014 Cyrill Schenkel <cyrill.schenkel@gmail.com>
;;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2015 David Thompson <davet@gnu.org>
-;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
+;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -313,6 +313,10 @@ There is NO WARRANTY, to the extent permitted by law.
(exit 0))
(define (show-bug-report-information)
+ ;; TRANSLATORS: The placeholder indicates the bug-reporting address for this
+ ;; package. Please add another line saying "Report translation bugs to
+ ;; ...\n" with the address for translation bugs (typically your translation
+ ;; team's web or email address).
(format #t (_ "
Report bugs to: ~a.") %guix-bug-report-address)
(format #t (_ "
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index f9fd61adde..ae78e65199 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -1106,8 +1106,10 @@ void DerivationGoal::repairClosure()
/* Get the output closure. */
PathSet outputClosure;
- foreach (DerivationOutputs::iterator, i, drv.outputs)
+ foreach (DerivationOutputs::iterator, i, drv.outputs) {
+ if (!wantOutput(i->first, wantedOutputs)) continue;
computeFSClosure(worker.store, i->second.path, outputClosure);
+ }
/* Filter out our own outputs (which we have already checked). */
foreach (DerivationOutputs::iterator, i, drv.outputs)
@@ -1289,7 +1291,6 @@ void DerivationGoal::tryToBuild()
now hold the locks on the output paths, no other process can
build this derivation, so no further checks are necessary. */
validPaths = checkPathValidity(true, buildMode == bmRepair);
- assert(buildMode != bmCheck || validPaths.size() == drv.outputs.size());
if (buildMode != bmCheck && validPaths.size() == drv.outputs.size()) {
debug(format("skipping build of derivation `%1%', someone beat us to it") % drvPath);
outputLocks.setDeletion(true);
@@ -1717,7 +1718,7 @@ void DerivationGoal::startBuilder()
/* In a sandbox, for determinism, always use the same temporary
directory. */
- tmpDirInSandbox = useChroot ? "/tmp/guix-build-" + drvName + "-0" : tmpDir;
+ tmpDirInSandbox = useChroot ? canonPath("/tmp", true) + "/guix-build-" + drvName + "-0" : tmpDir;
/* For convenience, set an environment pointing to the top build
directory. */
@@ -2319,6 +2320,8 @@ void DerivationGoal::registerOutputs()
outputs to allow hard links between outputs. */
InodesSeen inodesSeen;
+ Path checkSuffix = "-check";
+
/* Check whether the output paths were created, and grep each
output path to determine what other paths it references. Also make all
output paths read-only. */
@@ -2344,7 +2347,7 @@ void DerivationGoal::registerOutputs()
&& redirectedBadOutputs.find(path) != redirectedBadOutputs.end()
&& pathExists(redirected))
replaceValidPath(path, redirected);
- if (buildMode == bmCheck)
+ if (buildMode == bmCheck && redirected != "")
actualPath = redirected;
}
@@ -2428,9 +2431,20 @@ void DerivationGoal::registerOutputs()
PathSet references = scanForReferences(actualPath, allPaths, hash);
if (buildMode == bmCheck) {
+ if (!store->isValidPath(path)) continue;
ValidPathInfo info = worker.store.queryPathInfo(path);
- if (hash.first != info.hash)
- throw Error(format("derivation `%1%' may not be deterministic: hash mismatch in output `%2%'") % drvPath % path);
+ if (hash.first != info.hash) {
+ if (settings.keepFailed) {
+ Path dst = path + checkSuffix;
+ if (pathExists(dst)) deletePath(dst);
+ if (rename(actualPath.c_str(), dst.c_str()))
+ throw SysError(format("renaming `%1%' to `%2%'") % actualPath % dst);
+ throw Error(format("derivation `%1%' may not be deterministic: output `%2%' differs from ‘%3%’")
+ % drvPath % path % dst);
+ } else
+ throw Error(format("derivation `%1%' may not be deterministic: output `%2%' differs")
+ % drvPath % path);
+ }
continue;
}
@@ -2475,9 +2489,11 @@ void DerivationGoal::registerOutputs()
checkRefs("disallowedReferences", false, false);
checkRefs("disallowedRequisites", false, true);
- worker.store.optimisePath(path); // FIXME: combine with scanForReferences()
+ if (curRound == nrRounds) {
+ worker.store.optimisePath(path); // FIXME: combine with scanForReferences()
- worker.store.markContentsGood(path);
+ worker.store.markContentsGood(path);
+ }
ValidPathInfo info;
info.path = path;
@@ -2490,10 +2506,37 @@ void DerivationGoal::registerOutputs()
if (buildMode == bmCheck) return;
- if (curRound > 1 && prevInfos != infos)
- throw NotDeterministic(
- format("result of ‘%1%’ differs from previous round; rejecting as non-deterministic")
- % drvPath);
+ /* Compare the result with the previous round, and report which
+ path is different, if any.*/
+ if (curRound > 1 && prevInfos != infos) {
+ assert(prevInfos.size() == infos.size());
+ for (auto i = prevInfos.begin(), j = infos.begin(); i != prevInfos.end(); ++i, ++j)
+ if (!(*i == *j)) {
+ Path prev = i->path + checkSuffix;
+ if (pathExists(prev))
+ throw NotDeterministic(
+ format("output ‘%1%’ of ‘%2%’ differs from ‘%3%’ from previous round")
+ % i->path % drvPath % prev);
+ else
+ throw NotDeterministic(
+ format("output ‘%1%’ of ‘%2%’ differs from previous round")
+ % i->path % drvPath);
+ }
+ assert(false); // shouldn't happen
+ }
+
+ if (settings.keepFailed) {
+ for (auto & i : drv.outputs) {
+ Path prev = i.second.path + checkSuffix;
+ if (pathExists(prev)) deletePath(prev);
+ if (curRound < nrRounds) {
+ Path dst = i.second.path + checkSuffix;
+ if (rename(i.second.path.c_str(), dst.c_str()))
+ throw SysError(format("renaming ‘%1%’ to ‘%2%’") % i.second.path % dst);
+ }
+ }
+
+ }
if (curRound < nrRounds) {
prevInfos = infos;
@@ -3480,8 +3523,17 @@ void LocalStore::repairPath(const Path & path)
worker.run(goals);
- if (goal->getExitCode() != Goal::ecSuccess)
- throw Error(format("cannot repair path `%1%'") % path, worker.exitStatus());
+ if (goal->getExitCode() != Goal::ecSuccess) {
+ /* Since substituting the path didn't work, if we have a valid
+ deriver, then rebuild the deriver. */
+ Path deriver = queryDeriver(path);
+ if (deriver != "" && isValidPath(deriver)) {
+ goals.clear();
+ goals.insert(worker.makeDerivationGoal(deriver, StringSet(), bmRepair));
+ worker.run(goals);
+ } else
+ throw Error(format("cannot repair path `%1%'") % path, worker.exitStatus());
+ }
}
diff --git a/nix/libstore/local-store.cc b/nix/libstore/local-store.cc
index 11f61ae030..347e8a703f 100644
--- a/nix/libstore/local-store.cc
+++ b/nix/libstore/local-store.cc
@@ -606,10 +606,10 @@ static void canonicalisePathMetaData_(const Path & path, uid_t fromUid, InodesSe
users group); we check for this case below. */
if (st.st_uid != geteuid()) {
#if HAVE_LCHOWN
- if (lchown(path.c_str(), geteuid(), (gid_t) -1) == -1)
+ if (lchown(path.c_str(), geteuid(), getegid()) == -1)
#else
if (!S_ISLNK(st.st_mode) &&
- chown(path.c_str(), geteuid(), (gid_t) -1) == -1)
+ chown(path.c_str(), geteuid(), getegid()) == -1)
#endif
throw SysError(format("changing owner of `%1%' to %2%")
% path % geteuid());
@@ -1213,6 +1213,9 @@ template<class T> T LocalStore::getIntLineFromSubstituter(RunningSubstituter & r
PathSet LocalStore::querySubstitutablePaths(const PathSet & paths)
{
PathSet res;
+
+ if (!settings.useSubstitutes) return res;
+
foreach (Paths::iterator, i, settings.substituters) {
if (res.size() == paths.size()) break;
RunningSubstituter & run(runningSubstituters[*i]);
@@ -1239,6 +1242,8 @@ PathSet LocalStore::querySubstitutablePaths(const PathSet & paths)
void LocalStore::querySubstitutablePathInfos(const Path & substituter,
PathSet & paths, SubstitutablePathInfos & infos)
{
+ if (!settings.useSubstitutes) return;
+
RunningSubstituter & run(runningSubstituters[substituter]);
startSubstituter(substituter, run);
if (run.disabled) return;
diff --git a/nix/libstore/pathlocks.cc b/nix/libstore/pathlocks.cc
index 830858ff8d..9797ddd7ab 100644
--- a/nix/libstore/pathlocks.cc
+++ b/nix/libstore/pathlocks.cc
@@ -162,7 +162,11 @@ bool PathLocks::lockPaths(const PathSet & _paths,
PathLocks::~PathLocks()
{
- unlock();
+ try {
+ unlock();
+ } catch (...) {
+ ignoreException();
+ }
}
diff --git a/nix/libutil/xml-writer.cc b/nix/libutil/xml-writer.cc
deleted file mode 100644
index 01794001b2..0000000000
--- a/nix/libutil/xml-writer.cc
+++ /dev/null
@@ -1,94 +0,0 @@
-#include <assert.h>
-
-#include "xml-writer.hh"
-
-
-namespace nix {
-
-
-XMLWriter::XMLWriter(bool indent, std::ostream & output)
- : output(output), indent(indent)
-{
- output << "<?xml version='1.0' encoding='utf-8'?>" << std::endl;
- closed = false;
-}
-
-
-XMLWriter::~XMLWriter()
-{
- close();
-}
-
-
-void XMLWriter::close()
-{
- if (closed) return;
- while (!pendingElems.empty()) closeElement();
- closed = true;
-}
-
-
-void XMLWriter::indent_(unsigned int depth)
-{
- if (!indent) return;
- output << string(depth * 2, ' ');
-}
-
-
-void XMLWriter::openElement(const string & name,
- const XMLAttrs & attrs)
-{
- assert(!closed);
- indent_(pendingElems.size());
- output << "<" << name;
- writeAttrs(attrs);
- output << ">";
- if (indent) output << std::endl;
- pendingElems.push_back(name);
-}
-
-
-void XMLWriter::closeElement()
-{
- assert(!pendingElems.empty());
- indent_(pendingElems.size() - 1);
- output << "</" << pendingElems.back() << ">";
- if (indent) output << std::endl;
- pendingElems.pop_back();
- if (pendingElems.empty()) closed = true;
-}
-
-
-void XMLWriter::writeEmptyElement(const string & name,
- const XMLAttrs & attrs)
-{
- assert(!closed);
- indent_(pendingElems.size());
- output << "<" << name;
- writeAttrs(attrs);
- output << " />";
- if (indent) output << std::endl;
-}
-
-
-void XMLWriter::writeAttrs(const XMLAttrs & attrs)
-{
- for (XMLAttrs::const_iterator i = attrs.begin(); i != attrs.end(); ++i) {
- output << " " << i->first << "=\"";
- for (unsigned int j = 0; j < i->second.size(); ++j) {
- char c = i->second[j];
- if (c == '"') output << "&quot;";
- else if (c == '<') output << "&lt;";
- else if (c == '>') output << "&gt;";
- else if (c == '&') output << "&amp;";
- /* Escape newlines to prevent attribute normalisation (see
- XML spec, section 3.3.3. */
- else if (c == '\n') output << "&#xA;";
- else output << c;
- }
- output << "\"";
- }
-}
-
-
-}
diff --git a/nix/libutil/xml-writer.hh b/nix/libutil/xml-writer.hh
deleted file mode 100644
index 3cefe3712c..0000000000
--- a/nix/libutil/xml-writer.hh
+++ /dev/null
@@ -1,69 +0,0 @@
-#pragma once
-
-#include <iostream>
-#include <string>
-#include <list>
-#include <map>
-
-
-namespace nix {
-
-using std::string;
-using std::map;
-using std::list;
-
-
-typedef map<string, string> XMLAttrs;
-
-
-class XMLWriter
-{
-private:
-
- std::ostream & output;
-
- bool indent;
- bool closed;
-
- list<string> pendingElems;
-
-public:
-
- XMLWriter(bool indent, std::ostream & output);
- ~XMLWriter();
-
- void close();
-
- void openElement(const string & name,
- const XMLAttrs & attrs = XMLAttrs());
- void closeElement();
-
- void writeEmptyElement(const string & name,
- const XMLAttrs & attrs = XMLAttrs());
-
-private:
- void writeAttrs(const XMLAttrs & attrs);
-
- void indent_(unsigned int depth);
-};
-
-
-class XMLOpenElement
-{
-private:
- XMLWriter & writer;
-public:
- XMLOpenElement(XMLWriter & writer, const string & name,
- const XMLAttrs & attrs = XMLAttrs())
- : writer(writer)
- {
- writer.openElement(name, attrs);
- }
- ~XMLOpenElement()
- {
- writer.closeElement();
- }
-};
-
-
-}
diff --git a/nix/local.mk b/nix/local.mk
index 3c15531f54..07a92f74ea 100644
--- a/nix/local.mk
+++ b/nix/local.mk
@@ -21,7 +21,7 @@
# Integration of the `guix-daemon' code taken from upstream Nix.
#
-BUILT_SOURCES += nix/libstore/schema.sql.hh
+BUILT_SOURCES += %D%/libstore/schema.sql.hh
CLEANFILES += $(BUILT_SOURCES) etc/guix-daemon.service etc/guix-daemon.conf
noinst_LIBRARIES = libformat.a libutil.a libstore.a
@@ -30,80 +30,78 @@ noinst_LIBRARIES = libformat.a libutil.a libstore.a
AM_CXXFLAGS = -Wall -std=c++11
libformat_a_SOURCES = \
- nix/boost/format/free_funcs.cc \
- nix/boost/format/parsing.cc \
- nix/boost/format/format_implementation.cc
+ %D%/boost/format/free_funcs.cc \
+ %D%/boost/format/parsing.cc \
+ %D%/boost/format/format_implementation.cc
libformat_headers = \
- nix/boost/throw_exception.hpp \
- nix/boost/format.hpp \
- nix/boost/assert.hpp \
- nix/boost/format/macros_default.hpp \
- nix/boost/format/format_fwd.hpp \
- nix/boost/format/format_class.hpp \
- nix/boost/format/exceptions.hpp \
- nix/boost/format/group.hpp \
- nix/boost/format/feed_args.hpp \
- nix/boost/format/internals_fwd.hpp \
- nix/boost/format/internals.hpp
+ %D%/boost/throw_exception.hpp \
+ %D%/boost/format.hpp \
+ %D%/boost/assert.hpp \
+ %D%/boost/format/macros_default.hpp \
+ %D%/boost/format/format_fwd.hpp \
+ %D%/boost/format/format_class.hpp \
+ %D%/boost/format/exceptions.hpp \
+ %D%/boost/format/group.hpp \
+ %D%/boost/format/feed_args.hpp \
+ %D%/boost/format/internals_fwd.hpp \
+ %D%/boost/format/internals.hpp
libformat_a_CPPFLAGS = \
-I$(top_srcdir)/nix
libutil_a_SOURCES = \
- nix/libutil/archive.cc \
- nix/libutil/affinity.cc \
- nix/libutil/serialise.cc \
- nix/libutil/util.cc \
- nix/libutil/xml-writer.cc \
- nix/libutil/hash.cc \
- nix/libutil/gcrypt-hash.cc
+ %D%/libutil/archive.cc \
+ %D%/libutil/affinity.cc \
+ %D%/libutil/serialise.cc \
+ %D%/libutil/util.cc \
+ %D%/libutil/hash.cc \
+ %D%/libutil/gcrypt-hash.cc
libutil_headers = \
- nix/libutil/affinity.hh \
- nix/libutil/hash.hh \
- nix/libutil/serialise.hh \
- nix/libutil/xml-writer.hh \
- nix/libutil/util.hh \
- nix/libutil/archive.hh \
- nix/libutil/types.hh \
- nix/libutil/gcrypt-hash.hh \
- nix/libutil/md5.h \
- nix/libutil/sha1.h \
- nix/libutil/sha256.h \
- nix/libutil/sha512.h
+ %D%/libutil/affinity.hh \
+ %D%/libutil/hash.hh \
+ %D%/libutil/serialise.hh \
+ %D%/libutil/util.hh \
+ %D%/libutil/archive.hh \
+ %D%/libutil/types.hh \
+ %D%/libutil/gcrypt-hash.hh \
+ %D%/libutil/md5.h \
+ %D%/libutil/sha1.h \
+ %D%/libutil/sha256.h \
+ %D%/libutil/sha512.h
libutil_a_CPPFLAGS = \
-I$(top_builddir)/nix \
- -I$(top_srcdir)/nix/libutil \
+ -I$(top_srcdir)/%D%/libutil \
$(libformat_a_CPPFLAGS)
libstore_a_SOURCES = \
- nix/libstore/gc.cc \
- nix/libstore/globals.cc \
- nix/libstore/misc.cc \
- nix/libstore/references.cc \
- nix/libstore/store-api.cc \
- nix/libstore/optimise-store.cc \
- nix/libstore/local-store.cc \
- nix/libstore/build.cc \
- nix/libstore/pathlocks.cc \
- nix/libstore/derivations.cc
+ %D%/libstore/gc.cc \
+ %D%/libstore/globals.cc \
+ %D%/libstore/misc.cc \
+ %D%/libstore/references.cc \
+ %D%/libstore/store-api.cc \
+ %D%/libstore/optimise-store.cc \
+ %D%/libstore/local-store.cc \
+ %D%/libstore/build.cc \
+ %D%/libstore/pathlocks.cc \
+ %D%/libstore/derivations.cc
libstore_headers = \
- nix/libstore/references.hh \
- nix/libstore/pathlocks.hh \
- nix/libstore/globals.hh \
- nix/libstore/worker-protocol.hh \
- nix/libstore/derivations.hh \
- nix/libstore/misc.hh \
- nix/libstore/local-store.hh \
- nix/libstore/store-api.hh
+ %D%/libstore/references.hh \
+ %D%/libstore/pathlocks.hh \
+ %D%/libstore/globals.hh \
+ %D%/libstore/worker-protocol.hh \
+ %D%/libstore/derivations.hh \
+ %D%/libstore/misc.hh \
+ %D%/libstore/local-store.hh \
+ %D%/libstore/store-api.hh
libstore_a_CPPFLAGS = \
$(libutil_a_CPPFLAGS) \
- -I$(top_srcdir)/nix/libstore \
- -I$(top_builddir)/nix/libstore \
+ -I$(top_srcdir)/%D%/libstore \
+ -I$(top_builddir)/%D%/libstore \
-DNIX_STORE_DIR=\"$(storedir)\" \
-DNIX_DATA_DIR=\"$(datadir)\" \
-DNIX_STATE_DIR=\"$(localstatedir)/guix\" \
@@ -121,29 +119,29 @@ bin_PROGRAMS = guix-daemon
sbin_PROGRAMS = guix-register
guix_daemon_SOURCES = \
- nix/nix-daemon/nix-daemon.cc \
- nix/nix-daemon/guix-daemon.cc
+ %D%/nix-daemon/nix-daemon.cc \
+ %D%/nix-daemon/guix-daemon.cc
guix_daemon_CPPFLAGS = \
-DLOCALEDIR=\"$(localedir)\" \
$(libutil_a_CPPFLAGS) \
- -I$(top_srcdir)/nix/libstore
+ -I$(top_srcdir)/%D%/libstore
guix_daemon_LDADD = \
libstore.a libutil.a libformat.a -lbz2 \
$(SQLITE3_LIBS) $(LIBGCRYPT_LIBS)
guix_daemon_headers = \
- nix/nix-daemon/shared.hh
+ %D%/nix-daemon/shared.hh
guix_register_SOURCES = \
- nix/guix-register/guix-register.cc
+ %D%/guix-register/guix-register.cc
guix_register_CPPFLAGS = \
$(libutil_a_CPPFLAGS) \
$(libstore_a_CPPFLAGS) \
- -I$(top_srcdir)/nix/libstore
+ -I$(top_srcdir)/%D%/libstore
# XXX: Should we start using shared libs?
guix_register_LDADD = \
@@ -155,7 +153,7 @@ noinst_HEADERS = \
$(libformat_headers) $(libutil_headers) $(libstore_headers) \
$(guix_daemon_headers)
-nix/libstore/schema.sql.hh: nix/libstore/schema.sql
+%D%/libstore/schema.sql.hh: %D%/libstore/schema.sql
$(AM_V_GEN)$(GUILE) --no-auto-compile -c \
"(use-modules (rnrs io ports)) \
(call-with-output-file \"$@\" \
@@ -165,20 +163,20 @@ nix/libstore/schema.sql.hh: nix/libstore/schema.sql
(write (get-string-all in) out)))))"
nodist_pkglibexec_SCRIPTS = \
- nix/scripts/list-runtime-roots \
- nix/scripts/substitute
+ %D%/scripts/list-runtime-roots \
+ %D%/scripts/substitute
if BUILD_DAEMON_OFFLOAD
nodist_pkglibexec_SCRIPTS += \
- nix/scripts/offload
+ %D%/scripts/offload
endif BUILD_DAEMON_OFFLOAD
# XXX: It'd be better to hide it in $(pkglibexecdir).
nodist_libexec_SCRIPTS = \
- nix/scripts/guix-authenticate
+ %D%/scripts/guix-authenticate
# The '.service' file for systemd.
systemdservicedir = $(libdir)/systemd/system
@@ -203,9 +201,9 @@ etc/guix-daemon.conf: etc/guix-daemon.conf.in \
mv "$@.tmp" "$@"
EXTRA_DIST += \
- nix/libstore/schema.sql \
- nix/AUTHORS \
- nix/COPYING \
+ %D%/libstore/schema.sql \
+ %D%/AUTHORS \
+ %D%/COPYING \
etc/guix-daemon.service.in \
etc/guix-daemon.conf.in
diff --git a/po/packages/POTFILES.in b/po/packages/POTFILES.in
index 60c6ab32d5..29816f8b80 100644
--- a/po/packages/POTFILES.in
+++ b/po/packages/POTFILES.in
@@ -49,8 +49,8 @@ gnu/packages/scheme.scm
gnu/packages/search.scm
gnu/packages/serveez.scm
gnu/packages/telephony.scm
+gnu/packages/tex.scm
gnu/packages/texinfo.scm
-gnu/packages/texlive.scm
gnu/packages/textutils.scm
gnu/packages/version-control.scm
gnu/packages/webkit.scm
diff --git a/tests/bournish.scm b/tests/bournish.scm
new file mode 100644
index 0000000000..0f529ce42f
--- /dev/null
+++ b/tests/bournish.scm
@@ -0,0 +1,42 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (test-bournish)
+ #:use-module (guix build bournish)
+ #:use-module (system base compile)
+ #:use-module (system base language)
+ #:use-module (srfi srfi-64))
+
+
+(test-begin "bournish")
+
+(test-equal "single statement"
+ '(chdir "/foo")
+ (read-and-compile (open-input-string "cd /foo")
+ #:from %bournish-language #:to 'scheme))
+
+(test-equal "multiple statements"
+ '(begin
+ (chdir "/foo")
+ (getcwd)
+ ((@@ (guix build bournish) ls-command-implementation)))
+ (read-and-compile (open-input-string "cd /foo\npwd\nls")
+ #:from %bournish-language #:to 'scheme))
+
+(test-end "bournish")
+
diff --git a/tests/containers.scm b/tests/containers.scm
index c11cdd1ce5..5a0f9937bb 100644
--- a/tests/containers.scm
+++ b/tests/containers.scm
@@ -79,6 +79,18 @@
(assert-exit (file-exists? "/testing")))
#:namespaces '(user mnt))))
+(test-equal "call-with-container, mnt namespace, wrong bind mount"
+ `(system-error ,ENOENT)
+ ;; An exception should be raised; see <http://bugs.gnu.org/23306>.
+ (catch 'system-error
+ (lambda ()
+ (call-with-container '(("/does-not-exist" device "/foo"
+ "none" (bind-mount) #f #f))
+ (const #t)
+ #:namespaces '(user mnt)))
+ (lambda args
+ (list 'system-error (system-error-errno args)))))
+
(test-assert "call-with-container, all namespaces"
(zero?
(call-with-container '()
diff --git a/tests/cve.scm b/tests/cve.scm
index 26e710ce70..3fbb22d3c6 100644
--- a/tests/cve.scm
+++ b/tests/cve.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.
;;;
@@ -32,12 +32,10 @@
(list
;; CVE-2003-0001 has no "/a" in its product list so it is omitted.
;; CVE-2004-0230 lists "tcp" as an application, but lacks a version number.
- (vulnerability "CVE-2008-2335" '(("phpvid" . "1.1") ("phpvid" . "1.2")))
- (vulnerability "CVE-2008-3522" '(("enterprise_virtualization" . "3.5")
- ("jasper" . "1.900.1")))
- (vulnerability "CVE-2009-3301" '(("openoffice.org" . "2.1.0")
- ("openoffice.org" . "2.3.0")
- ("openoffice.org" . "2.2.1")))
+ (vulnerability "CVE-2008-2335" '(("phpvid" "1.2" "1.1")))
+ (vulnerability "CVE-2008-3522" '(("enterprise_virtualization" "3.5")
+ ("jasper" "1.900.1")))
+ (vulnerability "CVE-2009-3301" '(("openoffice.org" "2.3.0" "2.2.1" "2.1.0")))
;; CVE-2015-8330 has no software list.
))
@@ -48,9 +46,8 @@
%expected-vulnerabilities
(call-with-input-file %sample xml->vulnerabilities))
-(test-equal ""
- (list `(("1.1" . ,(first %expected-vulnerabilities))
- ("1.2" . ,(first %expected-vulnerabilities)))
+(test-equal "vulnerabilities->lookup-proc"
+ (list (list (first %expected-vulnerabilities))
'()
'()
(list (second %expected-vulnerabilities))
diff --git a/tests/graph.scm b/tests/graph.scm
index 32317195d7..1ce06cc817 100644
--- a/tests/graph.scm
+++ b/tests/graph.scm
@@ -275,4 +275,17 @@ edges."
(return (lset= eq? (node-transitive-edges (list p2) edges)
(list p1a p1b p0)))))))
+(test-equal "node-reachable-count"
+ '(3 3)
+ (run-with-store %store
+ (let* ((p0 (dummy-package "p0"))
+ (p1a (dummy-package "p1a" (inputs `(("p0" ,p0)))))
+ (p1b (dummy-package "p1b" (inputs `(("p0" ,p0)))))
+ (p2 (dummy-package "p2" (inputs `(("p1a" ,p1a) ("p1b" ,p1b))))))
+ (mlet* %store-monad ((all -> (list p2 p1a p1b p0))
+ (edges (node-edges %package-node-type all))
+ (back (node-back-edges %package-node-type all)))
+ (return (list (node-reachable-count (list p2) edges)
+ (node-reachable-count (list p0) back)))))))
+
(test-end "graph")
diff --git a/tests/guix-environment-container.sh b/tests/guix-environment-container.sh
index 0a7ea481fc..5ea6c49263 100644
--- a/tests/guix-environment-container.sh
+++ b/tests/guix-environment-container.sh
@@ -44,6 +44,16 @@ else
test $? = 42
fi
+# Make sure file-not-found errors in mounts are reported.
+if guix environment --container --ad-hoc --bootstrap guile-bootstrap \
+ --expose=/does-not-exist -- guile -c 1 2> "$tmpdir/error"
+then
+ false
+else
+ grep "/does-not-exist" "$tmpdir/error"
+ grep "[Nn]o such file" "$tmpdir/error"
+fi
+
# Make sure that the right directories are mapped.
mount_test_code="
(use-modules (ice-9 rdelim)
diff --git a/tests/guix-environment.sh b/tests/guix-environment.sh
index 5ad8dfa82a..0b5123ab45 100644
--- a/tests/guix-environment.sh
+++ b/tests/guix-environment.sh
@@ -57,6 +57,21 @@ else
test $? = 42
fi
+case "`uname -m`" in
+ x86_64)
+ # On x86_64, we should be able to create a 32-bit environment.
+ guix environment --bootstrap --ad-hoc guile-bootstrap --pure \
+ -- guile -c '(exit (string-prefix? "x86_64" %host-type))'
+ guix environment --bootstrap --ad-hoc guile-bootstrap --pure \
+ -s i686-linux \
+ -- guile -c '(exit (string-prefix? "i686" %host-type))'
+ ;;
+ *)
+ echo "nothing to do" >&2
+ ;;
+esac
+
+
# Same as above, but with deprecated -E flag.
if guix environment --bootstrap --ad-hoc guile-bootstrap --pure \
-E "guile -c '(exit 42)'"
diff --git a/tests/guix-lint.sh b/tests/guix-lint.sh
index c105521ec7..7ddc7c265b 100644
--- a/tests/guix-lint.sh
+++ b/tests/guix-lint.sh
@@ -54,7 +54,7 @@ grep_warning ()
# 2) the synopsis starts with a lower-case letter;
# 3) the description has a single space following the end-of-sentence period.
-out=`guix lint dummy 2>&1`
+out=`guix lint -c synopsis,description dummy 2>&1`
if [ `grep_warning "$out"` -ne 3 ]
then false; else true; fi
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 28c34dbc6a..68a1946aa0 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -140,6 +140,20 @@ rm "$profile" "$profile"-[0-9]-link
guix gc -d "$real_profile"
[ ! -d "$real_profile" ]
+# Package transformations.
+
+# Make sure we get the right version number when using '--with-source'.
+mkdir "$module_dir"
+emacs_tarball="$module_dir/emacs-42.5.9rc7.tar.gz"
+touch "$emacs_tarball"
+guix package -p "$profile" -i emacs --with-source="$emacs_tarball" -n \
+ 2> "$tmpfile"
+grep -E 'emacs[[:blank:]]+42\.5\.9rc7[[:blank:]]+.*-emacs-42.5.9rc7' \
+ "$tmpfile"
+rm "$emacs_tarball" "$tmpfile"
+rmdir "$module_dir"
+
+
#
# Try with the default profile.
#
diff --git a/tests/size.scm b/tests/size.scm
index fcd590283d..068ebc1d68 100644
--- a/tests/size.scm
+++ b/tests/size.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.
;;;
@@ -54,7 +54,7 @@
(mbegin %store-monad
(built-derivations (list file2))
(mlet %store-monad ((profiles (store-profile
- (derivation->output-path file2)))
+ (list (derivation->output-path file2))))
(bash (interned-file
(search-bootstrap-binary
"bash" (%current-system)) "bash"
diff --git a/tests/store.scm b/tests/store.scm
index eeadcb94f8..38b8efce96 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -205,7 +205,8 @@
(%current-system))))
(d (derivation s "the-thing" b '("--help")
#:inputs `((,b)))))
- (references/substitutes s (list (derivation->output-path d) b))))))
+ (references/substitutes s (list (derivation->output-path d) b))
+ #f))))
(test-assert "references/substitutes with substitute info"
(with-store s
@@ -231,6 +232,32 @@
(,t1) ;refs of T2
())))))) ;refs of T1
+(test-equal "substitutable-path-info when substitutes are turned off"
+ '()
+ (with-store s
+ (set-build-options s #:use-substitutes? #f)
+ (let* ((b (add-to-store s "bash" #t "sha256"
+ (search-bootstrap-binary "bash"
+ (%current-system))))
+ (d (derivation s "the-thing" b '("--version")
+ #:inputs `((,b))))
+ (o (derivation->output-path d)))
+ (with-derivation-narinfo d
+ (substitutable-path-info s (list o))))))
+
+(test-equal "substitutable-paths when substitutes are turned off"
+ '()
+ (with-store s
+ (set-build-options s #:use-substitutes? #f)
+ (let* ((b (add-to-store s "bash" #t "sha256"
+ (search-bootstrap-binary "bash"
+ (%current-system))))
+ (d (derivation s "the-thing" b '("--version")
+ #:inputs `((,b))))
+ (o (derivation->output-path d)))
+ (with-derivation-narinfo d
+ (substitutable-paths s (list o))))))
+
(test-assert "requisites"
(let* ((t1 (add-text-to-store %store "random1"
(random-text) '()))
@@ -244,10 +271,12 @@
(and (= (length x) (length y))
(lset= equal? x y)))
- (and (same? (requisites %store t1) (list t1))
- (same? (requisites %store t2) (list t1 t2))
- (same? (requisites %store t3) (list t1 t2 t3))
- (same? (requisites %store t4) (list t1 t2 t3 t4)))))
+ (and (same? (requisites %store (list t1)) (list t1))
+ (same? (requisites %store (list t2)) (list t1 t2))
+ (same? (requisites %store (list t3)) (list t1 t2 t3))
+ (same? (requisites %store (list t4)) (list t1 t2 t3 t4))
+ (same? (requisites %store (list t1 t2 t3 t4))
+ (list t1 t2 t3 t4)))))
(test-assert "derivers"
(let* ((b (add-text-to-store %store "build" "echo $foo > $out" '()))