~ruther/guix-local

c4a1b6c2ba479c6abcd22cab6a1fcd560469e986 — Ludovic Courtès 11 years ago 2ed11b3 + 45c5b47
Merge branch 'master' into 'core-updates'.
130 files changed, 8537 insertions(+), 1242 deletions(-)

M .dir-locals.el
M .gitignore
M AUTHORS
M Makefile.am
M THANKS
M build-aux/hydra/demo-os.scm
M configure.ac
M doc/emacs.texi
M doc/guix.texi
M emacs.am
M emacs/guix-backend.el
M emacs/guix-base.el
A emacs/guix-emacs.el
M emacs/guix-helper.scm.in
M emacs/guix-init.el.in
M emacs/guix-main.scm
A emacs/guix-profiles.el.in
M gnu-system.am
M gnu/build/activation.scm
M gnu/build/install.scm
M gnu/build/linux-boot.scm
A gnu/build/linux-modules.scm
M gnu/build/vm.scm
M gnu/packages/admin.scm
M gnu/packages/base.scm
A gnu/packages/bioinformatics.scm
M gnu/packages/bittorrent.scm
M gnu/packages/cdrom.scm
A gnu/packages/debug.scm
M gnu/packages/dictionaries.scm
M gnu/packages/disk.scm
M gnu/packages/dwm.scm
M gnu/packages/emacs.scm
M gnu/packages/fish.scm
M gnu/packages/fonts.scm
M gnu/packages/freeipmi.scm
M gnu/packages/games.scm
M gnu/packages/gimp.scm
M gnu/packages/gl.scm
M gnu/packages/glib.scm
M gnu/packages/global.scm
M gnu/packages/gnome.scm
M gnu/packages/gnunet.scm
M gnu/packages/gnupg.scm
M gnu/packages/gnutls.scm
M gnu/packages/gsasl.scm
M gnu/packages/gtk.scm
M gnu/packages/linux-libre-i686.conf
M gnu/packages/linux-libre-x86_64.conf
M gnu/packages/linux.scm
M gnu/packages/lisp.scm
A gnu/packages/llvm.scm
M gnu/packages/mail.scm
M gnu/packages/man.scm
M gnu/packages/maths.scm
A gnu/packages/mg.scm
M gnu/packages/mp3.scm
A gnu/packages/nutrition.scm
M gnu/packages/ocrad.scm
M gnu/packages/package-management.scm
M gnu/packages/parallel.scm
A gnu/packages/patches/glib-tests-gapplication.patch
M gnu/packages/patches/guile-linux-syscalls.patch
A gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch
A gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch
A gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch
A gnu/packages/patches/wmctrl-64-fix.patch
A gnu/packages/patches/xf86-video-openchrome-includes.patch
M gnu/packages/pcre.scm
M gnu/packages/perl.scm
M gnu/packages/pkg-config.scm
M gnu/packages/pretty-print.scm
M gnu/packages/python.scm
M gnu/packages/qemu.scm
M gnu/packages/qt.scm
D gnu/packages/scrot.scm
A gnu/packages/socat.scm
M gnu/packages/telephony.scm
M gnu/packages/texlive.scm
A gnu/packages/tre.scm
D gnu/packages/unclutter.scm
M gnu/packages/version-control.scm
M gnu/packages/video.scm
M gnu/packages/web.scm
M gnu/packages/wget.scm
A gnu/packages/xdisorg.scm
A gnu/packages/xfce.scm
M gnu/packages/xfig.scm
M gnu/packages/xorg.scm
A gnu/packages/yubico.scm
M gnu/services/ssh.scm
M gnu/services/xorg.scm
M gnu/system.scm
M gnu/system/file-systems.scm
M gnu/system/grub.scm
M gnu/system/install.scm
M gnu/system/linux-initrd.scm
A gnu/system/locale.scm
M gnu/system/shadow.scm
M gnu/system/vm.scm
M guix/build-system/glib-or-gtk.scm
M guix/build-system/python.scm
M guix/build/emacs-utils.scm
M guix/build/glib-or-gtk-build-system.scm
M guix/derivations.scm
M guix/download.scm
A guix/elf.scm
M guix/gnu-maintenance.scm
M guix/import/gnu.scm
M guix/licenses.scm
M guix/monads.scm
M guix/packages.scm
M guix/scripts/archive.scm
M guix/scripts/build.scm
M guix/scripts/environment.scm
M guix/scripts/package.scm
M guix/scripts/substitute-binary.scm
M guix/scripts/system.scm
M guix/store.scm
M guix/ui.scm
M guix/utils.scm
M nix/nix-daemon/guix-daemon.cc
M po/guix/POTFILES.in
M po/guix/eo.po
M po/guix/hu.po
M po/packages/LINGUAS
A po/packages/hu.po
M test-env.in
M tests/guix-build.sh
M tests/guix-package.sh
M .dir-locals.el => .dir-locals.el +2 -0
@@ 46,6 46,8 @@
   (eval . (put 'syntax-parameterize 'scheme-indent-function 1))
   (eval . (put 'with-monad 'scheme-indent-function 1))
   (eval . (put 'mbegin 'scheme-indent-function 1))
   (eval . (put 'mwhen 'scheme-indent-function 1))
   (eval . (put 'munless 'scheme-indent-function 1))
   (eval . (put 'mlet* 'scheme-indent-function 2))
   (eval . (put 'mlet 'scheme-indent-function 2))
   (eval . (put 'run-with-store 'scheme-indent-function 1))

M .gitignore => .gitignore +1 -0
@@ 110,3 110,4 @@ GTAGS
/emacs/guix-autoloads.el
/emacs/guix-helper.scm
/emacs/guix-init.el
/emacs/guix-profiles.el

M AUTHORS => AUTHORS +1 -0
@@ 13,6 13,7 @@ alphabetical order):
       Federico Beffa <beffa@fbengineering.ch>
          Marek Benc <merkur32@gmail.com>
            Sou Bunnbu (宋文武) <iyzsong@gmail.com>
          Tomáš Čech <sleep_walker@suse.cz>
        Ludovic Courtès <ludo@gnu.org>
           John Darrington <jmd@gnu.org>
        Andreas Enge <andreas@enge.fr>

M Makefile.am => Makefile.am +8 -0
@@ 56,6 56,7 @@ MODULES =					\
  guix/ftp-client.scm				\
  guix/http-client.scm				\
  guix/gnupg.scm				\
  guix/elf.scm					\
  guix/store.scm				\
  guix/svn-download.scm				\
  guix/ui.scm					\


@@ 281,6 282,13 @@ SUFFIXES = .go
guix_install_go_files = install-nobase_nodist_guilemoduleDATA
$(guix_install_go_files): install-nobase_dist_guilemoduleDATA

# The above trick doesn't work for 'config.go' because both 'config.scm' and
# 'config.go' are listed in $(nobase_nodist_guilemodule_DATA).  Thus, give it
# special treatment.
install-data-hook: set-bootstrap-executable-permissions
	touch "$(DESTDIR)$(guilemoduledir)/guix/config.go"


SUBDIRS = po/guix po/packages
BUILT_SOURCES =


M THANKS => THANKS +2 -0
@@ 26,11 26,13 @@ infrastructure help:
	    Niels Möller <nisse@lysator.liu.se>
	   Yutaka Niibe <gniibe@fsij.org>
             Adam Pribyl <pribyl@lowlevel.cz>
                  rekado <rekado@elephly.net>
      Bruno Félix Rezende Ribeiro <oitofelix@gnu.org>
	   Cyrill Schenkel <cyrill.schenkel@gmail.com>
	    Benno Schulenberg <coordinator@translationproject.org>
	     Alen Skondro <askondro@gmail.com>
	 Matthias Wachs <wachs@net.in.tum.de>
             Andy Wingo <wingo@pobox.com>
           Philip Woods <elzairthesorcerer@gmail.com>

GNU Guix also includes non-software works.  Thanks to the following

M build-aux/hydra/demo-os.scm => build-aux/hydra/demo-os.scm +1 -1
@@ 37,7 37,7 @@
(operating-system
 (host-name "gnu")
 (timezone "Europe/Paris")
 (locale "en_US.UTF-8")
 (locale "en_US.utf8")

 (bootloader (grub-configuration
              (device "/dev/sda")))

M configure.ac => configure.ac +2 -1
@@ 2,7 2,7 @@
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.68)
AC_INIT([GNU Guix], [0.8], [bug-guix@gnu.org], [guix],
AC_INIT([GNU Guix], [0.9], [bug-guix@gnu.org], [guix],
  [http://www.gnu.org/software/guix/])
AC_CONFIG_AUX_DIR([build-aux])



@@ 185,6 185,7 @@ AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"])
emacsuidir="${guilemoduledir}/guix/emacs"
AC_SUBST([emacsuidir])
AC_CONFIG_FILES([emacs/guix-init.el
                 emacs/guix-profiles.el
                 emacs/guix-helper.scm])

AC_OUTPUT

M doc/emacs.texi => doc/emacs.texi +15 -5
@@ 56,11 56,21 @@ Manual}):
(require 'guix-init)
@end example

Do not worry about the efficiency of that @code{require} thing.  It will
not load the whole ``guix.el'' package, it will just autoload the main
interactive commands (@pxref{Autoload,,, elisp, The GNU Emacs Lisp
Reference Manual}).

By default, along with autoloading (@pxref{Autoload,,, elisp, The GNU
Emacs Lisp Reference Manual}) the main interactive commands for
``guix.el'' (@pxref{Emacs Commands}), requiring @code{guix-init} will
also autoload commands for the Emacs packages installed in your user
profile.

To disable automatic loading of installed Emacs packages, set
@code{guix-package-enable-at-startup} variable to @code{nil} before
requiring @code{guix-init}.  This variable has the same meaning for
Emacs packages installed with Guix, as @code{package-enable-at-startup}
for the built-in Emacs package system (@pxref{Package Installation,,,
emacs, The GNU Emacs Manual}).

You can activate Emacs packages installed in your profile whenever you
want using @kbd{M-x@tie{}guix-emacs-load-autoloads}.

@node Emacs Usage
@subsection Usage

M doc/guix.texi => doc/guix.texi +324 -25
@@ 76,6 76,93 @@ package management tool written for the GNU system.
* GNU Free Documentation License::  The license of this manual.
* Concept Index::               Concepts.
* Programming Index::           Data types, functions, and variables.

@detailmenu
 --- The Detailed Node Listing ---

Installation

* Requirements::                Software needed to build and run Guix.
* Setting Up the Daemon::       Preparing the build daemon's environment.
* Invoking guix-daemon::        Running the build daemon.

Setting Up the Daemon

* Build Environment Setup::     Preparing the isolated build environment.
* Daemon Offload Setup::        Offloading builds to remote machines.

Package Management

* Features::                    How Guix will make your life brighter.
* Invoking guix package::       Package installation, removal, etc.
* Emacs Interface::             Package management from Emacs.
* Substitutes::                 Downloading pre-built binaries.
* Packages with Multiple Outputs::  Single source package, multiple outputs.
* Invoking guix gc::            Running the garbage collector.
* Invoking guix pull::          Fetching the latest Guix and distribution.
* Invoking guix archive::       Exporting and importing store files.

Programming Interface

* Defining Packages::           Defining new packages.
* Build Systems::               Specifying how packages are built.
* The Store::                   Manipulating the package store.
* Derivations::                 Low-level interface to package derivations.
* The Store Monad::             Purely functional interface to the store.
* G-Expressions::               Manipulating build expressions.

Utilities

* Invoking guix build::         Building packages from the command line.
* Invoking guix download::      Downloading a file and printing its hash.
* Invoking guix hash::          Computing the cryptographic hash of a file.
* Invoking guix import::        Importing package definitions.
* Invoking guix refresh::       Updating package definitions.
* Invoking guix lint::          Finding errors in package definitions.
* Invoking guix environment::   Setting up development environments.

GNU Distribution

* System Installation::         Installing the whole operating system.
* System Configuration::        Configuring a GNU system.
* Installing Debugging Files::  Feeding the debugger.
* Security Updates::            Deploying security fixes quickly.
* Package Modules::             Packages from the programmer's viewpoint.
* Packaging Guidelines::        Growing the distribution.
* Bootstrapping::               GNU/Linux built from scratch.
* Porting::                     Targeting another platform or kernel.

System Configuration

* Using the Configuration System::  Customizing your GNU system.
* operating-system Reference::  Detail of operating-system declarations.
* File Systems::                Configuring file system mounts.
* Mapped Devices::              Block device extra processing.
* User Accounts::               Specifying user accounts.
* Locales::                     Language and cultural convention settings.
* Services::                    Specifying system services.
* Setuid Programs::             Programs running with root privileges.
* Initial RAM Disk::            Linux-Libre bootstrapping.
* GRUB Configuration::          Configuring the boot loader.
* Invoking guix system::        Instantiating a system configuration.
* Defining Services::           Adding new service definitions.

Services

* Base Services::               Essential system services.
* Networking Services::         Network setup, SSH daemon, etc.
* X Window::                    Graphical display.

Packaging Guidelines

* Software Freedom::     What may go into the distribution.
* Package Naming::       What's in a name?
* Version Numbers::      When the name is not enough.
* Python Modules::       Taming the snake.
* Perl Modules::         Little pearls.
* Fonts::                Fond of fonts.

@end detailmenu
@end menu

@c *********************************************************************


@@ 260,6 347,15 @@ Bash syntax and the @code{shadow} commands):
  done
@end example

The @file{/gnu/store} directory (or whichever was specified with the
@code{--with-store-dir} option) must have ownership and permissions as
follows:

@example
# chgrp guix-builder /gnu/store
# chmod 1775 /gnu/store
@end example

@noindent
The @code{guix-daemon} program may then be run as @code{root} with:



@@ 499,7 595,7 @@ Cache build failures.  By default, only successful builds are cached.
Use @var{n} CPU cores to build each derivation; @code{0} means as many
as available.

The default value is @code{1}, but it may be overridden by clients, such
The default value is @code{0}, but it may be overridden by clients, such
as the @code{--cores} option of @command{guix build} (@pxref{Invoking
guix build}).



@@ 510,7 606,9 @@ parallelism---for instance, by running @code{make -j$NIX_BUILD_CORES}.
@item --max-jobs=@var{n}
@itemx -M @var{n}
Allow at most @var{n} build jobs in parallel.  The default value is
@code{1}.
@code{1}.  Setting it to @code{0} means that no builds will be performed
locally; instead, the daemon will offload builds (@pxref{Daemon Offload
Setup}), or simply fail.

@item --debug
Produce debugging output.


@@ 1719,6 1817,13 @@ modules}.  This is achieved by wrapping the programs in launch scripts
that appropriately set the @code{XDG_DATA_DIRS} and @code{GTK_PATH}
environment variables.

It is possible to exclude specific package outputs from that wrapping
process by listing their names in the
@code{#:glib-or-gtk-wrap-excluded-outputs} parameter.  This is useful
when an output is known not to contain any GLib or GTK+ binaries, and
where wrapping would gratuitously add a dependency of that output on
GLib and GTK+.

@item glib-or-gtk-compile-schemas
The phase @code{glib-or-gtk-compile-schemas} makes sure that all GLib's
@uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html,


@@ 2679,6 2784,12 @@ may be helpful when debugging setup issues with the build daemon.
Allow the use of up to @var{n} CPU cores for the build.  The special
value @code{0} means to use as many CPU cores as available.

@item --max-jobs=@var{n}
@itemx -M @var{n}
Allow at most @var{n} build jobs in parallel.  @xref{Invoking
guix-daemon, @code{--max-jobs}}, for details about this option and the
equivalent @command{guix-daemon} option.

@end table

Behind the scenes, @command{guix build} is essentially an interface to


@@ 2686,6 2797,25 @@ the @code{package-derivation} procedure of the @code{(guix packages)}
module, and to the @code{build-derivations} procedure of the @code{(guix
store)} module.

In addition to options explicitly passed on the command line,
@command{guix build} and other @command{guix} commands that support
building honor the @code{GUIX_BUILD_OPTIONS} environment variable.

@defvr {Environment Variable} GUIX_BUILD_OPTIONS
Users can define this variable to a list of command line options that
will automatically be used by @command{guix build} and other
@command{guix} commands that can perform builds, as in the example
below:

@example
$ export GUIX_BUILD_OPTIONS="--no-substitutes -c 2 -L /foo/bar"
@end example

These options are parsed independently, and the result is appended to
the parsed command-line options.
@end defvr


@node Invoking guix download
@section Invoking @command{guix download}



@@ 3275,8 3405,9 @@ Systems}).  This is typically done using the @code{-L} option of
@command{mkfs.ext4} and related commands.

The installation image includes Parted (@pxref{Overview,,, parted, GNU
Parted User Manual}), @command{fdisk}, and e2fsprogs, the suite of tools
to manipulate ext2/ext3/ext4 file systems.
Parted User Manual}), @command{fdisk}, Cryptsetup/LUKS for disk
encryption, and e2fsprogs, the suite of tools to manipulate
ext2/ext3/ext4 file systems.

@item
Once that is done, mount the target root partition under @file{/mnt}.


@@ 3375,6 3506,7 @@ instance to support new system services.
* File Systems::                Configuring file system mounts.
* Mapped Devices::              Block device extra processing.
* User Accounts::               Specifying user accounts.
* Locales::                     Language and cultural convention settings.
* Services::                    Specifying system services.
* Setuid Programs::             Programs running with root privileges.
* Initial RAM Disk::            Linux-Libre bootstrapping.


@@ 3401,7 3533,7 @@ kernel, initial RAM disk, and boot loader looks like this:
(operating-system
  (host-name "komputilo")
  (timezone "Europe/Paris")
  (locale "fr_FR.UTF-8")
  (locale "fr_FR.utf8")
  (bootloader (grub-configuration
                (device "/dev/sda")))
  (file-systems (cons (file-system


@@ 3411,7 3543,7 @@ kernel, initial RAM disk, and boot loader looks like this:
                      %base-file-systems))
  (users (list (user-account
                (name "alice")
                (uid 1000) (group 100)
                (group "users")
                (comment "Bob's sister")
                (home-directory "/home/alice"))))
  (packages (cons emacs %base-packages))


@@ 3554,9 3686,13 @@ package}).
@item @code{timezone}
A timezone identifying string---e.g., @code{"Europe/Paris"}.

@item @code{locale} (default: @code{"en_US.UTF-8"})
The name of the default locale (@pxref{Locales,,, libc, The GNU C
Library Reference Manual}).
@item @code{locale} (default: @code{"en_US.utf8"})
The name of the default locale (@pxref{Locale Names,,, libc, The GNU C
Library Reference Manual}).  @xref{Locales}, for more information.

@item @code{locale-definitions} (default: @var{%default-locale-definitions})
The list of locale definitions to be compiled and that may be used at
run time.  @xref{Locales}.

@item @code{services} (default: @var{%base-services})
A list of monadic values denoting system services.  @xref{Services}.


@@ 3630,6 3766,13 @@ is interpreted as a partition label name; when it is @code{uuid},
The @code{label} and @code{uuid} options offer a way to refer to disk
partitions without having to hard-code their actual device name.

However, when a file system's source is a mapped device (@pxref{Mapped
Devices}), its @code{device} field @emph{must} refer to the mapped
device name---e.g., @file{/dev/mapper/root-partition}---and consequently
@code{title} must be set to @code{'device}.  This is required so that
the system knows that mounting the file system depends on having the
corresponding device mapping established.

@item @code{flags} (default: @code{'()})
This is a list of symbols denoting mount flags.  Recognized flags
include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow


@@ 3818,8 3961,8 @@ users change it with @command{passwd}.

If you @emph{do} want to have a preset password for an account, then
this field must contain the encrypted password, as a string.
@xref{crypt,,, The GNU C Library Reference Manual}, for more information
on password encryption, and @ref{Encryption,,, GNU Guile Reference
@xref{crypt,,, libc, The GNU C Library Reference Manual}, for more information
on password encryption, and @ref{Encryption,,, guile, GNU Guile Reference
Manual}, for information on Guile's @code{crypt} procedure.

@end table


@@ 3863,6 4006,78 @@ to be present on the system.  This includes groups such as ``root'',
specific devices such as ``audio'', ``disk'', and ``cdrom''.
@end defvr

@node Locales
@subsection Locales

@cindex locale
A @dfn{locale} defines cultural conventions for a particular language
and region of the world (@pxref{Locales,,, libc, The GNU C Library
Reference Manual}).  Each locale has a name that typically has the form
@code{@var{language}_@var{territory}.@var{charset}}---e.g.,
@code{fr_LU.utf8} designates the locale for the French language, with
cultural conventions from Luxembourg, and using the UTF-8 encoding.

@cindex locale definition
Usually, you will want to specify the default locale for the machine
using the @code{locale} field of the @code{operating-system} declaration
(@pxref{operating-system Reference, @code{locale}}).

That locale must be among the @dfn{locale definitions} that are known to
the system---and these are specified in the @code{locale-definitions}
slot of @code{operating-system}.  The default value includes locale
definition for some widely used locales, but not for all the available
locales, in order to save space.

If the locale specified in the @code{locale} field is not among the
definitions listed in @code{locale-definitions}, @command{guix system}
raises an error.  In that case, you should add the locale definition to
the @code{locale-definitions} field.  For instance, to add the North
Frisian locale for Germany, the value of that field may be:

@example
(cons (locale-definition
        (name "fy_DE.utf8") (source "fy_DE"))
      %default-locale-definitions)
@end example

Likewise, to save space, one might want @code{locale-definitions} to
list only the locales that are actually used, as in:

@example
(list (locale-definition
        (name "ja_JP.eucjp") (source "ja_JP")
        (charset "EUC-JP")))
@end example

The @code{locale-definition} form is provided by the @code{(gnu system
locale)} module.  Details are given below.

@deftp {Data Type} locale-definition
This is the data type of a locale definition.

@table @asis

@item @code{name}
The name of the locale.  @xref{Locale Names,,, libc, The GNU C Library
Reference Manual}, for more information on locale names.

@item @code{source}
The name of the source for that locale.  This is typically the
@code{@var{language}_@var{territory}} part of the locale name.

@item @code{charset} (default: @code{"UTF-8"})
The ``character set'' or ``code set'' for that locale,
@uref{http://www.iana.org/assignments/character-sets, as defined by
IANA}.

@end table
@end deftp

@defvr {Scheme Variable} %default-locale-definitions
An arbitrary list of commonly used locales, used as the default value of
the @code{locale-definitions} field of @code{operating-system}
declarations.
@end defvr

@node Services
@subsection Services


@@ 3872,11 4087,42 @@ An important part of preparing an @code{operating-system} declaration is
listing @dfn{system services} and their configuration (@pxref{Using the
Configuration System}).  System services are typically daemons launched
when the system boots, or other actions needed at that time---e.g.,
configuring network access.  They are managed by GNU@tie{}dmd
(@pxref{Introduction,,, dmd, GNU dmd Manual}).
configuring network access.

Services are managed by GNU@tie{}dmd (@pxref{Introduction,,, dmd, GNU
dmd Manual}).  On a running system, the @command{deco} command allows
you to list the available services, show their status, start and stop
them, or do other specific operations (@pxref{Jump Start,,, dmd, GNU dmd
Manual}).  For example:

@example
# deco status dmd
@end example

The above command, run as @code{root}, lists the currently defined
services.  The @command{deco doc} command shows a synopsis of the given
service:

@example
# deco doc nscd
Run libc's name service cache daemon (nscd).
@end example

The @command{start}, @command{stop}, and @command{restart} sub-commands
have the effect you would expect.  For instance, the commands below stop
the nscd service and restart the Xorg display server:

@example
# deco stop nscd
Service nscd has been stopped.
# deco restart xorg-server
Service xorg-server has been stopped.
Service xorg-server has been started.
@end example

The following sections document the available services, starting with
the core services.
the core services, that may be used in an @code{operating-system}
declaration.

@menu
* Base Services::               Essential system services.


@@ 3904,7 4150,7 @@ system, you will want to append services to @var{%base-services}, like
this:

@example
(cons* (avahi-service) (lshd-service) %base-services)
(cons* (avahi-service) (lsh-service) %base-services)
@end example
@end defvr



@@ 3967,7 4213,7 @@ Run @var{udev}, which populates the @file{/dev} directory dynamically.
@node Networking Services
@subsubsection Networking Services

The @code{(gnu system networking)} module provides services to configure
The @code{(gnu services networking)} module provides services to configure
the network interface.

@cindex DHCP, networking service


@@ 4032,12 4278,17 @@ When @var{initialize?} is true, automatically create the seed and host key
upon service activation if they do not exist yet.  This may take long and
require interaction.

When @var{initialize?} is false, it is up to the user to initialize the
randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create
a key pair with the private key stored in file @var{host-key} (@pxref{lshd
basics,,, lsh, LSH Manual}).

When @var{interfaces} is empty, lshd listens for connections on all the
network interfaces; otherwise, @var{interfaces} must be a list of host names
or addresses.

@var{allow-empty-passwords?} specifies whether to accepts log-ins with empty
passwords, and @var{root-login?} specifies whether to accepts log-ins as
@var{allow-empty-passwords?} specifies whether to accept log-ins with empty
passwords, and @var{root-login?} specifies whether to accept log-ins as
root.

The other options should be self-descriptive.


@@ 4745,6 4996,7 @@ needed is to review and apply the patch.
* Version Numbers::      When the name is not enough.
* Python Modules::       Taming the snake.
* Perl Modules::         Little pearls.
* Fonts::                Fond of fonts.
@end menu

@node Software Freedom


@@ 4796,6 5048,8 @@ already part of the official project name.  But @pxref{Python
Modules} and @ref{Perl Modules} for special rules concerning modules for
the Python and Perl languages.

Font package names are handled differently, @pxref{Fonts}.


@node Version Numbers
@subsection Version Numbers


@@ 4871,6 5125,43 @@ are also prepended by @code{perl-}.  Such modules tend to have the word
prefix.  For instance, @code{libwww-perl} becomes @code{perl-libwww}.


@node Fonts
@subsection Fonts

For fonts that are in general not installed by a user for typesetting
purposes, or that are distributed as part of a larger software package,
we rely on the general packaging rules for software; for instance, this
applies to the fonts delivered as part of the X.Org system or fonts that
are part of TeX Live.

To make it easier for a user to search for fonts, names for other packages
containing only fonts are constructed as follows, independently of the
upstream package name.

The name of a package containing only one font family starts with
@code{font-}; it is followed by the foundry name and a dash @code{-}
if the foundry is known, and the font family name, in which spaces are
replaced by dashes (and as usual, all upper case letters are transformed
to lower case).
For example, the Gentium font family by SIL is packaged under the name
@code{font-sil-gentium}.

For a package containing several font families, the name of the collection
is used in the place of the font family name.
For instance, the Liberation fonts consist of three families,
Liberation Sans, Liberation Serif and Liberation Mono.
These could be packaged separately under the names
@code{font-liberation-sans} and so on; but as they are distributed together
under a common name, we prefer to package them together as
@code{font-liberation}.

In the case where several formats of the same font family or font collection
are packaged separately, a short form of the format, prepended by a dash,
is added to the package name.  We use @code{-ttf} for TrueType fonts,
@code{-otf} for OpenType fonts and @code{-type1} for PostScript Type 1
fonts.



@node Bootstrapping
@section Bootstrapping


@@ 4955,7 5246,7 @@ no-dependency requirement is verified by checking whether the files of
the final tool chain contain references to the @file{/gnu/store}
directories of the bootstrap inputs.  The process that leads to this
``final'' tool chain is described by the package definitions found in
the @code{(gnu packages base)} module.
the @code{(gnu packages commencement)} module.

@c See <http://lists.gnu.org/archive/html/gnu-system-discuss/2012-10/msg00000.html>.
The first tool that gets built with the bootstrap binaries is


@@ 4976,7 5267,7 @@ And voilà!  At this point we have the complete set of build tools that
the GNU Build System expects.  These are in the @code{%final-inputs}
variable of the @code{(gnu packages commencement)} module, and are
implicitly used by any package that uses @code{gnu-build-system}
(@pxref{Defining Packages}).
(@pxref{Build Systems, @code{gnu-build-system}}).


@unnumberedsubsec Building the Bootstrap Binaries


@@ 5024,12 5315,20 @@ one:
guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs
@end example

For this to work, the @code{glibc-dynamic-linker} procedure in
@code{(gnu packages bootstrap)} must be augmented to return the right
file name for libc's dynamic linker on that platform; likewise,
@code{system->linux-architecture} in @code{(gnu packages linux)} must be
taught about the new platform.

Once these are built, the @code{(gnu packages bootstrap)} module needs
to be updated to refer to these binaries on the target platform.  In
addition, the @code{glibc-dynamic-linker} procedure in that module must
be augmented to return the right file name for libc's dynamic linker on
that platform; likewise, @code{system->linux-architecture} in @code{(gnu
packages linux)} must be taught about the new platform.
to be updated to refer to these binaries on the target platform.  That
is, the hashes and URLs of the bootstrap tarballs for the new platform
must be added alongside those of the currently supported platforms.  The
bootstrap Guile tarball is treated specially: it is expected to be
available locally, and @file{gnu-system.am} has rules do download it for
the supported architectures; a rule for the new platform must be added
as well.

In practice, there may be some complications.  First, it may be that the
extended GNU triplet that specifies an ABI (like the @code{eabi} suffix

M emacs.am => emacs.am +3 -1
@@ 21,6 21,7 @@ AUTOLOADS = emacs/guix-autoloads.el
ELFILES =					\
  emacs/guix-backend.el				\
  emacs/guix-base.el				\
  emacs/guix-emacs.el				\
  emacs/guix-history.el				\
  emacs/guix-info.el				\
  emacs/guix-list.el				\


@@ 36,7 37,8 @@ dist_lisp_DATA =				\
  $(AUTOLOADS)

nodist_lisp_DATA =				\
  emacs/guix-init.el
  emacs/guix-init.el				\
  emacs/guix-profiles.el

$(AUTOLOADS): $(ELFILES)
	$(EMACS) --batch --eval						\

M emacs/guix-backend.el => emacs/guix-backend.el +3 -1
@@ 52,6 52,7 @@
;;; Code:

(require 'geiser-mode)
(require 'guix-emacs)

(defvar guix-load-path
  (file-name-directory (or load-file-name


@@ 125,7 126,8 @@ This REPL is used for receiving information only if
  "Hook run before executing an operation in Guix REPL.")

(defvar guix-after-repl-operation-hook
  '(guix-repl-operation-success-message)
  '(guix-emacs-load-autoloads-maybe
    guix-repl-operation-success-message)
  "Hook run after executing successful operation in Guix REPL.")

(defvar guix-repl-operation-p nil

M emacs/guix-base.el => emacs/guix-base.el +1 -41
@@ 28,53 28,13 @@
;;; Code:

(require 'cl-lib)
(require 'guix-profiles)
(require 'guix-backend)
(require 'guix-utils)
(require 'guix-history)
(require 'guix-messages)


;;; Profiles

(defvar guix-user-profile
  (expand-file-name "~/.guix-profile")
  "User profile.")

(defvar guix-default-profile
  (concat (or (getenv "NIX_STATE_DIR") "/var/guix")
          "/profiles/per-user/"
          (getenv "USER")
          "/guix-profile")
  "Default Guix profile.")

(defvar guix-current-profile guix-default-profile
  "Current profile.")

(defun guix-profile-prompt (&optional default)
  "Prompt for profile and return it.
Use DEFAULT as a start directory.  If it is nil, use
`guix-current-profile'."
  (let* ((path (read-file-name "Profile: "
                               (file-name-directory
                                (or default guix-current-profile))))
         (path (directory-file-name (expand-file-name path))))
    (if (string= path guix-user-profile)
        guix-default-profile
      path)))

(defun guix-set-current-profile (path)
  "Set `guix-current-profile' to PATH.
Interactively, prompt for PATH.  With prefix, use
`guix-default-profile'."
  (interactive
   (list (if current-prefix-arg
             guix-default-profile
           (guix-profile-prompt))))
  (setq guix-current-profile path)
  (message "Current profile has been set to '%s'."
           guix-current-profile))


;;; Parameters of the entries

(defvar guix-param-titles

A emacs/guix-emacs.el => emacs/guix-emacs.el +79 -0
@@ 0,0 1,79 @@
;;; guix-emacs.el --- Emacs packages installed with Guix

;; Copyright © 2014 Alex Kost <alezost@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 this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; This file provides auxiliary code for working with Emacs packages
;; installed with Guix.

;;; Code:

(require 'guix-profiles)

(defcustom guix-emacs-activate-after-operation t
  "Activate Emacs packages after installing.
If nil, do not load autoloads of the Emacs packages after
they are successfully installed."
  :type 'boolean
  :group 'guix)

(defvar guix-emacs-autoloads nil
  "List of the last loaded Emacs autoloads.")

(defun guix-emacs-directory (&optional profile)
  "Return directory with Emacs packages installed in PROFILE.
If PROFILE is nil, use `guix-user-profile'."
  (expand-file-name "share/emacs/site-lisp"
                    (or profile guix-user-profile)))

(defun guix-emacs-find-autoloads (&optional profile)
  "Return list of autoloads of Emacs packages installed in PROFILE.
If PROFILE is nil, use `guix-user-profile'.
Return nil if there are no emacs packages installed in PROFILE."
  (let ((dir (guix-emacs-directory profile)))
    (if (file-directory-p dir)
        (directory-files dir 'full-name "-autoloads\\.el\\'")
      (message "Directory '%s' does not exist." dir)
      nil)))

;;;###autoload
(defun guix-emacs-load-autoloads (&optional all)
  "Load autoloads for Emacs packages installed in a user profile.
If ALL is nil, activate only those packages that were installed
after the last activation, otherwise activate all Emacs packages
installed in `guix-user-profile'."
  (interactive "P")
  (let* ((autoloads (guix-emacs-find-autoloads))
         (files (if all
                    autoloads
                  (cl-nset-difference autoloads guix-emacs-autoloads
                                      :test #'string=))))
    (dolist (file files)
      (load file 'noerror))
    (setq guix-emacs-autoloads autoloads)))

(defun guix-emacs-load-autoloads-maybe ()
  "Load autoloads for Emacs packages if needed.
See `guix-emacs-activate-after-operation' for details."
  (and guix-emacs-activate-after-operation
       (guix-emacs-load-autoloads)))

(provide 'guix-emacs)

;;; guix-emacs.el ends here

M emacs/guix-helper.scm.in => emacs/guix-helper.scm.in +1 -0
@@ 50,6 50,7 @@
                                (and=> (getenv "HOME")
                                       (cut string-append <> "/.config")))
                            (cut string-append <> "/guix/latest"))))
    (push! module-dir %load-path)
    (push! module-dir %load-compiled-path)
    (if (and updates-dir (file-exists? updates-dir))
        (begin

M emacs/guix-init.el.in => emacs/guix-init.el.in +13 -6
@@ 1,14 1,21 @@
(require 'guix-autoloads)
(require 'guix-emacs)

(defvar guix-load-path
  (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@")
  "Directory with scheme files for \"guix.el\" package.")

(defvar guix-default-profile
  (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")
          "/profiles/per-user/"
          (getenv "USER")
          "/guix-profile")
  "Default Guix profile.")
(defcustom guix-package-enable-at-startup t
  "If non-nil, activate Emacs packages installed in a user profile.
Set this variable to nil before requiring `guix-init' file to
avoid loading autoloads of Emacs packages installed in
`guix-user-profile'."
  :type 'boolean
  :group 'guix)

(add-to-list 'load-path (guix-emacs-directory))

(when guix-package-enable-at-startup
  (guix-emacs-load-autoloads 'all))

(provide 'guix-init)

M emacs/guix-main.scm => emacs/guix-main.scm +2 -0
@@ 857,6 857,7 @@ OUTPUTS is a list of package outputs (may be an empty list)."
               (derivations (list derivation))
               (new-profile (derivation->output-path derivation)))
          (set-build-options store
                             #:print-build-trace #f
                             #:use-substitutes? use-substitutes?)
          (show-manifest-transaction store manifest transaction
                                     #:dry-run? dry-run?)


@@ 908,6 909,7 @@ GENERATIONS is a list of generation numbers."
      (let* ((derivation  (package-source-derivation store source))
             (derivations (list derivation)))
        (set-build-options store
                           #:print-build-trace #f
                           #:use-substitutes? use-substitutes?)
        (show-what-to-build store derivations
                            #:use-substitutes? use-substitutes?

A emacs/guix-profiles.el.in => emacs/guix-profiles.el.in +62 -0
@@ 0,0 1,62 @@
;;; guix-profiles.el --- Guix profiles

;; Copyright © 2014 Alex Kost <alezost@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 this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Code:

(defvar guix-user-profile
  (expand-file-name "~/.guix-profile")
  "User profile.")

(defvar guix-default-profile
  (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix")
          "/profiles/per-user/"
          (getenv "USER")
          "/guix-profile")
  "Default Guix profile.")

(defvar guix-current-profile guix-default-profile
  "Current profile.")

(defun guix-profile-prompt (&optional default)
  "Prompt for profile and return it.
Use DEFAULT as a start directory.  If it is nil, use
`guix-current-profile'."
  (let* ((path (read-file-name "Profile: "
                               (file-name-directory
                                (or default guix-current-profile))))
         (path (directory-file-name (expand-file-name path))))
    (if (string= path guix-user-profile)
        guix-default-profile
      path)))

(defun guix-set-current-profile (path)
  "Set `guix-current-profile' to PATH.
Interactively, prompt for PATH.  With prefix, use
`guix-default-profile'."
  (interactive
   (list (if current-prefix-arg
             guix-default-profile
           (guix-profile-prompt))))
  (setq guix-current-profile path)
  (message "Current profile has been set to '%s'."
           guix-current-profile))

(provide 'guix-profiles)

;;; guix-profiles.el ends here

M gnu-system.am => gnu-system.am +19 -3
@@ 45,6 45,7 @@ GNU_SYSTEM_MODULES =				\
  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			\


@@ 72,6 73,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/databases.scm			\
  gnu/packages/datamash.scm			\
  gnu/packages/dc.scm				\
  gnu/packages/debug.scm			\
  gnu/packages/dejagnu.scm			\
  gnu/packages/dictionaries.scm			\
  gnu/packages/disk.scm				\


@@ 160,6 162,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/links.scm			\
  gnu/packages/linux.scm			\
  gnu/packages/lisp.scm				\
  gnu/packages/llvm.scm				\
  gnu/packages/lout.scm				\
  gnu/packages/lsh.scm				\
  gnu/packages/lsof.scm				\


@@ 173,6 176,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/mc.scm				\
  gnu/packages/mcrypt.scm			\
  gnu/packages/messaging.scm			\
  gnu/packages/mg.scm				\
  gnu/packages/miscfiles.scm			\
  gnu/packages/mit-krb5.scm			\
  gnu/packages/moe.scm				\


@@ 189,6 193,7 @@ GNU_SYSTEM_MODULES =				\
  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/ocrad.scm			\


@@ 229,7 234,6 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/scanner.scm			\
  gnu/packages/scheme.scm			\
  gnu/packages/screen.scm			\
  gnu/packages/scrot.scm			\
  gnu/packages/sdl.scm				\
  gnu/packages/search.scm			\
  gnu/packages/serveez.scm			\


@@ 237,6 241,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/skribilo.scm			\
  gnu/packages/slim.scm				\
  gnu/packages/smalltalk.scm			\
  gnu/packages/socat.scm			\
  gnu/packages/ssh.scm				\
  gnu/packages/stalonetray.scm			\
  gnu/packages/swig.scm				\


@@ 249,7 254,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/time.scm				\
  gnu/packages/tmux.scm				\
  gnu/packages/tor.scm				\
  gnu/packages/unclutter.scm			\
  gnu/packages/tre.scm				\
  gnu/packages/unrtf.scm			\
  gnu/packages/upnp.scm				\
  gnu/packages/uucp.scm				\


@@ 273,8 278,11 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/xlockmore.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				\


@@ 294,6 302,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/system/install.scm			\
  gnu/system/linux.scm				\
  gnu/system/linux-initrd.scm			\
  gnu/system/locale.scm				\
  gnu/system/shadow.scm				\
  gnu/system/vm.scm				\
						\


@@ 302,6 311,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/build/install.scm				\
  gnu/build/linux-boot.scm			\
  gnu/build/linux-initrd.scm			\
  gnu/build/linux-modules.scm			\
  gnu/build/vm.scm




@@ 351,6 361,7 @@ dist_patch_DATA =						\
  gnu/packages/patches/glib-tests-homedir.patch			\
  gnu/packages/patches/glib-tests-prlimit.patch			\
  gnu/packages/patches/glib-tests-timer.patch			\
  gnu/packages/patches/glib-tests-gapplication.patch		\
  gnu/packages/patches/glibc-bootstrap-system.patch		\
  gnu/packages/patches/glibc-ldd-x86_64.patch			\
  gnu/packages/patches/gnunet-fix-scheduler.patch		\


@@ 412,6 423,9 @@ dist_patch_DATA =						\
  gnu/packages/patches/pybugz-stty.patch			\
  gnu/packages/patches/python-fix-tests.patch			\
  gnu/packages/patches/python-libffi-mips-n32-fix.patch		\
  gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch	\
  gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch	\
  gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
  gnu/packages/patches/qt4-tests.patch				\
  gnu/packages/patches/ratpoison-shell.patch			\
  gnu/packages/patches/readline-link-ncurses.patch		\


@@ 433,7 447,9 @@ dist_patch_DATA =						\
  gnu/packages/patches/util-linux-perl.patch			\
  gnu/packages/patches/vpnc-script.patch			\
  gnu/packages/patches/w3m-fix-compile.patch			\
  gnu/packages/patches/wmctrl-64-fix.patch			\
  gnu/packages/patches/xf86-input-synaptics-glibc-2.20.patch	\
  gnu/packages/patches/xf86-video-openchrome-includes.patch	\
  gnu/packages/patches/xmodmap-asprintf.patch

bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap


@@ 470,7 486,7 @@ nodist_bootstrap_mips64el_linux_DATA =					\

# Those files must remain executable, so they remain executable once
# imported into the store.
install-data-hook:
set-bootstrap-executable-permissions:
	chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}

DISTCLEANFILES =				\

M gnu/build/activation.scm => gnu/build/activation.scm +22 -8
@@ 50,6 50,25 @@
                ,name)))
    (zero? (apply system* "groupadd" args))))

(define %skeleton-directory
  ;; Directory containing skeleton files for new accounts.
  ;; Note: keep the trailing '/' so that 'scandir' enters it.
  "/etc/skel/")

(define (dot-or-dot-dot? file)
  (member file '("." "..")))

(define* (copy-account-skeletons home
                                 #:optional (directory %skeleton-directory))
  "Copy the account skeletons from DIRECTORY to HOME."
  (let ((files (scandir directory (negate dot-or-dot-dot?)
                        string<?)))
    (mkdir-p home)
    (for-each (lambda (file)
                (copy-file (string-append directory "/" file)
                           (string-append home "/" file)))
              files)))

(define* (add-user name group
                   #:key uid comment home shell password system?
                   (supplementary-groups '())


@@ 70,6 89,7 @@ properties.  Return #t on success."
          (cut format <> "~a:x:~a:~a:~a:~a:~a~%"
               name "0" "0" comment home shell))
        (chmod "/etc/shadow" #o600)
        (copy-account-skeletons (or home "/root"))
        #t)

      ;; Use 'useradd' from the Shadow package.


@@ 198,18 218,12 @@ numeric gid or #f."
                ;; XXX: Dirty hack to meet sudo's expectations.
                (when (string=? (basename target) "sudoers")
                  (chmod target #o440))))
            (scandir etc
                     (lambda (file)
                       (not (member file '("." ".."))))
            (scandir etc (negate dot-or-dot-dot?)

                     ;; The default is 'string-locale<?', but we don't have
                     ;; it when run from the initrd's statically-linked
                     ;; Guile.
                     string<?))

  ;; Prevent ETC from being GC'd.
  (rm-f "/var/guix/gcroots/etc-directory")
  (symlink etc "/var/guix/gcroots/etc-directory"))
                     string<?)))

(define %setuid-directory
  ;; Place where setuid programs are stored.

M gnu/build/install.scm => gnu/build/install.scm +7 -3
@@ 36,13 36,17 @@

(define* (install-grub grub.cfg device mount-point)
  "Install GRUB with GRUB.CFG on DEVICE, which is assumed to be mounted on
MOUNT-POINT."
MOUNT-POINT.

Note that the caller must make sure that GRUB.CFG is registered as a GC root
so that the fonts, background images, etc. referred to by GRUB.CFG are not
GC'd."
  (let* ((target (string-append mount-point "/boot/grub/grub.cfg"))
         (pivot  (string-append target ".new")))
    (mkdir-p (dirname target))

    ;; Copy GRUB.CFG instead of just symlinking it since it's not a GC root.
    ;; Do that atomically.
    ;; Copy GRUB.CFG instead of just symlinking it, because symlinks won't
    ;; work when /boot is on a separate partition.  Do that atomically.
    (copy-file grub.cfg pivot)
    (rename-file pivot target)


M gnu/build/linux-boot.scm => gnu/build/linux-boot.scm +23 -20
@@ 26,6 26,7 @@
  #:use-module (ice-9 match)
  #:use-module (ice-9 ftw)
  #:use-module (guix build utils)
  #:use-module (gnu build linux-modules)
  #:use-module (gnu build file-systems)
  #:export (mount-essential-file-systems
            linux-command-line


@@ 34,7 35,6 @@
            configure-qemu-networking

            bind-mount
            load-linux-module*
            device-number
            boot-system))



@@ 218,14 218,6 @@ networking values.)  Return #t if INTERFACE is up, #f otherwise."

    (logand (network-interface-flags sock interface) IFF_UP)))

(define (load-linux-module* file)
  "Load Linux module from FILE, the name of a `.ko' file."
  (define (slurp module)
    ;; TODO: Use 'mmap' to reduce memory usage.
    (call-with-input-file file get-bytevector-all))

  (load-linux-module (slurp file)))

(define (device-number major minor)
  "Return the device number for the device with MAJOR and MINOR, for use as
the last argument of `mknod'."


@@ 332,16 324,17 @@ bailing out.~%root contents: ~s~%" (scandir "/"))

(define* (boot-system #:key
                      (linux-modules '())
                      linux-module-directory
                      qemu-guest-networking?
                      volatile-root?
                      pre-mount
                      (mounts '()))
  "This procedure is meant to be called from an initrd.  Boot a system by
first loading LINUX-MODULES (a list of absolute file names of '.ko' files),
then setting up QEMU guest networking if QEMU-GUEST-NETWORKING? is true,
calling PRE-MOUNT, mounting the file systems specified in MOUNTS, and finally
booting into the new root if any.  The initrd supports kernel command-line
options '--load', '--root', and '--repl'.
first loading LINUX-MODULES (a list of module names) from
LINUX-MODULE-DIRECTORY, then setting up QEMU guest networking if
QEMU-GUEST-NETWORKING? is true, calling PRE-MOUNT, mounting the file systems
specified in MOUNTS, and finally booting into the new root if any.  The initrd
supports kernel command-line options '--load', '--root', and '--repl'.

Mount the root file system, specified by the '--root' command-line argument,
if any.


@@ 362,6 355,10 @@ to it are lost."
             mounts)
        "ext4"))

  (define (lookup-module name)
    (string-append linux-module-directory "/"
                   (ensure-dot-ko name)))

  (display "Welcome, this is GNU's early boot Guile.\n")
  (display "Use '--repl' for an initrd REPL.\n\n")



@@ 376,7 373,10 @@ to it are lost."
         (start-repl))

       (display "loading kernel modules...\n")
       (for-each load-linux-module* linux-modules)
       (current-module-debugging-port (current-output-port))
       (for-each (cut load-linux-module* <>
                      #:lookup-module lookup-module)
                 (map lookup-module linux-modules))

       (when qemu-guest-networking?
         (unless (configure-qemu-networking)


@@ 388,6 388,14 @@ to it are lost."
       ;; Prepare the real root file system under /root.
       (unless (file-exists? "/root")
         (mkdir "/root"))

       (when (procedure? pre-mount)
         ;; Do whatever actions are needed before mounting the root file
         ;; system--e.g., installing device mappings.  Error out when the
         ;; return value is false.
         (unless (pre-mount)
           (error "pre-mount actions failed")))

       (if root
           (mount-root-file-system (canonicalize-device-spec root)
                                   root-fs-type


@@ 398,11 406,6 @@ to it are lost."
         (mkdir "/root/dev")
         (make-essential-device-nodes #:root "/root"))

       (when (procedure? pre-mount)
         ;; Do whatever actions are needed before mounting--e.g., installing
         ;; device mappings.
         (pre-mount))

       ;; Mount the specified file systems.
       (for-each mount-file-system
                 (remove root-mount-point? mounts))

A gnu/build/linux-modules.scm => gnu/build/linux-modules.scm +166 -0
@@ 0,0 1,166 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 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 (gnu build linux-modules)
  #:use-module (guix elf)
  #:use-module (rnrs io ports)
  #:use-module (rnrs bytevectors)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)
  #:use-module (ice-9 vlist)
  #:use-module (ice-9 match)
  #:export (dot-ko
            ensure-dot-ko
            module-dependencies
            recursive-module-dependencies
            modules-loaded
            module-loaded?
            load-linux-module*

            current-module-debugging-port))

;;; Commentary:
;;;
;;; Tools to deal with Linux kernel modules.
;;;
;;; Code:

(define current-module-debugging-port
  (make-parameter (%make-void-port "w")))

(define (section-contents elf section)
  "Return the contents of SECTION in ELF as a bytevector."
  (let* ((modinfo  (elf-section-by-name elf ".modinfo"))
         (contents (make-bytevector (elf-section-size modinfo))))
    (bytevector-copy! (elf-bytes elf) (elf-section-offset modinfo)
                      contents 0
                      (elf-section-size modinfo))
    contents))

(define %not-nul
  (char-set-complement (char-set #\nul)))

(define (nul-separated-string->list str)
  "Split STR at occurrences of the NUL character and return the resulting
string list."
  (string-tokenize str %not-nul))

(define (key=value->pair str)
  "Assuming STR has the form \"KEY=VALUE\", return a pair like (KEY
. \"VALUE\")."
  (let ((= (string-index str #\=)))
    (cons (string->symbol (string-take str =))
          (string-drop str (+ 1 =)))))

(define (modinfo-section-contents file)
  "Return the contents of the '.modinfo' section of FILE as a list of
key/value pairs.."
  (let* ((bv      (call-with-input-file file get-bytevector-all))
         (elf     (parse-elf bv))
         (modinfo (section-contents elf ".modinfo")))
    (map key=value->pair
         (nul-separated-string->list (utf8->string modinfo)))))

(define %not-comma
  (char-set-complement (char-set #\,)))

(define (module-dependencies file)
  "Return the list of modules that FILE depends on.  The returned list
contains module names, not actual file names."
  (let ((info (modinfo-section-contents file)))
    (match (assq 'depends info)
      (('depends . what)
       (string-tokenize what %not-comma)))))

(define dot-ko
  (cut string-append <> ".ko"))

(define (ensure-dot-ko name)
  "Return NAME with a '.ko' prefix appended, unless it already has it."
  (if (string-suffix? ".ko" name)
      name
      (dot-ko name)))

(define* (recursive-module-dependencies files
                                        #:key (lookup-module dot-ko))
  "Return the topologically-sorted list of file names of the modules depended
on by FILES, recursively.  File names of modules are determined by applying
LOOKUP-MODULE to the module name."
  (let loop ((files   files)
             (result  '())
             (visited vlist-null))
    (match files
      (()
       (delete-duplicates (reverse result)))
      ((head . tail)
       (let* ((visited? (vhash-assoc head visited))
              (deps     (if visited?
                            '()
                            (map lookup-module (module-dependencies head))))
              (visited  (if visited?
                            visited
                            (vhash-cons head #t visited))))
         (loop (append deps tail)
               (append result deps) visited))))))

(define %not-newline
  (char-set-complement (char-set #\newline)))

(define (modules-loaded)
  "Return the list of names of currently loaded Linux modules."
  (let* ((contents (call-with-input-file "/proc/modules"
                     get-string-all))
         (lines    (string-tokenize contents %not-newline)))
    (match (map string-tokenize lines)
      (((modules . _) ...)
       modules))))

(define (module-loaded? module)
  "Return #t if MODULE is already loaded.  MODULE must be a Linux module name,
not a file name."
  (member module (modules-loaded)))

(define* (load-linux-module* file
                             #:key
                             (recursive? #t)
                             (lookup-module dot-ko))
  "Load Linux module from FILE, the name of a `.ko' file.  When RECURSIVE? is
true, load its dependencies first (à la 'modprobe'.)  The actual files
containing modules depended on are obtained by calling LOOKUP-MODULE with the
module name."
  (define (slurp module)
    ;; TODO: Use 'mmap' to reduce memory usage.
    (call-with-input-file file get-bytevector-all))

  (when recursive?
    (for-each (cut load-linux-module* <> #:lookup-module lookup-module)
              (map lookup-module (module-dependencies file))))

  (format (current-module-debugging-port)
          "loading Linux module from '~a'...~%" file)

  (catch 'system-error
    (lambda ()
      (load-linux-module (slurp file)))
    (lambda args
      ;; If this module was already loaded and we're in modprobe style, ignore
      ;; the error.
      (unless (and recursive? (= EEXIST (system-error-errno args)))
        (apply throw args)))))

;;; linux-modules.scm ends here

M gnu/build/vm.scm => gnu/build/vm.scm +9 -0
@@ 178,6 178,12 @@ volume name."
  (display "populating...\n")
  (populate-root-file-system system-directory target-directory))

(define (register-grub.cfg-root target grub.cfg)
  "On file system TARGET, register GRUB.CFG as a GC root."
  (let ((directory (string-append target "/var/guix/gcroots")))
    (mkdir-p directory)
    (symlink grub.cfg (string-append directory "/grub.cfg"))))

(define* (initialize-hard-disk device
                               #:key
                               system-directory


@@ 222,6 228,9 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation."

  (install-grub grub.cfg device target-directory)

  ;; Register GRUB.CFG as a GC root.
  (register-grub.cfg-root target-directory grub.cfg)

  ;; 'guix-register' resets timestamps and everything, so no need to do it
  ;; once more in that case.
  (unless register-closures?

M gnu/packages/admin.scm => gnu/packages/admin.scm +9 -4
@@ 689,9 689,12 @@ commands and their arguments.")
                   (let ((port (open-file ".config" "al")))
                     (display "
      CONFIG_DEBUG_SYSLOG=y
      CONFIG_CTRL_IFACE_DBUS=y
      CONFIG_CTRL_IFACE_DBUS_NEW=y
      CONFIG_CTRL_IFACE_DBUS_INTRO=y

      # TODO: Add a variant of this package with DBus support.
      #CONFIG_CTRL_IFACE_DBUS=y
      #CONFIG_CTRL_IFACE_DBUS_NEW=y
      #CONFIG_CTRL_IFACE_DBUS_INTRO=y

      CONFIG_DRIVER_NL80211=y
      CFLAGS += $(shell pkg-config libnl-3.0 --cflags)
      CONFIG_LIBNL32=y


@@ 708,7 711,9 @@ commands and their arguments.")
    (inputs
     `(("readline" ,readline)
       ("libnl" ,libnl)
       ("dbus" ,dbus)
       ;; TODO: Add a variant with DBus support.  This significantly increases
       ;; the size of its closure since DBus depends on libx11.
       ;; ("dbus" ,dbus)
       ("openssl" ,o:openssl)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))

M gnu/packages/base.scm => gnu/packages/base.scm +4 -3
@@ 3,6 3,7 @@
;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 500,7 501,7 @@ with the Linux kernel.")
(define-public tzdata
  (package
    (name "tzdata")
    (version "2014a")
    (version "2014j")
    (source (origin
             (method url-fetch)
             (uri (string-append


@@ 508,7 509,7 @@ with the Linux kernel.")
                   version ".tar.gz"))
             (sha256
              (base32
               "1cg843ajz4g16axpz56zvalwsbp1s764na2bk4fb44ayx162bzvw"))))
               "038fvj6zf51k6z9sbbxbj87ajaf69l3whal2vwshbm4l0qr71n52"))))
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f


@@ 555,7 556,7 @@ with the Linux kernel.")
                                version ".tar.gz"))
                          (sha256
                           (base32
                            "1xfkqi1q8cnxqbv8azdj5pqlzhkjz6xag09f1z0s8rxi86jkpf85"))))))
                            "1qpd12imy7q5hb5fhk48mfw65s0xlrkmms0zr2gk0mj88qjn3m3z"))))))
    (home-page "http://www.iana.org/time-zones")
    (synopsis "Database of current and historical time zones")
    (description "The Time Zone Database (often called tz or zoneinfo)

A gnu/packages/bioinformatics.scm => gnu/packages/bioinformatics.scm +84 -0
@@ 0,0 1,84 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages bioinformatics)
  #: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 compression)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python))

(define-public samtools
  (package
    (name "samtools")
    (version "1.1")
    (source
     (origin
       (method url-fetch)
       (uri
        (string-append "mirror://sourceforge/samtools/"
                       version "/samtools-" version ".tar.bz2"))
       (sha256
        (base32
         "1y5p2hs4gif891b4ik20275a8xf3qrr1zh9wpysp4g8m0g1jckf2"))))
    (build-system gnu-build-system)
    (arguments
     '(#:make-flags (list (string-append "prefix=" (assoc-ref %outputs "out")))
       #:phases
       (alist-cons-after
        'unpack
        'patch-makefile-curses
        (lambda _
          (substitute* "Makefile"
            (("-lcurses") "-lncurses")))
        (alist-cons-after
         'unpack
         'patch-tests
         (lambda* (#:key inputs #:allow-other-keys)
           (let ((bash (assoc-ref inputs "bash")))
             (substitute* "test/test.pl"
               ;; The test script calls out to /bin/bash
               (("/bin/bash")
                (string-append bash "/bin/bash"))
               ;; There are two failing tests upstream relating to the "stats"
               ;; subcommand in test_usage_subcommand ("did not have Usage"
               ;; and "usage did not mention samtools stats"), so we disable
               ;; them.
               (("(test_usage_subcommand\\(.*\\);)" cmd)
                (string-append "unless ($subcommand eq 'stats') {" cmd "};")))))
         (alist-delete
          'configure
          %standard-phases)))))
    (native-inputs `(("pkg-config" ,pkg-config)))
    (inputs `(("ncurses" ,ncurses)
              ("perl" ,perl)
              ("python" ,python)
              ("zlib" ,zlib)))
    (home-page "http://samtools.sourceforge.net")
    (synopsis "Utilities to efficiently manipulate nucleotide sequence alignments")
    (description
     "Samtools implements various utilities for post-processing nucleotide
sequence alignments in the SAM, BAM, and CRAM formats, including indexing,
variant calling (in conjunction with bcftools), and a simple alignment
viewer.")
    (license license:expat)))

M gnu/packages/bittorrent.scm => gnu/packages/bittorrent.scm +70 -3
@@ 1,4 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.


@@ 20,6 21,7 @@
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system glib-or-gtk)
  #:use-module ((guix licenses) #:prefix l:)
  #:use-module (gnu packages openssl)
  #:use-module (gnu packages libevent)


@@ 30,7 32,11 @@
  #:use-module ((gnu packages compression)
                #:select (zlib))
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gtk))
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages check)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages cyrus-sasl))

(define-public transmission
  (package


@@ 44,11 50,12 @@
              (sha256
               (base32
                "1sxr1magqb5s26yvr5yhs1f7bmir8gl09niafg64lhgfnhv1kz59"))))
    (build-system gnu-build-system)
    (build-system glib-or-gtk-build-system)
    (outputs '("out"                      ; library and command-line interface
               "gui"))                    ; graphical user interface
    (arguments
     '(#:phases (alist-cons-after
     '(#:glib-or-gtk-wrap-excluded-outputs '("out")
       #:phases (alist-cons-after
                 'install 'move-gui
                 (lambda* (#:key outputs #:allow-other-keys)
                   ;; Move the GUI to its own output, so that "out" doesn't


@@ 88,3 95,63 @@ DHT, µTP, PEX and Magnet Links.")
    ;;
    ;; A few files files carry an MIT/X11 license header.
    (license l:gpl3+)))

(define-public libtorrent
  (package
    (name "libtorrent")
    (version "0.13.4")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://libtorrent.rakshasa.no/downloads/libtorrent-"
                    version ".tar.gz"))
              (sha256
               (base32
                "0ma910br5vxrfpm4f4w4942lpmhwvqjnnf9h8vpf52fw35qhjkkh"))))
    (build-system gnu-build-system)
    (inputs `(("openssl" ,openssl)
              ("zlib" ,zlib)))
    (native-inputs `(("pkg-config" ,pkg-config)
                     ;; Add this when you enable tests:
                     ;; ("cppunit" ,cppunit)
                     ))
    (arguments
     ;; FIXME: enable tests on the next release:
     ;; https://github.com/rakshasa/libtorrent/issues/59
     `(#:tests? #f))
    (synopsis "BitTorrent library of rtorrent")
    (description
     "LibTorrent is a BitTorrent library used by and developed in parallel
with the BitTorrent client rtorrent.  It is written in C++ with emphasis on
speed and efficiency.")
    (home-page "http://libtorrent.rakshasa.no/")
    (license l:gpl2+)))

(define-public rtorrent
  (package
    (name "rtorrent")
    (version "0.9.4")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://libtorrent.rakshasa.no/downloads/rtorrent-"
                    version ".tar.gz"))
              (sha256
               (base32
                "113yrrac75vqi4g8r6bgs0ggjllj9bkg9shv08vqzdhkwqg2q2mw"))))
    (build-system gnu-build-system)
    (inputs `(("libtorrent" ,libtorrent)
              ("ncurses" ,ncurses)
              ("curl" ,curl)
              ("cyrus-sasl" ,cyrus-sasl)
              ("openssl" ,openssl)
              ("zlib" ,zlib)))
    (native-inputs `(("pkg-config" ,pkg-config)
                     ("cppunit" ,cppunit)))
    (synopsis "BitTorrent client with ncurses interface")
    (description
     "rTorrent is a BitTorrent client with an ncurses interface.  It supports
full encryption, DHT, PEX, and Magnet Links.  It can also be controlled via
XML-RPC over SCGI.")
    (home-page "http://libtorrent.rakshasa.no/")
    (license l:gpl2+)))

M gnu/packages/cdrom.scm => gnu/packages/cdrom.scm +108 -3
@@ 32,7 32,11 @@
  #:use-module (gnu packages elf)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages readline)
  #:use-module (gnu packages which))
  #:use-module (gnu packages which)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages python)
  #:use-module (gnu packages wget)
  #:use-module (gnu packages xiph))

(define-public libcddb
  (package


@@ 68,14 72,14 @@ caching facility provided by the library.")
(define-public libcdio
  (package
    (name "libcdio")
    (version "0.92")
    (version "0.93")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/libcdio/libcdio-"
                                 version ".tar.gz"))
             (sha256
              (base32
               "1b9zngn8nnxb1yyngi1kwi73nahp4lsx59j17q1bahzz58svydik"))))
               "0xb9km1750ndr7nglgbv1smv03dy8nkcfd9djbzqn3ldzlicswj9"))))
    (build-system gnu-build-system)
    (inputs
       `(("ncurses" ,ncurses)


@@ 217,3 221,104 @@ files.  Dvdisaster works at the image level so that the recovery does not
depend on the file system of the medium.  The maximum error correction
capacity is user-selectable.")
    (license gpl2+)))

(define-public cd-discid
  (package
    (name "cd-discid")
    (version "1.4")
    (home-page "http://linukz.org/cd-discid.shtml")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://linukz.org/download/cd-discid-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz"))
              (modules '((guix build utils)))
              (snippet
               '(substitute* "Makefile"
                  (("/usr/bin/install")
                   "install")))))
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f
       #:phases (alist-delete 'configure %standard-phases)
       #:make-flags (list "CC=gcc"
                          (string-append "PREFIX="
                                         (assoc-ref %outputs "out")))))
    (synopsis "Get CDDB discid information from an audio CD")
    (description
     "cd-discid is a command-line tool to retrieve CDDB discid information
from an audio CD.")
    (license gpl2+)))

(define-public abcde
  (package
    (name "abcde")
    (version "2.6")
    (home-page "http://abcde.einval.com/")
    (source (origin
              (method url-fetch)
              (uri (string-append home-page "/download/abcde-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "0y2cg233n2hixs0ji76dggpzgf52v4c4mnpwiai889ql2piafgk8"))
              (modules '((guix build utils)))
              (snippet
               '(substitute* "Makefile"
                  (("/usr/bin/install")
                   "install")
                  (("^etcdir = .*$")
                   (string-append "etcdir = $(prefix)/etc\n"))))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (alist-replace
                 'configure
                 (lambda* (#:key outputs inputs #:allow-other-keys)
                   (substitute* "Makefile"
                     (("^prefix = .*$")
                      (string-append "prefix = "
                                     (assoc-ref outputs "out")
                                     "\n"))))
                 (alist-cons-after
                  'install 'wrap
                  (lambda* (#:key inputs outputs #:allow-other-keys)
                    (let ((wget   (assoc-ref inputs "wget"))
                          (vorbis (assoc-ref inputs "vorbis-tools"))
                          (parano (assoc-ref inputs "cdparanoia"))
                          (which  (assoc-ref inputs "which"))
                          (discid (assoc-ref inputs "cd-discid"))
                          (out    (assoc-ref outputs "out")))
                      (define (wrap file)
                        (wrap-program file
                                      `("PATH" ":" prefix
                                        (,(string-append out "/bin:"
                                                         wget "/bin:"
                                                         which "/bin:"
                                                         vorbis "/bin:"
                                                         discid "/bin:"
                                                         parano "/bin")))))

                      (for-each wrap
                                (find-files (string-append out "/bin")
                                            ".*"))))
                  %standard-phases))
       #:tests? #f))

    (inputs `(("wget" ,wget)
              ("which" ,which)
              ("cdparanoia" ,cdparanoia)
              ("cd-discid" ,cd-discid)
              ("vorbis-tools" ,vorbis-tools)

              ;; A couple of Python and Perl scripts are included.
              ("python" ,python)
              ("perl" ,perl)))

    (synopsis "Command-line audio CD ripper")
    (description
     "abcde is a front-end command-line utility (actually, a shell script)
that grabs tracks off a CD, encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex
and/or MPP/MP+ (Musepack) format, and tags them, all in one go.")
    (license gpl2+)))

A gnu/packages/debug.scm => gnu/packages/debug.scm +139 -0
@@ 0,0 1,139 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.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 debug)
  #:use-module (guix packages)
  #:use-module (guix licenses)
  #:use-module (guix download)
  #:use-module (guix utils)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages flex)
  #:use-module (gnu packages indent)
  #:use-module (gnu packages llvm)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages pretty-print))

(define-public delta
  (package
    (name "delta")
    (version "2006.08.03")
    (source
     (origin
      (method url-fetch)
      (uri (list
            (string-append "http://ftp.de.debian.org/debian/pool/main/d/delta/"
                           "delta_" version ".orig.tar.gz")
            ;; This uri seems to send guix download into an infinite loop
            (string-append "http://delta.tigris.org/files/documents/3103/"
                           "33566/delta-" version ".tar.gz")))
      (sha256
       (base32
        "184wh35pf2ddx97319s6sgkzpz48xxkbwzcjpycv009bm53lh61q"))))
    (build-system gnu-build-system)
    (inputs                             ;Installed programs are perl scripts
     `(("perl" ,perl)))
    (arguments
     `(#:phases
       (alist-replace
        'install
        (lambda* (#:key outputs #:allow-other-keys)
          ;; Makefile contains no install target
          (let* ((out (assoc-ref outputs "out"))
                 (bin (string-append out "/bin"))
                 (doc (string-append out "/share/doc/delta-" ,version)))
            (begin
              (mkdir-p bin)
              (mkdir-p doc)
              (for-each (lambda (h)
                          (copy-file h (string-append doc "/" (basename h))))
                        `("License.txt" ,@(find-files "www" ".*\\.html")))
              (for-each (lambda (b)
                          (copy-file b (string-append bin "/" b)))
                        `("delta" "multidelta" "topformflat")))))
        (alist-delete 'configure %standard-phases))))
    (home-page "http://delta.tigris.org/")
    (synopsis "Heuristical file minimizer")
    (description
     "Delta assists you in minimizing \"interesting\" files subject to a test
of their interestingness.  A common such situation is when attempting to
isolate a small failure-inducing substring of a large input that causes your
program to exhibit a bug.")
    ;; See License.txt, which is a bsd-3 license, despite the project's
    ;; home-page pointing to a bsd-2 license.
    (license bsd-3)))

(define-public c-reduce
  (package
    (name "c-reduce")
    (version "2.2.1")
    (source
     (origin
      (method url-fetch)
      (uri (list
            (string-append "http://embed.cs.utah.edu/creduce/"
                           "creduce-" version ".tar.gz")))
      (sha256
       (base32
        "0wh0fkyg2l41d2wkndrgdiai9g2qiav7jik7cys21vmgzq01pyy2"))
      (modules '((guix build utils)))
      (snippet
       '(substitute* "clang_delta/TransformationManager.cpp"
          (("llvm/Config/config.h") "llvm/Config/llvm-config.h")))))
    (build-system gnu-build-system)
    (inputs
     `(("astyle"          ,astyle)
       ("delta"           ,delta)
       ("llvm"            ,llvm)
       ("clang"           ,clang)
       ("flex"            ,flex)
       ("indent"          ,indent)
       ("perl"            ,perl)
       ("benchmark-timer" ,perl-benchmark-timer)
       ("exporter-lite"   ,perl-exporter-lite)
       ("file-which"      ,perl-file-which)
       ("getopt-tabular"  ,perl-getopt-tabular)
       ("regex-common"    ,perl-regexp-common)
       ("sys-cpu"         ,perl-sys-cpu)))
    (arguments
     `(#:phases (alist-cons-after
                 'install 'set-load-paths
                 (lambda* (#:key inputs outputs #:allow-other-keys)
                   ;; Tell creduce where to find the perl modules it needs.
                   (let* ((out (assoc-ref outputs "out"))
                          (prog (string-append out "/bin/creduce")))
                     (wrap-program
                      prog
                      `("PERL5LIB" ":" prefix
                        ,(map (lambda (p)
                                (string-append (assoc-ref inputs p)
                                               "/lib/perl5/site_perl/"
                                               ,(package-version perl)))
                              '("benchmark-timer" "exporter-lite"
                                "file-which"      "getopt-tabular"
                                "regex-common"    "sys-cpu"))))))
                 %standard-phases)))
    (home-page "http://embed.cs.utah.edu/creduce")
    (synopsis "Reducer for interesting code")
    (description
     "C-Reduce is a tool that takes a large C or C++ program that has a
property of interest (such as triggering a compiler bug) and automatically
produces a much smaller C/C++ program that has the same property.  It is
intended for use by people who discover and report bugs in compilers and other
tools that process C/C++ code.")
    (license ncsa)))

M gnu/packages/dictionaries.scm => gnu/packages/dictionaries.scm +2 -2
@@ 29,14 29,14 @@
(define-public vera
  (package
    (name "vera")
    (version "1.21a")
    (version "1.22")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/vera/vera-" version
                                  ".tar.gz"))
              (sha256
               (base32
                "09qz1g8js8qw735wmd8kraqbk1d1997v3px2lcc58frf1r66bp8f"))))
                "1anx6ikwlkg7bn3c5a8xxrp33bvhfgxmncvnqbn2fp1hnbhqh5i7"))))
    (build-system trivial-build-system)
    (arguments
     `(#:builder (begin

M gnu/packages/disk.scm => gnu/packages/disk.scm +2 -2
@@ 100,7 100,7 @@ tables, and it understands a variety of different formats.")
(define-public ddrescue
  (package
    (name "ddrescue")
    (version "1.18.1")
    (version "1.19")
    (source
     (origin
      (method url-fetch)


@@ 108,7 108,7 @@ tables, and it understands a variety of different formats.")
                          version ".tar.lz"))
      (sha256
       (base32
        "1ad1ifby89wys8lxh4d24y5lih6hkz54jhv6sf6bs1i7sd7lnqaq"))))
        "1f278w7i9sx45jk6fsw1kyzx743k3alx1c4w1q8sk05ckafhr3gd"))))
    (build-system gnu-build-system)
    (home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
    (synopsis "Data recovery utility")

M gnu/packages/dwm.scm => gnu/packages/dwm.scm +55 -0
@@ 84,3 84,58 @@ left corner.
dwm draws a small customizable border around windows to indicate the focus
state.")
    (license x11)))

(define-public dmenu
  (package
    (name "dmenu")
    (version "4.5")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://dl.suckless.org/tools/dmenu-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "0l58jpxrr80fmyw5pgw5alm5qry49aw6y049745wl991v2cdcb08"))))
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f ; no tests
       #:make-flags (list "CC=gcc"
                          (string-append "PREFIX=" %output))
       #:phases
       (alist-delete 'configure %standard-phases)))
    (inputs
     `(("libx11" ,libx11)
       ("libxinerama" ,libxinerama)))
    (home-page "http://tools.suckless.org/dmenu/")
    (synopsis "Dynamic menu")
    (description
     "A dynamic menu for X, originally designed for dwm.  It manages large
numbers of user-defined menu items efficiently.")
    (license x11)))

(define-public slock
  (package
    (name "slock")
    (version "1.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://dl.suckless.org/tools/slock-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "1r70s3npmp0nyrfdsxz8cw1i1z8n9phqdlw02wjphv341h3yajp0"))))
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f ; no tests
       #:make-flags (list "CC=gcc"
                          (string-append "PREFIX=" %output))
       #:phases (alist-delete 'configure %standard-phases)))
    (inputs
     `(("libx11" ,libx11)
       ("libxext" ,libxext)
       ("libxinerama" ,libxinerama)))
    (home-page "http://tools.suckless.org/slock/")
    (synopsis "Simple X session lock")
    (description
     "Simple X session lock with trivial feedback on password entry.")
    (license x11)))

M gnu/packages/emacs.scm => gnu/packages/emacs.scm +201 -3
@@ 2,6 2,7 @@
;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 23,6 24,7 @@
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system glib-or-gtk)
  #:use-module (guix build-system trivial)
  #:use-module (gnu packages)
  #:use-module (gnu packages gtk)


@@ 44,6 46,10 @@
  #:use-module (gnu packages xml)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages acl)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages linux)               ;alsa
  #:use-module (gnu packages xiph)
  #:use-module (gnu packages mp3)
  #:use-module (guix utils)
  #:use-module (srfi srfi-1))



@@ 58,7 64,7 @@
             (sha256
              (base32
               "1zflm6ac34s6v166p58ilxrxbxjm0q2wfc25f8y0mjml1lbr3qs7"))))
    (build-system gnu-build-system)
    (build-system glib-or-gtk-build-system)
    (arguments
     '(#:phases (alist-cons-before
                 'configure 'fix-/bin/pwd


@@ 114,6 120,7 @@ languages.")
    (name "emacs-no-x-toolkit")
    (synopsis "The extensible, customizable, self-documenting text
editor (without an X toolkit)" )
    (build-system gnu-build-system)
    (inputs (append `(("inotify-tools" ,inotify-tools))
                    (alist-delete "gtk+" (package-inputs emacs))))
    (arguments (append '(#:configure-flags '("--with-x-toolkit=no"))


@@ 135,6 142,15 @@ editor (without an X toolkit)" )
             (sha256
              (base32 "1mrk0bzqcpfhsw6635qznn47nzfy9ps7wrhkpymswdfpw5mdsry5"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (alist-cons-after
                 'install 'post-install
                 (lambda* (#:key outputs #:allow-other-keys)
                   (symlink "geiser-install.el"
                            (string-append (assoc-ref outputs "out")
                                           "/share/emacs/site-lisp/"
                                           "geiser-autoloads.el")))
                 %standard-phases)))
    (inputs `(("guile" ,guile-2.0)
              ("emacs" ,emacs)))
    (home-page "http://nongnu.org/geiser/")


@@ 186,6 202,7 @@ giving her access to live metadata.")
           (copy-file source target)
           (with-directory-excursion lisp-dir
             (parameterize ((%emacs emacs))
               (emacs-generate-autoloads ,name lisp-dir)
               (emacs-batch-eval '(byte-compile-file "paredit.el"))))))))
    (home-page "http://mumble.net/~campbell/emacs/paredit/")
    (synopsis "Emacs minor mode for editing parentheses")


@@ 240,7 257,13 @@ when typing parentheses directly or commenting out code line by line.")
             (emacs-substitute-variables "magit.el"
               ("magit-git-executable" (string-append git "/bin/git"))
               ("magit-gitk-executable" (string-append git:gui "/bin/gitk")))))
         %standard-phases))))
         (alist-cons-after
          'install 'post-install
          (lambda* (#:key outputs #:allow-other-keys)
            (emacs-generate-autoloads
             ,name (string-append (assoc-ref outputs "out")
                                  "/share/emacs/site-lisp/")))
          %standard-phases)))))
    (home-page "http://magit.github.io/")
    (synopsis "Emacs interface for the Git version control system")
    (description


@@ 317,6 340,7 @@ operations.")
                     (string-append (assoc-ref outputs "out")
                                    "/share/emacs/site-lisp")
                   (for-each delete-file '("ChangeLog" "ChangeLog.1"))
                   (symlink "w3m-load.el" "w3m-autoloads.el")
                   #t)))
          %standard-phases)))))
    (home-page "http://emacs-w3m.namazu.org/")


@@ 359,9 383,183 @@ operations.")
           (let ((wget (assoc-ref inputs "wget")))
             (emacs-substitute-variables "wget.el"
               ("wget-command" (string-append wget "/bin/wget")))))
         %standard-phases))))
         (alist-cons-after
          'install 'post-install
          (lambda* (#:key outputs #:allow-other-keys)
            (emacs-generate-autoloads
             "wget" (string-append (assoc-ref outputs "out")
                                   "/share/emacs/site-lisp/")))
          %standard-phases)))))
    (home-page "http://www.emacswiki.org/emacs/EmacsWget")
    (synopsis "Simple file downloader for Emacs based on wget")
    (description
     "Emacs-wget is an emacs interface for the wget file downloader.")
    (license gpl2+)))


;;;
;;; Multimedia.
;;;

(define-public emms
  (package
    (name "emms")
    (version "4.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/emms/emms-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
              (modules '((guix build utils)))
              (snippet
               '(substitute* "Makefile"
                  (("/usr/bin/install-info")
                   ;; No need to use 'install-info' since it would create a
                   ;; useless 'dir' file.
                   "true")
                  (("^INFODIR=.*")
                   ;; Install Info files to $out/share/info, not $out/info.
                   "INFODIR := $(PREFIX)/share/info\n")
                  (("/site-lisp/emms")
                   ;; Install directly in share/emacs/site-lisp, not in a
                   ;; sub-directory.
                   "/site-lisp")
                  (("^all: (.*)\n" _ rest)
                   ;; Build 'emms-print-metadata'.
                   (string-append "all: " rest " emms-print-metadata\n"))))))
    (build-system gnu-build-system)
    (arguments
     '(#:modules ((guix build gnu-build-system)
                  (guix build utils)
                  (guix build emacs-utils))
       #:imported-modules ((guix build gnu-build-system)
                           (guix build utils)
                           (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 'emms-print-metadata.1' to
                    ;; be already installed.
                    (let* ((out  (assoc-ref outputs "out"))
                           (man1 (string-append out "/share/man/man1")))
                      (mkdir-p man1)
                      (copy-file "emms-print-metadata.1"
                                 (string-append man1 "/emms-print-metadata.1"))))
                  (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)))
       #:tests? #f))
    (native-inputs `(("emacs" ,emacs)            ;for (guix build emacs-utils)
                     ("texinfo" ,texinfo)))
    (inputs `(;("perl" ,perl)                     ;for 'emms-print-metadata.pl'
              ("alsa-utils" ,alsa-utils)
              ("vorbis-tools" ,vorbis-tools)
              ("mpg321" ,mpg321)
              ("taglib" ,taglib)
              ("mp3info" ,mp3info)))
    (synopsis "Emacs Multimedia System")
    (description
     "EMMS is the Emacs Multimedia System.  It is a small front-end which
can control one of the supported external players.  Thus, it supports
whatever formats are supported by your music player.  It also
supports tagging and playlist management, all behind a clean and
light user interface.")
    (home-page "http://www.gnu.org/software/emms/")
    (license gpl3+)))


;;;
;;; Miscellaneous.
;;;

(define-public bbdb
  (package
    (name "bbdb")
    (version "3.1.2")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://savannah/bbdb/bbdb-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "1gs16bbpiiy01w9pyg12868r57kx1v3hnw04gmqsmpc40l1hyy05"))
              (modules '((guix build utils)))
              (snippet
               ;; We don't want to build and install the PDF.
               '(substitute* "doc/Makefile.in"
                  (("^doc_DATA = .*$")
                   "doc_DATA =\n")))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (alist-cons-after
                 'install 'post-install
                 (lambda* (#:key outputs #:allow-other-keys)
                   ;; Add an autoloads file with the right name for guix.el.
                   (let* ((out  (assoc-ref outputs "out"))
                          (site (string-append out "/share/emacs/site-lisp")))
                     (with-directory-excursion site
                       (symlink "bbdb-loaddefs.el" "bbdb-autoloads.el"))))
                 %standard-phases)))
    (native-inputs `(("emacs" ,emacs)))
    (home-page "http://savannah.nongnu.org/projects/bbdb/")
    (synopsis "Contact management utility for Emacs")
    (description
     "BBDB is the Insidious Big Brother Database for GNU Emacs.  It provides
an address book for email and snail mail addresses, phone numbers and the
like.  It can be linked with various Emacs mail clients (Message and Mail
mode, Rmail, Gnus, MH-E, and VM).  BBDB is fully customizable.")
    (license gpl3+)))

M gnu/packages/fish.scm => gnu/packages/fish.scm +9 -3
@@ 28,21 28,27 @@
(define-public fish
  (package
    (name "fish")
    (version "2.1.0")
    (version "2.1.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://fishshell.com/files/"
                                  version "/fish-" version ".tar.gz"))
              (sha256
               (base32
                "0i7h3hx8iszli3d4kphw79sz9m07f2lc2c9hr9smdps5s7wpllmg"))))
                "096rhi911s3j618cvp8fj9pb4jniy3y6415jvjg8bhszsp1x7r5p"))
              (modules '((guix build utils)))
              ;; Don't try to install /etc/fish/config.fish.
              (snippet
               '(substitute* "Makefile.in"
                  ((".*INSTALL.*sysconfdir.*fish.*") "")))))
    (build-system gnu-build-system)
    (native-inputs
     `(("doxygen" ,doxygen)))
    (inputs
     `(("ncurses" ,ncurses)))
    (arguments
     '(#:tests? #f)) ; no check target
     '(#:tests? #f ; no check target
       #:configure-flags '("--sysconfdir=/etc")))
    (synopsis "The friendly interactive shell")
    (description
     "Fish (friendly interactive shell) is a shell focused on interactive use,

M gnu/packages/fonts.scm => gnu/packages/fonts.scm +74 -8
@@ 2,6 2,7 @@
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Joshua Grant <tadni@riseup.net>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 31,9 32,9 @@
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages pkg-config))

(define-public ttf-dejavu
(define-public font-dejavu
  (package
    (name "ttf-dejavu")
    (name "font-dejavu")
    (version "2.34")
    (source (origin
             (method url-fetch)


@@ 97,9 98,9 @@ provide serif, sans and monospaced variants.")
     (license:x11-style
      "http://dejavu-fonts.org/"))))

(define-public ttf-bitstream-vera
(define-public font-bitstream-vera
  (package
    (name "ttf-bitstream-vera")
    (name "font-bitstream-vera")
    (version "1.10")
    (source (origin
             (method url-fetch)


@@ 151,9 152,9 @@ package provides the TrueType (TTF) files.")
     (license:x11-style
      "https://www-old.gnome.org/fonts/#Final_Bitstream_Vera_Fonts"))))

(define-public freefont-ttf
(define-public font-gnu-freefont-ttf
  (package
    (name "freefont-ttf")
    (name "font-gnu-freefont-ttf")
    (version "20100919")
    (source (origin
             (method url-fetch)


@@ 203,9 204,74 @@ package provides the TrueType (TTF) files.")
10646/Unicode UCS (Universal Character Set).")
   (license license:gpl3+)))

(define-public terminus-font
(define-public font-liberation
  (package
    (name "terminus-font")
    (name "font-liberation")
    (version "2.00.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://fedorahosted.org/releases/l/i/"
                                  "liberation-fonts/liberation-fonts-ttf-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "010m4zfqan4w04b6bs9pm3gapn9hsb18bmwwgp2p6y6idj52g43q"))))
    (build-system trivial-build-system)
    (arguments
     `(#:modules ((guix build utils))
       #:builder
       (begin
         (use-modules (guix build utils))

         (let ((tar      (string-append (assoc-ref %build-inputs "tar")
                                        "/bin/tar"))
               (PATH     (string-append (assoc-ref %build-inputs "gzip")
                                        "/bin"))
               (font-dir (string-append %output "/share/fonts/truetype"))
               (doc-dir  (string-append %output "/share/doc/" ,name)))
           (setenv "PATH" PATH)
           (system* tar "xvf" (assoc-ref %build-inputs "source"))
           (mkdir-p font-dir)
           (mkdir-p doc-dir)
           (chdir (string-append "liberation-fonts-ttf-" ,version))
           (for-each (lambda (ttf)
                       (copy-file ttf
                                  (string-append font-dir "/"
                                                 (basename ttf))))
                     (find-files "." "\\.ttf$"))
           (for-each (lambda (doc)
                       (copy-file doc
                                  (string-append doc-dir "/"
                                                 (basename doc))))
                     '("AUTHORS" "ChangeLog" "LICENSE" "README" "TODO"))))))
    (native-inputs
     `(("source" ,source)
       ("tar" ,tar)
       ("gzip" ,gzip)))
    (home-page "https://fedorahosted.org/liberation-fonts/")
    (synopsis
     "Fonts compatible with Arial, Times New Roman, and Courier New")
    (description
     "The Liberation font family aims at metric compatibility with
Arial, Times New Roman, and Courier New.

There are three sets:

- Sans (a substitute for Arial, Albany, Helvetica, Nimbus Sans L, and
Bitstream Vera Sans);

- Serif (a substitute for Times New Roman, Thorndale, Nimbus Roman, and
Bitstream Vera Serif);

- Mono (a substitute for Courier New, Cumberland, Courier, Nimbus Mono L,
and Bitstream Vera Sans Mono).

The Liberation Fonts are sponsored by Red Hat.")
    (license license:silofl1.1)))

(define-public font-terminus
  (package
    (name "font-terminus")
    (version "4.39")
    (source
      (origin

M gnu/packages/freeipmi.scm => gnu/packages/freeipmi.scm +2 -2
@@ 27,14 27,14 @@
(define-public freeipmi
  (package
    (name "freeipmi")
    (version "1.4.5")
    (version "1.4.7")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/freeipmi/freeipmi-"
                                 version ".tar.gz"))
             (sha256
              (base32
               "033zakrk3kvi4y41kslicr90b3yb2kj052cl6nbja7ybn70y9nkz"))))
               "1j33b2spj1vzjf1ymfrgka5h7imijmdwg9jdjfb92b2ccld9jj6l"))))
    (build-system gnu-build-system)
    (inputs
     `(("readline" ,readline) ("libgcrypt" ,libgcrypt)))

M gnu/packages/games.scm => gnu/packages/games.scm +2 -1
@@ 168,7 168,8 @@ scriptable with Guile.")
                     (let ((prefix (assoc-ref outputs "out")))
                       ;; Create directories that the makefile assumes exist.
                       (mkdir-p (string-append prefix "/bin"))
                       (mkdir-p (string-append prefix "/share/applications"))))
                       (mkdir-p (string-append prefix "/share/applications"))
                       (mkdir-p (string-append prefix "/share/pixmaps"))))
                   ;; No configure script.
                   (alist-delete 'configure %standard-phases))))
       #:tests? #f)) ;; No check target.

M gnu/packages/gimp.scm => gnu/packages/gimp.scm +4 -1
@@ 74,7 74,10 @@ provided as well as the framework to add new color models and data types.")
                "09nlv06li9nrn74ifpm7223mxpg0s7cii702z72cpbwrjh6nlbnz"))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases
     `(;; More than just the one test disabled below now fails; disable them
       ;; all according to the rationale given below.
       #:tests? #f
       #:phases
       (alist-cons-before
        'build 'pre-build
        (lambda _

M gnu/packages/gl.scm => gnu/packages/gl.scm +2 -1
@@ 31,7 31,8 @@
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xml)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages guile))
  #:use-module (gnu packages guile)
  #:use-module (gnu packages xdisorg))

(define-public glu
  (package

M gnu/packages/glib.scm => gnu/packages/glib.scm +96 -20
@@ 22,6 22,7 @@
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix utils)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages)
  #:use-module (gnu packages base)


@@ 37,6 38,7 @@
  #:use-module (gnu packages xml)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages file)
  #:use-module (gnu packages which)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages m4)



@@ 54,8 56,7 @@
(define dbus
  (package
    (name "dbus")
    (version "1.8.8")
    (replacement dbus-1.8.10)                     ;fix for CVE-2014-7824
    (version "1.8.10")
    (source (origin
             (method url-fetch)
             (uri


@@ 63,7 64,7 @@
                             version ".tar.gz"))
             (sha256
              (base32
               "1zfi5grrlryppgrl23im82cqw6l9fk1wlc2ayvzx0yd994v2dayz"))
               "13mgvwigm931r8n9363imnn0vn6dvc0m322k3p8fs5c8nvyqggqh"))
             (patches (list (search-patch "dbus-localstatedir.patch")))))
    (build-system gnu-build-system)
    (arguments


@@ 114,35 115,23 @@ or through unencrypted TCP/IP suitable for use behind a firewall with
shared NFS home directories.")
    (license license:gpl2+)))                     ; or Academic Free License 2.1

(define-public dbus-1.8.10
  (let ((real-version "1.8.10"))
    (package (inherit dbus)
      (source (origin
                (method url-fetch)
                (uri
                 (string-append "http://dbus.freedesktop.org/releases/dbus/dbus-"
                                real-version ".tar.gz"))
                (sha256
                 (base32
                  "13mgvwigm931r8n9363imnn0vn6dvc0m322k3p8fs5c8nvyqggqh"))
                (patches (list (search-patch "dbus-localstatedir.patch")))))
      (replacement #f))))

(define glib
  (package
   (name "glib")
   (version "2.40.0")
   (version "2.40.2")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnome/sources/"
                                name "/" (string-take version 4) "/"
                                name "-" version ".tar.xz"))
            (sha256
             (base32 "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd"))
             (base32
              "0ykcf99mhpkza3xwa3k79vgfml8mqiac9044802yi5q8jpr8mzz8"))
            (patches (list (search-patch "glib-tests-homedir.patch")
                           (search-patch "glib-tests-desktop.patch")
                           (search-patch "glib-tests-prlimit.patch")
                           (search-patch "glib-tests-timer.patch")))))
                           (search-patch "glib-tests-timer.patch")
                           (search-patch "glib-tests-gapplication.patch")))))
   (build-system gnu-build-system)
   (outputs '("out"           ; everything
              "bin"           ; glib-mkenums, gtester, etc.; depends on Python


@@ 233,6 222,11 @@ dynamic loading, and an object system.")
     `(;; In practice, GIR users will need libffi when using
       ;; gobject-introspection.
       ("libffi" ,libffi)))
    (native-search-paths
     (list (search-path-specification
            (variable "GI_TYPELIB_PATH")
            (directories '("lib/girepository-1.0")))))
    (search-paths native-search-paths)
    (arguments
     `(#:phases
        (alist-cons-before


@@ 430,3 424,85 @@ has an ease of use unmatched by other C++ callback libraries.")
     "Glibmm provides a C++ programming interface to the part of GLib that are
useful for C++.")
    (license license:lgpl2.1+)))

(define-public python2-pygobject-2
  (package
    (name "python2-pygobject")
    ;; This was the last version to declare the 2.0 platform number, i.e. its
    ;; pkg-config files were named pygobject-2.0.pc
    (version "2.28.6")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://gnome/sources/pygobject/"
                           (version-major+minor version)
                           "/pygobject-" version ".tar.xz"))
       (sha256
        (base32
         "1f5dfxjnil2glfwxnqr14d2cjfbkghsbsn8n04js2c2icr7iv2pv"))
       (patches
        (list (search-patch
               "python2-pygobject-2-gi-info-type-error-domain.patch")))))
    (build-system gnu-build-system)
    (native-inputs
     `(("which" ,which)
       ("glib-bin" ,glib "bin")         ;for tests: glib-compile-schemas
       ("pkg-config" ,pkg-config)
       ("dbus" ,dbus)))                 ;for tests
    (inputs
     `(("python" ,python-2)
       ("glib"   ,glib)
       ("python2-py2cairo" ,python2-py2cairo)
       ("gobject-introspection" ,gobject-introspection)))
    (propagated-inputs
     `(("libffi" ,libffi)))             ;mentioned in pygobject-2.0.pc
    (arguments
     `(#:tests? #f                      ;segfaults during tests
       #:configure-flags '("LIBS=-lcairo-gobject")))
    (home-page "https://pypi.python.org/pypi/PyGObject")
    (synopsis "Python bindings for GObject")
    (description
     "Python bindings for GLib, GObject, and GIO.")
    (license license:lgpl2.1+)))

(define-public python-pygobject
  (package
    (name "python-pygobject")
    (version "3.12.2")                  ;last version that works with
                                        ;gobject-introspection 1.38
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://gnome/sources/pygobject/"
                           (version-major+minor version)
                           "/pygobject-" version ".tar.xz"))
       (sha256
        (base32
         "08m5yad1hjdax4g39w6lgjk4124mcwpa8fc5iyvb8nygk8s3syky"))))
    ;; 3.14.0: 0m1d75iwxa6k1xbkn6c6yq5r10pxnf7i5c2a5yvwsnab7ylzz7kp
    (build-system gnu-build-system)
    (native-inputs
     `(("which" ,which)
       ("glib-bin" ,glib "bin")         ;for tests: glib-compile-schemas
       ("pkg-config" ,pkg-config)))
    (inputs
     `(("python" ,python)
       ("glib"   ,glib)
       ("python-pycairo" ,python-pycairo)
       ("gobject-introspection" ,gobject-introspection)
       ("libffi" ,libffi)))
    (arguments
     ;; TODO: failing tests: test_native_calls_async
     ;; test_native_calls_async_errors test_native_calls_sync
     ;; test_native_calls_sync_errors test_python_calls_async
     ;; test_python_calls_async_error test_python_calls_async_error_result
     ;; test_python_calls_sync test_python_calls_sync_errors
     ;; test_python_calls_sync_noargs test_callback_user_data_middle_none
     ;; test_callback_user_data_middle_single
     ;; test_callback_user_data_middle_tuple
     '(#:tests? #f))
    (home-page "https://pypi.python.org/pypi/PyGObject")
    (synopsis "Python bindings for GObject")
    (description
     "Python bindings for GLib, GObject, and GIO.")
    (license license:lgpl2.1+)))

M gnu/packages/global.scm => gnu/packages/global.scm +2 -2
@@ 28,14 28,14 @@
(define-public global                             ; a global variable
  (package
    (name "global")
    (version "6.3.2")
    (version "6.3.3")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/global/global-"
                                 version ".tar.gz"))
             (sha256
              (base32
               "07iifpz00ch3drlscvk5v12j7bckwv6pk8040y81s1x14b0gf220"))))
               "0j828dg2cjf77rx71cw68jpk7jl119v6nyb0kyvirr5i1860j1fx"))))
    (build-system gnu-build-system)
    (inputs `(("ncurses" ,ncurses)
              ("libtool" ,libtool)))

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +47 -1
@@ 46,7 46,8 @@
  #:use-module (gnu packages xml)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages xorg))
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xdisorg))

(define-public brasero
  (package


@@ 1119,6 1120,51 @@ widgets built in the loading process.")
controls using the Bonobo component framework.")
    (license license:lgpl2.0+)))

(define-public libwnck
  (package
    (name "libwnck")
    (version "3.14.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
                                  (version-major+minor version) "/"
                                  name "-" version ".tar.xz"))
              (sha256
               (base32 "074jww04z8g9r1acndqap79wx4kbm3rpkf4lcg1v82b66iv0027m"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (propagated-inputs
     `(("gtk+" ,gtk+)
       ("libxres" ,libxres)
       ("startup-notification" ,startup-notification)))
    (home-page "https://developer.gnome.org/libwnck/")
    (synopsis "Window Navigator Construction Kit")
    (description
     "Libwnck is the Window Navigator Construction Kit, a library for use in
writing pagers, tasklists, and more generally applications that are dealing
with window management.  It tries hard to respect the Extended Window Manager
Hints specification (EWMH).")
    (license license:lgpl2.0+)))

;; stable version for gtk2, required by xfwm4.
(define-public libwnck-1
  (package (inherit libwnck)
    (name "libwnck")
    (version "2.30.7")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnome/sources/" name "/"
                                  (version-major+minor version) "/"
                                  name "-" version ".tar.xz"))
              (sha256
               (base32
                "15713yl0f8f3p99jzqqfmbicrdswd3vwpx7r3bkf1bgh6d9lvs4b"))))
    (propagated-inputs
     `(("gtk+" ,gtk+-2)
       ("libxres" ,libxres)
       ("startup-notification" ,startup-notification)))))

(define-public goffice
  (package

M gnu/packages/gnunet.scm => gnu/packages/gnunet.scm +2 -2
@@ 103,14 103,14 @@ tool to extract metadata from a file and print the results.")
(define-public libmicrohttpd
  (package
   (name "libmicrohttpd")
   (version "0.9.37")
   (version "0.9.38")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/libmicrohttpd/libmicrohttpd-"
                                version ".tar.gz"))
            (sha256
             (base32
              "1p3wnhr43v6vqdgl86r76298wjfxz2ihj9zh9kpz8l7va30br357"))))
              "08g7p4l0p2fsjj8ayl68zq1bqgrn0pck19bm8yd7k61whvfv9wld"))))
   (build-system gnu-build-system)
   (inputs
    `(("curl" ,curl)

M gnu/packages/gnupg.scm => gnu/packages/gnupg.scm +4 -4
@@ 39,7 39,7 @@
(define-public libgpg-error
  (package
    (name "libgpg-error")
    (version "1.13")
    (version "1.17")
    (source
     (origin
      (method url-fetch)


@@ 47,7 47,7 @@
                          version ".tar.bz2"))
      (sha256
       (base32
        "02lv5h865f8if391xjp3njg04k0l4x2pwjkcdbzcwilail1skazq"))))
        "1dapxzxl1naghf342fwfc2w2f2c5hb9gr1a1s4n8dsqn26kybx1z"))))
    (build-system gnu-build-system)
    (home-page "http://gnupg.org")
    (synopsis "Library of error values for GnuPG components")


@@ 132,7 132,7 @@ provided.")
(define-public libksba
  (package
    (name "libksba")
    (version "1.3.0")
    (version "1.3.2")
    (source
     (origin
      (method url-fetch)


@@ 141,7 141,7 @@ provided.")
            version ".tar.bz2"))
      (sha256
       (base32
        "0w8rfb6yhcwkwzvjafrashcygy4hd9xwwmvlnkfd1m2h0paywqas"))))
        "01l4hvcknk9nb4bvyb6aqaid19jg0wv3ik54j1b89hnzamwm75gb"))))
    (build-system gnu-build-system)
    (propagated-inputs
     `(("libgpg-error" ,libgpg-error)))

M gnu/packages/gnutls.scm => gnu/packages/gnutls.scm +2 -2
@@ 36,7 36,7 @@
(define-public libtasn1
  (package
    (name "libtasn1")
    (version "4.1")
    (version "4.2")
    (source
     (origin
      (method url-fetch)


@@ 44,7 44,7 @@
                          version ".tar.gz"))
      (sha256
       (base32
        "00gkyppzw6fqi5mnc3d8paf7bp6nfhi9213481awy07sviqnbvk0"))))
        "1fydwh5hlnmprdzmzn4kiqb939br59qv1001k7ah5b626v5l2fv9"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)


M gnu/packages/gsasl.scm => gnu/packages/gsasl.scm +2 -2
@@ 48,13 48,13 @@
(define-public gss
  (package
   (name "gss")
   (version "1.0.2")
   (version "1.0.3")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/gss/gss-" version
                                ".tar.gz"))
            (sha256 (base32
                     "1qa8lbkzi6ilfggx7mchfzjnchvhwi68rck3jf9j4425ncz7zsd9"))))
                     "1syyvh3k659xf1hdv9pilnnhbbhs6vfapayp4xgdcc8mfgf9v4gz"))))
   (build-system gnu-build-system)
   (inputs `(("nettle" ,nettle)
             ("shishi" ,shishi)

M gnu/packages/gtk.scm => gnu/packages/gtk.scm +113 -4
@@ 25,6 25,7 @@
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system python)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages ghostscript)


@@ 38,7 39,8 @@
  #:use-module (gnu packages python)
  #:use-module (gnu packages guile)
  #:use-module (gnu packages xml)
  #:use-module (gnu packages xorg))
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xdisorg))

(define-public atk
  (package


@@ 272,10 274,11 @@ printing and other features typical of a source code editor.")
             (base32
              "05s6ksvy1yan6h6zny9n3bmvygcnzma6ljl6i0z9cci2xg116c8q"))))
   (build-system gnu-build-system)
   (inputs
   (propagated-inputs ; required by gdk-pixbuf-2.0.pc
    `(("glib" ,glib)
      ("libjpeg" ,libjpeg)
      ("libpng" ,libpng)
      ("libpng" ,libpng)))
   (inputs
    `(("libjpeg" ,libjpeg)
      ("libtiff" ,libtiff)))
   (native-inputs
     `(("pkg-config" ,pkg-config)


@@ 634,3 637,109 @@ extensive documentation, including API reference and a tutorial.")
       ("atkmm" ,atkmm)
       ("gtk+" ,gtk+-2)
       ("glibmm" ,glibmm)))))

(define-public python-pycairo
  (package
    (name "python-pycairo")
    (version "1.10.0")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "http://cairographics.org/releases/pycairo-"
                          version ".tar.bz2"))
      (sha256
       (base32
        "1gjkf8x6hyx1skq3hhwcbvwifxvrf9qxis5vx8x5igmmgs70g94s"))))
    (build-system python-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (propagated-inputs                  ;pycairo.pc references cairo
     `(("cairo" ,cairo)))
    (arguments
     `(#:tests? #f
       #:phases (alist-cons-before
                 'build 'configure
                 (lambda* (#:key outputs #:allow-other-keys)
                   (zero? (system* "./waf" "configure"
                                   (string-append "--prefix="
                                                  (assoc-ref outputs "out")))))
                 (alist-replace
                  'build
                  (lambda _
                    (zero? (system* "./waf" "build")))
                  (alist-replace
                   'install
                   (lambda _
                     (zero? (system* "./waf" "install")))
                   %standard-phases)))))
    (home-page "http://cairographics.org/pycairo/")
    (synopsis "Python bindings for cairo")
    (description
     "Pycairo is a set of Python bindings for the Cairo graphics library.")
    (license license:lgpl3+)))

(define-public python2-py2cairo
  (package (inherit python-pycairo)
    (name "python2-py2cairo")
    (version "1.10.0")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "http://cairographics.org/releases/py2cairo-"
                          version ".tar.bz2"))
      (sha256
       (base32
        "0cblk919wh6w0pgb45zf48xwxykfif16qk264yga7h9fdkq3j16k"))))
    (arguments
     `(#:python ,python-2
       ,@(package-arguments python-pycairo)))
    ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1
    (license (list license:lgpl2.1 license:mpl1.1))))

(define-public python2-pygtk
  (package
    (name "python2-pygtk")
    (version "2.24.0")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "http://ftp.gnome.org/pub/GNOME/sources"
                          "/pygtk/" (version-major+minor version)
                          "/pygtk-" version ".tar.bz2"))
      (sha256
       (base32
        "04k942gn8vl95kwf0qskkv6npclfm31d78ljkrkgyqxxcni1w76d"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("python" ,python-2)
       ("glib"   ,glib)))
    (propagated-inputs
     `(("python-pycairo"   ,python2-py2cairo)    ;loaded at runtime
       ("python-pygobject" ,python2-pygobject-2) ;referenced in pc file
       ("gtk+"             ,gtk+-2)))
    (arguments
     `(#:tests? #f
       #:phases (alist-cons-after
                 'install 'install-pth
                 (lambda* (#:key inputs outputs #:allow-other-keys)
                   ;; pygtk's modules are stored in a subdirectory of python's
                   ;; site-packages directory.  Add a .pth file so that python
                   ;; will add that subdirectory to its module search path.
                   (let* ((out    (assoc-ref outputs "out"))
                          (site   (string-append out "/lib/python"
                                                 ,(version-major+minor
                                                   (package-version python-2))
                                                 "/site-packages")))
                     (call-with-output-file (string-append site "/pygtk.pth")
                       (lambda (port)
                         (format port "gtk-2.0~%")))))
                 %standard-phases)))
    (home-page "http://www.pygtk.org/")
    (synopsis "Python bindings for GTK+")
    (description
     "PyGTK allows you to write full featured GTK programs in Python.  It is
targetted at GTK 2.x, and can be used in conjunction with gnome-python to
write GNOME applications.")
    (license license:lgpl2.1+)))

M gnu/packages/linux-libre-i686.conf => gnu/packages/linux-libre-i686.conf +128 -42
@@ 1,11 1,12 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 3.17.0-gnu Kernel Configuration
# Linux/x86 3.18.0-gnu Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_PERF_EVENTS_INTEL_UNCORE=y
CONFIG_OUTPUT_FORMAT="elf32-i386"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
CONFIG_LOCKDEP_SUPPORT=y


@@ 127,6 128,7 @@ CONFIG_TASK_IO_ACCOUNTING=y
#
CONFIG_TREE_RCU=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_FANOUT=32
CONFIG_RCU_FANOUT_LEAF=16


@@ 139,7 141,6 @@ CONFIG_RCU_FAST_NO_HZ=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y


@@ 184,6 185,7 @@ CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_SGETMASK_SYSCALL=y


@@ 201,8 203,10 @@ CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_BPF_SYSCALL=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_PCI_QUIRKS=y
# CONFIG_EMBEDDED is not set
CONFIG_HAVE_PERF_EVENTS=y


@@ 289,6 293,7 @@ CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y


@@ 361,12 366,15 @@ CONFIG_FREEZER=y
#
CONFIG_ZONE_DMA=y
CONFIG_SMP=y
CONFIG_X86_FEATURE_NAMES=y
CONFIG_X86_MPPARSE=y
# CONFIG_X86_BIGSMP is not set
CONFIG_X86_EXTENDED_PLATFORM=y
# CONFIG_X86_GOLDFISH is not set
CONFIG_X86_INTEL_MID=y
CONFIG_X86_INTEL_LPSS=y
CONFIG_IOSF_MBI=m
CONFIG_IOSF_MBI_DEBUG=y
# CONFIG_X86_RDC321X is not set
# CONFIG_X86_32_NON_STANDARD is not set
CONFIG_X86_32_IRIS=m


@@ 499,6 507,7 @@ CONFIG_MEMORY_HOTPLUG_SPARSE=y
CONFIG_MEMORY_HOTREMOVE=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
CONFIG_MEMORY_BALLOON=y
CONFIG_BALLOON_COMPACTION=y
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y


@@ 803,7 812,6 @@ CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_MISC=m
CONFIG_COREDUMP=y
CONFIG_HAVE_ATOMIC_IOMAP=y
CONFIG_IOSF_MBI=m
CONFIG_PMC_ATOM=y
CONFIG_NET=y



@@ 847,6 855,8 @@ CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=m
CONFIG_NET_UDP_TUNNEL=m
CONFIG_NET_FOU=m
CONFIG_GENEVE=m
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m


@@ 872,6 882,7 @@ CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_TCP_CONG_DCTCP=m
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"


@@ 908,7 919,7 @@ CONFIG_NET_PTP_CLASSIFY=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_BRIDGE_NETFILTER=m

#
# Core Netfilter Configuration


@@ 967,6 978,7 @@ CONFIG_NFT_HASH=m
CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_REJECT=m


@@ 1070,6 1082,7 @@ CONFIG_IP_SET_HASH_IPMARK=m
CONFIG_IP_SET_HASH_IPPORT=m
CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_MAC=m
CONFIG_IP_SET_HASH_NETPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETNET=m


@@ 1098,6 1111,7 @@ CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m


@@ 1126,10 1140,13 @@ CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NF_TABLES_ARP=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=m
CONFIG_NFT_MASQ_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m


@@ 1163,10 1180,13 @@ CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NF_NAT_MASQUERADE_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m


@@ 1266,6 1286,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_NET_DSA=m
CONFIG_NET_DSA_TAG_BRCM=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y


@@ 1373,6 1394,7 @@ CONFIG_BATMAN_ADV_MCAST=y
CONFIG_OPENVSWITCH=m
CONFIG_OPENVSWITCH_GRE=y
CONFIG_OPENVSWITCH_VXLAN=y
CONFIG_OPENVSWITCH_GENEVE=y
CONFIG_VSOCKETS=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
CONFIG_NETLINK_MMAP=y


@@ 1447,6 1469,7 @@ 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


@@ 1657,6 1680,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
CONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y


@@ 1784,6 1808,7 @@ CONFIG_MTD_NAND_DENALI_PCI=m
CONFIG_MTD_NAND_DENALI_DT=m
CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018
CONFIG_MTD_NAND_GPIO=m
# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
CONFIG_MTD_NAND_IDS=m
CONFIG_MTD_NAND_RICOH=m
CONFIG_MTD_NAND_DISKONCHIP=m


@@ 1807,6 1832,7 @@ CONFIG_MTD_ONENAND_2X_PROGRAM=y
CONFIG_MTD_LPDDR=m
CONFIG_MTD_QINFO_PROBE=m
CONFIG_MTD_SPI_NOR=m
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_MTD_UBI=m
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20


@@ 1979,6 2005,7 @@ CONFIG_VMWARE_VMCI=m
# Intel MIC Card Driver
#
CONFIG_ECHO=m
# CONFIG_CXL_BASE is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set



@@ 1990,6 2017,7 @@ CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_MQ_DEFAULT is not set
CONFIG_SCSI_PROC_FS=y

#


@@ 2077,6 2105,7 @@ CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
CONFIG_SCSI_FLASHPOINT=y
CONFIG_VMWARE_PVSCSI=m
CONFIG_XEN_SCSI_FRONTEND=m
CONFIG_HYPERV_STORAGE=m
CONFIG_LIBFC=m
CONFIG_LIBFCOE=m


@@ 2295,6 2324,7 @@ CONFIG_TARGET_CORE=m
CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_TCM_USER=m
CONFIG_LOOPBACK_TARGET=m
CONFIG_TCM_FC=m
CONFIG_ISCSI_TARGET=m


@@ 2422,6 2452,8 @@ CONFIG_NET_DSA_MV88E6060=m
CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
CONFIG_NET_DSA_MV88E6131=m
CONFIG_NET_DSA_MV88E6123_61_65=m
CONFIG_NET_DSA_MV88E6171=m
CONFIG_NET_DSA_BCM_SF2=m
CONFIG_ETHERNET=y
CONFIG_MDIO=m
CONFIG_NET_VENDOR_3COM=y


@@ 2433,6 2465,8 @@ CONFIG_VORTEX=m
CONFIG_TYPHOON=m
CONFIG_NET_VENDOR_ADAPTEC=y
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_NET_VENDOR_AGERE=y
CONFIG_ET131X=m
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set


@@ 2523,6 2557,8 @@ CONFIG_I40E=m
CONFIG_I40E_VXLAN=y
CONFIG_I40E_DCB=y
CONFIG_I40EVF=m
CONFIG_FM10K=m
CONFIG_FM10K_VXLAN=y
CONFIG_NET_VENDOR_I825XX=y
CONFIG_IP1000=m
CONFIG_JME=m


@@ 2579,6 2615,7 @@ CONFIG_QLCNIC_VXLAN=y
CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
CONFIG_NET_VENDOR_QUALCOMM=y
CONFIG_NET_VENDOR_REALTEK=y
CONFIG_ATP=m
CONFIG_8139CP=m


@@ 2668,6 2705,7 @@ CONFIG_MICREL_PHY=m
CONFIG_FIXED_PHY=y
CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_GPIO=m
CONFIG_MDIO_BCM_UNIMAC=m
CONFIG_MICREL_KS8995MA=m
CONFIG_PLIP=m
CONFIG_PPP=y


@@ 2764,8 2802,10 @@ CONFIG_ATH9K_PCI=y
CONFIG_ATH9K_AHB=y
CONFIG_ATH9K_DEBUGFS=y
CONFIG_ATH9K_STATION_STATISTICS=y
# CONFIG_ATH9K_DYNACK is not set
CONFIG_ATH9K_WOW=y
CONFIG_ATH9K_RFKILL=y
CONFIG_ATH9K_CHANNEL_CONTEXT=y
CONFIG_ATH9K_HTC=m
CONFIG_ATH9K_HTC_DEBUGFS=y
CONFIG_CARL9170=m


@@ 2852,6 2892,7 @@ CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
CONFIG_IWLWIFI_UAPSD=y

#
# Debugging Options


@@ 2926,6 2967,8 @@ CONFIG_RTL8192DE=m
CONFIG_RTL8723AE=m
CONFIG_RTL8723BE=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192EE=m
CONFIG_RTL8821AE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTLWIFI_PCI=m


@@ 3346,6 3389,7 @@ CONFIG_INPUT_AD714X_SPI=m
CONFIG_INPUT_ARIZONA_HAPTICS=m
CONFIG_INPUT_BMA150=m
CONFIG_INPUT_PCSPKR=m
CONFIG_INPUT_MAX77693_HAPTIC=m
CONFIG_INPUT_MAX8925_ONKEY=m
CONFIG_INPUT_MAX8997_HAPTIC=m
CONFIG_INPUT_MC13783_PWRBUTTON=m


@@ 3369,6 3413,7 @@ CONFIG_INPUT_TWL4030_PWRBUTTON=m
CONFIG_INPUT_TWL4030_VIBRA=m
CONFIG_INPUT_TWL6040_VIBRA=m
CONFIG_INPUT_UINPUT=y
CONFIG_INPUT_PALMAS_PWRBUTTON=m
CONFIG_INPUT_PCF50633_PMU=m
CONFIG_INPUT_PCF8574=m
CONFIG_INPUT_PWM_BEEPER=m


@@ 3386,6 3431,8 @@ CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_DRV260X_HAPTICS=m
CONFIG_INPUT_DRV2667_HAPTICS=m

#
# Hardware I/O ports


@@ 3464,6 3511,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_8250_DW=m
CONFIG_SERIAL_8250_FINTEK=m

#
# Non-8250 serial port support


@@ 3553,6 3601,8 @@ CONFIG_TCG_ST33_I2C=m
CONFIG_TCG_XEN=m
CONFIG_TELCLOCK=m
CONFIG_DEVPORT=y
CONFIG_XILLYBUS=m
CONFIG_XILLYBUS_PCIE=m

#
# I2C support


@@ 3736,6 3786,7 @@ CONFIG_GPIO_MAX730X=m
# Memory mapped GPIO drivers:
#
CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_DWAPB=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_F7188X=m
CONFIG_GPIO_SCH311X=m


@@ 3781,6 3832,7 @@ CONFIG_GPIO_RDC321X=m
# SPI GPIO expanders:
#
CONFIG_GPIO_MAX7301=m
CONFIG_GPIO_MCP23S08=m
CONFIG_GPIO_MC33880=m

#


@@ 3954,6 4006,7 @@ CONFIG_SENSORS_MAX6650=m
CONFIG_SENSORS_MAX6697=m
CONFIG_SENSORS_HTU21=m
CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MENF21BMC_HWMON=m
CONFIG_SENSORS_ADCXX=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM70=m


@@ 4046,12 4099,14 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
CONFIG_THERMAL_EMULATION=y
CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
CONFIG_ACPI_INT3403_THERMAL=m
CONFIG_INTEL_SOC_DTS_THERMAL=m
CONFIG_INT340X_THERMAL=m
CONFIG_ACPI_THERMAL_REL=m

#
# Texas Instruments thermal drivers


@@ 4066,10 4121,13 @@ CONFIG_WATCHDOG_CORE=y
CONFIG_SOFT_WATCHDOG=m
CONFIG_DA9052_WATCHDOG=m
CONFIG_DA9055_WATCHDOG=m
CONFIG_DA9063_WATCHDOG=m
CONFIG_MENF21BMC_WATCHDOG=m
CONFIG_WM831X_WATCHDOG=m
CONFIG_WM8350_WATCHDOG=m
CONFIG_XILINX_WATCHDOG=m
CONFIG_DW_WATCHDOG=m
CONFIG_RN5T618_WATCHDOG=m
CONFIG_TWL4030_WATCHDOG=m
CONFIG_RETU_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m


@@ 4203,6 4261,7 @@ CONFIG_MFD_MAX8907=m
CONFIG_MFD_MAX8925=y
CONFIG_MFD_MAX8997=y
CONFIG_MFD_MAX8998=y
CONFIG_MFD_MENF21BMC=m
CONFIG_EZX_PCAP=y
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_RETU=m


@@ 4214,6 4273,7 @@ CONFIG_MFD_RDC321X=m
CONFIG_MFD_RTSX_PCI=m
CONFIG_MFD_RTSX_USB=m
CONFIG_MFD_RC5T583=y
CONFIG_MFD_RN5T618=m
CONFIG_MFD_SEC_CORE=y
CONFIG_MFD_SI476X_CORE=m
CONFIG_MFD_SM501=m


@@ 4285,6 4345,7 @@ CONFIG_REGULATOR_DA9210=m
CONFIG_REGULATOR_DA9211=m
CONFIG_REGULATOR_FAN53555=m
CONFIG_REGULATOR_GPIO=m
CONFIG_REGULATOR_ISL9305=m
CONFIG_REGULATOR_ISL6271A=m
CONFIG_REGULATOR_LP3971=m
CONFIG_REGULATOR_LP3972=m


@@ 4304,6 4365,7 @@ CONFIG_REGULATOR_MAX8997=m
CONFIG_REGULATOR_MAX8998=m
CONFIG_REGULATOR_MAX77686=m
CONFIG_REGULATOR_MAX77693=m
CONFIG_REGULATOR_MAX77802=m
CONFIG_REGULATOR_MC13XXX_CORE=m
CONFIG_REGULATOR_MC13783=m
CONFIG_REGULATOR_MC13892=m


@@ 4311,7 4373,9 @@ CONFIG_REGULATOR_PALMAS=m
CONFIG_REGULATOR_PCAP=m
CONFIG_REGULATOR_PCF50633=m
CONFIG_REGULATOR_PFUZE100=m
CONFIG_REGULATOR_PWM=m
CONFIG_REGULATOR_RC5T583=m
CONFIG_REGULATOR_RN5T618=m
CONFIG_REGULATOR_S2MPA01=m
CONFIG_REGULATOR_S2MPS11=m
CONFIG_REGULATOR_S5M8767=m


@@ 4388,6 4452,7 @@ CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m


@@ 4547,11 4612,13 @@ CONFIG_DVB_USB_GL861=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_USB_RTL28XXU=m
CONFIG_DVB_USB_DVBSKY=m
CONFIG_DVB_TTUSB_BUDGET=m
CONFIG_DVB_TTUSB_DEC=m
CONFIG_SMS_USB_DRV=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
CONFIG_DVB_AS102=m

#
# Webcam, TV (analog/digital) USB devices


@@ 4565,8 4632,9 @@ CONFIG_VIDEO_EM28XX_RC=m
#
# Software defined radio USB devices
#
CONFIG_USB_MSI2500=m
CONFIG_USB_AIRSPY=m
CONFIG_USB_HACKRF=m
CONFIG_USB_MSI2500=m
CONFIG_MEDIA_PCI_SUPPORT=y

#


@@ 4592,6 4660,7 @@ CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_MXB=m
CONFIG_VIDEO_SOLO6X10=m
CONFIG_VIDEO_TW68=m

#
# Media capture/analog/hybrid TV support


@@ 4615,11 4684,13 @@ CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_RC=y
CONFIG_VIDEO_SAA7134_DVB=m
CONFIG_VIDEO_SAA7134_GO7007=m
CONFIG_VIDEO_SAA7164=m

#
# Media digital TV PCI Adapters
#
CONFIG_DVB_AV7110_IR=y
CONFIG_DVB_AV7110=m
CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET_CORE=m


@@ 4632,6 4703,7 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m
CONFIG_DVB_PLUTO2=m
CONFIG_DVB_DM1105=m
CONFIG_DVB_PT1=m
CONFIG_DVB_PT3=m
CONFIG_MANTIS_CORE=m
CONFIG_DVB_MANTIS=m
CONFIG_DVB_HOPPER=m


@@ 4646,9 4718,8 @@ CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
CONFIG_VIDEO_SH_VEU=m
CONFIG_VIDEO_RENESAS_VSP1=m
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VIVI=m
CONFIG_VIDEO_VIVID=m
CONFIG_VIDEO_MEM2MEM_TESTDEV=m

#


@@ 4865,6 4936,8 @@ CONFIG_MEDIA_TUNER_TUA9001=m
CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_TUNER_IT913X=m
CONFIG_MEDIA_TUNER_R820T=m
CONFIG_MEDIA_TUNER_MXL301RF=m
CONFIG_MEDIA_TUNER_QM1D1C0042=m

#
# Multistandard (satellite) frontends


@@ 4938,6 5011,7 @@ CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
CONFIG_DVB_RTL2832_SDR=m
CONFIG_DVB_SI2168=m
CONFIG_DVB_AS102_FE=m

#
# DVB-C (cable) frontends


@@ 4969,6 5043,7 @@ CONFIG_DVB_S5H1411=m
CONFIG_DVB_S921=m
CONFIG_DVB_DIB8000=m
CONFIG_DVB_MB86A20S=m
CONFIG_DVB_TC90522=m

#
# Digital terrestrial only tuners/PLL


@@ 5022,7 5097,6 @@ CONFIG_VGA_SWITCHEROO=y
# Direct Rendering Manager
#
CONFIG_DRM=m
CONFIG_DRM_USB=m
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_LOAD_EDID_FIRMWARE=y


@@ 5063,13 5137,14 @@ CONFIG_DRM_AST=m
# CONFIG_DRM_MGAG200 is not set
CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_QXL=m
CONFIG_DRM_BOCHS=m
# CONFIG_DRM_BOCHS is not set

#
# Frame buffer Devices
#
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_CMDLINE=y
CONFIG_FB_DDC=m
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y


@@ 5243,7 5318,7 @@ CONFIG_LOGO=y
CONFIG_LOGO_LIBRE_CLUT224=y
CONFIG_SOUND=m
CONFIG_SOUND_OSS_CORE=y
CONFIG_SOUND_OSS_CORE_PRECLAIM=y
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m


@@ 5494,6 5569,7 @@ CONFIG_SND_SOC_AK4554=m
CONFIG_SND_SOC_AK4642=m
CONFIG_SND_SOC_AK5386=m
CONFIG_SND_SOC_ALC5623=m
CONFIG_SND_SOC_CS35L32=m
CONFIG_SND_SOC_CS42L52=m
CONFIG_SND_SOC_CS42L56=m
CONFIG_SND_SOC_CS42L73=m


@@ 5503,6 5579,7 @@ CONFIG_SND_SOC_CS4271=m
CONFIG_SND_SOC_CS42XX8=m
CONFIG_SND_SOC_CS42XX8_I2C=m
CONFIG_SND_SOC_HDMI_CODEC=m
CONFIG_SND_SOC_ES8328=m
CONFIG_SND_SOC_MAX98090=m
CONFIG_SND_SOC_PCM1681=m
CONFIG_SND_SOC_PCM1792A=m


@@ 5519,6 5596,10 @@ CONFIG_SND_SOC_SIGMADSP_I2C=m
CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m
CONFIG_SND_SOC_SN95031=m
CONFIG_SND_SOC_SPDIF=m
CONFIG_SND_SOC_SSM2602=m
CONFIG_SND_SOC_SSM2602_SPI=m
CONFIG_SND_SOC_SSM2602_I2C=m
CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_STA350=m
CONFIG_SND_SOC_TAS2552=m
CONFIG_SND_SOC_TAS5086=m


@@ 5539,6 5620,7 @@ CONFIG_SND_SOC_WM8776=m
CONFIG_SND_SOC_WM8804=m
CONFIG_SND_SOC_WM8903=m
CONFIG_SND_SOC_WM8962=m
CONFIG_SND_SOC_WM8978=m
CONFIG_SND_SOC_TPA6130A2=m
CONFIG_SND_SIMPLE_CARD=m
# CONFIG_SOUND_PRIME is not set


@@ 5601,6 5683,7 @@ CONFIG_HID_NTRIG=m
CONFIG_HID_ORTEK=m
CONFIG_HID_PANTHERLORD=m
CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PENMOUNT=m
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
CONFIG_HID_PICOLCD_FB=y


@@ 5679,6 5762,7 @@ CONFIG_USB_WUSB_CBAF=m
#
CONFIG_USB_C67X00_HCD=m
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PCI=y
CONFIG_USB_XHCI_PLATFORM=m
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y


@@ 5701,13 5785,11 @@ CONFIG_USB_SL811_HCD=m
CONFIG_USB_SL811_HCD_ISO=y
CONFIG_USB_SL811_CS=m
CONFIG_USB_R8A66597_HCD=m
CONFIG_USB_RENESAS_USBHS_HCD=m
CONFIG_USB_WHCI_HCD=m
CONFIG_USB_HWA_HCD=m
CONFIG_USB_HCD_BCMA=m
CONFIG_USB_HCD_SSB=m
# CONFIG_USB_HCD_TEST_MODE is not set
CONFIG_USB_RENESAS_USBHS=m

#
# USB Device Class drivers


@@ 5857,7 5939,6 @@ CONFIG_USB_SERIAL_OMNINET=m
CONFIG_USB_SERIAL_OPTICON=m
CONFIG_USB_SERIAL_XSENS_MT=m
CONFIG_USB_SERIAL_WISHBONE=m
CONFIG_USB_SERIAL_ZTE=m
CONFIG_USB_SERIAL_SSU100=m
CONFIG_USB_SERIAL_QT2=m
CONFIG_USB_SERIAL_DEBUG=m


@@ 5901,9 5982,6 @@ CONFIG_USB_XUSBATM=m
#
CONFIG_USB_PHY=y
CONFIG_NOP_USB_XCEIV=m
CONFIG_SAMSUNG_USBPHY=m
CONFIG_SAMSUNG_USB2PHY=m
CONFIG_SAMSUNG_USB3PHY=m
CONFIG_USB_GPIO_VBUS=m
CONFIG_TAHVO_USB=m
CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y


@@ 5921,7 5999,6 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
CONFIG_USB_FOTG210_UDC=m
CONFIG_USB_GR_UDC=m
CONFIG_USB_R8A66597=m
CONFIG_USB_RENESAS_USBHS_UDC=m
CONFIG_USB_PXA27X=m
CONFIG_USB_MV_UDC=m
CONFIG_USB_MV_U3D=m


@@ 5948,6 6025,8 @@ CONFIG_USB_F_SUBSET=m
CONFIG_USB_F_RNDIS=m
CONFIG_USB_F_MASS_STORAGE=m
CONFIG_USB_F_FS=m
CONFIG_USB_F_UAC1=m
CONFIG_USB_F_UVC=m
CONFIG_USB_CONFIGFS=m
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y


@@ 5988,6 6067,7 @@ CONFIG_USB_G_DBGP=m
# CONFIG_USB_G_DBGP_PRINTK is not set
CONFIG_USB_G_DBGP_SERIAL=y
CONFIG_USB_G_WEBCAM=m
CONFIG_USB_LED_TRIG=y
CONFIG_UWB=m
CONFIG_UWB_HWA=m
CONFIG_UWB_WHCI=m


@@ 6085,6 6165,7 @@ CONFIG_LEDS_TCA6507=m
CONFIG_LEDS_MAX8997=m
CONFIG_LEDS_LM355x=m
CONFIG_LEDS_OT200=m
CONFIG_LEDS_MENF21BMC=m

#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)


@@ 6188,6 6269,7 @@ CONFIG_RTC_DRV_MAX8925=m
CONFIG_RTC_DRV_MAX8998=m
CONFIG_RTC_DRV_MAX8997=m
CONFIG_RTC_DRV_MAX77686=m
CONFIG_RTC_DRV_MAX77802=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m


@@ 6245,7 6327,6 @@ CONFIG_RTC_DRV_DS2404=m
CONFIG_RTC_DRV_DA9052=m
CONFIG_RTC_DRV_DA9055=m
CONFIG_RTC_DRV_DA9063=m
CONFIG_RTC_DRV_EFI=m
CONFIG_RTC_DRV_STK17TA8=m
CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_M48T35=m


@@ 6348,11 6429,11 @@ CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_TMEM=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_SCSI_BACKEND=m
CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_ACPI_PROCESSOR=y
CONFIG_XEN_HAVE_PVMMU=y
CONFIG_STAGING=y
CONFIG_ET131X=m
CONFIG_SLICOSS=m
CONFIG_PRISM2_USB=m
CONFIG_COMEDI=m


@@ 6360,12 6441,10 @@ CONFIG_COMEDI=m
CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048
CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480
CONFIG_COMEDI_MISC_DRIVERS=y
CONFIG_COMEDI_KCOMEDILIB=m
CONFIG_COMEDI_BOND=m
CONFIG_COMEDI_TEST=m
CONFIG_COMEDI_PARPORT=m
CONFIG_COMEDI_SERIAL2002=m
CONFIG_COMEDI_SKEL=m
CONFIG_COMEDI_SSV_DNP=m
CONFIG_COMEDI_ISA_DRIVERS=y
CONFIG_COMEDI_PCL711=m


@@ 6480,12 6559,13 @@ CONFIG_COMEDI_NI_MIO_CS=m
CONFIG_COMEDI_QUATECH_DAQP_CS=m
CONFIG_COMEDI_USB_DRIVERS=y
CONFIG_COMEDI_DT9812=m
CONFIG_COMEDI_NI_USB6501=m
CONFIG_COMEDI_USBDUX=m
CONFIG_COMEDI_USBDUXFAST=m
CONFIG_COMEDI_USBDUXSIGMA=m
CONFIG_COMEDI_VMK80XX=m
CONFIG_COMEDI_8255=m
CONFIG_COMEDI_FC=m
CONFIG_COMEDI_KCOMEDILIB=m
CONFIG_COMEDI_AMPLC_DIO200=m
CONFIG_COMEDI_AMPLC_PC236=m
CONFIG_COMEDI_DAS08=m


@@ 6505,13 6585,10 @@ CONFIG_RTL8192E=m
CONFIG_R8712U=m
CONFIG_R8188EU=m
CONFIG_88EU_AP_MODE=y
CONFIG_R8192EE=m
CONFIG_R8723AU=m
CONFIG_8723AU_AP_MODE=y
CONFIG_8723AU_BT_COEXIST=y
CONFIG_R8821AE=m
CONFIG_RTS5208=m
# CONFIG_RTS5208_DEBUG is not set
CONFIG_LINE6_USB=m
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
CONFIG_VT6655=m


@@ 6561,13 6638,8 @@ CONFIG_AD7746=m
#
# Direct Digital Synthesis
#
CONFIG_AD5930=m
CONFIG_AD9832=m
CONFIG_AD9834=m
CONFIG_AD9850=m
CONFIG_AD9852=m
CONFIG_AD9910=m
CONFIG_AD9951=m

#
# Digital gyroscope sensors


@@ 6647,7 6719,6 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_STAGING_MEDIA=y
CONFIG_DVB_AS102=m
CONFIG_I2C_BCM2048=m
CONFIG_DVB_CXD2099=m
CONFIG_VIDEO_DT3155=m


@@ 6691,8 6762,6 @@ CONFIG_LNET=m
CONFIG_LNET_MAX_PAYLOAD=1048576
CONFIG_LNET_SELFTEST=m
CONFIG_LNET_XPRT_IB=m
CONFIG_XILLYBUS=m
CONFIG_XILLYBUS_PCIE=m
CONFIG_DGNC=m
CONFIG_DGAP=m
CONFIG_GS_FPGABOOT=m


@@ 6761,6 6830,7 @@ CONFIG_CHROMEOS_PSTORE=m
#
# SOC (System On Chip) specific Drivers
#
CONFIG_SOC_TI=y
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
CONFIG_COMMON_CLK=y


@@ 6769,11 6839,14 @@ CONFIG_COMMON_CLK=y
# Common Clock Framework
#
CONFIG_COMMON_CLK_WM831X=m
CONFIG_COMMON_CLK_MAX_GEN=y
CONFIG_COMMON_CLK_MAX77686=m
CONFIG_COMMON_CLK_MAX77802=m
CONFIG_COMMON_CLK_SI5351=m
CONFIG_COMMON_CLK_S2MPS11=m
CONFIG_CLK_TWL6040=m
CONFIG_COMMON_CLK_PALMAS=m
# CONFIG_COMMON_CLK_PXA is not set

#
# Hardware Spinlock drivers


@@ 6787,6 6860,7 @@ CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
CONFIG_DW_APB_TIMER=y
# CONFIG_ATMEL_PIT is not set
# CONFIG_SH_TIMER_CMT is not set
# CONFIG_SH_TIMER_MTU2 is not set
# CONFIG_SH_TIMER_TMU is not set


@@ 6808,6 6882,10 @@ CONFIG_STE_MODEM_RPROC=m
#
# Rpmsg drivers
#

#
# SOC (System On Chip) specific Drivers
#
CONFIG_PM_DEVFREQ=y

#


@@ 6833,6 6911,7 @@ CONFIG_EXTCON_MAX14577=m
CONFIG_EXTCON_MAX77693=m
CONFIG_EXTCON_MAX8997=m
CONFIG_EXTCON_PALMAS=m
CONFIG_EXTCON_RT8973A=m
CONFIG_EXTCON_SM5502=m
CONFIG_MEMORY=y
CONFIG_IIO=m


@@ 6847,6 6926,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
# Accelerometers
#
CONFIG_BMA180=m
CONFIG_BMC150_ACCEL=m
CONFIG_HID_SENSOR_ACCEL_3D=m
CONFIG_IIO_ST_ACCEL_3AXIS=m
CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m


@@ 6876,6 6956,7 @@ CONFIG_MCP3422=m
CONFIG_MEN_Z188_ADC=m
CONFIG_NAU7802=m
CONFIG_TI_ADC081C=m
CONFIG_TI_ADC128S052=m
CONFIG_TI_AM335X_ADC=m
CONFIG_TWL4030_MADC=m
CONFIG_TWL6030_GPADC=m


@@ 6937,6 7018,7 @@ CONFIG_ADIS16130=m
CONFIG_ADIS16136=m
CONFIG_ADIS16260=m
CONFIG_ADXRS450=m
CONFIG_BMG160=m
CONFIG_HID_SENSOR_GYRO_3D=m
CONFIG_IIO_ST_GYRO_3AXIS=m
CONFIG_IIO_ST_GYRO_I2C_3AXIS=m


@@ 6962,6 7044,7 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y
# Light sensors
#
CONFIG_ADJD_S311=m
CONFIG_AL3320A=m
CONFIG_APDS9300=m
CONFIG_CM32181=m
CONFIG_CM36651=m


@@ 7044,6 7127,8 @@ CONFIG_PWM=y
CONFIG_PWM_SYSFS=y
CONFIG_PWM_LP3943=m
CONFIG_PWM_LPSS=m
CONFIG_PWM_LPSS_PCI=m
CONFIG_PWM_LPSS_PLATFORM=m
CONFIG_PWM_TWL=m
CONFIG_PWM_TWL_LED=m
CONFIG_IPACK_BUS=m


@@ 7162,6 7247,7 @@ CONFIG_QUOTACTL=y
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=y
CONFIG_CUSE=m
CONFIG_OVERLAY_FS=m

#
# Caches


@@ 7317,6 7403,7 @@ CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_V4_SECURITY_LABEL=y
# CONFIG_NFSD_FAULT_INJECTION is not set
CONFIG_GRACE_PERIOD=m
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=m


@@ 7488,6 7575,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
# CONFIG_SCHED_STACK_END_CHECK is not set
CONFIG_TIMER_STATS=y

#


@@ 7592,7 7680,7 @@ CONFIG_TEST_KSTRTOX=m
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set
CONFIG_TEST_MODULE=m
CONFIG_TEST_LKM=m
CONFIG_TEST_USER_COPY=m
CONFIG_TEST_BPF=m
CONFIG_TEST_FIRMWARE=m


@@ 7663,6 7751,7 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
CONFIG_SECURITY_SMACK=y
# CONFIG_SECURITY_SMACK_BRINGUP is not set
CONFIG_SECURITY_TOMOYO=y
CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024


@@ 7676,8 7765,8 @@ CONFIG_SECURITY_YAMA=y
CONFIG_SECURITY_YAMA_STACKED=y
CONFIG_INTEGRITY=y
CONFIG_INTEGRITY_SIGNATURE=y
CONFIG_INTEGRITY_AUDIT=y
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
CONFIG_INTEGRITY_AUDIT=y
CONFIG_IMA=y
CONFIG_IMA_MEASURE_PCR_IDX=10
CONFIG_IMA_LSM_RULES=y


@@ 7693,10 7782,6 @@ CONFIG_IMA_DEFAULT_HASH="sha1"
CONFIG_IMA_APPRAISE=y
CONFIG_IMA_TRUSTED_KEYRING=y
CONFIG_EVM=y

#
# EVM options
#
CONFIG_EVM_ATTR_FSUUID=y
CONFIG_EVM_EXTRA_SMACK_XATTRS=y
# CONFIG_DEFAULT_SECURITY_SELINUX is not set


@@ 7738,6 7823,7 @@ CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=m

M gnu/packages/linux-libre-x86_64.conf => gnu/packages/linux-libre-x86_64.conf +129 -43
@@ 1,11 1,12 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86 3.17.0-gnu Kernel Configuration
# Linux/x86 3.18.0-gnu Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
CONFIG_INSTRUCTION_DECODER=y
CONFIG_PERF_EVENTS_INTEL_UNCORE=y
CONFIG_OUTPUT_FORMAT="elf64-x86-64"
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"
CONFIG_LOCKDEP_SUPPORT=y


@@ 132,6 133,7 @@ CONFIG_TASK_IO_ACCOUNTING=y
#
CONFIG_TREE_RCU=y
# CONFIG_PREEMPT_RCU is not set
# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
CONFIG_CONTEXT_TRACKING=y
CONFIG_RCU_USER_QS=y


@@ 152,8 154,6 @@ CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_SUPPORTS_INT128=y
CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
CONFIG_ARCH_USES_NUMA_PROT_NONE=y
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED=y
CONFIG_NUMA_BALANCING=y
CONFIG_CGROUPS=y


@@ 200,6 200,7 @@ CONFIG_ANON_INODES=y
CONFIG_HAVE_UID16=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BPF=y
CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_SGETMASK_SYSCALL=y


@@ 217,8 218,10 @@ CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_BPF_SYSCALL=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_PCI_QUIRKS=y
# CONFIG_EMBEDDED is not set
CONFIG_HAVE_PERF_EVENTS=y


@@ 309,6 312,7 @@ CONFIG_MODULE_UNLOAD=y
CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
CONFIG_STOP_MACHINE=y
CONFIG_BLOCK=y
CONFIG_BLK_DEV_BSG=y


@@ 381,6 385,7 @@ CONFIG_FREEZER=y
#
CONFIG_ZONE_DMA=y
CONFIG_SMP=y
CONFIG_X86_FEATURE_NAMES=y
CONFIG_X86_X2APIC=y
CONFIG_X86_MPPARSE=y
CONFIG_X86_EXTENDED_PLATFORM=y


@@ 389,6 394,8 @@ CONFIG_X86_NUMACHIP=y
# CONFIG_X86_UV is not set
# CONFIG_X86_GOLDFISH is not set
CONFIG_X86_INTEL_LPSS=y
CONFIG_IOSF_MBI=m
CONFIG_IOSF_MBI_DEBUG=y
CONFIG_X86_SUPPORTS_MEMORY_FAILURE=y
CONFIG_SCHED_OMIT_FRAME_POINTER=y
CONFIG_HYPERVISOR_GUEST=y


@@ 496,6 503,7 @@ CONFIG_MEMORY_HOTREMOVE=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_SPLIT_PTLOCK_CPUS=4
CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
CONFIG_MEMORY_BALLOON=y
CONFIG_BALLOON_COMPACTION=y
CONFIG_COMPACTION=y
CONFIG_MIGRATION=y


@@ 782,7 790,6 @@ CONFIG_COMPAT_FOR_U64_ALIGNMENT=y
CONFIG_SYSVIPC_COMPAT=y
CONFIG_KEYS_COMPAT=y
CONFIG_X86_DEV_DMA_OPS=y
CONFIG_IOSF_MBI=m
CONFIG_PMC_ATOM=y
CONFIG_NET=y
CONFIG_COMPAT_NETLINK_MESSAGES=y


@@ 827,6 834,8 @@ CONFIG_IP_PIMSM_V2=y
CONFIG_SYN_COOKIES=y
CONFIG_NET_IPVTI=m
CONFIG_NET_UDP_TUNNEL=m
CONFIG_NET_FOU=m
CONFIG_GENEVE=m
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m


@@ 852,6 861,7 @@ CONFIG_TCP_CONG_LP=m
CONFIG_TCP_CONG_VENO=m
CONFIG_TCP_CONG_YEAH=m
CONFIG_TCP_CONG_ILLINOIS=m
CONFIG_TCP_CONG_DCTCP=m
CONFIG_DEFAULT_CUBIC=y
# CONFIG_DEFAULT_RENO is not set
CONFIG_DEFAULT_TCP_CONG="cubic"


@@ 888,7 898,7 @@ CONFIG_NET_PTP_CLASSIFY=y
CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_BRIDGE_NETFILTER=m

#
# Core Netfilter Configuration


@@ 947,6 957,7 @@ CONFIG_NFT_HASH=m
CONFIG_NFT_COUNTER=m
CONFIG_NFT_LOG=m
CONFIG_NFT_LIMIT=m
CONFIG_NFT_MASQ=m
CONFIG_NFT_NAT=m
CONFIG_NFT_QUEUE=m
CONFIG_NFT_REJECT=m


@@ 1050,6 1061,7 @@ CONFIG_IP_SET_HASH_IPMARK=m
CONFIG_IP_SET_HASH_IPPORT=m
CONFIG_IP_SET_HASH_IPPORTIP=m
CONFIG_IP_SET_HASH_IPPORTNET=m
CONFIG_IP_SET_HASH_MAC=m
CONFIG_IP_SET_HASH_NETPORTNET=m
CONFIG_IP_SET_HASH_NET=m
CONFIG_IP_SET_HASH_NETNET=m


@@ 1078,6 1090,7 @@ CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m


@@ 1106,10 1119,13 @@ CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_TABLES_IPV4=m
CONFIG_NFT_CHAIN_ROUTE_IPV4=m
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NF_REJECT_IPV4=m
CONFIG_NFT_REJECT_IPV4=m
CONFIG_NF_TABLES_ARP=m
CONFIG_NF_NAT_IPV4=m
CONFIG_NFT_CHAIN_NAT_IPV4=m
CONFIG_NF_NAT_MASQUERADE_IPV4=m
CONFIG_NFT_MASQ_IPV4=m
CONFIG_NF_NAT_SNMP_BASIC=m
CONFIG_NF_NAT_PROTO_GRE=m
CONFIG_NF_NAT_PPTP=m


@@ 1143,10 1159,13 @@ CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
CONFIG_NF_TABLES_IPV6=m
CONFIG_NFT_CHAIN_ROUTE_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NFT_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
CONFIG_NFT_CHAIN_NAT_IPV6=m
CONFIG_NF_NAT_MASQUERADE_IPV6=m
CONFIG_NFT_MASQ_IPV6=m
CONFIG_IP6_NF_IPTABLES=m
CONFIG_IP6_NF_MATCH_AH=m
CONFIG_IP6_NF_MATCH_EUI64=m


@@ 1246,6 1265,7 @@ CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_HAVE_NET_DSA=y
CONFIG_NET_DSA=m
CONFIG_NET_DSA_TAG_BRCM=y
CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_DSA_TAG_TRAILER=y


@@ 1349,6 1369,7 @@ CONFIG_BATMAN_ADV_MCAST=y
CONFIG_OPENVSWITCH=m
CONFIG_OPENVSWITCH_GRE=y
CONFIG_OPENVSWITCH_VXLAN=y
CONFIG_OPENVSWITCH_GENEVE=y
CONFIG_VSOCKETS=m
CONFIG_VMWARE_VMCI_VSOCKETS=m
CONFIG_NETLINK_MMAP=y


@@ 1418,6 1439,7 @@ 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


@@ 1628,6 1650,7 @@ CONFIG_FIRMWARE_IN_KERNEL=y
CONFIG_EXTRA_FIRMWARE=""
CONFIG_FW_LOADER_USER_HELPER=y
CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y
CONFIG_ALLOW_DEV_COREDUMP=y
# CONFIG_DEBUG_DRIVER is not set
# CONFIG_DEBUG_DEVRES is not set
CONFIG_SYS_HYPERVISOR=y


@@ 1754,6 1777,7 @@ CONFIG_MTD_NAND_DENALI_PCI=m
CONFIG_MTD_NAND_DENALI_DT=m
CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xFF108018
CONFIG_MTD_NAND_GPIO=m
# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
CONFIG_MTD_NAND_IDS=m
CONFIG_MTD_NAND_RICOH=m
CONFIG_MTD_NAND_DISKONCHIP=m


@@ 1776,6 1800,7 @@ CONFIG_MTD_ONENAND_2X_PROGRAM=y
CONFIG_MTD_LPDDR=m
CONFIG_MTD_QINFO_PROBE=m
CONFIG_MTD_SPI_NOR=m
CONFIG_MTD_SPI_NOR_USE_4K_SECTORS=y
CONFIG_MTD_UBI=m
CONFIG_MTD_UBI_WL_THRESHOLD=4096
CONFIG_MTD_UBI_BEB_LIMIT=20


@@ 1947,6 1972,7 @@ CONFIG_INTEL_MIC_CARD=m
CONFIG_GENWQE=m
CONFIG_GENWQE_PLATFORM_ERROR_RECOVERY=0
CONFIG_ECHO=m
# CONFIG_CXL_BASE is not set
CONFIG_HAVE_IDE=y
# CONFIG_IDE is not set



@@ 1958,6 1984,7 @@ CONFIG_RAID_ATTRS=m
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_SCSI_NETLINK=y
# CONFIG_SCSI_MQ_DEFAULT is not set
CONFIG_SCSI_PROC_FS=y

#


@@ 2040,6 2067,7 @@ CONFIG_SCSI_HPTIOP=m
CONFIG_SCSI_BUSLOGIC=m
CONFIG_SCSI_FLASHPOINT=y
CONFIG_VMWARE_PVSCSI=m
CONFIG_XEN_SCSI_FRONTEND=m
CONFIG_HYPERV_STORAGE=m
CONFIG_LIBFC=m
CONFIG_LIBFCOE=m


@@ 2233,6 2261,7 @@ CONFIG_TARGET_CORE=m
CONFIG_TCM_IBLOCK=m
CONFIG_TCM_FILEIO=m
CONFIG_TCM_PSCSI=m
CONFIG_TCM_USER=m
CONFIG_LOOPBACK_TARGET=m
CONFIG_TCM_FC=m
CONFIG_ISCSI_TARGET=m


@@ 2359,6 2388,8 @@ CONFIG_NET_DSA_MV88E6060=m
CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
CONFIG_NET_DSA_MV88E6131=m
CONFIG_NET_DSA_MV88E6123_61_65=m
CONFIG_NET_DSA_MV88E6171=m
CONFIG_NET_DSA_BCM_SF2=m
CONFIG_ETHERNET=y
CONFIG_MDIO=m
CONFIG_NET_VENDOR_3COM=y


@@ 2368,6 2399,8 @@ CONFIG_VORTEX=m
CONFIG_TYPHOON=m
CONFIG_NET_VENDOR_ADAPTEC=y
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_NET_VENDOR_AGERE=y
CONFIG_ET131X=m
CONFIG_NET_VENDOR_ALTEON=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set


@@ 2453,6 2486,8 @@ CONFIG_I40E=m
CONFIG_I40E_VXLAN=y
CONFIG_I40E_DCB=y
CONFIG_I40EVF=m
CONFIG_FM10K=m
CONFIG_FM10K_VXLAN=y
CONFIG_NET_VENDOR_I825XX=y
CONFIG_IP1000=m
CONFIG_JME=m


@@ 2505,6 2540,7 @@ CONFIG_QLCNIC_VXLAN=y
CONFIG_QLCNIC_HWMON=y
CONFIG_QLGE=m
CONFIG_NETXEN_NIC=m
CONFIG_NET_VENDOR_QUALCOMM=y
CONFIG_NET_VENDOR_REALTEK=y
CONFIG_ATP=m
CONFIG_8139CP=m


@@ 2593,6 2629,7 @@ CONFIG_MICREL_PHY=m
CONFIG_FIXED_PHY=y
CONFIG_MDIO_BITBANG=m
CONFIG_MDIO_GPIO=m
CONFIG_MDIO_BCM_UNIMAC=m
CONFIG_MICREL_KS8995MA=m
CONFIG_PLIP=m
CONFIG_PPP=y


@@ 2689,8 2726,10 @@ CONFIG_ATH9K_PCI=y
CONFIG_ATH9K_AHB=y
CONFIG_ATH9K_DEBUGFS=y
CONFIG_ATH9K_STATION_STATISTICS=y
# CONFIG_ATH9K_DYNACK is not set
CONFIG_ATH9K_WOW=y
CONFIG_ATH9K_RFKILL=y
CONFIG_ATH9K_CHANNEL_CONTEXT=y
CONFIG_ATH9K_HTC=m
CONFIG_ATH9K_HTC_DEBUGFS=y
CONFIG_CARL9170=m


@@ 2777,6 2816,7 @@ CONFIG_IWLDVM=m
CONFIG_IWLMVM=m
CONFIG_IWLWIFI_OPMODE_MODULAR=y
# CONFIG_IWLWIFI_BCAST_FILTERING is not set
CONFIG_IWLWIFI_UAPSD=y

#
# Debugging Options


@@ 2851,6 2891,8 @@ CONFIG_RTL8192DE=m
CONFIG_RTL8723AE=m
CONFIG_RTL8723BE=m
CONFIG_RTL8188EE=m
CONFIG_RTL8192EE=m
CONFIG_RTL8821AE=m
CONFIG_RTL8192CU=m
CONFIG_RTLWIFI=m
CONFIG_RTLWIFI_PCI=m


@@ 3244,6 3286,7 @@ CONFIG_INPUT_AD714X_SPI=m
CONFIG_INPUT_ARIZONA_HAPTICS=m
CONFIG_INPUT_BMA150=m
CONFIG_INPUT_PCSPKR=m
CONFIG_INPUT_MAX77693_HAPTIC=m
CONFIG_INPUT_MAX8925_ONKEY=m
CONFIG_INPUT_MAX8997_HAPTIC=m
CONFIG_INPUT_MC13783_PWRBUTTON=m


@@ 3266,6 3309,7 @@ CONFIG_INPUT_TWL4030_PWRBUTTON=m
CONFIG_INPUT_TWL4030_VIBRA=m
CONFIG_INPUT_TWL6040_VIBRA=m
CONFIG_INPUT_UINPUT=y
CONFIG_INPUT_PALMAS_PWRBUTTON=m
CONFIG_INPUT_PCF50633_PMU=m
CONFIG_INPUT_PCF8574=m
CONFIG_INPUT_PWM_BEEPER=m


@@ 3283,6 3327,8 @@ CONFIG_INPUT_CMA3000_I2C=m
CONFIG_INPUT_XEN_KBDDEV_FRONTEND=m
CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
CONFIG_INPUT_SOC_BUTTON_ARRAY=m
CONFIG_INPUT_DRV260X_HAPTICS=m
CONFIG_INPUT_DRV2667_HAPTICS=m

#
# Hardware I/O ports


@@ 3356,6 3402,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
# CONFIG_SERIAL_8250_DETECT_IRQ is not set
CONFIG_SERIAL_8250_RSA=y
CONFIG_SERIAL_8250_DW=m
CONFIG_SERIAL_8250_FINTEK=m

#
# Non-8250 serial port support


@@ 3436,6 3483,8 @@ CONFIG_TCG_ST33_I2C=m
CONFIG_TCG_XEN=m
CONFIG_TELCLOCK=m
CONFIG_DEVPORT=y
CONFIG_XILLYBUS=m
CONFIG_XILLYBUS_PCIE=m

#
# I2C support


@@ 3614,6 3663,7 @@ CONFIG_GPIO_MAX730X=m
# Memory mapped GPIO drivers:
#
CONFIG_GPIO_GENERIC_PLATFORM=m
CONFIG_GPIO_DWAPB=m
CONFIG_GPIO_IT8761E=m
CONFIG_GPIO_F7188X=m
CONFIG_GPIO_SCH311X=m


@@ 3656,6 3706,7 @@ CONFIG_GPIO_RDC321X=m
# SPI GPIO expanders:
#
CONFIG_GPIO_MAX7301=m
CONFIG_GPIO_MCP23S08=m
CONFIG_GPIO_MC33880=m

#


@@ 3827,6 3878,7 @@ CONFIG_SENSORS_MAX6650=m
CONFIG_SENSORS_MAX6697=m
CONFIG_SENSORS_HTU21=m
CONFIG_SENSORS_MCP3021=m
CONFIG_SENSORS_MENF21BMC_HWMON=m
CONFIG_SENSORS_ADCXX=m
CONFIG_SENSORS_LM63=m
CONFIG_SENSORS_LM70=m


@@ 3919,12 3971,14 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
CONFIG_THERMAL_GOV_FAIR_SHARE=y
CONFIG_THERMAL_GOV_STEP_WISE=y
CONFIG_THERMAL_GOV_BANG_BANG=y
CONFIG_THERMAL_GOV_USER_SPACE=y
CONFIG_THERMAL_EMULATION=y
CONFIG_INTEL_POWERCLAMP=m
CONFIG_X86_PKG_TEMP_THERMAL=m
CONFIG_ACPI_INT3403_THERMAL=m
CONFIG_INTEL_SOC_DTS_THERMAL=m
CONFIG_INT340X_THERMAL=m
CONFIG_ACPI_THERMAL_REL=m

#
# Texas Instruments thermal drivers


@@ 3939,10 3993,13 @@ CONFIG_WATCHDOG_CORE=y
CONFIG_SOFT_WATCHDOG=m
CONFIG_DA9052_WATCHDOG=m
CONFIG_DA9055_WATCHDOG=m
CONFIG_DA9063_WATCHDOG=m
CONFIG_MENF21BMC_WATCHDOG=m
CONFIG_WM831X_WATCHDOG=m
CONFIG_WM8350_WATCHDOG=m
CONFIG_XILINX_WATCHDOG=m
CONFIG_DW_WATCHDOG=m
CONFIG_RN5T618_WATCHDOG=m
CONFIG_TWL4030_WATCHDOG=m
CONFIG_RETU_WATCHDOG=m
CONFIG_ACQUIRE_WDT=m


@@ 4062,6 4119,7 @@ CONFIG_MFD_MAX8907=m
CONFIG_MFD_MAX8925=y
CONFIG_MFD_MAX8997=y
CONFIG_MFD_MAX8998=y
CONFIG_MFD_MENF21BMC=m
CONFIG_EZX_PCAP=y
CONFIG_MFD_VIPERBOARD=m
CONFIG_MFD_RETU=m


@@ 4073,6 4131,7 @@ CONFIG_MFD_RDC321X=m
CONFIG_MFD_RTSX_PCI=m
CONFIG_MFD_RTSX_USB=m
CONFIG_MFD_RC5T583=y
CONFIG_MFD_RN5T618=m
CONFIG_MFD_SEC_CORE=y
CONFIG_MFD_SI476X_CORE=m
CONFIG_MFD_SM501=m


@@ 4143,6 4202,7 @@ CONFIG_REGULATOR_DA9210=m
CONFIG_REGULATOR_DA9211=m
CONFIG_REGULATOR_FAN53555=m
CONFIG_REGULATOR_GPIO=m
CONFIG_REGULATOR_ISL9305=m
CONFIG_REGULATOR_ISL6271A=m
CONFIG_REGULATOR_LP3971=m
CONFIG_REGULATOR_LP3972=m


@@ 4162,6 4222,7 @@ CONFIG_REGULATOR_MAX8997=m
CONFIG_REGULATOR_MAX8998=m
CONFIG_REGULATOR_MAX77686=m
CONFIG_REGULATOR_MAX77693=m
CONFIG_REGULATOR_MAX77802=m
CONFIG_REGULATOR_MC13XXX_CORE=m
CONFIG_REGULATOR_MC13783=m
CONFIG_REGULATOR_MC13892=m


@@ 4169,7 4230,9 @@ CONFIG_REGULATOR_PALMAS=m
CONFIG_REGULATOR_PCAP=m
CONFIG_REGULATOR_PCF50633=m
CONFIG_REGULATOR_PFUZE100=m
CONFIG_REGULATOR_PWM=m
CONFIG_REGULATOR_RC5T583=m
CONFIG_REGULATOR_RN5T618=m
CONFIG_REGULATOR_S2MPA01=m
CONFIG_REGULATOR_S2MPS11=m
CONFIG_REGULATOR_S5M8767=m


@@ 4245,6 4308,7 @@ CONFIG_IR_XMP_DECODER=m
CONFIG_RC_DEVICES=y
CONFIG_RC_ATI_REMOTE=m
CONFIG_IR_ENE=m
CONFIG_IR_HIX5HD2=m
CONFIG_IR_IMON=m
CONFIG_IR_MCEUSB=m
CONFIG_IR_ITE_CIR=m


@@ 4404,11 4468,13 @@ CONFIG_DVB_USB_GL861=m
CONFIG_DVB_USB_LME2510=m
CONFIG_DVB_USB_MXL111SF=m
CONFIG_DVB_USB_RTL28XXU=m
CONFIG_DVB_USB_DVBSKY=m
CONFIG_DVB_TTUSB_BUDGET=m
CONFIG_DVB_TTUSB_DEC=m
CONFIG_SMS_USB_DRV=m
CONFIG_DVB_B2C2_FLEXCOP_USB=m
# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
CONFIG_DVB_AS102=m

#
# Webcam, TV (analog/digital) USB devices


@@ 4422,8 4488,9 @@ CONFIG_VIDEO_EM28XX_RC=m
#
# Software defined radio USB devices
#
CONFIG_USB_MSI2500=m
CONFIG_USB_AIRSPY=m
CONFIG_USB_HACKRF=m
CONFIG_USB_MSI2500=m
CONFIG_MEDIA_PCI_SUPPORT=y

#


@@ 4449,6 4516,7 @@ CONFIG_VIDEO_HEXIUM_GEMINI=m
CONFIG_VIDEO_HEXIUM_ORION=m
CONFIG_VIDEO_MXB=m
CONFIG_VIDEO_SOLO6X10=m
CONFIG_VIDEO_TW68=m

#
# Media capture/analog/hybrid TV support


@@ 4472,11 4540,13 @@ CONFIG_VIDEO_SAA7134=m
CONFIG_VIDEO_SAA7134_ALSA=m
CONFIG_VIDEO_SAA7134_RC=y
CONFIG_VIDEO_SAA7134_DVB=m
CONFIG_VIDEO_SAA7134_GO7007=m
CONFIG_VIDEO_SAA7164=m

#
# Media digital TV PCI Adapters
#
CONFIG_DVB_AV7110_IR=y
CONFIG_DVB_AV7110=m
CONFIG_DVB_AV7110_OSD=y
CONFIG_DVB_BUDGET_CORE=m


@@ 4489,6 4559,7 @@ CONFIG_DVB_B2C2_FLEXCOP_PCI=m
CONFIG_DVB_PLUTO2=m
CONFIG_DVB_DM1105=m
CONFIG_DVB_PT1=m
CONFIG_DVB_PT3=m
CONFIG_MANTIS_CORE=m
CONFIG_DVB_MANTIS=m
CONFIG_DVB_HOPPER=m


@@ 4502,9 4573,8 @@ CONFIG_SOC_CAMERA_PLATFORM=m
CONFIG_V4L_MEM2MEM_DRIVERS=y
CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
CONFIG_VIDEO_SH_VEU=m
CONFIG_VIDEO_RENESAS_VSP1=m
CONFIG_V4L_TEST_DRIVERS=y
CONFIG_VIDEO_VIVI=m
CONFIG_VIDEO_VIVID=m
CONFIG_VIDEO_MEM2MEM_TESTDEV=m

#


@@ 4704,6 4774,8 @@ CONFIG_MEDIA_TUNER_TUA9001=m
CONFIG_MEDIA_TUNER_SI2157=m
CONFIG_MEDIA_TUNER_IT913X=m
CONFIG_MEDIA_TUNER_R820T=m
CONFIG_MEDIA_TUNER_MXL301RF=m
CONFIG_MEDIA_TUNER_QM1D1C0042=m

#
# Multistandard (satellite) frontends


@@ 4777,6 4849,7 @@ CONFIG_DVB_RTL2830=m
CONFIG_DVB_RTL2832=m
CONFIG_DVB_RTL2832_SDR=m
CONFIG_DVB_SI2168=m
CONFIG_DVB_AS102_FE=m

#
# DVB-C (cable) frontends


@@ 4808,6 4881,7 @@ CONFIG_DVB_S5H1411=m
CONFIG_DVB_S921=m
CONFIG_DVB_DIB8000=m
CONFIG_DVB_MB86A20S=m
CONFIG_DVB_TC90522=m

#
# Digital terrestrial only tuners/PLL


@@ 4855,7 4929,6 @@ CONFIG_VGA_SWITCHEROO=y
# Direct Rendering Manager
#
CONFIG_DRM=m
CONFIG_DRM_USB=m
CONFIG_DRM_KMS_HELPER=m
CONFIG_DRM_KMS_FB_HELPER=y
CONFIG_DRM_LOAD_EDID_FIRMWARE=y


@@ 4895,13 4968,14 @@ CONFIG_DRM_AST=m
# CONFIG_DRM_MGAG200 is not set
CONFIG_DRM_CIRRUS_QEMU=m
CONFIG_DRM_QXL=m
CONFIG_DRM_BOCHS=m
# CONFIG_DRM_BOCHS is not set

#
# Frame buffer Devices
#
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
CONFIG_FB_CMDLINE=y
CONFIG_FB_DDC=m
CONFIG_FB_BOOT_VESA_SUPPORT=y
CONFIG_FB_CFB_FILLRECT=y


@@ 5068,7 5142,7 @@ CONFIG_LOGO=y
CONFIG_LOGO_LIBRE_CLUT224=y
CONFIG_SOUND=m
CONFIG_SOUND_OSS_CORE=y
CONFIG_SOUND_OSS_CORE_PRECLAIM=y
# CONFIG_SOUND_OSS_CORE_PRECLAIM is not set
CONFIG_SND=m
CONFIG_SND_TIMER=m
CONFIG_SND_PCM=m


@@ 5276,6 5350,7 @@ CONFIG_SND_SOC_AK4554=m
CONFIG_SND_SOC_AK4642=m
CONFIG_SND_SOC_AK5386=m
CONFIG_SND_SOC_ALC5623=m
CONFIG_SND_SOC_CS35L32=m
CONFIG_SND_SOC_CS42L52=m
CONFIG_SND_SOC_CS42L56=m
CONFIG_SND_SOC_CS42L73=m


@@ 5285,6 5360,7 @@ CONFIG_SND_SOC_CS4271=m
CONFIG_SND_SOC_CS42XX8=m
CONFIG_SND_SOC_CS42XX8_I2C=m
CONFIG_SND_SOC_HDMI_CODEC=m
CONFIG_SND_SOC_ES8328=m
CONFIG_SND_SOC_MAX98090=m
CONFIG_SND_SOC_PCM1681=m
CONFIG_SND_SOC_PCM1792A=m


@@ 5300,6 5376,10 @@ CONFIG_SND_SOC_SIGMADSP=m
CONFIG_SND_SOC_SIGMADSP_I2C=m
CONFIG_SND_SOC_SIRF_AUDIO_CODEC=m
CONFIG_SND_SOC_SPDIF=m
CONFIG_SND_SOC_SSM2602=m
CONFIG_SND_SOC_SSM2602_SPI=m
CONFIG_SND_SOC_SSM2602_I2C=m
CONFIG_SND_SOC_SSM4567=m
CONFIG_SND_SOC_STA350=m
CONFIG_SND_SOC_TAS2552=m
CONFIG_SND_SOC_TAS5086=m


@@ 5320,6 5400,7 @@ CONFIG_SND_SOC_WM8776=m
CONFIG_SND_SOC_WM8804=m
CONFIG_SND_SOC_WM8903=m
CONFIG_SND_SOC_WM8962=m
CONFIG_SND_SOC_WM8978=m
CONFIG_SND_SOC_TPA6130A2=m
CONFIG_SND_SIMPLE_CARD=m
# CONFIG_SOUND_PRIME is not set


@@ 5382,6 5463,7 @@ CONFIG_HID_NTRIG=m
CONFIG_HID_ORTEK=m
CONFIG_HID_PANTHERLORD=m
CONFIG_PANTHERLORD_FF=y
CONFIG_HID_PENMOUNT=m
CONFIG_HID_PETALYNX=m
CONFIG_HID_PICOLCD=m
CONFIG_HID_PICOLCD_FB=y


@@ 5460,6 5542,7 @@ CONFIG_USB_WUSB_CBAF=m
#
CONFIG_USB_C67X00_HCD=m
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PCI=y
CONFIG_USB_XHCI_PLATFORM=m
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_EHCI_ROOT_HUB_TT=y


@@ 5482,13 5565,11 @@ CONFIG_USB_SL811_HCD=m
CONFIG_USB_SL811_HCD_ISO=y
CONFIG_USB_SL811_CS=m
CONFIG_USB_R8A66597_HCD=m
CONFIG_USB_RENESAS_USBHS_HCD=m
CONFIG_USB_WHCI_HCD=m
CONFIG_USB_HWA_HCD=m
CONFIG_USB_HCD_BCMA=m
CONFIG_USB_HCD_SSB=m
# CONFIG_USB_HCD_TEST_MODE is not set
CONFIG_USB_RENESAS_USBHS=m

#
# USB Device Class drivers


@@ 5638,7 5719,6 @@ CONFIG_USB_SERIAL_OMNINET=m
CONFIG_USB_SERIAL_OPTICON=m
CONFIG_USB_SERIAL_XSENS_MT=m
CONFIG_USB_SERIAL_WISHBONE=m
CONFIG_USB_SERIAL_ZTE=m
CONFIG_USB_SERIAL_SSU100=m
CONFIG_USB_SERIAL_QT2=m
CONFIG_USB_SERIAL_DEBUG=m


@@ 5682,9 5762,6 @@ CONFIG_USB_XUSBATM=m
#
CONFIG_USB_PHY=y
CONFIG_NOP_USB_XCEIV=m
CONFIG_SAMSUNG_USBPHY=m
CONFIG_SAMSUNG_USB2PHY=m
CONFIG_SAMSUNG_USB3PHY=m
CONFIG_USB_GPIO_VBUS=m
CONFIG_TAHVO_USB=m
CONFIG_TAHVO_USB_HOST_BY_DEFAULT=y


@@ 5702,7 5779,6 @@ CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
CONFIG_USB_FOTG210_UDC=m
CONFIG_USB_GR_UDC=m
CONFIG_USB_R8A66597=m
CONFIG_USB_RENESAS_USBHS_UDC=m
CONFIG_USB_PXA27X=m
CONFIG_USB_MV_UDC=m
CONFIG_USB_MV_U3D=m


@@ 5729,6 5805,8 @@ CONFIG_USB_F_SUBSET=m
CONFIG_USB_F_RNDIS=m
CONFIG_USB_F_MASS_STORAGE=m
CONFIG_USB_F_FS=m
CONFIG_USB_F_UAC1=m
CONFIG_USB_F_UVC=m
CONFIG_USB_CONFIGFS=m
CONFIG_USB_CONFIGFS_SERIAL=y
CONFIG_USB_CONFIGFS_ACM=y


@@ 5769,6 5847,7 @@ CONFIG_USB_G_DBGP=m
# CONFIG_USB_G_DBGP_PRINTK is not set
CONFIG_USB_G_DBGP_SERIAL=y
CONFIG_USB_G_WEBCAM=m
CONFIG_USB_LED_TRIG=y
CONFIG_UWB=m
CONFIG_UWB_HWA=m
CONFIG_UWB_WHCI=m


@@ 5864,6 5943,7 @@ CONFIG_LEDS_MC13783=m
CONFIG_LEDS_TCA6507=m
CONFIG_LEDS_MAX8997=m
CONFIG_LEDS_LM355x=m
CONFIG_LEDS_MENF21BMC=m

#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)


@@ 5968,6 6048,7 @@ CONFIG_RTC_DRV_MAX8925=m
CONFIG_RTC_DRV_MAX8998=m
CONFIG_RTC_DRV_MAX8997=m
CONFIG_RTC_DRV_MAX77686=m
CONFIG_RTC_DRV_MAX77802=m
CONFIG_RTC_DRV_RS5C372=m
CONFIG_RTC_DRV_ISL1208=m
CONFIG_RTC_DRV_ISL12022=m


@@ 6024,7 6105,6 @@ CONFIG_RTC_DRV_DS2404=m
CONFIG_RTC_DRV_DA9052=m
CONFIG_RTC_DRV_DA9055=m
CONFIG_RTC_DRV_DA9063=m
CONFIG_RTC_DRV_EFI=m
CONFIG_RTC_DRV_STK17TA8=m
CONFIG_RTC_DRV_M48T86=m
CONFIG_RTC_DRV_M48T35=m


@@ 6126,13 6206,13 @@ CONFIG_XEN_GRANT_DEV_ALLOC=m
CONFIG_SWIOTLB_XEN=y
CONFIG_XEN_TMEM=m
CONFIG_XEN_PCIDEV_BACKEND=m
CONFIG_XEN_SCSI_BACKEND=m
CONFIG_XEN_PRIVCMD=m
CONFIG_XEN_ACPI_PROCESSOR=y
CONFIG_XEN_MCE_LOG=y
CONFIG_XEN_HAVE_PVMMU=y
CONFIG_XEN_EFI=y
CONFIG_STAGING=y
CONFIG_ET131X=m
CONFIG_SLICOSS=m
CONFIG_PRISM2_USB=m
CONFIG_COMEDI=m


@@ 6140,12 6220,10 @@ CONFIG_COMEDI=m
CONFIG_COMEDI_DEFAULT_BUF_SIZE_KB=2048
CONFIG_COMEDI_DEFAULT_BUF_MAXSIZE_KB=20480
CONFIG_COMEDI_MISC_DRIVERS=y
CONFIG_COMEDI_KCOMEDILIB=m
CONFIG_COMEDI_BOND=m
CONFIG_COMEDI_TEST=m
CONFIG_COMEDI_PARPORT=m
CONFIG_COMEDI_SERIAL2002=m
CONFIG_COMEDI_SKEL=m
CONFIG_COMEDI_ISA_DRIVERS=y
CONFIG_COMEDI_PCL711=m
CONFIG_COMEDI_PCL724=m


@@ 6259,12 6337,13 @@ CONFIG_COMEDI_NI_MIO_CS=m
CONFIG_COMEDI_QUATECH_DAQP_CS=m
CONFIG_COMEDI_USB_DRIVERS=y
CONFIG_COMEDI_DT9812=m
CONFIG_COMEDI_NI_USB6501=m
CONFIG_COMEDI_USBDUX=m
CONFIG_COMEDI_USBDUXFAST=m
CONFIG_COMEDI_USBDUXSIGMA=m
CONFIG_COMEDI_VMK80XX=m
CONFIG_COMEDI_8255=m
CONFIG_COMEDI_FC=m
CONFIG_COMEDI_KCOMEDILIB=m
CONFIG_COMEDI_AMPLC_DIO200=m
CONFIG_COMEDI_AMPLC_PC236=m
CONFIG_COMEDI_DAS08=m


@@ 6284,13 6363,10 @@ CONFIG_RTL8192E=m
CONFIG_R8712U=m
CONFIG_R8188EU=m
CONFIG_88EU_AP_MODE=y
CONFIG_R8192EE=m
CONFIG_R8723AU=m
CONFIG_8723AU_AP_MODE=y
CONFIG_8723AU_BT_COEXIST=y
CONFIG_R8821AE=m
CONFIG_RTS5208=m
# CONFIG_RTS5208_DEBUG is not set
CONFIG_LINE6_USB=m
# CONFIG_LINE6_USB_IMPULSE_RESPONSE is not set
CONFIG_VT6655=m


@@ 6340,13 6416,8 @@ CONFIG_AD7746=m
#
# Direct Digital Synthesis
#
CONFIG_AD5930=m
CONFIG_AD9832=m
CONFIG_AD9834=m
CONFIG_AD9850=m
CONFIG_AD9852=m
CONFIG_AD9910=m
CONFIG_AD9951=m

#
# Digital gyroscope sensors


@@ 6422,7 6493,6 @@ CONFIG_SPEAKUP_SYNTH_DUMMY=m
CONFIG_TOUCHSCREEN_CLEARPAD_TM1217=m
CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=m
CONFIG_STAGING_MEDIA=y
CONFIG_DVB_AS102=m
CONFIG_I2C_BCM2048=m
CONFIG_DVB_CXD2099=m
CONFIG_VIDEO_DT3155=m


@@ 6466,8 6536,6 @@ CONFIG_LNET=m
CONFIG_LNET_MAX_PAYLOAD=1048576
CONFIG_LNET_SELFTEST=m
CONFIG_LNET_XPRT_IB=m
CONFIG_XILLYBUS=m
CONFIG_XILLYBUS_PCIE=m
CONFIG_DGNC=m
CONFIG_DGAP=m
CONFIG_GS_FPGABOOT=m


@@ 6540,6 6608,7 @@ CONFIG_CHROMEOS_PSTORE=m
#
# SOC (System On Chip) specific Drivers
#
CONFIG_SOC_TI=y
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
CONFIG_COMMON_CLK=y


@@ 6548,11 6617,14 @@ CONFIG_COMMON_CLK=y
# Common Clock Framework
#
CONFIG_COMMON_CLK_WM831X=m
CONFIG_COMMON_CLK_MAX_GEN=y
CONFIG_COMMON_CLK_MAX77686=m
CONFIG_COMMON_CLK_MAX77802=m
CONFIG_COMMON_CLK_SI5351=m
CONFIG_COMMON_CLK_S2MPS11=m
CONFIG_CLK_TWL6040=m
CONFIG_COMMON_CLK_PALMAS=m
# CONFIG_COMMON_CLK_PXA is not set

#
# Hardware Spinlock drivers


@@ 6564,6 6636,7 @@ CONFIG_COMMON_CLK_PALMAS=m
CONFIG_CLKEVT_I8253=y
CONFIG_I8253_LOCK=y
CONFIG_CLKBLD_I8253=y
# CONFIG_ATMEL_PIT is not set
# CONFIG_SH_TIMER_CMT is not set
# CONFIG_SH_TIMER_MTU2 is not set
# CONFIG_SH_TIMER_TMU is not set


@@ 6589,6 6662,10 @@ CONFIG_STE_MODEM_RPROC=m
#
# Rpmsg drivers
#

#
# SOC (System On Chip) specific Drivers
#
CONFIG_PM_DEVFREQ=y

#


@@ 6614,6 6691,7 @@ CONFIG_EXTCON_MAX14577=m
CONFIG_EXTCON_MAX77693=m
CONFIG_EXTCON_MAX8997=m
CONFIG_EXTCON_PALMAS=m
CONFIG_EXTCON_RT8973A=m
CONFIG_EXTCON_SM5502=m
CONFIG_MEMORY=y
CONFIG_IIO=m


@@ 6628,6 6706,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
# Accelerometers
#
CONFIG_BMA180=m
CONFIG_BMC150_ACCEL=m
CONFIG_HID_SENSOR_ACCEL_3D=m
CONFIG_IIO_ST_ACCEL_3AXIS=m
CONFIG_IIO_ST_ACCEL_I2C_3AXIS=m


@@ 6657,6 6736,7 @@ CONFIG_MCP3422=m
CONFIG_MEN_Z188_ADC=m
CONFIG_NAU7802=m
CONFIG_TI_ADC081C=m
CONFIG_TI_ADC128S052=m
CONFIG_TI_AM335X_ADC=m
CONFIG_TWL4030_MADC=m
CONFIG_TWL6030_GPADC=m


@@ 6718,6 6798,7 @@ CONFIG_ADIS16130=m
CONFIG_ADIS16136=m
CONFIG_ADIS16260=m
CONFIG_ADXRS450=m
CONFIG_BMG160=m
CONFIG_HID_SENSOR_GYRO_3D=m
CONFIG_IIO_ST_GYRO_3AXIS=m
CONFIG_IIO_ST_GYRO_I2C_3AXIS=m


@@ 6743,6 6824,7 @@ CONFIG_IIO_ADIS_LIB_BUFFER=y
# Light sensors
#
CONFIG_ADJD_S311=m
CONFIG_AL3320A=m
CONFIG_APDS9300=m
CONFIG_CM32181=m
CONFIG_CM36651=m


@@ 6825,6 6907,8 @@ CONFIG_PWM=y
CONFIG_PWM_SYSFS=y
CONFIG_PWM_LP3943=m
CONFIG_PWM_LPSS=m
CONFIG_PWM_LPSS_PCI=m
CONFIG_PWM_LPSS_PLATFORM=m
CONFIG_PWM_TWL=m
CONFIG_PWM_TWL_LED=m
CONFIG_IPACK_BUS=m


@@ 6944,6 7028,7 @@ CONFIG_QUOTACTL_COMPAT=y
CONFIG_AUTOFS4_FS=m
CONFIG_FUSE_FS=y
CONFIG_CUSE=m
CONFIG_OVERLAY_FS=m

#
# Caches


@@ 7099,6 7184,7 @@ CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
CONFIG_NFSD_V4_SECURITY_LABEL=y
# CONFIG_NFSD_FAULT_INJECTION is not set
CONFIG_GRACE_PERIOD=m
CONFIG_LOCKD=m
CONFIG_LOCKD_V4=y
CONFIG_NFS_ACL_SUPPORT=m


@@ 7269,6 7355,7 @@ CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
# CONFIG_SCHED_STACK_END_CHECK is not set
CONFIG_TIMER_STATS=y

#


@@ 7374,7 7461,7 @@ CONFIG_TEST_KSTRTOX=m
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set
# CONFIG_DMA_API_DEBUG is not set
CONFIG_TEST_MODULE=m
CONFIG_TEST_LKM=m
CONFIG_TEST_USER_COPY=m
CONFIG_TEST_BPF=m
CONFIG_TEST_FIRMWARE=m


@@ 7445,6 7532,7 @@ CONFIG_SECURITY_SELINUX_AVC_STATS=y
CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1
# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set
CONFIG_SECURITY_SMACK=y
# CONFIG_SECURITY_SMACK_BRINGUP is not set
CONFIG_SECURITY_TOMOYO=y
CONFIG_SECURITY_TOMOYO_MAX_ACCEPT_ENTRY=2048
CONFIG_SECURITY_TOMOYO_MAX_AUDIT_LOG=1024


@@ 7458,8 7546,8 @@ CONFIG_SECURITY_YAMA=y
CONFIG_SECURITY_YAMA_STACKED=y
CONFIG_INTEGRITY=y
CONFIG_INTEGRITY_SIGNATURE=y
CONFIG_INTEGRITY_AUDIT=y
CONFIG_INTEGRITY_ASYMMETRIC_KEYS=y
CONFIG_INTEGRITY_AUDIT=y
CONFIG_IMA=y
CONFIG_IMA_MEASURE_PCR_IDX=10
CONFIG_IMA_LSM_RULES=y


@@ 7475,10 7563,6 @@ CONFIG_IMA_DEFAULT_HASH="sha1"
CONFIG_IMA_APPRAISE=y
CONFIG_IMA_TRUSTED_KEYRING=y
CONFIG_EVM=y

#
# EVM options
#
CONFIG_EVM_ATTR_FSUUID=y
CONFIG_EVM_EXTRA_SMACK_XATTRS=y
# CONFIG_DEFAULT_SECURITY_SELINUX is not set


@@ 7520,6 7604,7 @@ CONFIG_CRYPTO_NULL=m
CONFIG_CRYPTO_PCRYPT=m
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
CONFIG_CRYPTO_MCRYPTD=m
CONFIG_CRYPTO_AUTHENC=m
CONFIG_CRYPTO_TEST=m
CONFIG_CRYPTO_ABLK_HELPER=m


@@ 7572,6 7657,7 @@ CONFIG_CRYPTO_SHA1=y
CONFIG_CRYPTO_SHA1_SSSE3=m
CONFIG_CRYPTO_SHA256_SSSE3=m
CONFIG_CRYPTO_SHA512_SSSE3=m
CONFIG_CRYPTO_SHA1_MB=m
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
CONFIG_CRYPTO_TGR192=m

M gnu/packages/linux.scm => gnu/packages/linux.scm +9 -3
@@ 192,7 192,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
     #f)))

(define-public linux-libre
  (let* ((version "3.17.3")
  (let* ((version "3.18")
         (build-phase
          '(lambda* (#:key system inputs #:allow-other-keys #:rest args)
             ;; Apply the neat patch.


@@ 265,7 265,7 @@ for SYSTEM, or #f if there is no configuration for SYSTEM."
             (uri (linux-libre-urls version))
             (sha256
              (base32
               "1qyk70m7y7ak94idkqpgyinnnpqpwxvl39rwh8pqdvrcm7w5b0lq"))))
               "1kv03bhls9rya4sg3qixyjirc79pn2g5bcwldcj7hs4apa77sd0g"))))
    (build-system gnu-build-system)
    (native-inputs `(("perl" ,perl)
                     ("bc" ,bc)


@@ 1487,7 1487,13 @@ mapper.  Kernel components are part of Linux-libre.")
                                  version ".tar.gz"))
              (sha256
               (base32
                "0qscyd44jmhs4k32ggp107hlym1pcyjzihiai48xs7xzib4wbndb"))))
                "0qscyd44jmhs4k32ggp107hlym1pcyjzihiai48xs7xzib4wbndb"))
              (modules '((guix build utils)))
              (snippet
               ;; Install the manual pages in the right place.
               '(substitute* "Makefile"
                  (("INSTALL_MAN= .*")
                   "INSTALL_MAN= $(PREFIX)/share/man")))))
    (build-system gnu-build-system)
    (arguments
     `(#:phases (alist-replace

M gnu/packages/lisp.scm => gnu/packages/lisp.scm +6 -3
@@ 31,13 31,13 @@
(define-public gcl
  (package
    (name "gcl")
    (version "2.6.11")
    (version "2.6.12")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "mirror://gnu/" name "/" name "-" version ".tar.gz"))
      (sha256
       (base32 "177vz8z74mky5nrq6qlfvnzvb1prw8jmlv4cwfx8w7k3k818y1a4"))))
       (base32 "1s4hs2qbjqmn9h88l4xvsifq5c3dlc5s74lyb61rdi5grhdlkf4f"))))
    (build-system gnu-build-system)
    (arguments
     `(#:parallel-build? #f  ; The build system seems not to be thread safe.


@@ 63,7 63,10 @@
                       (find-files "h" "\\.defs"))
                    (("SHELL=/bin/(ba)?sh")
                     (string-append "SHELL=" (which "bash")))))
                %standard-phases)))
                ;; drop strip phase to make maxima build, see
                ;; https://www.ma.utexas.edu/pipermail/maxima/2008/009769.html
                (alist-delete 'strip
                 %standard-phases))))
    (native-inputs
     `(("m4" ,m4)
       ("readline" ,readline)

A gnu/packages/llvm.scm => gnu/packages/llvm.scm +107 -0
@@ 0,0 1,107 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.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 llvm)
  #:use-module (guix packages)
  #:use-module (guix licenses)
  #:use-module (guix download)
  #:use-module (guix utils)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system cmake)
  #:use-module (gnu packages)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages python)
  #:use-module (gnu packages xml))

(define-public llvm
  (package
    (name "llvm")
    (version "3.5.0")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "http://llvm.org/releases/"
                          version "/llvm-" version ".src.tar.xz"))
      (sha256
       (base32
        "00swb43mzlvda8306arlg2jw7g6k3acwfccgf1k4c2pgd3rrkq98"))))
    (build-system cmake-build-system)
    (native-inputs
     `(("python" ,python-wrapper)
       ("perl"   ,perl)))
    (arguments
     `(#:phases (alist-cons-before
                 'build 'link-lib-for-build-exec
                 (lambda* (#:key outputs #:allow-other-keys)
                   ;; This is a hacky fix that will allow binaries to run
                   ;; before being installed.  -DCMAKE_SKIP_BUILD_RPATH=FALSE
                   ;; seems to not help.  Nixpkgs does the same.
                   (let* ((out       (assoc-ref outputs "out"))
                          (out-lib   (string-append out "/lib"))
                          (build-lib (string-append (getcwd) "/lib")))
                     (mkdir-p out)
                     (symlink build-lib out-lib)))
                 (alist-cons-after
                  'build 'cleanup-out
                  (lambda* (#:key outputs #:allow-other-keys)
                    ;; Cleanup the symlink that was created previously.  Let
                    ;; the install phase repopulate out.
                    (delete-file-recursively (assoc-ref outputs "out")))
                  %standard-phases))))
    (home-page "http://www.llvm.org")
    (synopsis "Optimizing compiler infrastructure")
    (description
     "LLVM is a compiler infrastructure designed for compile-time, link-time, runtime,
and idle-time optimization of programs from arbitrary programming languages.
It currently supports compilation of C and C++ programs, using front-ends
derived from GCC 4.0.1.  A new front-end for the C family of languages is in
development.  The compiler infrastructure includes mirror sets of programming
tools as well as libraries with equivalent functionality.")
    (license ncsa)))

(define-public clang
  (package
    (name "clang")
    (version (package-version llvm))
    (source
     (origin
       (method url-fetch)
       (uri (string-append "http://llvm.org/releases/"
                           version "/cfe-" version ".src.tar.xz"))
       (sha256
        (base32
         "12yv3jwdjcbkrx7zjm8wh4jrvb59v8fdw4mnmz3zc1jb00p9k07w"))))
    ;; Using cmake allows us to treat llvm as an external library.  There
    ;; doesn't seem to be any way to do this with clang's autotools-based
    ;; build system.
    (build-system cmake-build-system)
    (native-inputs (package-native-inputs llvm))
    (inputs
     `(("libxml2" ,libxml2)
       ,@(package-inputs llvm)))
    (propagated-inputs
     `(("llvm" ,llvm)))
    (arguments `(#:configure-flags '("-DCLANG_INCLUDE_TESTS=True")))
    (home-page "http://clang.llvm.org")
    (synopsis "C language family frontend for LLVM")
    (description
     "Clang is a compiler front end for the C, C++, Objective-C and
Objective-C++ programming languages.  It uses LLVM as its back end.  The Clang
project includes the Clang front end, the Clang static analyzer, and several
code analysis tools.")
    (license ncsa)))

M gnu/packages/mail.scm => gnu/packages/mail.scm +164 -1
@@ 2,6 2,8 @@
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2014 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 22,14 24,23 @@
  #:use-module (gnu packages)
  #:use-module (gnu packages autotools)
  #:use-module (gnu packages base)
  #:use-module (gnu packages backup)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages cyrus-sasl)
  #:use-module (gnu packages dejagnu)
  #:use-module (gnu packages emacs)
  #:use-module (gnu packages enchant)
  #:use-module (gnu packages gdbm)
  #:use-module (gnu packages ghostscript)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages gnupg)
  #:use-module (gnu packages gnutls)
  #:use-module (gnu packages gsasl)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages guile)
  #:use-module (gnu packages libcanberra)
  #:use-module (gnu packages libidn)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages m4)
  #:use-module (gnu packages databases)


@@ 46,8 57,10 @@
  #:use-module (gnu packages flex)
  #:use-module (gnu packages gdb)
  #:use-module (gnu packages samba)
  #:use-module (gnu packages xml)
  #:use-module (gnu packages xorg)
  #:use-module ((guix licenses)
                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+))
                #:select (gpl2 gpl2+ gpl3+ lgpl2.1+ lgpl3+ bsd-style))
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix utils)


@@ 365,4 378,154 @@ attachments, create new maildirs, and so on.")
ing, and tagging large collections of email messages.")
    (license gpl3+)))

(define-public getmail
  (package
    (name "getmail")
    (version "4.46.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "http://pyropus.ca/software/getmail/old-versions/"
                           name "-" version ".tar.gz"))
       (sha256
        (base32
         "15rqmm25pq6ll8aaqh8h6pfdkpqs7y6yismb3h3w1bz8j292c8zl"))))
    (build-system python-build-system)
    (arguments
     `(#:tests? #f ; no tests
       #:python ,python-2))
    (home-page "http://pyropus.ca/software/getmail/")
    (synopsis "Mail retriever")
    (description
     "A flexible, extensible mail retrieval system with support for
POP3, IMAP4, SSL variants of both, maildirs, mboxrd files, external MDAs,
arbitrary message filtering, single-user and domain-mailboxes, and many other
useful features.")

    ;; License is specified in file '__init__.py'.
    (license gpl2)))

(define-public libetpan
  (package
    (name "libetpan")
    (version "1.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "https://github.com/dinhviethoa/" name
                   "/archive/" version ".tar.gz"))
             (sha256
               (base32 "05qyqx2c1ppb1jnrs3m52i60f9xlxfxdmb9dnwg4vqjv8kwv2qkr"))))
    (build-system gnu-build-system)
    (native-inputs `(("autoconf" ,(autoconf-wrapper))
                     ("automake" ,automake)
                     ("libtool" ,libtool "bin")
                     ("pkg-config" ,pkg-config)))
    (propagated-inputs
     ;; 'libetpan-config --libs' returns '-lssl -lcrypto -lsasl2', so these
     ;; libraries need to be propagated.
     `(("cyrus-sasl" ,cyrus-sasl)
       ("openssl" ,openssl)))
    (inputs
     `(("curl" ,curl)
       ("expat" ,expat)))
    (arguments
      '(#:phases (alist-cons-before
                  'configure 'autogen
                  (lambda _
                    (system* "./autogen.sh")) ;; Note: this fails because the
                         ;; generated configure script uses /bin/sh. It is
                         ;; replaced in the configure phase by the correct
                         ;; value. TODO: replace the configure phase by the
                         ;; autogen phase and have the SHELL variable be replaced
                  %standard-phases)
        #:configure-flags
        '("--disable-static" "--disable-db")))
    (home-page "http://www.etpan.org/libetpan.html")
    (synopsis "Portable middleware for email access")
    (description
     "The purpose of this mail library is to provide a portable, efficient
framework for different kinds of mail access: IMAP, SMTP, POP and NNTP.  It
provides an API for C language.  It's the low-level API used by MailCore and
MailCore 2.")
    (license (bsd-style "file://COPYING"))))

(define-public claws-mail
  (package
    (name "claws-mail")
    (version "3.11.1")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://downloads.sourceforge.net/project/claws-mail/"
                    "Claws Mail/" version "/" name "-" version ".tar.xz"))
              (sha256
               (base32 "0cyixz1jgfpi8abh9fbb8ylx9mcvw4jqj81cms666wpqr6v828yp"))))
    (build-system gnu-build-system)
    (native-inputs `(("pkg-config" ,pkg-config)))
    (inputs `(("bogofilter" ,bogofilter)
              ("curl" ,curl)
              ("dbus-glib" ,dbus-glib)
              ("dbus" ,dbus)
              ("enchant" ,enchant)
              ("expat" ,expat)
              ("ghostscript" ,ghostscript)
              ("hicolor-icon-theme" ,hicolor-icon-theme)
              ("gnupg" ,gnupg)
              ("gnutls" ,gnutls)
              ("gpgme" ,gpgme)
              ("gtk" ,gtk+-2)
              ("libarchive" ,libarchive)
              ("libcanberra" ,libcanberra)
              ("libetpan" ,libetpan)
              ("libnotify" ,libnotify)
              ("libsm" ,libsm)
              ("libxml2" ,libxml2)
              ("perl" ,perl)
              ("python-2" ,python-2)))
    (arguments
      '(#:configure-flags
        '("--enable-gnutls" "--enable-pgpmime-plugin" "--enable-enchant")))
    (synopsis "GTK-based Email client")
    (description
     "Claws-Mail is an email client (and news reader) based on GTK+.  The
appearance and interface are designed to be familiar to new users coming from
other popular email clients, as well as experienced users.  Almost all commands
are accessible with the keyboard.  Plus, Claws-Mail is extensible via addons
which can add many functionalities to the base client.")
    (home-page "http://www.claws-mail.org/")
    (license gpl3+))) ; most files are actually public domain or x11

(define-public msmtp
  (package
    (name "msmtp")
    (version "1.4.32")
    (source
     (origin
       (method url-fetch)
       (uri (string-append
             "http://downloads.sourceforge.net/project/msmtp/msmtp/" version
             "/msmtp-" version ".tar.bz2"))
       (sha256 (base32
                "122z38pv4q03w3mbnhrhg4w85a51258sfdg2ips0b6cgwz3wbw1b"))))
    (build-system gnu-build-system)
    (inputs
     `(("libidn" ,libidn)
       ("gnutls" ,gnutls)
       ("zlib" ,zlib)
       ("gsasl" ,gsasl)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (home-page "http://msmtp.sourceforge.net/")
    (arguments
     `(#:configure-flags (list "--with-libgsasl"
                               "--with-libidn"
                               "--with-ssl=gnutls")))
    (synopsis
     "Simple and easy to use SMTP client with decent sendmail compatibility")
    (description
     "msmtp is an SMTP client.  In the default mode, it transmits a mail to
an SMTP server (for example at a free mail provider) which takes care of further
delivery.")
    (license gpl3+)))

;;; mail.scm ends here

M gnu/packages/man.scm => gnu/packages/man.scm +2 -2
@@ 151,7 151,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
(define-public help2man
  (package
    (name "help2man")
    (version "1.46.3")
    (version "1.46.4")
    (source
     (origin
      (method url-fetch)


@@ 159,7 159,7 @@ Linux kernel and C library interfaces employed by user-space programs.")
                          version ".tar.xz"))
      (sha256
       (base32
        "0hi94a6ai96yw0v8xgjzpp5c6jr33ifmbn2mkp7wz7rgmwxxqsd6"))))
        "0csn7jx7nhlrflalw1992p3l5afawlpdyjdff2q5bk5hadgz3rqs"))))
    (build-system gnu-build-system)
    (arguments `(;; There's no `check' target.
                 #:tests? #f))

M gnu/packages/maths.scm => gnu/packages/maths.scm +9 -0
@@ 953,6 953,9 @@ point numbers")
    (inputs `(("gfortran" ,gfortran-4.8)
              ("lapack-tar" ,(package-source lapack))))
    (outputs '("out" "doc"))
    ;; For the moment we drop support for MIPS at it fails to compile. See
    ;; https://lists.gnu.org/archive/html/guix-devel/2014-11/msg00516.html
    (supported-systems (delete "mips64el-linux" %supported-systems))
    (arguments
     `(#:parallel-build? #f
       #:parallel-tests? #f


@@ 979,6 982,12 @@ point numbers")
         ;; Disable parallel build as it gives errors: atlas_pthread.h is
         ;; needed to compile C files before it is generated.
         "-Ss" "pmake" "make -j 1"
         ;; Probe is failing for MIPS.  We therefore define the system
         ;; architecture explicitly by setting (-A) MACHINETYPE = 49
         ;; 'MIPSR1xK' and (-V) ISA = 1 'none'.
         ,,@(if (string-prefix? "mips" (%current-system))
              (list "-A" "49" "-V" "1")
              (list))
         ;; Generate shared libraries.
         "--shared"
         ;; Build a full LAPACK library.

A gnu/packages/mg.scm => gnu/packages/mg.scm +64 -0
@@ 0,0 1,64 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.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 mg)
  #:use-module (guix licenses)
  #:use-module (guix download)
  #:use-module (guix packages)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages pkg-config))

(define-public mg
  (package
    (name "mg")
    (version "20050429")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://homepage.boetes.org/software/mg/mg-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "19kib0aha4a40izzds7r63qfb2akq4sily6k28fl0n0zdgq0cna1"))
              (modules '((guix build utils)))
              (snippet
               '(begin
                  (substitute* "Makefile.in"
                    (("-Werror") "")
                    (("-lcurses") "-lncurses")
                    (("/usr/bin/install") "install -D")
                    (("/usr/bin/strip") "strip"))))))
    (build-system gnu-build-system)
    (inputs
     `(("ncurses" ,ncurses)))
    (arguments
     ;; No test suite available.
     '(#:tests? #f
       #:phases (alist-cons-before
                 'configure 'pre-configure
                 (lambda* (#:key outputs #:allow-other-keys)
                   (substitute* "Makefile.in"
                     (("(prefix=[[:blank:]]*)/usr/local" all prefix)
                      (string-append prefix (assoc-ref outputs "out")))))
                 %standard-phases)))
    (home-page "http://homepage.boetes.org/software/mg/")
    (synopsis "Microscopic GNU Emacs clone")
    (description
     "mg is Micro GNU Emacs; this is a portable version of the mg maintained
by the OpenBSD team.")
    (license public-domain)))

M gnu/packages/mp3.scm => gnu/packages/mp3.scm +89 -3
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 24,17 25,18 @@
  #:use-module (gnu packages compression)
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages ghostscript)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages pcre)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages xiph)
  #:use-module (gnu packages pulseaudio)
  #:use-module ((gnu packages linux)
                #:select (alsa-lib))
  #:use-module (gnu packages linux)               ;alsa-lib
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu))
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system cmake))

(define-public libmad
  (package


@@ 129,6 131,90 @@ a highly stable and efficient implementation.")
   (license license:lgpl2.0+)
   (home-page "http://id3lib.sourceforge.net/")))

(define-public taglib
  (package
    (name "taglib")
    (version "1.9.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://taglib.github.io/releases/taglib-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "06n7gnbcqa3r6c9gv00y0y1r48dyyazm6yj403i7ma0r2k6p3lvj"))))
    (build-system cmake-build-system)
    (arguments '(#:tests? #f))                    ;no 'test' target
    (inputs `(("zlib" ,zlib)))
    (home-page "http://developer.kde.org/~wheeler/taglib.html")
    (synopsis "Library to access audio file meta-data")
    (description
     "TagLib is a C++ library for reading and editing the meta-data of several
popular audio formats.  Currently it supports both ID3v1 and ID3v2 for MP3
files, Ogg Vorbis comments and ID3 tags and Vorbis comments in FLAC, MPC,
Speex, WavPack TrueAudio, WAV, AIFF, MP4 and ASF files.")

    ;; Dual-licensed: user may choose between LGPLv2.1 or MPLv1.1.
    (license (list license:lgpl2.1 license:mpl1.1))))

(define-public mp3info
  (package
    (name "mp3info")
    (version "0.8.5a")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-"
                    version ".tgz"))
              (sha256
               (base32
                "042f1czcs9n2sbqvg4rsvfwlqib2gk976mfa2kxlfjghx5laqf04"))
              (modules '((guix build utils)))
              (snippet
               '(substitute* "Makefile"
                  (("/bin/rm") "rm")
                  (("/usr/bin/install") "install")
                  (("man/man1") "share/man/man1")))))
    (build-system gnu-build-system)
    (outputs '("out" "gui"))                      ;GTK+ interface in "gui"
    (arguments
     '(#:phases (alist-replace
                 'configure
                 (lambda* (#:key outputs #:allow-other-keys)
                   (let ((out (assoc-ref outputs "out")))
                     (substitute* "Makefile"
                       (("prefix=.*")
                        (string-append "prefix := " out "\n")))))
                 (alist-cons-before
                  'install 'pre-install
                  (lambda* (#:key outputs #:allow-other-keys)
                    (let ((out (assoc-ref outputs "out")))
                      (mkdir-p (string-append out "/bin"))
                      (mkdir-p (string-append out "/share/man/man1"))))
                  (alist-cons-after
                   'install 'post-install
                   (lambda* (#:key outputs #:allow-other-keys)
                     ;; Move the GTK+ interface to "gui".
                     (let ((out (assoc-ref outputs "out"))
                           (gui (assoc-ref outputs "gui")))
                       (mkdir-p (string-append gui "/bin"))
                       (rename-file (string-append out "/bin/gmp3info")
                                    (string-append gui "/bin/gmp3info"))))
                   %standard-phases)))
        #:tests? #f))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("gtk+" ,gtk+-2)
       ("ncurses" ,ncurses)))
    (home-page "http://www.ibiblio.org/mp3info/")
    (synopsis "MP3 technical info viewer and ID3 1.x tag editor")
    (description
     "MP3Info is a little utility used to read and modify the ID3 tags of MP3
files.  MP3Info can also display various techincal aspects of an MP3 file
including playing time, bit-rate, sampling frequency and other attributes in a
pre-defined or user-specifiable output format.")
    (license license:gpl2+)))

(define-public libmp3splt
  (package
   (name "libmp3splt")

A gnu/packages/nutrition.scm => gnu/packages/nutrition.scm +68 -0
@@ 0,0 1,68 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.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 nutrition)
  #:use-module (guix packages)
  #:use-module (guix licenses)
  #:use-module (guix download)
  #:use-module (guix build-system python)
  #:use-module (gnu packages)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages image)
  #:use-module (gnu packages python))

(define-public gourmet
  (package
    (name "gourmet")
    (version "0.17.4")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://github.com/thinkle/gourmet/archive/"
                          version ".tar.gz"))
      (sha256
       (base32
        "1qvz175arzqm10lpfx8ffadrgirs3240zzqcp0h7sl53qfwx7v8k"))))
    (build-system python-build-system)
    (native-inputs
     `(("distutils-extra"   ,python2-distutils-extra)
       ("intltool"          ,intltool)
       ("python-pygtk"      ,python2-pygtk))) ;for tests
    ;; TODO: Add python-reportlab and/or python-poppler for printing/pdf
    ;; export, and python-beautifulsoup for web import plugin.
    (inputs
     `(("pygtk"             ,python2-pygtk)
       ("sqlalchemy"        ,python2-sqlalchemy)
       ("python-pillow"     ,python2-pillow)
       ("elib.intl"         ,python2-elib.intl)
       ;; XXX: This really isn't an input for gourmet but of pillow.  Making
       ;; it a propagated input in pillow doesn't seem to get its site path
       ;; into gourmet's wrapper's PYTHONPATH however...
       ("python-setuptools" ,python2-setuptools)))
    (arguments
     `(#:python ,python-2               ;exception and print syntax
       #:tests? #f))                    ;tests look bitrotted
    (home-page "http://thinkle.github.io/gourmet/")
    (synopsis "Recipe organizer")
    (description
     "Gourmet Recipe Manager is a recipe organizer that allows you to collect,
search, organize, and browse your recipes.  Gourmet can also generate shopping
lists and calculate nutritional information.  It imports Mealmaster,
MasterCook and KRecipe files and exports PDFs, webpages, and other formats.")
    (license gpl2+)))

M gnu/packages/ocrad.scm => gnu/packages/ocrad.scm +2 -2
@@ 27,14 27,14 @@
(define-public ocrad
  (package
    (name "ocrad")
    (version "0.23")
    (version "0.24")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/ocrad/ocrad-"
                                 version ".tar.lz"))
             (sha256
              (base32
               "0vx0v4sz8ivgcp04zggdq9cv9sb5zxnn7j1nm15cds0zq1wr9g7m"))))
               "0hhlx072d00bi9qia0nj5izsq4qkscpfz2mpbyfc72msl3hfvslv"))))
    (build-system gnu-build-system)
    (native-inputs `(("lzip" ,lzip)))
    (home-page "http://www.gnu.org/software/ocrad/")

M gnu/packages/package-management.scm => gnu/packages/package-management.scm +2 -2
@@ 118,7 118,7 @@ the Nix package manager.")

(define guix-devel
  ;; Development version of Guix.
  (let ((commit "47739f5"))
  (let ((commit "3b09332"))
    (package (inherit guix-0.8)
      (version (string-append "0.8." commit))
      (source (origin


@@ 129,7 129,7 @@ the Nix package manager.")
                      (recursive? #t)))
                (sha256
                 (base32
                  "17azgv1i8f9spwa35m23d2yk0wlmf48xm6ka1rqh30nhacwlmnx7"))))
                  "1szlyhpy688ca96kfyjb6cdy5zhxvqmdig4m7ql7rjqfmz0gvka1"))))
      (arguments
       (substitute-keyword-arguments (package-arguments guix-0.8)
         ((#:phases phases)

M gnu/packages/parallel.scm => gnu/packages/parallel.scm +2 -2
@@ 27,7 27,7 @@
(define-public parallel
  (package
    (name "parallel")
    (version "20141022")
    (version "20141122")
    (source
     (origin
      (method url-fetch)


@@ 35,7 35,7 @@
                          version ".tar.bz2"))
      (sha256
       (base32
        "1dpssybids6k6na4rh2gwv1m581h28rcmsvq0hs56hrrh7qpjmvp"))))
        "1kpd4ayd4lb867nfnpkam4b3mh86jl6cdy386x1rich938gbrg38"))))
    (build-system gnu-build-system)
    (inputs `(("perl" ,perl)))
    (home-page "http://www.gnu.org/software/parallel/")

A gnu/packages/patches/glib-tests-gapplication.patch => gnu/packages/patches/glib-tests-gapplication.patch +28 -0
@@ 0,0 1,28 @@
This test has proven to be unreliable, often leading to things like this
in gapplication.log:

  PASS: gapplication 3 /gapplication/properties
  Failed to register: The connection is closed
  **
  GLib-GIO:ERROR:gapplication.c:564:test_quit: assertion failed: (activated)
  ok 4 /gapplication/app-id
  PASS: gapplication 4 /gapplication/app-id
  ../../tap-test: line 5: 24133 Aborted                 $1 -k --tap
  # GLib-GIO:ERROR:gapplication.c:564:test_quit: assertion failed: (activated)
  cleaning up pid 24154
  ERROR: gapplication - missing test plan
  ERROR: gapplication - exited with status 134 (terminated by signal 6?)

See <https://bugs.debian.org/756273> and <http://bugs.gnu.org/18445>.


--- glib-2.40.2/gio/tests/gapplication.c	2014-12-03 22:34:44.566667649 +0100
+++ glib-2.40.2/gio/tests/gapplication.c	2014-12-03 22:34:45.346674179 +0100
@@ -685,7 +685,6 @@ main (int argc, char **argv)
 /*  g_test_add_func ("/gapplication/non-unique", test_nonunique); */
   g_test_add_func ("/gapplication/properties", properties);
   g_test_add_func ("/gapplication/app-id", appid);
-  g_test_add_func ("/gapplication/quit", test_quit);
   g_test_add_func ("/gapplication/local-actions", test_local_actions);
 /*  g_test_add_func ("/gapplication/remote-actions", test_remote_actions); */
   g_test_add_func ("/gapplication/local-command-line", test_local_command_line);

M gnu/packages/patches/guile-linux-syscalls.patch => gnu/packages/patches/guile-linux-syscalls.patch +2 -7
@@ 7,7 7,7 @@ diff --git a/libguile/posix.c b/libguile/posix.c
index 324f21b..cbee94d 100644
--- a/libguile/posix.c
+++ b/libguile/posix.c
@@ -2286,6 +2286,266 @@ scm_init_popen (void)
@@ -2286,6 +2286,261 @@ scm_init_popen (void)
 }
 #endif
 


@@ 84,12 84,7 @@ index 324f21b..cbee94d 100644
+  free (c_options);
+
+  if (err != 0)
+    {
+      /* XXX: `insmod' actually provides better translation of some of
+	 the error codes.  */
+      errno = err;
+      SCM_SYSERROR;
+    }
+    SCM_SYSERROR;
+
+  return SCM_UNSPECIFIED;
+}

A gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch => gnu/packages/patches/python-sqlite-3.8.4-test-fix.patch +15 -0
@@ 0,0 1,15 @@
From resolution of upstream python issue #20901: http://bugs.python.org/issue20901

diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py
--- Lib/sqlite3/test/hooks.py
+++ Lib/sqlite3/test/hooks.py
@@ -162,7 +162,7 @@ class ProgressTests(unittest.TestCase):
             create table bar (a, b)
             """)
         second_count = len(progress_calls)
-        self.assertGreater(first_count, second_count)
+        self.assertGreaterEqual(first_count, second_count)
 
     def CheckCancelOperation(self):
         """


A gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch => gnu/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch +39 -0
@@ 0,0 1,39 @@
From e5df32ffbf37481dbb6a70c4d4e7b7b9778c5549 Mon Sep 17 00:00:00 2001
From: "John (J5) Palmieri" <johnp@redhat.com>
Date: Sat, 13 Aug 2011 04:13:28 -0400
Subject: remove references to deprecated GI_INFO_TYPE_ERROR_DOMAIN


diff --git a/gi/pygi-info.c b/gi/pygi-info.c
index 8729e25..007b609 100644
--- a/gi/pygi-info.c
+++ b/gi/pygi-info.c
@@ -165,9 +165,6 @@ _pygi_info_new (GIBaseInfo *info)
         case GI_INFO_TYPE_CONSTANT:
             type = &PyGIConstantInfo_Type;
             break;
-        case GI_INFO_TYPE_ERROR_DOMAIN:
-            type = &PyGIErrorDomainInfo_Type;
-            break;
         case GI_INFO_TYPE_UNION:
             type = &PyGIUnionInfo_Type;
             break;
@@ -484,7 +481,6 @@ _pygi_g_type_info_size (GITypeInfo *type_info)
                 case GI_INFO_TYPE_INVALID:
                 case GI_INFO_TYPE_FUNCTION:
                 case GI_INFO_TYPE_CONSTANT:
-                case GI_INFO_TYPE_ERROR_DOMAIN:
                 case GI_INFO_TYPE_VALUE:
                 case GI_INFO_TYPE_SIGNAL:
                 case GI_INFO_TYPE_PROPERTY:
@@ -863,7 +859,6 @@ pygi_g_struct_info_is_simple (GIStructInfo *struct_info)
                     case GI_INFO_TYPE_INVALID:
                     case GI_INFO_TYPE_FUNCTION:
                     case GI_INFO_TYPE_CONSTANT:
-                    case GI_INFO_TYPE_ERROR_DOMAIN:
                     case GI_INFO_TYPE_VALUE:
                     case GI_INFO_TYPE_SIGNAL:
                     case GI_INFO_TYPE_PROPERTY:
-- 
cgit v0.10.1


A gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch => gnu/packages/patches/python2-sqlite-3.8.4-test-fix.patch +15 -0
@@ 0,0 1,15 @@
From resolution of upstream python issue #20901: http://bugs.python.org/issue20901

diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py
--- Lib/sqlite3/test/hooks.py
+++ Lib/sqlite3/test/hooks.py
@@ -162,7 +162,7 @@ class ProgressTests(unittest.TestCase):
             create table bar (a, b)
             """)
         second_count = len(progress_calls)
-        self.assertTrue(first_count > second_count)
+        self.assertGreaterEqual(first_count, second_count)
 
     def CheckCancelOperation(self):
         """


A gnu/packages/patches/wmctrl-64-fix.patch => gnu/packages/patches/wmctrl-64-fix.patch +32 -0
@@ 0,0 1,32 @@
Description: Correct 64 Architecture implementation of 32 bit data
Author: Chris Donoghue <cdonoghu@gmail.com>
Bug-Debian: http://bugs.debian.org/362068

--- wmctrl-1.07.orig/main.c
+++ wmctrl-1.07/main.c
@@ -1425,6 +1425,16 @@ static gchar *get_property (Display *dis
      *
      * long_length = Specifies the length in 32-bit multiples of the
      *               data to be retrieved.
+     *
+     * NOTE:  see 
+     * http://mail.gnome.org/archives/wm-spec-list/2003-March/msg00067.html
+     * In particular:
+     *
+     * 	When the X window system was ported to 64-bit architectures, a
+     * rather peculiar design decision was made. 32-bit quantities such
+     * as Window IDs, atoms, etc, were kept as longs in the client side
+     * APIs, even when long was changed to 64 bits.
+     *
      */
     if (XGetWindowProperty(disp, win, xa_prop_name, 0, MAX_PROPERTY_VALUE_LEN / 4, False,
             xa_prop_type, &xa_ret_type, &ret_format,     
@@ -1441,6 +1451,8 @@ static gchar *get_property (Display *dis
 
     /* null terminate the result to make string handling easier */
     tmp_size = (ret_format / 8) * ret_nitems;
+    /* Correct 64 Architecture implementation of 32 bit data */
+    if(ret_format==32) tmp_size *= sizeof(long)/4;
     ret = g_malloc(tmp_size + 1);
     memcpy(ret, ret_prop, tmp_size);
     ret[tmp_size] = '\0';

A gnu/packages/patches/xf86-video-openchrome-includes.patch => gnu/packages/patches/xf86-video-openchrome-includes.patch +35 -0
@@ 0,0 1,35 @@
This follows the same rationale as xf86-input-synaptics-glibc-2.20.patch
to allow building with glibc-2.20.
diff -u -r xf86-video-openchrome-0.2.906.old/src/via_3d.h xf86-video-openchrome-0.2.906/src/via_3d.h
--- xf86-video-openchrome-0.2.906.old/src/via_3d.h	2014-11-23 14:04:58.000000000 +0100
+++ xf86-video-openchrome-0.2.906/src/via_3d.h	2014-11-23 14:18:37.000000000 +0100
@@ -24,6 +24,7 @@
 #ifndef VIA_3D_H
 #define VIA_3D_H
 
+#include "xorg-server.h"
 #include "xf86.h"
 #include "via_dmabuffer.h"
 
diff -u -r xf86-video-openchrome-0.2.906.old/src/via_driver.h xf86-video-openchrome-0.2.906/src/via_driver.h
--- xf86-video-openchrome-0.2.906.old/src/via_driver.h	2014-11-23 14:04:58.000000000 +0100
+++ xf86-video-openchrome-0.2.906/src/via_driver.h	2014-11-23 14:21:43.000000000 +0100
@@ -35,6 +35,7 @@
 #endif
 
 #include "vgaHW.h"
+#include "xorg-server.h"
 #include "xf86.h"
 
 #if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 
diff -u -r xf86-video-openchrome-0.2.906.old/src/via_timing.h xf86-video-openchrome-0.2.906/src/via_timing.h
--- xf86-video-openchrome-0.2.906.old/src/via_timing.h	2014-11-23 14:04:58.000000000 +0100
+++ xf86-video-openchrome-0.2.906/src/via_timing.h	2014-11-23 14:20:50.000000000 +0100
@@ -25,6 +25,7 @@
 #ifndef _TIMING_H_
 #define _TIMING_H_
 
+#include "xorg-server.h"
 #include "xf86.h"
 
 /* Aspect ratio not CVT standard */

M gnu/packages/pcre.scm => gnu/packages/pcre.scm +5 -3
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 27,14 28,14 @@
(define-public pcre
  (package
   (name "pcre")
   (version "8.32")
   (version "8.36")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://sourceforge/pcre/pcre/"
                                version "/pcre-" version ".tar.bz2"))
            (sha256
             (base32
              "0m8gvrf1q0iwll4csirvvj98xygw4cy7r14i5l53ivsqs2dzn4x9"))))
              "1fs5p1z67m9f4xnyil3s4lhgyld78f7m4d1yawpyhh0cvrbk90zg"))))
   (build-system gnu-build-system)
   (inputs `(("bzip2" ,bzip2)
             ("readline" ,readline)


@@ 43,7 44,8 @@
    `(#:configure-flags '("--enable-utf"
                          "--enable-pcregrep-libz"
                          "--enable-pcregrep-libbz2"
                          "--enable-pcretest-libreadline")))
                          "--enable-pcretest-libreadline"
                          "--enable-jit")))
   (synopsis "Perl Compatible Regular Expressions")
   (description
    "The PCRE library is a set of functions that implement regular expression

M gnu/packages/perl.scm => gnu/packages/perl.scm +203 -0
@@ 161,3 161,206 @@ SHA-1 message digest algorithm for use by Perl programs.")
    (home-page (string-append "http://search.cpan.org/~gaas/Digest-SHA1-"
                              version "/SHA1.pm"))
    (license (package-license perl))))

(define-public perl-benchmark-timer
  (package
    (name "perl-benchmark-timer")
    (version "0.7102")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/D/DC/DCOPPIT/"
                                  "Benchmark-Timer-" version ".tar.gz"))
              (sha256
               (base32
                "1gl9ybm9hgia3ld5s11b7bv2p2hmx5rss5hxcfy6rmbzrjcnci01"))))
    (build-system perl-build-system)
    ;; The optional input module Statistics::PointEstimation (from
    ;; Statistics-TTest) lists no license.
    (synopsis "Benchmarking with statistical confidence")
    (description
     "The Benchmark::Timer class allows you to time portions of code
conveniently, as well as benchmark code by allowing timings of repeated
trials.  It is perfect for when you need more precise information about the
running time of portions of your code than the Benchmark module will give you,
but don't want to go all out and profile your code.")
    (home-page (string-append "http://search.cpan.org/~dcoppit/"
                              "Benchmark-Timer-" version))
    (license gpl2)))

(define-public perl-exporter-lite
  (package
    (name "perl-exporter-lite")
    (version "0.06")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/N/NE/NEILB/"
                                  "Exporter-Lite-" version ".tar.gz"))
              (sha256
               (base32
                "0k4gkvid4fr8yvwj0axdx5111mzfw2iipls3qllxr364fqhmclpj"))))
    (build-system perl-build-system)
    (synopsis "Lightweight exporting of functions and variables")
    (description
     "Exporter::Lite is an alternative to Exporter, intended to provide a
lightweight subset of the most commonly-used functionality.  It supports
import(), @EXPORT and @EXPORT_OK and not a whole lot else.")
    (home-page (string-append "http://search.cpan.org/~neilb/"
                              "Exporter-Lite-" version))
    (license (package-license perl))))

(define-public perl-probe-perl
  (package
    (name "perl-probe-perl")
    (version "0.03")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/K/KW/KWILLIAMS/"
                                  "Probe-Perl-" version ".tar.gz"))
              (sha256
               (base32
                "0c9wiaz0mqqknafr4jdr0g2gdzxnn539182z0icqaqvp5qgd5r6r"))))
    (build-system perl-build-system)
    (synopsis "Information about the currently running perl")
    (description
     "Probe::Perl provides methods for obtaining information about the
currently running perl interpreter.  It originally began life as code in the
Module::Build project, but has been externalized here for general use.")
    (home-page (string-append "http://search.cpan.org/~kwilliams/"
                              "Probe-Perl-" version))
    (license (package-license perl))))

(define-public perl-ipc-run3
  (package
    (name "perl-ipc-run3")
    (version "0.048")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/R/RJ/RJBS/"
                                  "IPC-Run3-" version ".tar.gz"))
              (sha256
               (base32
                "0r9m8q78bg7yycpixd7738jm40yz71p2q7inm766kzsw3g6c709x"))))
    (build-system perl-build-system)
    (synopsis "Run a subprocess with input/ouput redirection")
    (description
     "The IPC::Run3 module allows you to run a subprocess and redirect stdin,
stdout, and/or stderr to files and perl data structures.  It aims to satisfy
99% of the need for using system, qx, and open3 with a simple, extremely
Perlish API and none of the bloat and rarely used features of IPC::Run.")
    (home-page (string-append "http://search.cpan.org/~rjbs/"
                              "IPC-Run3-" version))
    ;; "You may use this module under the terms of the BSD, Artistic, or GPL
    ;; licenses, any version."
    (license (list bsd-3 gpl3+))))

(define-public perl-test-script
  (package
    (name "perl-test-script")
    (version "1.07")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
                                  "Test-Script-" version ".tar.gz"))
              (sha256
               (base32
                "15pb4zzsnm33msc1syhig2bk05xqc0pckmfyahdwbd177bj5w7p2"))))
    (build-system perl-build-system)
    (propagated-inputs
     `(("probe-perl" ,perl-probe-perl)
       ("ipc-run3"   ,perl-ipc-run3)))
    (synopsis "Basic cross-platform tests for scripts")
    (description
     "The intent of the Test::Script module is to provide a series of basic
tests for 80% of the testing you will need to do for scripts in the script (or
bin as is also commonly used) paths of your Perl distribution.")
    (home-page (string-append "http://search.cpan.org/~adamk/"
                              "Test-Script-" version))
    (license (package-license perl))))

(define-public perl-file-which
  (package
    (name "perl-file-which")
    (version "1.09")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/A/AD/ADAMK/"
                                  "File-Which-" version ".tar.gz"))
              (sha256
               (base32
                "1hxjyh9yrv32f3g8vrnr8iylzprajsac14vjm75kf1qnj1jyqbxp"))))
    (build-system perl-build-system)
    (native-inputs `(("test-script" ,perl-test-script)))
    (synopsis "Portable implementation of the `which' utility")
    (description
     "File::Which was created to be able to get the paths to executable
programs on systems under which the `which' program wasn't implemented in the
shell.")
    (home-page (string-append "http://search.cpan.org/~adamk/"
                              "File-Which-" version))
    (license (package-license perl))))

(define-public perl-getopt-tabular
  (package
    (name "perl-getopt-tabular")
    (version "0.3")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/G/GW/GWARD/"
                                  "Getopt-Tabular-" version ".tar.gz"))
              (sha256
               (base32
                "0xskl9lcj07sdfx5dkma5wvhhgf5xlsq0khgh8kk34dm6dv0dpwv"))))
    (build-system perl-build-system)
    (synopsis "Table-driven argument parsing for Perl")
    (description
     "Getopt::Tabular is a Perl 5 module for table-driven argument parsing,
vaguely inspired by John Ousterhout's Tk_ParseArgv.")
    (home-page (string-append "http://search.cpan.org/~gward/"
                              "Getopt-Tabular-" version))
    (license (package-license perl))))

(define-public perl-regexp-common
  (package
    (name "perl-regexp-common")
    (version "2013031301")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/A/AB/ABIGAIL/"
                                  "Regexp-Common-" version ".tar.gz"))
              (sha256
               (base32
                "112wybsm0vr8yfannx6sdfvgp5vza28gjgr3pgn69ak4sac836kj"))))
    (build-system perl-build-system)
    (synopsis "Provide commonly requested regular expressions")
    (description
     "This module exports a single hash (`%RE') that stores or generates
commonly needed regular expressions.  Patterns currently provided include:
balanced parentheses and brackets, delimited text (with escapes), integers and
floating-point numbers in any base (up to 36), comments in 44 languages,
offensive language, lists of any pattern, IPv4 addresses, URIs, and Zip
codes.")
    (home-page (string-append "http://search.cpan.org/~abigail/"
                              "Regexp-Common-" version))
    ;; Quad-licensed: Perl Artistic, Perl Artistic 2.0, X11, and BSD.
    (license (list (package-license perl) x11 bsd-3))))

(define-public perl-sys-cpu
  (package
    (name "perl-sys-cpu")
    (version "0.61")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://cpan/authors/id/M/MZ/MZSANFORD/"
                                  "Sys-CPU-" version ".tar.gz"))
              (sha256
               (base32
                "1r6976bs86j7zp51m5vh42xlyah951jgdlkimv202413kjvqc2i5"))))
    (build-system perl-build-system)
    (synopsis "Perl extension for getting CPU information")
    (description
     "In responce to a post on perlmonks.org, a module for counting the number
of CPU's on a system.  Support has now also been added for type of CPU and
clock speed.")
    (home-page (string-append "http://search.cpan.org/~mzsanford/"
                              "Sys-CPU-" version))
    (license (package-license perl))))

M gnu/packages/pkg-config.scm => gnu/packages/pkg-config.scm +12 -8
@@ 71,13 71,11 @@ instance.")))
       #:builder (begin
                   (use-modules (guix build utils))

                   (let* ((out  (assoc-ref %outputs "out"))
                          (bin  (string-append out "/bin"))
                          (prog (string-append ,target "-pkg-config"))
                          (native
                           (string-append
                            (assoc-ref %build-inputs "pkg-config")
                            "/bin/pkg-config")))
                   (let* ((in     (assoc-ref %build-inputs "pkg-config"))
                          (out    (assoc-ref %outputs "out"))
                          (bin    (string-append out "/bin"))
                          (prog   (string-append ,target "-pkg-config"))
                          (native (string-append in "/bin/pkg-config")))

                     (mkdir-p bin)



@@ 85,7 83,13 @@ instance.")))
                     ;; This satisfies the pkg.m4 macros, which use
                     ;; AC_PROG_TOOL to determine the `pkg-config' program
                     ;; name.
                     (symlink native (string-append bin "/" prog))))))
                     (symlink native (string-append bin "/" prog))

                     ;; Also make 'pkg.m4' available, some packages might
                     ;; expect it.
                     (mkdir-p (string-append out "/share"))
                     (symlink (string-append in "/share/aclocal")
                              (string-append out "/share/aclocal"))))))
    (native-inputs `(("pkg-config" ,%pkg-config)))

    ;; Ignore native inputs, and set `PKG_CONFIG_PATH' for target inputs.

M gnu/packages/pretty-print.scm => gnu/packages/pretty-print.scm +41 -0
@@ 196,3 196,44 @@ output to 8 different formats, including HTML, LaTeX and ODF.  It can also
output to ANSI color escape sequences, so that highlighted source code can be
seen in a terminal.")
    (license gpl3+)))

(define-public astyle
  (package
    (name "astyle")
    (version "2.05")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/astyle/astyle/astyle%20"
                           version "/astyle_"  version "_linux.tar.gz"))
       (sha256
        (base32
         "0f9sh9kq5ajp1yz133h00fr9235p1m698x7n3h7zbrhjiwgynd6s"))))
    (build-system gnu-build-system)
    (arguments
     `(#:tests? #f                      ;no tests
       #:make-flags (list (string-append "prefix=" %output)
                          "INSTALL=install"
                          "all")
       #:phases (alist-replace
                 'configure
                 (lambda _ (chdir "build/gcc"))
                 (alist-cons-after
                  'install 'install-libs
                  (lambda* (#:key outputs #:allow-other-keys)
                    ;; Libraries are not installed by default
                    (let* ((output (assoc-ref outputs "out"))
                           (libdir (string-append output "/lib")))
                      (begin
                        (mkdir-p libdir)
                        (for-each (lambda (l)
                                    (copy-file
                                     l (string-append libdir "/" (basename l))))
                                  (find-files "bin" "lib*")))))
                  %standard-phases))))
    (home-page "http://astyle.sourceforge.net/")
    (synopsis "Source code indenter, formatter, and beautifier")
    (description
     "Artistic Style is a source code indenter, formatter, and beautifier for
the C, C++, C++/CLI, Objective‑C, C#, and Java programming languages.")
    (license lgpl3+)))

M gnu/packages/python.scm => gnu/packages/python.scm +672 -3
@@ 24,27 24,40 @@
(define-module (gnu packages python)
  #:use-module ((guix licenses)
                #:select (asl2.0 bsd-3 bsd-2 bsd-style cc0 expat x11 x11-style
                          gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1+
                          gpl2 gpl2+ gpl3+ lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3+
                          psfl public-domain))
  #:use-module ((guix licenses) #:select (zlib) #:prefix license:)
  #:use-module (gnu packages)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages gdbm)
  #:use-module (gnu packages icu4c)
  #:use-module (gnu packages image)
  #:use-module (gnu packages libffi)
  #:use-module (gnu packages readline)
  #:use-module (gnu packages openssl)
  #:use-module (gnu packages elf)
  #:use-module (gnu packages maths)
  #:use-module (gnu packages gcc)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages zip)
  #:use-module (gnu packages ghostscript)
  #:use-module (gnu packages multiprecision)
  #:use-module (gnu packages texlive)
  #:use-module (gnu packages texinfo)
  #:use-module (gnu packages image)
  #:use-module (gnu packages imagemagick)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages which)
  #:use-module (gnu packages perl)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix utils)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system python)
  #:use-module (guix build-system trivial))
  #:use-module (guix build-system trivial)
  #:use-module (srfi srfi-1))

(define-public python-2
  (package


@@ 55,7 68,8 @@
      (method url-fetch)
      (uri (string-append "https://www.python.org/ftp/python/"
                          version "/Python-" version ".tar.xz"))
      (patches (list (search-patch "python-libffi-mips-n32-fix.patch")))
      (patches (list (search-patch "python-libffi-mips-n32-fix.patch")
                     (search-patch "python2-sqlite-3.8.4-test-fix.patch")))
      (patch-flags '("-p0"))
      (sha256
       (base32


@@ 109,6 123,7 @@
        (let ((bz2 (assoc-ref %build-inputs "bzip2"))
              (gdbm (assoc-ref %build-inputs "gdbm"))
              (libffi (assoc-ref %build-inputs "libffi"))
              (sqlite (assoc-ref %build-inputs "sqlite"))
              (openssl (assoc-ref %build-inputs "openssl"))
              (readline (assoc-ref %build-inputs "readline"))
              (zlib (assoc-ref %build-inputs "zlib")))


@@ 117,6 132,7 @@
               (string-append "CPPFLAGS="
                "-I" bz2 "/include "
                "-I" gdbm "/include "
                "-I" sqlite "/include "
                "-I" openssl "/include "
                "-I" readline "/include "
                "-I" zlib "/include")


@@ 124,6 140,7 @@
                "-L" bz2 "/lib "
                "-L" gdbm "/lib "
                "-L" libffi "/lib "
                "-L" sqlite "/lib "
                "-L" openssl "/lib "
                "-L" readline "/lib "
                "-L" zlib "/lib")))


@@ 167,6 184,7 @@
     `(("bzip2" ,bzip2)
       ("gdbm" ,gdbm)
       ("libffi" ,libffi)                         ; for ctypes
       ("sqlite" ,sqlite)                         ; for sqlite extension
       ("openssl" ,openssl)
       ("readline" ,readline)
       ("zlib" ,zlib)


@@ 198,6 216,7 @@ data types.")
              (uri (string-append "https://www.python.org/ftp/python/"
                                  version "/Python-" version ".tar.xz"))
              (patches (list (search-patch "python-fix-tests.patch")
                             (search-patch "python-sqlite-3.8.4-test-fix.patch")
                             (search-patch "python-libffi-mips-n32-fix.patch")))
              (patch-flags '("-p0"))
              (sha256


@@ 1873,3 1892,653 @@ writing C extensions for Python as easy as Python itself.")
    (name "python2-cython")
    (inputs
     `(("python-2" ,python-2))))) ; this is not automatically changed

;; This version of numpy is missing the documentation and is only used to
;; build matplotlib which is required to build numpy's documentation.
(define python-numpy-bootstrap
  (package
    (name "python-numpy-bootstrap")
    (version "1.9.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/numpy"
                           "/numpy-" version ".tar.gz"))
       (sha256
        (base32
         "070ybfvpgfmiz2hs94x445hvkh9dh52nyi0m8jp5kdihgvhbnx80"))))
    (build-system python-build-system)
    (inputs
     `(("python-nose" ,python-nose)
       ("atlas" ,atlas)))
    (native-inputs
     `(("gfortran" ,gfortran-4.8)))
    (arguments
     `(#:phases
       (alist-cons-before
        'build 'set-environment-variables
        (lambda* (#:key inputs #:allow-other-keys)
          (let* ((atlas-threaded
                  (string-append (assoc-ref inputs "atlas") 
                                 "/lib/libtatlas.so"))
                 ;; On single core CPUs only the serial library is created.
                 (atlas-lib
                  (if (file-exists? atlas-threaded)
                      atlas-threaded
                      (string-append (assoc-ref inputs "atlas") 
                                     "/lib/libsatlas.so"))))
            (setenv "ATLAS" atlas-lib)))
        ;; Tests can only be run after the library has been installed and not
        ;; within the source directory.
        (alist-cons-after
         'install 'check
         (lambda _ 
           (with-directory-excursion "/tmp"
             (zero? (system* "python" "-c" 
                             "import numpy; numpy.test(verbose=2)"))))
         (alist-delete 
          'check 
          %standard-phases)))))
    (home-page "http://www.numpy.org/")
    (synopsis "Fundamental package for scientific computing with Python")
    (description "NumPy is the fundamental package for scientific computing
with Python. It contains among other things: a powerful N-dimensional array
object, sophisticated (broadcasting) functions, tools for integrating C/C++
and Fortran code, useful linear algebra, Fourier transform, and random number
capabilities.")
    (license bsd-3)))

(define python2-numpy-bootstrap
  (package-with-python2 python-numpy-bootstrap))

(define-public python-numpy
  (package (inherit python-numpy-bootstrap)
    (name "python-numpy")
    (outputs '("out" "doc"))
    (inputs 
     `(("which" ,which)
       ("python-setuptools" ,python-setuptools)
       ("python-matplotlib" ,python-matplotlib)
       ("python-sphinx" ,python-sphinx)
       ("python-pyparsing" ,python-pyparsing)
       ("python-numpydoc" ,python-numpydoc)
       ,@(package-inputs python-numpy-bootstrap)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("texlive" ,texlive)
       ("texinfo" ,texinfo)
       ("perl" ,perl)
       ,@(package-native-inputs python-numpy-bootstrap)))
    (arguments
     `(,@(substitute-keyword-arguments 
             (package-arguments python-numpy-bootstrap)
           ((#:phases phases)
            `(alist-cons-after
              'install 'install-doc
              (lambda* (#:key outputs #:allow-other-keys)
                (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
                       (doc (string-append 
                             data "/doc/" ,name "-" 
                             ,(package-version python-numpy-bootstrap)))
                       (info (string-append data "/info"))
                       (html (string-append doc "/html"))
                       (pyver ,(string-append "PYVER=")))
                  (with-directory-excursion "doc"
                    (mkdir-p html)
                    (system* "make" "html" pyver)
                    (system* "make" "latex" "PAPER=a4" pyver)
                    (system* "make" "-C" "build/latex" 
                             "all-pdf" "PAPER=a4" pyver)
                    ;; FIXME: Generation of the info file fails.
                    ;; (system* "make" "info" pyver)
                    ;; (mkdir-p info)
                    ;; (copy-file "build/texinfo/numpy.info"
                    ;;            (string-append info "/numpy.info"))
                    (for-each (lambda (file)
                                (copy-file (string-append "build/latex" file)
                                           (string-append doc file)))
                              '("/numpy-ref.pdf" "/numpy-user.pdf"))
                    (with-directory-excursion "build/html"
                      (for-each (lambda (file)
                                  (let* ((dir (dirname file))
                                         (tgt-dir (string-append html "/" dir)))
                                    (unless (equal? "." dir)
                                      (mkdir-p tgt-dir))
                                    (copy-file file (string-append html "/" file))))
                                (find-files "." ".*"))))))
              ,phases)))))))

(define-public python2-numpy
  (let ((numpy (package-with-python2 python-numpy)))
    (package (inherit numpy)
      ;; Make sure we use exactly PYTHON2-NUMPYDOC, which is customized for
      ;; Python 2. Since it is also an input to PYTHON2-MATPLOTLIB, we need to
      ;; import the right version of 'matplotlib' as well.
      (inputs `(("python2-numpydoc" ,python2-numpydoc)
                ("python2-matplotlib" ,python2-matplotlib)
                ,@(alist-delete "python-numpydoc" 
                                (alist-delete "python-matplotlib"
                                              (package-inputs numpy))))))))

(define-public python-pyparsing
  (package
    (name "python-pyparsing")
    (version "2.0.2")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/pyparsing"
                           "/pyparsing-" version ".tar.gz"))
       (sha256
        (base32
         "01lasib0n2fp2k99c988qhz16lm9hcwmnmrmhybdb3jq2xmkvr0p"))))
    (build-system python-build-system)
    (outputs '("out" "doc"))
    (arguments
     `(#:tests? #f ; no test target
       #:modules ((guix build python-build-system)
                  (guix build utils))
       #:phases
       (alist-cons-after
        'install 'install-doc
        (lambda* (#:key outputs #:allow-other-keys)
          (let* ((doc (string-append (assoc-ref outputs "doc") 
                                     "/share/doc/" ,name "-" ,version))
                 (html-doc (string-append doc "/html"))
                 (examples (string-append doc "/examples")))
            (mkdir-p html-doc)
            (mkdir-p examples)
            (for-each 
             (lambda (dir tgt)
               (map (lambda (file) 
                      (copy-file file (string-append tgt "/" (basename file))))
                    (find-files dir ".*")))
             (list "docs" "htmldoc" "examples")
             (list doc html-doc examples))))
        %standard-phases)))
    (home-page "http://pyparsing.wikispaces.com")
    (synopsis "Python parsing class library")
    (description
     "The pyparsing module is an alternative approach to creating and
executing simple grammars, vs. the traditional lex/yacc approach, or the use
of regular expressions.  The pyparsing module provides a library of classes
that client code uses to construct the grammar directly in Python code.")
    (license expat)))

(define-public python2-pyparsing
  (package-with-python2 python-pyparsing))

(define-public python-numpydoc
  (package
    (name "python-numpydoc")
    (version "0.5")
    (source
     (origin
       (method url-fetch)
       (uri (string-append 
             "https://pypi.python.org/packages/source/n/numpydoc/numpydoc-"
             version ".tar.gz"))
       (sha256
        (base32
         "0d4dnifaxkll50jx6czj05y8cb4ny60njd2wz299sj2jxfy51w4k"))))
    (build-system python-build-system)
    (inputs
     `(("python-setuptools" ,python-setuptools)
       ("python-docutils" ,python-docutils)
       ("python-sphinx" ,python-sphinx)
       ("python-nose" ,python-nose)))
    (home-page "https://pypi.python.org/pypi/numpydoc")
    (synopsis
     "Numpy's Sphinx extensions")
    (description
     "Sphinx extension to support docstrings in Numpy format.")
    (license bsd-2)))

(define-public python2-numpydoc
  (package 
    (inherit (package-with-python2 python-numpydoc))
    ;; With python-2 1 test (out of 30) fails because it doesn't find
    ;; matplotlib.  With python-3 it seems to detect at run-time the absence
    ;; of matplotlib.
    (arguments `(#:tests? #f
                 #:python ,python-2))))

(define-public python-matplotlib
  (package
    (name "python-matplotlib")
    (version "1.4.2")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/matplotlib"
                           "/matplotlib-" version ".tar.gz"))
       (sha256
        (base32
         "0m6v9nwdldlwk22gcd339zg6mny5m301fxgks7z8sb8m9wawg8qp"))))
    (build-system python-build-system)
    (outputs '("out" "doc"))
    (inputs
     `(("python-setuptools" ,python-setuptools)
       ("python-dateutil" ,python-dateutil-2)
       ("python-pyparsing" ,python-pyparsing)
       ("python-six" ,python-six)
       ("python-pytz" ,python-pytz)
       ("python-numpy" ,python-numpy-bootstrap)
       ("python-sphinx" ,python-sphinx)
       ("python-numpydoc" ,python-numpydoc)
       ("python-nose" ,python-nose)
       ("python-mock" ,python-mock)
       ("libpng" ,libpng)
       ("imagemagick" ,imagemagick)
       ("freetype" ,freetype)
       ;; FIXME: Add backends when available.
       ;("python-pygtk" ,python-pygtk)
       ;("python-pycairo" ,python-pycairo)
       ;("python-pygobject" ,python-pygobject)
       ;("python-wxpython" ,python-wxpython)
       ;("python-pyqt" ,python-pyqt)
       ))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("texlive" ,texlive)
       ("texinfo" ,texinfo)))
    (arguments
     `(#:phases
       (alist-cons-after
        'install 'install-doc
        (lambda* (#:key outputs #:allow-other-keys)
          (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
                 (doc (string-append data "/doc/" ,name "-" ,version))
                 (info (string-append data "/info"))
                 (html (string-append doc "/html")))
            (with-directory-excursion "doc"
              ;; Without setting this variable we get an encoding error.
              (setenv "LANG" "en_US.UTF-8")
              ;; Produce pdf in 'A4' format.
              (substitute* (find-files "." "conf\\.py")
                (("latex_paper_size = 'letter'")
                 "latex_paper_size = 'a4'"))
              (mkdir-p html)
              (mkdir-p info)
              ;; The doc recommends to run the 'html' target twice.
              (system* "python" "make.py" "html")
              (system* "python" "make.py" "html")
              (system* "python" "make.py" "latex")
              (system* "python" "make.py" "texinfo")
              (copy-file "build/texinfo/matplotlib.info"
                         (string-append info "/matplotlib.info"))
              (copy-file "build/latex/Matplotlib.pdf"
                         (string-append doc "/Matplotlib.pdf"))
              (with-directory-excursion "build/html"
                (map (lambda (file)
                       (let* ((dir (dirname file))
                              (tgt-dir (string-append html "/" dir)))
                         (unless (equal? "." dir)
                           (mkdir-p tgt-dir))
                         (copy-file file (string-append html "/" file))))
                     (find-files "." ".*"))))))
        %standard-phases)))
    (home-page "http://matplotlib.org")
    (synopsis "2D plotting library for Python")
    (description
     "Matplotlib is a Python 2D plotting library which produces publication
quality figures in a variety of hardcopy formats and interactive environments
across platforms.  Matplotlib can be used in Python scripts, the python and
ipython shell, web application servers, and six graphical user interface
toolkits.")
    (license psfl)))

(define-public python2-matplotlib
  (let ((matplotlib (package-with-python2 python-matplotlib)))
    (package (inherit matplotlib)
      ;; Make sure we use exactly PYTHON2-NUMPYDOC, which is
      ;; customized for Python 2.
      (inputs `(("python2-numpydoc" ,python2-numpydoc)
                ,@(alist-delete "python-numpydoc" 
                                (package-inputs matplotlib)))))))

;; Scipy 0.14.0 with Numpy 0.19.X fails several tests.  This is known and
;; planned to be fixed in 0.14.1.  It is claimed that the failures can safely
;; be ignored:
;; http://mail.scipy.org/pipermail/scipy-dev/2014-September/020043.html
;; https://github.com/scipy/scipy/issues/3853 
;;
;; The main test suite procedure prints the summary message:
;;
;; Ran 16412 tests in 245.033s
;; FAILED (KNOWNFAIL=277, SKIP=921, errors=327, failures=42)
;; 
;; However, it still does return normally.
(define-public python-scipy
  (package
    (name "python-scipy")
    (version "0.14.0")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "mirror://sourceforge/scipy"
                           "/scipy-" version ".tar.gz"))
       (sha256
        (base32
         "053bmz4qmnk4dmxvspfak8r10rpmy6mzwfzgy33z338ppzka6hab"))))
    (build-system python-build-system)
    (inputs
     `(("python-numpy" ,python-numpy)
       ("python-matplotlib" ,python-matplotlib)
       ("python-pyparsing" ,python-pyparsing)
       ("python-nose" ,python-nose)
       ("python-sphinx" ,python-sphinx)
       ("atlas" ,atlas)))
    (native-inputs
     `(("gfortran" ,gfortran-4.8)
       ("texlive" ,texlive)
       ("perl" ,perl)))
    (outputs '("out" "doc"))
    (arguments
     `(#:phases
       (alist-cons-before
        'build 'set-environment-variables
        (lambda* (#:key inputs #:allow-other-keys)
          (let* ((atlas-threaded
                  (string-append (assoc-ref inputs "atlas") 
                                 "/lib/libtatlas.so"))
                 ;; On single core CPUs only the serial library is created.
                 (atlas-lib
                  (if (file-exists? atlas-threaded)
                      atlas-threaded
                      (string-append (assoc-ref inputs "atlas") 
                                     "/lib/libsatlas.so"))))
            (setenv "ATLAS" atlas-lib)))
        (alist-cons-after
         'install 'install-doc
         (lambda* (#:key outputs #:allow-other-keys)
           (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
                  (doc (string-append data "/doc/" ,name "-" ,version))
                  (html (string-append doc "/html"))
                  (pyver ,(string-append "PYVER=")))
             (with-directory-excursion "doc"
               ;; Without setting this variable we get an encoding error.
               (setenv "LANG" "en_US.UTF-8")
               ;; Fix generation of images for mathematical expressions.
               (substitute* (find-files "source" "conf\\.py")
                 (("pngmath_use_preview = True")
                  "pngmath_use_preview = False"))
               (mkdir-p html)
               (system* "make" "html" pyver)
               (system* "make" "latex" "PAPER=a4" pyver)
               (system* "make" "-C" "build/latex" "all-pdf" "PAPER=a4" pyver)
               (copy-file "build/latex/scipy-ref.pdf"
                          (string-append doc "/scipy-ref.pdf"))
               (with-directory-excursion "build/html"
                 (for-each (lambda (file)
                             (let* ((dir (dirname file))
                                    (tgt-dir (string-append html "/" dir)))
                               (unless (equal? "." dir)
                                 (mkdir-p tgt-dir))
                               (copy-file file (string-append html "/" file))))
                           (find-files "." ".*"))))))
         ;; Tests can only be run after the library has been installed and not
         ;; within the source directory.
         (alist-cons-after
          'install 'check
          (lambda _ 
            (with-directory-excursion "/tmp"
              (zero? (system* "python" "-c" "import scipy; scipy.test()"))))
          (alist-delete 
           'check 
           %standard-phases))))))
    (home-page "http://www.scipy.org/")
    (synopsis "The Scipy library provides efficient numerical routines")
    (description "The SciPy library is one of the core packages that make up
the SciPy stack.  It provides many user-friendly and efficient numerical
routines such as routines for numerical integration and optimization.")
    (license bsd-3)))

(define-public python2-scipy
  (let ((scipy (package-with-python2 python-scipy)))
    (package (inherit scipy)
      ;; Use packages customized for python-2.
      (inputs `(("python2-matplotlib" ,python2-matplotlib)
                ("python2-numpy" ,python2-numpy)
                ,@(alist-delete "python-matplotlib" 
                                (alist-delete "python-numpy" 
                                              (package-inputs scipy))))))))

(define-public python-sqlalchemy
  (package
    (name "python-sqlalchemy")
    (version "0.9.7")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://pypi.python.org/packages/source/S/"
                          "SQLAlchemy/SQLAlchemy-" version ".tar.gz"))
      (sha256
       (base32
        "059ayifj5l08v6vv56anhyibyllscn10dlzr2fcw68gz1hfjdzsz"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-cython" ,python-cython) ;for c extensions
       ("python-pytest" ,python-pytest)
       ("python-mock"   ,python-mock))) ;for tests
    (arguments
     `(#:phases (alist-replace
                 'check
                 (lambda _ (zero? (system* "py.test")))
                 %standard-phases)))
    (home-page "http://www.sqlalchemy.org")
    (synopsis "Database abstraction library")
    (description
     "SQLAlchemy is the Python SQL toolkit and Object Relational Mapper that
gives application developers the full power and flexibility of SQL.  It
provides a full suite of well known enterprise-level persistence patterns,
designed for efficient and high-performing database access, adapted into a
simple and Pythonic domain language.")
    (license x11)))

(define-public python2-sqlalchemy
  (package-with-python2 python-sqlalchemy))

(define-public python-distutils-extra
  (package
    (name "python-distutils-extra")
    (version "2.38")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://launchpad.net/python-distutils-extra/trunk/"
                          version "/+download/python-distutils-extra-"
                          version ".tar.gz"))
      (sha256
       (base32
        "0lx15kcbby9zisx33p2h5hgakgwh2bvh0ibag8z0px4j6ifhs41x"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-setuptools" ,python-setuptools)))
    (home-page "https://launchpad.net/python-distutils-extra/")
    (synopsis "Enhancements to Python's distutils")
    (description
     "The python-distutils-extra module enables you to easily integrate
gettext support, themed icons, and scrollkeeper-based documentation into
Python's distutils.")
    (license gpl2)))

(define-public python2-distutils-extra
  (package-with-python2 python-distutils-extra))

(define-public python2-elib.intl
  (package
    (name "python2-elib.intl")
    (version "0.0.3")
    (source
     (origin
       ;; This project doesn't tag releases or publish tarballs, so we take
       ;; source from a (semi-arbitrary, i.e. latest as of now) git commit.
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/dieterv/elib.intl.git")
             (commit "d09997cfef")))
       (sha256
        (base32
         "0y7vzff9xgbnaay7m0va1arl6g68ncwrvbgwl7jqlclsahzzb09d"))))
    (build-system python-build-system)
    (native-inputs
     `(("python2-setuptools" ,python2-setuptools)))
    (arguments
     ;; incompatible with Python 3 (exception syntax)
     `(#:python ,python-2
       #:tests? #f
       ;; With standard flags, the install phase attempts to create a zip'd
       ;; egg file, and fails with an error: 'ZIP does not support timestamps
       ;; before 1980'
       #:configure-flags '("--single-version-externally-managed"
                           "--record=elib.txt")))
    (home-page "https://github.com/dieterv/elib.intl")
    (synopsis "Enhanced internationalization for Python")
    (description
     "The elib.intl module provides enhanced internationalization (I18N)
services for your Python modules and applications.")
    (license lgpl3+)))

(define-public python-pillow
  (package
    (name "python-pillow")
    (version "2.6.1")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "https://pypi.python.org/packages/source/P/"
                           "Pillow/Pillow-" version ".tar.gz"))
       (sha256
        (base32
         "0iw36c73wkhz88wa78v6l43llsb080ihw8yq7adhfqxdib7l4hzr"))))
    (build-system python-build-system)
    (native-inputs
     `(("python-setuptools" ,python-setuptools)
       ("python-nose"       ,python-nose)))
    (inputs
     `(("lcms"     ,lcms)
       ("zlib"     ,zlib)
       ("libjpeg"  ,libjpeg)
       ("openjpeg" ,openjpeg)
       ("libtiff"  ,libtiff)))
    (propagated-inputs
     `(;; Used at runtime for pkg_resources
       ("python-setuptools" ,python-setuptools)))
    (arguments
     `(#:phases (alist-cons-after
                 'install 'check-installed
                 (lambda _
                   (begin
                     (setenv "HOME" (getcwd))
                     (and (zero? (system* "python" "selftest.py" "--installed"))
                          (zero? (system* "python" "test-installed.py")))))
                 (alist-delete 'check %standard-phases))))
    (home-page "https://pypi.python.org/pypi/Pillow")
    (synopsis "Fork of the Python Imaging Library")
    (description
     "The Python Imaging Library adds image processing capabilities to your
Python interpreter.  This library provides extensive file format support, an
efficient internal representation, and fairly powerful image processing
capabilities.  The core image library is designed for fast access to data
stored in a few basic pixel formats.  It should provide a solid foundation for
a general image processing tool.")
    (license (x11-style
              "http://www.pythonware.com/products/pil/license.htm"
              "The PIL Software License"))))

(define-public python2-pillow
  (package-with-python2 python-pillow))

(define-public python-pycparser
  (package
    (name "python-pycparser")
    (version "2.10")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://pypi.python.org/packages/source/p/"
                          "pycparser/pycparser-" version ".tar.gz"))
      (sha256
       (base32
        "0v5qfq03yvd1pi0dwlgfai0p3dh9bq94pydn19c4pdn0c6v9hzcm"))))
    (outputs '("out" "doc"))
    (build-system python-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("python-setuptools" ,python-setuptools)))
    (arguments
     `(#:phases 
       (alist-replace
        'check
        (lambda _
          (with-directory-excursion "tests"
            (zero? (system* "python" "all_tests.py"))))
        (alist-cons-after
         'install 'install-doc
         (lambda* (#:key outputs #:allow-other-keys)
           (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
                  (doc (string-append data "/doc/" ,name "-" ,version))
                  (examples (string-append doc "/examples")))
             (mkdir-p examples)
             (for-each (lambda (file)
                         (copy-file (string-append "." file)
                                    (string-append doc file)))
                       '("/README.rst" "/CHANGES" "/LICENSE"))
             (copy-recursively "examples" examples)))
         %standard-phases))))
    (home-page "https://github.com/eliben/pycparser")
    (synopsis "C parser in Python")
    (description
     "Pycparser is a complete parser of the C language, written in pure Python
using the PLY parsing library.  It parses C code into an AST and can serve as
a front-end for C compilers or analysis tools.")
    (license bsd-3)))

(define-public python2-pycparser
  (package-with-python2 python-pycparser))

(define-public python-cffi
  (package
    (name "python-cffi")
    (version "0.8.6")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "https://pypi.python.org/packages/source/c/"
                          "cffi/cffi-" version ".tar.gz"))
      (sha256 
       (base32 "0406j3sgndmx88idv5zxkkrwfqxmjl18pj8gf47nsg4ymzixjci5"))))
    (build-system python-build-system)
    (outputs '("out" "doc"))
    (inputs
     `(("libffi" ,libffi)))
    (propagated-inputs ; required at run-time
     `(("python-pycparser" ,python-pycparser)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("python-sphinx" ,python-sphinx)
       ("python-setuptools" ,python-setuptools)))
    (arguments
     `(#:tests? #f ; FIXME: requires pytest
       #:phases 
       (alist-cons-after
        'install 'install-doc
        (lambda* (#:key outputs #:allow-other-keys)
          (let* ((data (string-append (assoc-ref outputs "doc") "/share"))
                 (doc (string-append data "/doc/" ,name "-" ,version))
                 (html (string-append doc "/html")))
            (with-directory-excursion "doc"
              (system* "make" "html")
              (mkdir-p html)
              (copy-recursively "build/html" html))
            (copy-file "LICENSE" (string-append doc "/LICENSE"))))
        %standard-phases)))
    (home-page "http://cffi.readthedocs.org")
    (synopsis "Foreign function interface for Python")
    (description
     "Foreign Function Interface for Python calling C code.")
    (license expat)))

(define-public python2-cffi
  (package-with-python2 python-cffi))

M gnu/packages/qemu.scm => gnu/packages/qemu.scm +1 -1
@@ 33,7 33,7 @@
  #:use-module (gnu packages image)
  #:use-module (gnu packages attr)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xdisorg)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages sdl)
  #:use-module (gnu packages perl))

M gnu/packages/qt.scm => gnu/packages/qt.scm +14 -3
@@ 26,6 26,7 @@
  #:use-module (gnu packages bison)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages icu4c)
  #:use-module (gnu packages image)


@@ 36,7 37,7 @@
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages pulseaudio)
  #:use-module (gnu packages python)
  #:use-module (gnu packages gl)
  #:use-module (gnu packages ruby)
  #:use-module (gnu packages xorg))

(define-public libxkbcommon


@@ 52,10 53,20 @@
               "176ii5dn2wh74q48sd8ac37ljlvgvp5f506glr96z6ibfhj7igch"))))
    (build-system gnu-build-system)
    (inputs
     `(("libxcb" ,libxcb)))
     `(("libx11" ,libx11)
       ("libxcb" ,libxcb)
       ("xkeyboard-config" ,xkeyboard-config)))
    (native-inputs
     `(("bison" ,bison)
       ("pkg-config" ,pkg-config)))
    (arguments
     `(#:configure-flags
       (list (string-append "--with-xkb-config-root="
                            (assoc-ref %build-inputs "xkeyboard-config")
                            "/share/X11/xkb")
             (string-append "--with-x-locale-root="
                            (assoc-ref %build-inputs "libx11")
                            "/share/X11/locale"))))
    (home-page "http://xkbcommon.org/")
    (synopsis "Library to handle keyboard descriptions")
    (description "Xkbcommon is a library to handle keyboard descriptions,


@@ 85,7 96,6 @@ X11 (yet).")
    (propagated-inputs
     `(("mesa" ,mesa)))
    (inputs
     ;; FIXME: Add input ruby once available.
     `(("alsa-lib" ,alsa-lib)
       ("dbus" ,dbus)
       ("fontconfig" ,fontconfig)


@@ 102,6 112,7 @@ X11 (yet).")
       ("openssl" ,openssl)
       ("pulseaudio" ,pulseaudio)
       ("python-wrapper" ,python-wrapper)
       ("ruby" ,ruby)
       ("xcb-util" ,xcb-util)
       ("xcb-util-image" ,xcb-util-image)
       ("xcb-util-keysyms" ,xcb-util-keysyms)

D gnu/packages/scrot.scm => gnu/packages/scrot.scm +0 -68
@@ 1,68 0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages scrot)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix licenses)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages image))

(define-public scrot
  (package
    (name "scrot")
    (version "0.8")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://linuxbrit.co.uk/downloads/scrot-"
                    version ".tar.gz"))
              (sha256
               (base32
                "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
    (build-system gnu-build-system)
    (arguments
     ;; By default, man and doc are put in PREFIX/{man,doc} instead of
     ;; PREFIX/share/{man,doc}.
     '(#:configure-flags
       (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)))
    (inputs
     `(("libx11" ,libx11)
       ("giblib" ,giblib)))
    (home-page "http://linuxbrit.co.uk/software/")
    (synopsis "Command-line screen capture utility for X Window System")
    (description
     "Scrot allows to save a screenshot of a full screen, a window or a part
of the screen selected by mouse.")
    ;; This license removes a clause about X Consortium from the original
    ;; X11 license.
    (license (x11-style "file://COPYING"
                        "See 'COPYING' in the distribution."))))

A gnu/packages/socat.scm => gnu/packages/socat.scm +55 -0
@@ 0,0 1,55 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 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 (gnu packages socat)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages openssl))

;; XXX: Group with other networking tools like tcpdump in a module?
(define-public socat
  (package
    (name "socat")
    (version "1.7.2.4")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://www.dest-unreach.org/socat/download/socat-"
                    version ".tar.bz2"))
              (sha256
               (base32
                "028yjka2zr6j1i8pmfmvzqki8ajczdl1hnry1x31xbbg3j83jxsb"))))
    (build-system gnu-build-system)
    (arguments '(#:tests? #f))                    ;no 'check' phase
    (inputs `(("openssl" ,openssl)))
    (home-page "http://www.dest-unreach.org/socat/")
    (synopsis
     "Open bidirectional communication channels from the command line")
    (description
     "socat is a relay for bidirectional data transfer between two independent
data channels---files, pipes, devices, sockets, etc.  It can create
\"listening\" sockets, named pipes, and pseudo terminals.

socat can be used, for instance, as TCP port forwarder, as a shell interface
to UNIX sockets, IPv6 relay, for redirecting TCP oriented programs to a serial
line, to logically connect serial lines on different computers, or to
establish a relatively secure environment (su and chroot) for running client
or server shell scripts with network connections. ")
    (license license:gpl2)))

M gnu/packages/telephony.scm => gnu/packages/telephony.scm +6 -6
@@ 56,13 56,13 @@ reimplementation.")
(define-public ucommon
  (package
   (name "ucommon")
   (version "6.1.11")
   (version "6.2.3")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/commoncpp/" name "-"
                   version ".tar.gz"))
            (sha256 (base32
                     "0hpwxiyd7c3qnzksk6vw94cdig1v8yy6khgcaa87a7hb3zbkv4zg"))))
                     "1apk1k877knvh2k1yqspsln5wm81a4ly4w97ang1qhi21ydwgjnn"))))
   (build-system gnu-build-system)
   (synopsis "Common C++ framework for threaded applications")
   (description "GNU uCommon C++ is meant as a very light-weight C++ library


@@ 75,13 75,13 @@ support.")
(define-public ccrtp
  (package
   (name "ccrtp")
   (version "2.0.9")
   (version "2.1.1")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/ccrtp/ccrtp-"
                   version ".tar.gz"))
            (sha256 (base32
                     "1prh2niwa4lzvskk12j4ckr7dv141dfh8yjmpkbhbnv4gmpifci0"))))
                     "1p1pk2m7v75rdrh05rizpqcd5p08g3n541rw0kssyfzd805fb90d"))))
   (build-system gnu-build-system)
   (inputs `(("ucommon" ,ucommon)
             ("libgcrypt" ,libgcrypt)))


@@ 142,13 142,13 @@ multiplayer games.")
(define-public sipwitch
  (package
   (name "sipwitch")
   (version "1.9.2")
   (version "1.9.3")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://gnu/sipwitch/sipwitch-"
                   version ".tar.gz"))
            (sha256 (base32
                     "0cf0zrdfi4w9qn50ags3rvwc29km2k526f6sm6i7jb0hsrvg0k8x"))))
                     "1iyh390rmxqrks7rypl8ql7fhd3pmy2ckqnp1p0llzrx67jh2q91"))))
   (build-system gnu-build-system)
   ;; The configure.ac uses pkg-config but in a kludgy way which breaks when 
   ;; cross-compiling.  Among other issues there the program name "pkg-config"

M gnu/packages/texlive.scm => gnu/packages/texlive.scm +1 -0
@@ 38,6 38,7 @@
  #:use-module (gnu packages tcsh)
  #:use-module (gnu packages which)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xdisorg)
  #:use-module (gnu packages zip)
  #:autoload   (gnu packages texinfo) (texinfo))


A gnu/packages/tre.scm => gnu/packages/tre.scm +45 -0
@@ 0,0 1,45 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright 2014 John Darrington
;;;
;;; 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 tre)
  #:use-module (gnu packages)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix licenses))

(define-public tre
  (package
    (name "tre")
    (version "0.8.0")
    (source
      (origin
        (method url-fetch)
        (uri       
          (string-append "http://laurikari.net/tre/" name "-" version
                         ".tar.bz2"))
        (sha256
          (base32 "0n36cgqys59r2gmb7jzbqiwsy790v8nbxk82d2n2saz0rp145ild"))))

    (build-system gnu-build-system)
    (synopsis "Approximate regex matching library and agrep utility")
    (description "Superset of the POSIX regex API, enabling approximate
matching.  Also ships a version of the agrep utility which behaves similar to
grep but features ineaxct matching.")
    (home-page "http://laurikari.net/tre")
    (license bsd-2)))

D gnu/packages/unclutter.scm => gnu/packages/unclutter.scm +0 -69
@@ 1,69 0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages unclutter)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (guix licenses)
  #:use-module (gnu packages xorg))

(define-public unclutter
  (package
   (name "unclutter")
   (version "8")
   (source (origin
            (method url-fetch)
            (uri (string-append
                  "http://ftp.x.org/contrib/utilities/unclutter-"
                  version ".tar.Z"))
            (sha256
             (base32
              "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
   (build-system gnu-build-system)
   (arguments
    '(#:tests? #f  ; no check target
      #:phases (alist-delete
                'configure
                (alist-replace
                 'install
                 (lambda* (#:key inputs outputs #:allow-other-keys)
                   (let* ((out  (assoc-ref outputs "out"))
                          (bin  (string-append out "/bin"))
                          (man1 (string-append out "/share/man/man1")))
                     (mkdir-p bin)
                     (mkdir-p man1)
                     (zero?
                      (system* "make" "install" "install.man"
                               (string-append "BINDIR=" bin)
                               (string-append "MANDIR=" man1)))))
                 %standard-phases))))
   (inputs `(("libx11" ,libx11)))
   (home-page "http://ftp.x.org/contrib/utilities/")
   (synopsis "Hide idle mouse cursor")
   (description
    "Unclutter is a program which runs permanently in the background of an
X11 session.  It checks on the X11 pointer (cursor) position every few
seconds, and when it finds it has not moved (and no buttons are pressed
on the mouse, and the cursor is not in the root window) it creates a
small sub-window as a child of the window the cursor is in.  The new
window installs a cursor of size 1x1 but a mask of all 0, i.e. an
invisible cursor.  This allows you to see all the text in an xterm or
xedit, for example.  The human factors crowd would agree it should make
things less distracting.")
   (license public-domain)))

M gnu/packages/version-control.scm => gnu/packages/version-control.scm +163 -21
@@ 4,6 4,7 @@
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 22,13 23,18 @@

(define-module (gnu packages version-control)
  #:use-module ((guix licenses)
                #:select (asl2.0 gpl1+ gpl2 gpl2+ gpl3+ x11-style))
                #:select (asl2.0 bsd-2
                          gpl1+ gpl2 gpl2+ gpl3+ lgpl2.1
                          x11-style))
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system python)
  #:use-module (guix build-system trivial)
  #:use-module (guix build utils)
  #:use-module (gnu packages apr)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bison)
  #:use-module (gnu packages cook)
  #:use-module (gnu packages curl)


@@ 204,6 210,130 @@ everything from small to very large projects with speed and efficiency.")
   (license gpl2)
   (home-page "http://git-scm.com/")))

(define-public shflags
  (package
    (name "shflags")
    (version "1.0.3")
    (source (origin
              (method url-fetch)
              (uri (string-append "https://shflags.googlecode.com/files/"
                                  "shflags-" version ".tgz"))
              (sha256
               (base32
                "08laxhf1hifh3w4j0hri5ppcklaqz0mnkmbaz8j0wxih29vi8slm"))))
    (build-system trivial-build-system)
    (native-inputs `(("tar" ,tar)
                     ("gzip" ,gzip)))
    (arguments
     `(#:modules ((guix build utils))
       #:builder (begin
                   (use-modules (guix build utils))
                   (let* ((source (assoc-ref %build-inputs "source"))
                          (tar    (assoc-ref %build-inputs "tar"))
                          (gzip   (assoc-ref %build-inputs "gzip"))
                          (output (assoc-ref %outputs "out"))
                          (srcdir (string-append output "/src")))
                     (begin
                       (setenv "PATH" (string-append gzip "/bin"))
                       (system* (string-append tar "/bin/tar") "xzf"
                                source)
                       (chdir ,(string-append name "-" version))
                       (mkdir-p srcdir)
                       (copy-file "src/shflags"
                                  (string-append srcdir "/shflags"))
                       #t)))))
    (home-page "https://code.google.com/p/shflags/")
    (synopsis "Command-line flags library for shell scripts")
    (description
     "Shell Flags (shFlags) is a library written to greatly simplify the
handling of command-line flags in Bourne based Unix shell scripts (bash, dash,
ksh, sh, zsh).  Most shell scripts use getopt for flags processing, but the
different versions of getopt on various OSes make writing portable shell
scripts difficult.  shFlags instead provides an API that doesn't change across
shell and OS versions so the script writer can be confident that the script
will work.")
    (license lgpl2.1)))

(define-public git-flow
  (package
    (name "git-flow")
    ;; This version has not be officially released yet, so we build it
    ;; directly from the git repository.
    (version "0.4.2-pre")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/nvie/gitflow/")
                    (commit "15aab26")))
              (sha256
               (base32
                "01fs97q76fdfnvmrh2cyjhywcs3pykf1dg58sy0frflnsdzs6prx"))))
    (build-system gnu-build-system)
    (inputs `(("shflags" ,shflags)))
    (arguments
     '(#:tests? #f                    ; no tests
       #:make-flags (list (string-append "prefix="
                                         (assoc-ref %outputs "out")))
       #:phases (alist-cons-after
                 'unpack 'reset-shFlags-link
                 (lambda* (#:key inputs #:allow-other-keys)
                   ;; The link points to a file in the shFlags submodule.
                   ;; Redirect it to point to our system shFlags.
                   (let ((shflags (assoc-ref inputs "shflags")))
                     (begin
                       (delete-file "gitflow-shFlags")
                       (symlink (string-append shflags "/src/shflags")
                                "gitflow-shFlags"))))
                 (alist-delete
                  'configure
                  (alist-delete 'build %standard-phases)))))
    (home-page "http://nvie.com/posts/a-successful-git-branching-model/")
    (synopsis "Git extensions for Vincent Driessen's branching model")
    (description
     "Vincent Driessen's branching model is a git branching and release
management strategy that helps developers keep track of features, hotfixes,
and releases in bigger software projects.  The git-flow library of git
subcommands helps automate some parts of the flow to make working with it a
lot easier.")
    (license bsd-2)))

(define-public git-test-sequence
  (let ((commit "48e5a2f"))
    (package
      (name "git-test-sequence")
      (version (string-append "20140312." commit))
      (source (origin
                (method git-fetch)
                (uri (git-reference
                      ;; There are many other scripts in this directory; we
                      ;; are interested in just one for this package.
                      (url "https://github.com/dustin/bindir")
                      (commit commit)))
                (sha256
                 (base32
                  "1dcq0y16yznbv4k9h8gg90kv1gkn8r8dbvl4m2rpfd7q5nqhn617"))))
      (build-system trivial-build-system)
      (arguments
       `(#:modules ((guix build utils))
         #:builder (begin
                     (use-modules (guix build utils))
                     (let* ((source (assoc-ref %build-inputs "source"))
                            (output (assoc-ref %outputs "out"))
                            (bindir (string-append output "/bin"))
                            (script "git-test-sequence"))
                       (begin
                         (mkdir-p bindir)
                         (copy-file (string-append source "/" script)
                                    (string-append bindir "/" script))
                         #t)))))
      (home-page "http://dustin.sallings.org/2010/03/28/git-test-sequence.html")
      (synopsis "Run a command over a sequence of commits")
      (description
       "git-test-sequence is similar to an automated git bisect except it’s
linear.  It will test every change between two points in the DAG.  It will
also walk each side of a merge and test those changes individually.")
      (license (x11-style "file://LICENSE")))))

(define-public mercurial
  (package
    (name "mercurial")


@@ 297,33 427,45 @@ property manipulation.")
    (version "1.7.18")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://archive.apache.org/dist/subversion/subversion-"
                                 version ".tar.bz2"))
             (uri (string-append "http://archive.apache.org/dist/subversion/"
                                 "subversion-" version ".tar.bz2"))
             (sha256
              (base32
               "06nrqnn3qq1hhskkcdbm0ilk2xv6ay2gyf2c7qvxp6xncb782wzn"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (alist-cons-after
                 'install 'instal-perl-bindings
                 (lambda* (#:key outputs #:allow-other-keys)
                   ;; Follow the instructions from
                   ;; 'subversion/bindings/swig/INSTALL'.
                   (let ((out (assoc-ref outputs "out")))
                     (and (zero? (system* "make" "swig-pl-lib"))
                          ;; FIXME: Test failures.
                          ;; (zero? (system* "make" "check-swig-pl"))
                          (zero? (system* "make" "install-swig-pl-lib"))
                 'configure 'patch-libtool-wrapper-ls
                 (lambda* (#:key inputs #:allow-other-keys)
                   ;; This substitution allows tests svnauthz_tests and
                   ;; svnlook_tests to pass.  These tests execute svnauthz and
                   ;; svnlook through their libtool wrapper scripts from svn
                   ;; hooks, whose empty environments cause "ls: command not
                   ;; found" errors.  It would be nice if this fix ultimately
                   ;; made its way into libtool.
                   (let ((coreutils (assoc-ref inputs "coreutils")))
                     (substitute* "libtool"
                       (("\\\\`ls") (string-append "\\`" coreutils "/bin/ls")))))
                 (alist-cons-after
                  'install 'instal-perl-bindings
                  (lambda* (#:key outputs #:allow-other-keys)
                    ;; Follow the instructions from
                    ;; 'subversion/bindings/swig/INSTALL'.
                    (let ((out (assoc-ref outputs "out")))
                      (and (zero? (system* "make" "swig-pl-lib"))
                           ;; FIXME: Test failures.
                           ;; (zero? (system* "make" "check-swig-pl"))
                           (zero? (system* "make" "install-swig-pl-lib"))

                          ;; Set the right installation prefix.
                          (with-directory-excursion
                              "subversion/bindings/swig/perl/native"
                            (and (zero?
                                  (system* "perl" "Makefile.PL"
                                           (string-append "PREFIX=" out)))
                                 (zero?
                                  (system* "make" "install")))))))
                 %standard-phases)))
                           ;; Set the right installation prefix.
                           (with-directory-excursion
                               "subversion/bindings/swig/perl/native"
                             (and (zero?
                                   (system* "perl" "Makefile.PL"
                                            (string-append "PREFIX=" out)))
                                  (zero?
                                   (system* "make" "install")))))))
                  %standard-phases))))
    (native-inputs
      `(("pkg-config" ,pkg-config)
        ;; For the Perl bindings.

M gnu/packages/video.scm => gnu/packages/video.scm +2 -2
@@ 395,7 395,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(define-public youtube-dl
  (package
    (name "youtube-dl")
    (version "2014.09.06")
    (version "2014.11.21.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://youtube-dl.org/downloads/"


@@ 403,7 403,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
                                  version ".tar.gz"))
              (sha256
               (base32
                "1a50vqgzp9wjh2763shald6dlmdd5qlqy83vg4yrihdrlh8sk6dd"))))
                "0rxpx8j4qhhsws6czlfji1x9igsinkbbwvld10qdylll7g9q1v7j"))))
    (build-system python-build-system)
    (inputs `(("setuptools" ,python-setuptools)))
    (home-page "http://youtube-dl.org")

M gnu/packages/web.scm => gnu/packages/web.scm +65 -0
@@ 2,6 2,7 @@
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Aljosha Papsch <misc@rpapsch.de>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 19,6 20,7 @@
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages web)
  #:use-module (ice-9 match)
  #:use-module ((guix licenses) #:prefix l:)
  #:use-module (guix packages)
  #:use-module (guix download)


@@ 77,6 79,69 @@ and its related documentation.")
    (license l:asl2.0)
    (home-page "https://httpd.apache.org/")))

(define-public nginx
  (package
    (name "nginx")
    (version "1.6.2")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://nginx.org/download/nginx-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "060s77qxhkn02fjkcndsr0xppj2bppjzkj0gn84svrykb4lqqq5m"))))
    (build-system gnu-build-system)
    (inputs `(("pcre" ,pcre)
              ("openssl" ,openssl)
              ("zlib" ,zlib)))
    (arguments
     `(#:tests? #f                      ; no test target
       #:phases
       (alist-cons-before
        'configure 'patch-/bin/sh
        (lambda _
          (substitute* "auto/feature"
            (("/bin/sh") (which "bash"))))
        (alist-replace
         'configure
         (lambda* (#:key outputs #:allow-other-keys)
           (let ((flags
                  (list (string-append "--prefix=" (assoc-ref outputs "out"))
                        "--with-http_ssl_module"
                        "--with-pcre-jit"
                        "--with-ipv6"
                        "--with-debug"
                        ;; Even when not cross-building, we pass the
                        ;; --crossbuild option to avoid customizing for the
                        ;; kernel version on the build machine.
                        ,(let ((system "Linux")    ; uname -s
                               (release "2.6.32")  ; uname -r
                               ;; uname -m
                               (machine (match (or (%current-target-system)
                                                   (%current-system))
                                          ("x86_64-linux"   "x86_64")
                                          ("i686-linux"     "i686")
                                          ("mips64el-linux" "mips64"))))
                           (string-append "--crossbuild="
                                          system ":" release ":" machine)))))
             (setenv "CC" "gcc")
             (format #t "environment variable `CC' set to `gcc'~%")
             (format #t "configure flags: ~s~%" flags)
             (zero? (apply system* "./configure" flags))))
         %standard-phases))))
    (home-page "http://nginx.org")
    (synopsis "HTTP and reverse proxy server")
    (description
     "Nginx (\"engine X\") is a high-performance web and reverse proxy server
created by Igor Sysoev.  It can be used both as a standalone web server
and as a proxy to reduce the load on back-end HTTP or mail servers.")
    ;; Almost all of nginx is distributed under the bsd-2 license.
    ;; The exceptions are:
    ;;   * The 'nginx-http-push' module is covered by the expat license.
    ;;   * The 'nginx-development-kit' module is mostly covered by bsd-3,
    ;;     except for two source files which are bsd-4 licensed.
    (license (list l:bsd-2 l:expat l:bsd-3 l:bsd-4))))

(define-public json-c
  (package
    (name "json-c")

M gnu/packages/wget.scm => gnu/packages/wget.scm +2 -2
@@ 31,7 31,7 @@
(define-public wget
  (package
    (name "wget")
    (version "1.16")
    (version "1.16.1")
    (source
     (origin
      (method url-fetch)


@@ 39,7 39,7 @@
                          version ".tar.xz"))
      (sha256
       (base32
        "1rxhr3jmgbwryzl51di4avqxw9m9j1z2aak8q1npns0p184xsqcj"))))
        "0csdw41hixa4kd0m19r7p41sip1hlnkp5y62bdzq9zhmxq3wg5ib"))))
    (build-system gnu-build-system)
    (inputs
     `(("gnutls" ,gnutls)

A gnu/packages/xdisorg.scm => gnu/packages/xdisorg.scm +341 -0
@@ 0,0 1,341 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; 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 xdisorg)
  #: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 compression)
  #:use-module (gnu packages image)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages xorg))

;; packages outside the x.org system proper

(define-public xclip
  (package
    (name "xclip")
    (version "0.12")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
              "mirror://sourceforge/" name "/" name "-" version ".tar.gz"))
        (sha256
          (base32
           "0ibcf46rldnv0r424qcnai1fa5iq3lm5q5rdd7snsi5sb78gmixp"))))
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f))   ; There is no test suite
    (inputs `(("libxmu" ,libxmu)
              ("libxt" ,libxt)))
    (home-page "http://xclip.sourceforge.net/")
    (synopsis "Command line interface to X11 clipboard")
    (description "Xclip is a command line interface to the X11 clipboard.  It
can also be used for copying files, as an alternative to sftp/scp, thus
avoiding password prompts when X11 forwarding has already been setup.")
    (license license:gpl2+)))

(define-public xeyes
  (package
    (name "xeyes")
    (version "1.0.1")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://xeyes.sourcearchive.com/downloads/1.0.1/xeyes_"
               version
               ".orig.tar.gz"))
        (sha256
          (base32
            "04c3md570j67g55h3bix1qbngcslnq91skli51k3g1avki88zkm9"))))
    (build-system gnu-build-system)
    (inputs
      `(("libxext" ,libxext)
        ("libxmu" ,libxmu)
        ("libxt" ,libxt)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (home-page "http://xeyes.sourcearchive.com/")
    (synopsis "Follow-the-mouse X demo")
    (description "Xeyes is a demo program for x.org.  It shows eyes
following the mouse.")
    (license license:x11)))


(define-public pixman
  (package
    (name "pixman")
    (version "0.32.4")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://cairographics.org/releases/pixman-"
               version
               ".tar.gz"))
        (sha256
          (base32
           "113ycngcssbrps217dyajq96hm9xghsfch82h14yffla1r1fviw0"))))
    (build-system gnu-build-system)
    (inputs
      `(("libpng" ,libpng)
        ("zlib" ,zlib)))
    (native-inputs
      `(("pkg-config" ,pkg-config)))
    (home-page "http://www.pixman.org/")
    (synopsis "Low-level pixel manipulation library")
    (description "Pixman is a low-level software library for pixel
manipulation, providing features such as image compositing and trapezoid
rasterisation.")
    (license license:x11)))


(define-public libdrm
  (package
    (name "libdrm")
    (version "2.4.46")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://dri.freedesktop.org/libdrm/libdrm-"
               version
               ".tar.bz2"))
        (sha256
          (base32
            "1wah4qmrrcv0gnx65lhrlxb6gprxch92wy8lhxv6102fml6k5krk"))))
    (build-system gnu-build-system)
    (inputs
      `(("libpciaccess" ,libpciaccess)
        ("libpthread-stubs" ,libpthread-stubs)))
    (native-inputs
       `(("pkg-config" ,pkg-config)))
    (home-page "http://dri.freedesktop.org/wiki/")
    (synopsis "Direct rendering userspace library")
    (description "The Direct Rendering Infrastructure, also known as the DRI,
is a framework for allowing direct access to graphics hardware under the
X Window System in a safe and efficient manner.  It includes changes to the
X server, to several client libraries, and to the kernel (DRM, Direct
Rendering Manager).  The most important use for the DRI is to create fast
OpenGL implementations providing hardware acceleration for Mesa.
Several 3D accelerated drivers have been written to the DRI specification,
including drivers for chipsets produced by 3DFX, AMD (formerly ATI), Intel
and Matrox.")
    (license license:x11)))


;; old version, required by old mesa, see
;; http://www.mail-archive.com/nouveau@lists.freedesktop.org/msg10098.html
(define-public libdrm-2.4.33
  (package (inherit libdrm)
    (version "2.4.33")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://dri.freedesktop.org/libdrm/libdrm-"
               version
               ".tar.bz2"))
        (sha256
          (base32
            "1slgi61n4dlsfli47ql354fd1ppj7n40jd94wvnsdqx0mna9syrd"))))
    (arguments
      `(#:configure-flags
         ;; create libdrm_nouveau.so, needed by mesa, see
         ;; http://comments.gmane.org/gmane.linux.lfs.beyond.support/43261
         `("--enable-nouveau-experimental-api")))))


(define-public mtdev
  (package
    (name "mtdev")
    (version "1.1.3")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://bitmath.org/code/mtdev/mtdev-"
               version ".tar.bz2"))
        (sha256
          (base32
            "159ndzwfpw0xr8mw4lhl47w9c2krshlfrscs7k6n186vknv2hk3d"))))
    (build-system gnu-build-system)
    (home-page "http://bitmath.org/code/mtdev/")
    (synopsis "Multitouch protocol translation library")
    (description "Mtdev is a stand-alone library which transforms all
variants of kernel MT events to the slotted type B protocol.  The events
put into mtdev may be from any MT device, specifically type A without
contact tracking, type A with contact tracking, or type B with contact
tracking.")
    (license license:x11)))

(define-public startup-notification
  (package
    (name "startup-notification")
    (version "0.12")
    (source
     (origin
       (method url-fetch)
       (uri (string-append "http://www.freedesktop.org/software/" name
                           "/releases/" name "-" version ".tar.gz"))
       (sha256
        (base32
         "0jmyryrpqb35y9hd5sgxqy2z0r1snw7d3ljw0jak0n0cjdz1yf9w"))))
    (build-system gnu-build-system)
    (native-inputs `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libx11" ,libx11)
       ("xcb-util" ,xcb-util)))
    (home-page "http://www.freedesktop.org/wiki/Software/startup-notification/")
    (synopsis "Application startup notification and feedback library")
    (description
     "Startup-notification contains a reference implementation of the startup
notification protocol.  The reference implementation is mostly under an X Window
System style license, and has no special dependencies.")
    ;; Most of the code is provided under x11 license.
    (license license:lgpl2.0+)))

(define-public wmctrl
  (package
    (name "wmctrl")
    (version "1.07")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://tomas.styblo.name/wmctrl/dist/wmctrl-"
                    version ".tar.gz"))
              (sha256
               (base32
                "1afclc57b9017a73mfs9w7lbdvdipmf9q0xdk116f61gnvyix2np"))
              (patches (list (search-patch "wmctrl-64-fix.patch")))))
    (build-system gnu-build-system)
    (arguments
     '(#:configure-flags
       (list (string-append "--mandir="
                            (assoc-ref %outputs "out")
                            "/share/man"))))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (inputs
     `(("libx11" ,libx11)
       ("libxmu" ,libxmu)
       ("glib" ,glib)))
    (home-page "http://tomas.styblo.name/wmctrl/")
    (synopsis "Command-line tool to control X window managers")
    (description
     "Wmctrl allows to interact with an X window manager that is compatible
with the EWMH/NetWM specification.  It can query the window manager for
information, and request for certain window management actions (resize and
move windows, switch between desktops, etc.)")
    (license license:gpl2+)))

(define-public scrot
  (package
    (name "scrot")
    (version "0.8")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://linuxbrit.co.uk/downloads/scrot-"
                    version ".tar.gz"))
              (sha256
               (base32
                "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1"))))
    (build-system gnu-build-system)
    (arguments
     ;; By default, man and doc are put in PREFIX/{man,doc} instead of
     ;; PREFIX/share/{man,doc}.
     '(#:configure-flags
       (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)))
    (inputs
     `(("libx11" ,libx11)
       ("giblib" ,giblib)))
    (home-page "http://linuxbrit.co.uk/software/")
    (synopsis "Command-line screen capture utility for X Window System")
    (description
     "Scrot allows to save a screenshot of a full screen, a window or a part
of the screen selected by mouse.")
    ;; This license removes a clause about X Consortium from the original
    ;; X11 license.
    (license (license:x11-style "file://COPYING"
                                "See 'COPYING' in the distribution."))))

(define-public unclutter
  (package
    (name "unclutter")
    (version "8")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://ftp.x.org/contrib/utilities/unclutter-"
                    version ".tar.Z"))
              (sha256
               (base32
                "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
    (build-system gnu-build-system)
    (arguments
     '(#:tests? #f                      ; no check target
       #:phases (alist-delete
                 'configure
                 (alist-replace
                  'install
                  (lambda* (#:key inputs outputs #:allow-other-keys)
                    (let* ((out  (assoc-ref outputs "out"))
                           (bin  (string-append out "/bin"))
                           (man1 (string-append out "/share/man/man1")))
                      (mkdir-p bin)
                      (mkdir-p man1)
                      (zero?
                       (system* "make" "install" "install.man"
                                (string-append "BINDIR=" bin)
                                (string-append "MANDIR=" man1)))))
                  %standard-phases))))
    (inputs `(("libx11" ,libx11)))
    (home-page "http://ftp.x.org/contrib/utilities/")
    (synopsis "Hide idle mouse cursor")
    (description
     "Unclutter is a program which runs permanently in the background of an
X11 session.  It checks on the X11 pointer (cursor) position every few
seconds, and when it finds it has not moved (and no buttons are pressed
on the mouse, and the cursor is not in the root window) it creates a
small sub-window as a child of the window the cursor is in.  The new
window installs a cursor of size 1x1 but a mask of all 0, i.e. an
invisible cursor.  This allows you to see all the text in an xterm or
xedit, for example.  The human factors crowd would agree it should make
things less distracting.")
    (license license:public-domain)))

A gnu/packages/xfce.scm => gnu/packages/xfce.scm +478 -0
@@ 0,0 1,478 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 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 packages xfce)
  #:use-module ((guix licenses) #:hide (freetype))
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix utils)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages glib)
  #:use-module (gnu packages gtk)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages xdisorg)
  #:use-module (gnu packages web)
  #:use-module (gnu packages fontutils)
  #:use-module (gnu packages image)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages pdf)
  #:use-module (gnu packages gstreamer)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages photo)
  #:use-module (gnu packages pcre))

(define-public gtk-xfce-engine
  (package
    (name "gtk-xfce-engine")
    (version "3.0.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
                "13c3ajfqkdr6jlqjyhcp4nls0ddanypr83q9qib2ciffik78zq4h"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs `(("gtk+" ,gtk+-2)))
    (home-page "http://www.xfce.org/")
    (synopsis "GTK+ theme engine for Xfce")
    (description
     "Default GTK+ engine and themes for Xfce Desktop Environment.")
    (license gpl2+)))

(define-public libxfce4util
  (package
    (name "libxfce4util")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "13k0wwbbqvdmbj4xmk4nxdlgvrdgr5y6r3dk380mzfw053hzwy89"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (propagated-inputs `(("glib" ,glib))) ; required by libxfce4util-1.0.pc
    (home-page "http://www.xfce.org/")
    (synopsis "Basic utility library for Xfce")
    (description
     "A general-purpose utility library with core application support for the
Xfce Desktop Environment.")
    (license lgpl2.0+)))

(define-public xfconf
  (package
    (name "xfconf")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "0xh520z0qh0ib0ijgnyrgii9h5d4pc53n6mx1chhyzfc86j1jlhp"))))
    (build-system gnu-build-system)
    (arguments '(#:parallel-tests? #f)) ; parallel tests failed
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (propagated-inputs
     ;; libxfconf-0.pc refers to all these.
     `(("glib" ,glib)
       ("dbus" ,dbus)
       ("dbus-glib" ,dbus-glib)))
    (inputs
     `(("libxfce4util" ,libxfce4util)))
    (home-page "http://www.xfce.org/")
    (synopsis "Configuration storage and query system for Xfce")
    (description
     "Settings daemon for Xfce, implemented as a D-Bus-based configuration
storage system.")
    (license lgpl2.0+)))

(define-public libxfce4ui
  (package
    (name "libxfce4ui")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "1qm31s6568cz4c8rl9fsfq0xmf7pldxm0ki62gx1cpybihlgmfd2"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (propagated-inputs
     ;; libxfce4kbd-private-2.pc refers to all these.
     `(("gtk+" ,gtk+-2)
       ("libxfce4util" ,libxfce4util)
       ("xfconf" ,xfconf)))
    (inputs `(("libsm" ,libsm)
              ("libice" ,libice)
              ("startup-notification" ,startup-notification)))
    (home-page "http://www.xfce.org/")
    (synopsis "Widgets library for Xfce")
    (description
     "Libxfce4ui is the replacement of the old libxfcegui4 library.  It is used
to share commonly used Xfce widgets amoung the Xfce applications.")
    (license lgpl2.0+)))

(define-public exo
  (package
    (name "exo")
    (version "0.8.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
                "1c05pbagw14djv5zmqg34qfj40jav8sd10w2zi2wpzrad4qal8bf"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (propagated-inputs
     ;; exo-1.pc refers to all these.
     `(("gtk+" ,gtk+-2)
       ("libxfce4util" ,libxfce4util)))
    (inputs
     `(("libxfce4ui" ,libxfce4ui)
       ("perl-uri" ,perl-uri)))
    (home-page "http://www.xfce.org/")
    (synopsis "Extension library for Xfce")
    (description
     "An extension library to Xfce.  While Xfce comes with quite a few libraries
that are targeted at desktop development, libexo is targeted at application
development.")
    ;; Libraries are under LGPLv2+, and programs under GPLv2+.
    (license (list gpl2+ lgpl2.1+))))

(define-public garcon
  (package
    (name "garcon")
    (version "0.2.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
                "0v7pkvxcayi86z4f173z5l7w270f3g369sa88z59w0y0p7ns7ph2"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)
       ("glib:bin" ,glib "bin")))
    (propagated-inputs `(("glib" ,glib))) ; required by garcon-1.pc
    (inputs `(("libxfce4util" ,libxfce4util)))
    (home-page "http://www.xfce.org/")
    (synopsis "Implementation of the freedesktop.org menu specification")
    (description
     "Garcon is a freedesktop.org compliant menu implementation based on
GLib and GIO.  It was started as a complete rewrite of the former Xfce menu
library called libxfce4menu, which, in contrast to garcon, was lacking menu
merging features essential for loading menus modified with menu editors.")
    (license lgpl2.0+)))

(define-public tumbler
  (package
    (name "tumbler")
    (version "0.1.25")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
                "0ijm04vm75gmhyyzrlqdr6vzchr01hlajcm84lm6j64cim8dxm82"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)
       ("glib:bin" ,glib "bin") ; need glib-genmarshal
       ("dbus-glib" ,dbus-glib))) ; need dbus-binding-tool
    (propagated-inputs
     `(("glib" ,glib))) ; required by tumbler-1.pc
    (inputs
     `(("dbus" ,dbus)
       ("gdk-pixbuf" ,gdk-pixbuf)
       ("freetype" ,freetype)
       ("libjpeg" ,libjpeg)
       ("libgsf" ,libgsf)
       ("poppler" ,poppler)
       ("gstreamer" ,gstreamer-0.10)))
    (home-page "http://www.xfce.org/")
    (synopsis "D-Bus service for applications to request thumbnails")
    (description
     "Tumbler is a D-Bus service for applications to request thumbnails for
various URI schemes and MIME types.  It is an implementation of the thumbnail
management D-Bus specification.")
    (license gpl2+)))

(define-public xfce4-panel
  (package
    (name "xfce4-panel")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "1f8903nx6ivzircl8d8s9zna4vjgfy0qhjk5d2x19g9bmycgj89k"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (propagated-inputs
     `(("libxfce4util" ,libxfce4util))) ; required by libxfce4panel-1.0.pc
    (inputs
     `(("exo" ,exo)
       ("garcon", garcon)
       ("libwnck" ,libwnck-1)
       ("libxfce4ui" ,libxfce4ui)))
    (home-page "http://www.xfce.org/")
    (synopsis "Xfce desktop panel")
    (description
     "Desktop panel for Xfce, which contains program launchers, window buttons,
applications menu, workspace switcher and more.")
    ;; Libraries are under LGPLv2.1+, and programs under GPLv2+.
    (license (list gpl2+ lgpl2.1+))))

(define-public xfce4-appfinder
  (package
    (name "xfce4-appfinder")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "0falckrziw8m1a72nxd7fqq84r3xfbrb6lv35flsca346rzawah4"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs
     `(("garcon" ,garcon)
       ("libxfce4ui" ,libxfce4ui)))
    (home-page "http://www.xfce.org/")
    (synopsis "Xfce application finder")
    (description
     "Application finder for Xfce, it will show the applications installed on
your system in categories, so you can quickly find and launch them.")
    (license gpl2+)))

(define-public xfce4-session
  (package
    (name "xfce4-session")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "1kj65jkjhd0ysf0yxsf88wzpyv6n8i8qgd3gb502hf1x9jksk2mv"))))
    (build-system gnu-build-system)
    (arguments
     '(#:configure-flags
       (list (string-append "--with-xsession-prefix=" %output))))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs
     `(("iceauth" ,iceauth)
       ("libsm" ,libsm)
       ("libwnck" ,libwnck-1)
       ("libxfce4ui" ,libxfce4ui)))
    (home-page "http://www.xfce.org/")
    (synopsis "Xfce session manager")
    (description
     "Session manager for Xfce, it will restore your session on startup and
allows you to shutdown the computer from Xfce.")
    (license gpl2+)))

(define-public xfce4-settings
  (package
    (name "xfce4-settings")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "0zppq747z9lrxyv5zrrvpalq7hb3gfhy9p7qbldisgv7m6dz0hq8"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs
     `(("exo" ,exo)
       ("garcon" ,garcon)
       ("libnotify" ,libnotify)
       ("libxcursor", libxcursor)
       ("libxi" ,libxi)
       ("libxrandr" ,libxrandr)
       ("libxfce4ui" ,libxfce4ui)))
    (home-page "http://www.xfce.org/")
    (synopsis "Xfce settings manager")
    (description
     "Settings manager for Xfce, it can control various aspects of the desktop
like appearance, display, keyboard and mouse settings.")
    (license gpl2+)))

(define-public thunar
  (package
    (name "thunar")
    (version "1.4.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
                                  "Thunar-" version ".tar.bz2"))
              (sha256
               (base32
                "1fn8wjzkfvnx2giv3rrg2cyrr2c96f9mskgvcji0ixyfcjga249c"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs
     `(("exo" ,exo)
       ("gudev", eudev)
       ("libexif" ,libexif)
       ("libnotify" ,libnotify)
       ("libxfce4ui" ,libxfce4ui)
       ("pcre" ,pcre)
       ("xfce4-panel" ,xfce4-panel)
       ("startup-notification" ,startup-notification)))
    (home-page "http://www.xfce.org/")
    (synopsis "Xfce file manager")
    (description
     "A modern file manager for graphical desktop, aiming to be easy-to-use and
fast.")
    (license gpl2+)))

(define-public thunar-volman
  (package
    (name "thunar-volman")
    (version "0.8.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/4.10/src/"
                                  name "-" version ".tar.bz2"))
              (sha256
               (base32
                "1sxw09fwyn5sr6ipxk7r8gqjyf41c2v7vkgl0l6mhy5mcb48f27z"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs
     `(("exo" ,exo)
       ("gudev" ,eudev)
       ("libnotify" ,libnotify)
       ("libxfce4ui" ,libxfce4ui)))
    (home-page "http://www.xfce.org/")
    (synopsis "Removable media manager for Thunar")
    (description
     "Thunar-volman is an extension for the Thunar File Manager, which enables
automatic management of removable drives and media.  For example, if
thunar-volman is installed and configured properly, and you plug in your
digitcal camera, it will automatically spawn your preferred photo application
and import the new pictures from your camera.")
    (license gpl2+)))

(define-public xfwm4
  (package
    (name "xfwm4")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "170zzs7adj47srsi2cl723w9pl8k8awd7w1bpzxby7hj92zmf8s9"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs
     `(("libwnck", libwnck-1)
       ("libxfce4ui" ,libxfce4ui)
       ("libxrandr" ,libxrandr)
       ("libxcomposite" ,libxcomposite)))
    (home-page "http://www.xfce.org/")
    (synopsis "Xfce window manager")
    (description
     "Window manager for Xfce, it handles the placement of windows
on the screen.")
    (license gpl2+)))

(define-public xfdesktop
  (package
    (name "xfdesktop")
    (version "4.10.0")
    (source (origin
              (method url-fetch)
              (uri (string-append "http://archive.xfce.org/xfce/"
                                  (version-major+minor version)
                                  "/src/" name "-" version ".tar.bz2"))
              (sha256
               (base32
                "0yrddj1lgk3xn4w340y89z7x2isks72ia36pka08kk2x8gpfcyl9"))))
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("intltool" ,intltool)))
    (inputs
     `(("exo" ,exo)
       ("garcon" ,garcon)
       ("libnotify" ,libnotify)
       ("libwnck" ,libwnck-1)
       ("libxfce4ui" ,libxfce4ui)
       ("thunar" ,thunar)))
    (home-page "http://www.xfce.org/")
    (synopsis "Xfce desktop manager")
    (description
     "Desktop manager for Xfce, it sets the background color or image with
optional application menu or icons for minimized applications or launchers,
devices and folders.")
    (license gpl2+)))

M gnu/packages/xfig.scm => gnu/packages/xfig.scm +9 -1
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 118,7 119,14 @@
                  (close-pipe in)
                  (close-port out)))
              (zero? (system* "make" "install.doc"))))
          %standard-phases)))))
          (alist-cons-after
           'install 'wrap-xfig
           (lambda* (#:key outputs #:allow-other-keys)
             (let ((out (assoc-ref outputs "out")))
               (wrap-program (string-append out "/bin/xfig")
                             `("XAPPLRESDIR" suffix
                               (,(string-append out "/etc/X11/app-defaults"))))))
           %standard-phases))))))
    (home-page "http://xfig.org/")
    (synopsis "Interactive drawing tool")
    (description

M gnu/packages/xorg.scm => gnu/packages/xorg.scm +6 -141
@@ 41,148 41,11 @@
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages python)
  #:use-module (gnu packages xml)
  #:use-module (gnu packages ncurses))
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages xdisorg))



;; packages outside the x.org system proper

(define-public xeyes
  (package
    (name "xeyes")
    (version "1.0.1")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://xeyes.sourcearchive.com/downloads/1.0.1/xeyes_"
               version
               ".orig.tar.gz"))
        (sha256
          (base32
            "04c3md570j67g55h3bix1qbngcslnq91skli51k3g1avki88zkm9"))))
    (build-system gnu-build-system)
    (inputs
      `(("libxext" ,libxext)
        ("libxmu" ,libxmu)
        ("libxt" ,libxt)))
    (native-inputs
     `(("pkg-config" ,pkg-config)))
    (home-page "http://xeyes.sourcearchive.com/")
    (synopsis "Follow-the-mouse X demo")
    (description "Xeyes is a demo program for x.org.  It shows eyes
following the mouse.")
    (license license:x11)))


(define-public pixman
  (package
    (name "pixman")
    (version "0.32.4")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://cairographics.org/releases/pixman-"
               version
               ".tar.gz"))
        (sha256
          (base32
           "113ycngcssbrps217dyajq96hm9xghsfch82h14yffla1r1fviw0"))))
    (build-system gnu-build-system)
    (inputs
      `(("libpng" ,libpng)
        ("zlib" ,zlib)))
    (native-inputs
      `(("pkg-config" ,pkg-config)))
    (home-page "http://www.pixman.org/")
    (synopsis "Low-level pixel manipulation library")
    (description "Pixman is a low-level software library for pixel
manipulation, providing features such as image compositing and trapezoid
rasterisation.")
    (license license:x11)))


(define-public libdrm
  (package
    (name "libdrm")
    (version "2.4.46")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://dri.freedesktop.org/libdrm/libdrm-"
               version
               ".tar.bz2"))
        (sha256
          (base32
            "1wah4qmrrcv0gnx65lhrlxb6gprxch92wy8lhxv6102fml6k5krk"))))
    (build-system gnu-build-system)
    (inputs
      `(("libpciaccess" ,libpciaccess)
        ("libpthread-stubs" ,libpthread-stubs)))
    (native-inputs
       `(("pkg-config" ,pkg-config)))
    (home-page "http://dri.freedesktop.org/wiki/")
    (synopsis "Direct rendering userspace library")
    (description "The Direct Rendering Infrastructure, also known as the DRI,
is a framework for allowing direct access to graphics hardware under the
X Window System in a safe and efficient manner.  It includes changes to the
X server, to several client libraries, and to the kernel (DRM, Direct
Rendering Manager).  The most important use for the DRI is to create fast
OpenGL implementations providing hardware acceleration for Mesa.
Several 3D accelerated drivers have been written to the DRI specification,
including drivers for chipsets produced by 3DFX, AMD (formerly ATI), Intel
and Matrox.")
    (license license:x11)))


;; old version, required by old mesa, see
;; http://www.mail-archive.com/nouveau@lists.freedesktop.org/msg10098.html
(define-public libdrm-2.4.33
  (package (inherit libdrm)
    (version "2.4.33")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://dri.freedesktop.org/libdrm/libdrm-"
               version
               ".tar.bz2"))
        (sha256
          (base32
            "1slgi61n4dlsfli47ql354fd1ppj7n40jd94wvnsdqx0mna9syrd"))))
    (arguments
      `(#:configure-flags
         ;; create libdrm_nouveau.so, needed by mesa, see
         ;; http://comments.gmane.org/gmane.linux.lfs.beyond.support/43261
         `("--enable-nouveau-experimental-api")))))


(define-public mtdev
  (package
    (name "mtdev")
    (version "1.1.3")
    (source
      (origin
        (method url-fetch)
        (uri (string-append
               "http://bitmath.org/code/mtdev/mtdev-"
               version ".tar.bz2"))
        (sha256
          (base32
            "159ndzwfpw0xr8mw4lhl47w9c2krshlfrscs7k6n186vknv2hk3d"))))
    (build-system gnu-build-system)
    (home-page "http://bitmath.org/code/mtdev/")
    (synopsis "Multitouch protocol translation library")
    (description "Mtdev is a stand-alone library which transforms all
variants of kernel MT events to the slotted type B protocol.  The events
put into mtdev may be from any MT device, specifically type A without
contact tracking, type A with contact tracking, or type B with contact
tracking.")
    (license license:x11)))



;; packages without propagated input
;; (rationale for this separation: The packages in PROPAGATED_INPUTS need to


@@ 1297,7 1160,8 @@ autotools system.")
          (base32
            "1b8sniijb85v4my6v30ma9yqnwl4hkclci9l1hqxnipfyhl4sa9j"))))
    (build-system gnu-build-system)
    (inputs
    (propagated-inputs
     ;; xcomposite.pc refers to all these.
      `(("xproto" ,xproto)
        ("libxfixes" ,libxfixes)
        ("libx11" ,libx11)


@@ 2843,7 2707,8 @@ kernel mode setting (KMS).")
               ".tar.bz2"))
        (sha256
          (base32
            "0hgzn1r7ig94xbr9dvq0bp1nxqlfp2ki8823jca3f22a2kf8wmg7"))))
            "0hgzn1r7ig94xbr9dvq0bp1nxqlfp2ki8823jca3f22a2kf8wmg7"))
        (patches (list (search-patch "xf86-video-openchrome-includes.patch")))))
    (build-system gnu-build-system)
    (inputs `(("libx11" ,libx11)
              ("libxext" ,libxext)

A gnu/packages/yubico.scm => gnu/packages/yubico.scm +76 -0
@@ 0,0 1,76 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 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 (gnu packages yubico)
  #:use-module (gnu packages)
  #:use-module (guix licenses)
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages pkg-config)
  #:use-module (gnu packages man)
  #:use-module (gnu packages curl))

(define-public libyubikey
  (package
    (name "libyubikey")
    (version "1.12")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://developers.yubico.com/yubico-c/Releases/"
                    name "-" version ".tar.gz"))
              (sha256
               (base32
                "1f0plzmr1gwry4rfgq9q70v6qwqny009hac289ad5m6sj7vqflxr"))))
    (build-system gnu-build-system)
    (synopsis "Development kit for the YubiKey authentication device")
    (description
     "This package contains a C library and command-line tools that make up
the low-level development kit for the Yubico YubiKey authentication device.")
    (home-page "https://developers.yubico.com/yubico-c/")
    (license bsd-2)))

(define-public ykclient
  (package
    (name "ykclient")
    (version "2.13")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://developers.yubico.com/yubico-c-client/Releases/"
                    name "-" version ".tar.gz"))
              (sha256
               (base32
                "1lw1j61rfjngs8vvv9m348zl4166zg24bq0dy72r44wiz79yic4j"))))
    (build-system gnu-build-system)

    ;; There's just one test, and it requires network access to access
    ;; yubico.com, so skip it.
    (arguments '(#:tests? #f))

    (native-inputs `(("pkg-config" ,pkg-config)
                     ("help2man" ,help2man)))
    (inputs `(("curl" ,curl)))
    (synopsis "C library to validate one-time-password YubiKeys")
    (description
     "YubiKey C Client Library (libykclient) is a C library used to validate a
one-time-password (OTP) YubiKey against Yubico’s servers.  See the Yubico
website for more information about Yubico and the YubiKey.")
    (home-page "https://developers.yubico.com/yubico-c-client/")
    (license bsd-2)))

M gnu/services/ssh.scm => gnu/services/ssh.scm +7 -2
@@ 91,12 91,17 @@ When @var{initialize?} is true, automatically create the seed and host key
upon service activation if they do not exist yet.  This may take long and
require interaction.

When @var{initialize?} is false, it is up to the user to initialize the
randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to create
a key pair with the private key stored in file @var{host-key} (@pxref{lshd
basics,,, lsh, LSH Manual}).

When @var{interfaces} is empty, lshd listens for connections on all the
network interfaces; otherwise, @var{interfaces} must be a list of host names
or addresses.

@var{allow-empty-passwords?} specifies whether to accepts log-ins with empty
passwords, and @var{root-login?} specifies whether to accepts log-ins as
@var{allow-empty-passwords?} specifies whether to accept log-ins with empty
passwords, and @var{root-login?} specifies whether to accept log-ins as
root.

The other options should be self-descriptive."

M gnu/services/xorg.scm => gnu/services/xorg.scm +17 -13
@@ 96,6 96,7 @@ Section \"Files\"
  ModulePath \"" xf86-video-intel "/lib/xorg/modules/drivers\"
  ModulePath \"" xf86-video-mach64 "/lib/xorg/modules/drivers\"
  ModulePath \"" xf86-video-nv "/lib/xorg/modules/drivers\"
  ModulePath \"" xf86-video-sis "/lib/xorg/modules/drivers\"
  ModulePath \"" xf86-input-keyboard "/lib/xorg/modules/input\"
  ModulePath \"" xf86-input-mouse "/lib/xorg/modules/input\"
  ModulePath \"" xf86-input-synaptics "/lib/xorg/modules/input\"


@@ 142,28 143,31 @@ EndSection
    #~(begin
        (use-modules (ice-9 match))

        (define (exec-from-login-shell command . args)
          ;; Run COMMAND from a login shell so that it gets to see the same
          ;; environment variables that one gets when logging in on a tty, for
          ;; instance.
          (let* ((pw    (getpw (getuid)))
                 (shell (passwd:shell pw))
                 (st    (stat command #f)))
            (when (and st (not (zero? (logand (stat:mode st) #o100))))
              ;; The '--login' option is supported at least by Bash and zsh.
              (execl shell shell "--login" "-c"
                     (string-join (cons command args))))))

        ;; First, try to run ~/.xsession.
        (let* ((home     (getenv "HOME"))
               (profile  (string-append home "/.guix-profile/bin"))
               (PATH     (or (getenv "PATH") ""))
               (xsession (string-append home "/.xsession")))
          ;; Make sure the user's profile is visible.
          (setenv "PATH"
                  (string-append profile
                                 (if (string-null? PATH) "" ":")
                                 PATH))

          ;; First, try to run ~/.xsession.
          (false-if-exception (execl xsession xsession)))
          (exec-from-login-shell xsession))

        ;; Then try a pre-configured session type.
        (let ((ratpoison (string-append #$ratpoison "/bin/ratpoison"))
              (wmaker    (string-append #$windowmaker "/bin/wmaker")))
          (match (command-line)
            ((_ "ratpoison")
             (execl ratpoison ratpoison))
             (exec-from-login-shell ratpoison))
            (_
             ;; 'wmaker' does execvp(argv[0]), so we really can't mess up.
             (execl wmaker wmaker))))))
             (exec-from-login-shell wmaker))))))

  (gexp->script "xinitrc" builder))


M gnu/system.scm => gnu/system.scm +40 -21
@@ 38,6 38,7 @@
  #:use-module (gnu packages nano)
  #:use-module (gnu packages lsof)
  #:use-module (gnu packages gawk)
  #:use-module (gnu packages man)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages firmware)
  #:autoload   (gnu packages cryptsetup) (cryptsetup)


@@ 46,12 47,15 @@
  #:use-module (gnu services base)
  #:use-module (gnu system grub)
  #:use-module (gnu system shadow)
  #:use-module (gnu system locale)
  #:use-module (gnu system linux)
  #:use-module (gnu system linux-initrd)
  #:use-module (gnu system file-systems)
  #:use-module (ice-9 match)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)
  #:use-module (srfi srfi-34)
  #:use-module (srfi srfi-35)
  #:export (operating-system
            operating-system?



@@ 69,6 73,7 @@
            operating-system-packages
            operating-system-timezone
            operating-system-locale
            operating-system-locale-definitions
            operating-system-mapped-devices
            operating-system-file-systems
            operating-system-activation-script


@@ 129,7 134,9 @@

  (timezone operating-system-timezone)            ; string
  (locale   operating-system-locale               ; string
            (default "en_US.UTF-8"))
            (default "en_US.utf8"))
  (locale-definitions operating-system-locale-definitions ; list of <locale-definition>
                      (default %default-locale-definitions))

  (services operating-system-user-services        ; list of monadic services
            (default %base-services))


@@ 204,9 211,7 @@ file."
  "Return file system services for the file systems of OS that are not marked
as 'needed-for-boot'."
  (define file-systems
    (remove (lambda (fs)
              (or (file-system-needed-for-boot? fs)
                  (string=? "/" (file-system-mount-point fs))))
    (remove file-system-needed-for-boot?
            (operating-system-file-systems os)))

  (define (device-mappings fs)


@@ 329,6 334,12 @@ explicitly appear in OS."
         pciutils usbutils
         util-linux inetutils isc-dhcp wireless-tools
         net-tools                        ; XXX: remove when Inetutils suffices
         man-db

         ;; The 'sudo' command is already in %SETUID-PROGRAMS, but we also
         ;; want the other commands and the man pages (notably because
         ;; auto-completion in Emacs shell relies on man pages.)
         sudo

         ;; Get 'insmod' & co. from kmod, not module-init-tools, since udev
         ;; already depends on it anyway.


@@ 380,11 391,10 @@ This is the GNU system.  Welcome.\n")
       (nsswitch   (text-file "nsswitch.conf"
                              "hosts: files dns\n"))

       ;; TODO: Generate bashrc from packages' search-paths.
       (bashrc    (text-file* "bashrc"  "
export PS1='\\u@\\h \\w\\$ '

export LC_ALL=\"" locale "\"
       ;; Startup file for POSIX-compliant login shells, which set system-wide
       ;; environment variables.
       (profile    (text-file* "profile"  "\
export LANG=\"" locale "\"
export TZ=\"" timezone "\"
export TZDIR=\"" tzdata "/share/zoneinfo\"



@@ 393,11 403,8 @@ export LINUX_MODULE_DIRECTORY=/run/booted-system/kernel/lib/modules

export PATH=$HOME/.guix-profile/bin:/run/current-system/profile/bin
export PATH=/run/setuid-programs:/run/current-system/profile/sbin:$PATH
export CPATH=$HOME/.guix-profile/include:" profile "/include
export LIBRARY_PATH=$HOME/.guix-profile/lib:" profile "/lib
export MANPATH=$HOME/.guix-profile/share/man:/run/current-system/profile/share/man
export INFOPATH=$HOME/.guix-profile/share/info:/run/current-system/profile/share/info
alias ls='ls -p --color'
alias ll='ls -l'
"))
       (skel      (skeleton-directory skeletons)))
    (file-union "etc"


@@ 410,7 417,7 @@ alias ll='ls -l'
                  ("nsswitch.conf" ,#~#$nsswitch)
                  ("skel" ,#~#$skel)
                  ("shells" ,#~#$shells)
                  ("profile" ,#~#$bashrc)
                  ("profile" ,#~#$profile)
                  ("hosts" ,#~#$hosts-file)
                  ("localtime" ,#~(string-append #$tzdata "/share/zoneinfo/"
                                                 #$timezone))


@@ 525,8 532,10 @@ etc."
  (define %modules
    '((gnu build activation)
      (gnu build linux-boot)
      (gnu build linux-modules)
      (gnu build file-systems)
      (guix build utils)))
      (guix build utils)
      (guix elf)))

  (define (service-activations services)
    ;; Return the activation scripts for SERVICES.


@@ 638,12 647,7 @@ we're running in the final root."
(define (operating-system-initrd-file os)
  "Return a gexp denoting the initrd file of OS."
  (define boot-file-systems
    (filter (match-lambda
             (($ <file-system> device title "/")
              #t)
             (($ <file-system> device title mount-point type flags
                               options boot?)
              boot?))
    (filter file-system-needed-for-boot?
            (operating-system-file-systems os)))

  (define mapped-devices


@@ 656,6 660,19 @@ we're running in the final root."
                                           #:mapped-devices mapped-devices)))
    (return #~(string-append #$initrd "/initrd"))))

(define (operating-system-locale-directory os)
  "Return the directory containing the locales compiled for the definitions
listed in OS.  The C library expects to find it under
/run/current-system/locale."
  ;; While we're at it, check whether the locale of OS is defined.
  (unless (member (operating-system-locale os)
                  (map locale-definition-name
                       (operating-system-locale-definitions os)))
    (raise (condition
            (&message (message "system locale lacks a definition")))))

  (locale-directory (operating-system-locale-definitions os)))

(define (kernel->grub-label kernel)
  "Return a label for the GRUB menu entry that boots KERNEL."
  (string-append "GNU with "


@@ 705,6 722,7 @@ this file is the reconstruction of GRUB menu entries for old configurations."
       (boot        (operating-system-boot-script os))
       (kernel  ->  (operating-system-kernel os))
       (initrd      (operating-system-initrd-file os))
       (locale      (operating-system-locale-directory os))
       (params      (operating-system-parameters-file os)))
    (file-union "system"
                `(("boot" ,#~#$boot)


@@ 712,6 730,7 @@ this file is the reconstruction of GRUB menu entries for old configurations."
                  ("parameters" ,#~#$params)
                  ("initrd" ,initrd)
                  ("profile" ,#~#$profile)
                  ("locale" ,#~#$locale)          ;used by libc
                  ("etc" ,#~#$etc)))))

;;; system.scm ends here

M gnu/system/file-systems.scm => gnu/system/file-systems.scm +7 -1
@@ 70,13 70,19 @@
                    (default '()))
  (options          file-system-options           ; string or #f
                    (default #f))
  (needed-for-boot? file-system-needed-for-boot?  ; Boolean
  (needed-for-boot? %file-system-needed-for-boot? ; Boolean
                    (default #f))
  (check?           file-system-check?            ; Boolean
                    (default #t))
  (create-mount-point? file-system-create-mount-point? ; Boolean
                       (default #f)))

(define-inlinable (file-system-needed-for-boot? fs)
  "Return true if FS has the 'needed-for-boot?' flag set, or if it's the root
file system."
  (or (%file-system-needed-for-boot? fs)
      (string=? "/" (file-system-mount-point fs))))

(define %fuse-control-file-system
  ;; Control file system for Linux' file systems in user-space (FUSE).
  (file-system

M gnu/system/grub.scm => gnu/system/grub.scm +10 -9
@@ 170,6 170,9 @@ function load_video {
  insmod video_cirrus
}

# Set 'root' to the partition that contains /gnu/store.
search --file --set ~a/share/grub/unicode.pf2

if loadfont ~a/share/grub/unicode.pf2; then
  set gfxmode=640x480
  load_video


@@ 185,7 188,7 @@ else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi~%"
                        #$grub
                        #$grub #$grub
                        #$image
                        #$(theme-colors grub-theme-color-normal)
                        #$(theme-colors grub-theme-color-highlight))))))


@@ 209,11 212,14 @@ entries corresponding to old generations of the system."
    (match-lambda
     (($ <menu-entry> label linux arguments initrd)
      #~(format port "menuentry ~s {
  # Set 'root' to the partition that contains the kernel.
  search --file --set ~a/bzImage~%

  linux ~a/bzImage ~a
  initrd ~a
}~%"
                #$label
                #$linux (string-join (list #$@arguments))
                #$linux #$linux (string-join (list #$@arguments))
                #$initrd))))

  (mlet %store-monad ((sugar (eye-candy config #~port)))


@@ 223,14 229,9 @@ entries corresponding to old generations of the system."
            #$sugar
            (format port "
set default=~a
set timeout=~a
search.file ~a/bzImage~%"
set timeout=~a~%"
                    #$(grub-configuration-default-entry config)
                    #$(grub-configuration-timeout config)
                    #$(any (match-lambda
                            (($ <menu-entry> _ linux)
                             linux))
                           all-entries))
                    #$(grub-configuration-timeout config))
            #$@(map entry->gexp all-entries)

            #$@(if (pair? old-entries)

M gnu/system/install.scm => gnu/system/install.scm +5 -2
@@ 21,7 21,9 @@
  #:use-module (guix gexp)
  #:use-module (guix monads)
  #:use-module ((guix store) #:select (%store-prefix))
  #:use-module (gnu packages admin)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages cryptsetup)
  #:use-module (gnu packages package-management)
  #:use-module (gnu packages disk)
  #:use-module (gnu packages grub)


@@ 219,7 221,7 @@ Use Alt-F2 for documentation.
  (operating-system
    (host-name "gnu")
    (timezone "Europe/Paris")
    (locale "en_US.UTF-8")
    (locale "en_US.utf8")
    (bootloader (grub-configuration
                 (device "/dev/sda")))
    (file-systems


@@ 254,7 256,8 @@ Use Alt-F2 for documentation.
    (packages (cons* texinfo-4                 ;for the standalone Info reader
                     parted ddrescue
                     grub                  ;mostly so xrefs to its manual work
                     wireless-tools
                     cryptsetup
                     wireless-tools wpa-supplicant
                     ;; XXX: We used to have GNU fdisk here, but as of version
                     ;; 2.0.0a, that pulls Guile 1.8, which takes unreasonable
                     ;; space; furthermore util-linux's fdisk is already

M gnu/system/linux-initrd.scm => gnu/system/linux-initrd.scm +40 -23
@@ 92,7 92,9 @@ MODULES and taken from LINUX."
  (define build-exp
    #~(begin
        (use-modules (ice-9 match) (ice-9 regex)
                     (guix build utils))
                     (srfi srfi-1)
                     (guix build utils)
                     (gnu build linux-modules))

        (define (string->regexp str)
          ;; Return a regexp that matches STR exactly.


@@ 101,21 103,35 @@ MODULES and taken from LINUX."
        (define module-dir
          (string-append #$linux "/lib/modules"))

        (define (lookup module)
          (let ((name (ensure-dot-ko module)))
            (match (find-files module-dir (string->regexp name))
              ((file)
               file)
              (()
               (error "module not found" name module-dir))
              ((_ ...)
               (error "several modules by that name"
                      name module-dir)))))

        (define modules
          (let ((modules (map lookup '#$modules)))
            (append modules
                    (recursive-module-dependencies modules
                                                   #:lookup-module lookup))))

        (mkdir #$output)
        (for-each (lambda (module)
                    (match (find-files module-dir (string->regexp module))
                      ((file)
                       (format #t "copying '~a'...~%" file)
                       (copy-file file (string-append #$output "/" module)))
                      (()
                       (error "module not found" module module-dir))
                      ((_ ...)
                       (error "several modules by that name"
                              module module-dir))))
                  '#$modules)))
                    (format #t "copying '~a'...~%" module)
                    (copy-file module
                               (string-append #$output "/"
                                              (basename module))))
                  (delete-duplicates modules))))

  (gexp->derivation "linux-modules" build-exp
                    #:modules '((guix build utils))))
                    #:modules '((guix build utils)
                                (guix elf)
                                (gnu build linux-modules))))

(define (file-system->spec fs)
  "Return a list corresponding to file-system FS that can be passed to the


@@ 150,16 166,16 @@ modules can be listed in EXTRA-MODULES.  They will be added to the initrd, and
loaded at boot time in the order in which they appear."
  (define virtio-modules
    ;; Modules for Linux para-virtualized devices, for use in QEMU guests.
    '("virtio.ko" "virtio_ring.ko" "virtio_pci.ko"
      "virtio_balloon.ko" "virtio_blk.ko" "virtio_net.ko"))
    '("virtio_pci" "virtio_balloon" "virtio_blk" "virtio_net"
      "virtio_console"))

  (define cifs-modules
    ;; Modules needed to mount CIFS file systems.
    '("md4.ko" "ecb.ko" "cifs.ko"))
    '("md4" "ecb" "cifs"))

  (define virtio-9p-modules
    ;; Modules for the 9p paravirtualized file system.
    '("fscache.ko" "9pnet.ko" "9p.ko" "9pnet_virtio.ko"))
    '("9p" "9pnet_virtio"))

  (define (file-system-type-predicate type)
    (lambda (fs)


@@ 167,8 183,8 @@ loaded at boot time in the order in which they appear."

  (define linux-modules
    ;; Modules added to the initrd and loaded from the initrd.
    `("libahci.ko" "ahci.ko"                      ;for SATA controllers
      "pata_acpi.ko" "pata_atiixp.ko"             ;for ATA controllers
    `("ahci"                                   ;for SATA controllers
      "pata_acpi" "pata_atiixp"                ;for ATA controllers
      ,@(if (or virtio? qemu-networking?)
            virtio-modules
            '())


@@ 179,7 195,7 @@ loaded at boot time in the order in which they appear."
            virtio-9p-modules
            '())
      ,@(if volatile-root?
            '("fuse.ko")
            '("fuse")
            '())
      ,@extra-modules))



@@ 220,14 236,15 @@ loaded at boot time in the order in which they appear."
         (boot-system #:mounts '#$(map file-system->spec file-systems)
                      #:pre-mount (lambda ()
                                    (and #$@device-mapping-commands))
                      #:linux-modules (map (lambda (file)
                                             (string-append #$kodir "/" file))
                                           '#$linux-modules)
                      #:linux-modules '#$linux-modules
                      #:linux-module-directory '#$kodir
                      #:qemu-guest-networking? #$qemu-networking?
                      #:volatile-root? '#$volatile-root?))
     #:name "base-initrd"
     #:modules '((guix build utils)
                 (gnu build linux-boot)
                 (gnu build file-systems)))))
                 (gnu build linux-modules)
                 (gnu build file-systems)
                 (guix elf)))))

;;; linux-initrd.scm ends here

A gnu/system/locale.scm => gnu/system/locale.scm +126 -0
@@ 0,0 1,126 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 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 (gnu system locale)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (gnu packages base)
  #:use-module (gnu packages compression)
  #:use-module (srfi srfi-26)
  #:export (locale-definition
            locale-definition?
            locale-definition-name
            locale-definition-source
            locale-definition-charset

            locale-directory

            %default-locale-definitions))

;;; Commentary:
;;;
;;; Locale definitions, and compilation thereof.
;;;
;;; Code:

(define-record-type* <locale-definition> locale-definition
  make-locale-definition
  locale-definition?
  (name    locale-definition-name)                ;string--e.g., "fr_FR.utf8"
  (source  locale-definition-source)              ;string--e.g., "fr_FR"
  (charset locale-definition-charset              ;string--e.g., "UTF-8"
           (default "UTF-8")))

(define* (localedef-command locale
                            #:key (libc (canonical-package glibc)))
  "Return a gexp that runs 'localedef' from LIBC to build LOCALE."
  #~(begin
      (format #t "building locale '~a'...~%"
              #$(locale-definition-name locale))
      (zero? (system* (string-append #$libc "/bin/localedef")
                      "--no-archive" "--prefix" #$output
                      "-i" #$(locale-definition-source locale)
                      "-f" #$(locale-definition-charset locale)
                      (string-append #$output "/"
                                     #$(locale-definition-name locale))))))

(define* (locale-directory locales
                           #:key (libc (canonical-package glibc)))
  "Return a directory containing all of LOCALES compiled."
  (define build
    #~(begin
        (mkdir #$output)

        ;; 'localedef' executes 'gzip' to access compressed locale sources.
        (setenv "PATH" (string-append #$gzip "/bin"))

        (exit
         (and #$@(map (cut localedef-command <> #:libc libc)
                      locales)))))

  (gexp->derivation "locale" build
                    #:local-build? #t))

(define %default-locale-definitions
  ;; Arbitrary set of locales that are built by default.  They are here mostly
  ;; to facilitate first-time use to some people, while others may have to add
  ;; a specific <locale-definition>.
  (letrec-syntax ((utf8-locale (syntax-rules ()
                                 ((_ name*)
                                  (locale-definition
                                   (name (string-append name* ".utf8"))
                                   (source name*)
                                   (charset "UTF-8")))))
                  (utf8-locales (syntax-rules ()
                                  ((_ name ...)
                                   (list (utf8-locale name) ...)))))
    (utf8-locales "ca_ES"
                  "cs_CZ"
                  "da_DK"
                  "de_DE"
                  "el_GR"
                  "en_AU"
                  "en_CA"
                  "en_GB"
                  "en_US"
                  "es_AR"
                  "es_CL"
                  "es_ES"
                  "es_MX"
                  "fi_FI"
                  "fr_BE"
                  "fr_CA"
                  "fr_CH"
                  "fr_FR"
                  "ga_IE"
                  "it_IT"
                  "ja_JP"
                  "ko_KR"
                  "nb_NO"
                  "nl_NL"
                  "pl_PL"
                  "pt_PT"
                  "ro_RO"
                  "ru_RU"
                  "sv_SE"
                  "tr_TR"
                  "uk_UA"
                  "vi_VN"
                  "zh_CN")))

;;; locale.scm ends here

M gnu/system/shadow.scm => gnu/system/shadow.scm +13 -4
@@ 115,9 115,16 @@
        (copy-file (car (find-files #$guile-wm "wm-init-sample.scm"))
                   #$output)))

  (mlet %store-monad ((bashrc (text-file "bashrc" "\
# Allow non-login shells such as an xterm to get things right.
test -f /etc/profile && source /etc/profile\n"))
  (mlet %store-monad ((profile (text-file "bash_profile" "\
# Honor per-interactive-shell startup file
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi\n"))
                      (bashrc (text-file "bashrc" "\
PS1='\\u@\\h \\w\\$ '
alias ls='ls -p --color'
alias ll='ls -l'\n"))
                      (zlogin (text-file "zlogin" "\
# Honor system-wide environment variables
source /etc/profile\n"))
                      (guile-wm (gexp->derivation "guile-wm" copy-guile-wm
                                                  #:modules
                                                  '((guix build utils))))


@@ 127,7 134,9 @@ XTerm*metaSendsEscape: true\n"))
                      (gdbinit   (text-file "gdbinit" "\
# Tell GDB where to look for separate debugging files.
set debug-file-directory ~/.guix-profile/lib/debug\n")))
    (return `((".bashrc" ,bashrc)
    (return `((".bash_profile" ,profile)
              (".bashrc" ,bashrc)
              (".zlogin" ,zlogin)
              (".Xdefaults" ,xdefaults)
              (".guile-wm" ,guile-wm)
              (".gdbinit" ,gdbinit)))))

M gnu/system/vm.scm => gnu/system/vm.scm +3 -1
@@ 104,7 104,9 @@
                                              '((gnu build vm)
                                                (gnu build install)
                                                (gnu build linux-boot)
                                                (gnu build linux-modules)
                                                (gnu build file-systems)
                                                (guix elf)
                                                (guix build utils)
                                                (guix build store-copy)))
                                             (guile-for-build


@@ 470,7 472,7 @@ with '-virtfs' options for the host file systems listed in SHARED-FS."
     " -enable-kvm -no-reboot -net nic,model=virtio \
  " #$@(map virtfs-option shared-fs) " \
  -net user \
  -serial stdio \
  -serial stdio -vga std \
  -drive file=" #$image
  ",if=virtio,cache=writeback,werror=report,readonly \
  -m 256"))

M guix/build-system/glib-or-gtk.scm => guix/build-system/glib-or-gtk.scm +3 -0
@@ 122,6 122,7 @@
                                                  "bin" "sbin"))
                            (phases '(@ (guix build glib-or-gtk-build-system)
                                        %standard-phases))
                            (glib-or-gtk-wrap-excluded-outputs ''())
                            (system (%current-system))
                            (imported-modules %default-imported-modules)
                            (modules %default-modules)


@@ 153,6 154,8 @@
                          #:search-paths ',(map search-path-specification->sexp
                                                search-paths)
                          #:phases ,phases
                          #:glib-or-gtk-wrap-excluded-outputs
                           ,glib-or-gtk-wrap-excluded-outputs
                          #:configure-flags ,configure-flags
                          #:make-flags ,make-flags
                          #:out-of-source? ,out-of-source?

M guix/build-system/python.scm => guix/build-system/python.scm +2 -0
@@ 86,6 86,8 @@ prepended to the name."
              arguments)))
      (inputs
        (map rewrite (package-inputs p)))
      (propagated-inputs
        (map rewrite (package-propagated-inputs p)))
      (native-inputs
        (map rewrite (package-native-inputs p))))))


M guix/build/emacs-utils.scm => guix/build/emacs-utils.scm +10 -0
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 20,6 21,7 @@
  #:export (%emacs
            emacs-batch-eval
            emacs-batch-edit-file
            emacs-generate-autoloads
            emacs-substitute-sexps
            emacs-substitute-variables))



@@ 47,6 49,14 @@
                          (format #f "--eval=~S" expr)))
    (error "emacs-batch-edit-file failed!" file expr)))

(define (emacs-generate-autoloads name directory)
  "Generate autoloads for Emacs package NAME placed in DIRECTORY."
  (let* ((file (string-append directory "/" name "-autoloads.el"))
         (expr `(let ((backup-inhibited t)
                      (generated-autoload-file ,file))
                  (update-directory-autoloads ,directory))))
    (emacs-batch-eval expr)))

(define-syntax emacs-substitute-sexps
  (syntax-rules ()
    "Substitute the S-expression immediately following the first occurrence of

M guix/build/glib-or-gtk-build-system.scm => guix/build/glib-or-gtk-build-system.scm +60 -39
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 22,6 23,7 @@
  #:use-module (ice-9 match)
  #:use-module (ice-9 regex)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-26)
  #:export (%standard-phases
            glib-or-gtk-build))



@@ 36,14 38,14 @@

(define (directory-included? directory directories-list)
  "Is DIRECTORY included in DIRECTORIES-LIST?"
  (fold (lambda (s p) (or (string-ci=? s directory) p)) 
  (fold (lambda (s p) (or (string-ci=? s directory) p))
        #f directories-list))

(define (gtk-module-directories inputs)
  "Check for the existence of \"libdir/gtk-v.0\" in INPUTS.  Return a list
with all found directories."
  (let* ((version 
          (if (string-match "gtk\\+-3" 
  (let* ((version
          (if (string-match "gtk\\+-3"
                            (or (assoc-ref inputs "gtk+")
                                (assoc-ref inputs "source")
                                "gtk+-3")) ; we default to version 3


@@ 54,7 56,7 @@ with all found directories."
            (let* ((in (match input
                         ((_ . dir) dir)
                         (_ "")))
                   (libdir 
                   (libdir
                    (string-append in "/lib/gtk-" version)))
              (if (and (directory-exists? libdir)
                       (not (directory-included? libdir prev)))


@@ 77,49 79,68 @@ a list with all found directories."

  (fold glib-schemas '() inputs))

(define* (wrap-all-programs #:key inputs outputs #:allow-other-keys)
(define* (wrap-all-programs #:key inputs outputs
                            (glib-or-gtk-wrap-excluded-outputs '())
                            #:allow-other-keys)
  "Implement phase \"glib-or-gtk-wrap\": look for GSettings schemas and
gtk+-v.0 libraries and create wrappers with suitably set environment variables
if found."
  (let* ((out (assoc-ref outputs "out"))
         (bindir (string-append out "/bin"))
         (bin-list (find-files bindir ".*"))
         (schemas (schemas-directories (acons "out" out inputs)))
         (schemas-env-var 
          (if (not (null? schemas))
              `("XDG_DATA_DIRS" ":" prefix ,schemas)
              #f))
         (gtk-mod-dirs (gtk-module-directories (acons "out" out inputs)))
         (gtk-mod-env-var 
          (if (not (null? gtk-mod-dirs))
              `("GTK_PATH" ":" prefix ,gtk-mod-dirs)
              #f)))
    (cond
     ((and schemas-env-var gtk-mod-env-var)
      (map (lambda (prog) 
             (wrap-program prog schemas-env-var gtk-mod-env-var))
           bin-list))
     (schemas-env-var
      (map (lambda (prog) (wrap-program prog schemas-env-var)) bin-list))
     (gtk-mod-env-var
      (map (lambda (prog) (wrap-program prog gtk-mod-env-var)) bin-list)))))
if found.

(define* (compile-glib-schemas #:key inputs outputs #:allow-other-keys)
Wrapping is not applied to outputs whose name is listed in
GLIB-OR-GTK-WRAP-EXCLUDED-OUTPUTS.  This is useful when an output is known not
to contain any GLib or GTK+ binaries, and where wrapping would gratuitously
add a dependency of that output on GLib and GTK+."
  (define handle-output
    (match-lambda
     ((output . directory)
      (unless (member output glib-or-gtk-wrap-excluded-outputs)
        (let* ((bindir       (string-append directory "/bin"))
               (bin-list     (find-files bindir ".*"))
               (schemas      (schemas-directories
                              (alist-cons output directory inputs)))
               (gtk-mod-dirs (gtk-module-directories
                              (alist-cons output directory inputs)))
               (schemas-env-var
                (if (not (null? schemas))
                    `("XDG_DATA_DIRS" ":" prefix ,schemas)
                    #f))
               (gtk-mod-env-var
                (if (not (null? gtk-mod-dirs))
                    `("GTK_PATH" ":" prefix ,gtk-mod-dirs)
                    #f)))
          (cond
           ((and schemas-env-var gtk-mod-env-var)
            (for-each (cut wrap-program <> schemas-env-var gtk-mod-env-var)
                      bin-list))
           (schemas-env-var
            (for-each (cut wrap-program <> schemas-env-var)
                      bin-list))
           (gtk-mod-env-var
            (for-each (cut wrap-program <> gtk-mod-env-var)
                      bin-list))))))))

  (for-each handle-output outputs)
  #t)

(define* (compile-glib-schemas #:key outputs #:allow-other-keys)
  "Implement phase \"glib-or-gtk-compile-schemas\": compile \"glib\" schemas
if needed."
  (let* ((out (assoc-ref outputs "out"))
         (schemasdir (string-append out "/share/glib-2.0/schemas")))
    (if (and (directory-exists? schemasdir)
             (not (file-exists? 
                   (string-append schemasdir "/gschemas.compiled"))))
        (system* "glib-compile-schemas" schemasdir)
        #t)))
  (every (match-lambda
          ((output . directory)
           (let ((schemasdir (string-append directory
                                            "/share/glib-2.0/schemas")))
             (if (and (directory-exists? schemasdir)
                      (not (file-exists?
                            (string-append schemasdir "/gschemas.compiled"))))
                 (zero? (system* "glib-compile-schemas" schemasdir))
                 #t))))
         outputs))

(define %standard-phases
  (alist-cons-after
   'install 'glib-or-gtk-wrap wrap-all-programs 
   (alist-cons-after 
    'install 'glib-or-gtk-compile-schemas compile-glib-schemas 
   'install 'glib-or-gtk-wrap wrap-all-programs
   (alist-cons-after
    'install 'glib-or-gtk-compile-schemas compile-glib-schemas
    gnu:%standard-phases)))

(define* (glib-or-gtk-build #:key inputs (phases %standard-phases)

M guix/derivations.scm => guix/derivations.scm +1 -0
@@ 37,6 37,7 @@
            derivation-inputs
            derivation-sources
            derivation-system
            derivation-builder
            derivation-builder-arguments
            derivation-builder-environment-vars
            derivation-file-name

M guix/download.scm => guix/download.scm +16 -8
@@ 61,15 61,23 @@
       ,@(map (cut string-append <> "/gcc") gnu-mirrors))
      (gnupg
       "ftp://gd.tuwien.ac.at/privacy/gnupg/"
       "ftp://gnupg.x-zone.org/pub/gnupg/"
       "ftp://ftp.gnupg.cz/pub/gcrypt/"
       "ftp://sunsite.dk/pub/security/gcrypt/"
       "http://gnupg.wildyou.net/"
       "http://ftp.gnupg.zone-h.org/"
       "ftp://ftp.jyu.fi/pub/crypt/gcrypt/"
       "ftp://trumpetti.atm.tut.fi/gcrypt/"
       "ftp://mirrors.dotsrc.org/gcrypt/"
       "ftp://mirror.cict.fr/gnupg/"
       "ftp://ftp.strasbourg.linuxfr.org/pub/gnupg/")
       "http://artfiles.org/gnupg.org"
       "ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/"
       "ftp://ftp.freenet.de/pub/ftp.gnupg.org/gcrypt/"
       "http://www.crysys.hu/"
       "ftp://ftp.hi.is/pub/mirrors/gnupg/"
       "ftp://ftp.heanet.ie/mirrors/ftp.gnupg.org/gcrypt/"
       "ftp://ftp.bit.nl/mirror/gnupg/"
       "ftp://ftp.surfnet.nl/pub/security/gnupg/"
       "ftp://ftp.iasi.roedu.net/pub/mirrors/ftp.gnupg.org/"
       "ftp://ftp.sunet.se/pub/security/gnupg/"
       "ftp://mirror.switch.ch/mirror/gnupg/"
       "ftp://mirror.tje.me.uk/pub/mirrors/ftp.gnupg.org/"
       "ftp://ftp.mirrorservice.org/sites/ftp.gnupg.org/gcrypt/"
       "ftp://ftp.ring.gr.jp/pub/net/gnupg/"
       "ftp://ftp.gnupg.org/gcrypt/")
      (gnome
       "http://ftp.belnet.be/ftp.gnome.org/"
       "http://ftp.linux.org.uk/mirrors/ftp.gnome.org/"

A guix/elf.scm => guix/elf.scm +1045 -0
@@ 0,0 1,1045 @@
;;; Guile ELF reader and writer

;; Copyright (C)  2011, 2012, 2013, 2014 Free Software Foundation, Inc.

;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
;;;; License as published by the Free Software Foundation; either
;;;; version 3 of the License, or (at your option) any later version.
;;;;
;;;; This library 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
;;;; Lesser General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU Lesser General Public
;;;; License along with this library; if not, write to the Free Software
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

;;; Commentary:
;;;
;;; This file was taken from the Guile 2.1 branch, where it is known as
;;; (system vm elf), and renamed to (guix elf).  It will be unneeded when Guix
;;; switches to Guile 2.1/2.2.
;;;
;;; A module to read and write Executable and Linking Format (ELF)
;;; files.
;;;
;;; This module exports a number of record types that represent the
;;; various parts that make up ELF files.  Fundamentally this is the
;;; main header, the segment headers (program headers), and the section
;;; headers.  It also exports bindings for symbolic constants and
;;; utilities to parse and write special kinds of ELF sections.
;;;
;;; See elf(5) for more information on ELF.
;;;
;;; Code:

(define-module (guix elf)
  #:use-module (rnrs bytevectors)
  #:use-module (system foreign)
  #:use-module (system base target)
  #:use-module (srfi srfi-9)
  #:use-module (ice-9 receive)
  #:use-module (ice-9 vlist)
  #:export (has-elf-header?

            (make-elf* . make-elf)
            elf?
            elf-bytes elf-word-size elf-byte-order
            elf-abi elf-type elf-machine-type
            elf-entry elf-phoff elf-shoff elf-flags elf-ehsize
            elf-phentsize elf-phnum elf-shentsize elf-shnum elf-shstrndx

            ELFOSABI_NONE ELFOSABI_HPUX ELFOSABI_NETBSD ELFOSABI_GNU
            ELFOSABI_SOLARIS ELFOSABI_AIX ELFOSABI_IRIX ELFOSABI_FREEBSD
            ELFOSABI_TRU64 ELFOSABI_MODESTO ELFOSABI_OPENBSD
            ELFOSABI_ARM_AEABI ELFOSABI_ARM ELFOSABI_STANDALONE

            ET_NONE ET_REL ET_EXEC ET_DYN ET_CORE

            EM_NONE EM_SPARC EM_386 EM_MIPS EM_PPC EM_PPC64 EM_ARM EM_SH
            EM_SPARCV9 EM_IA_64 EM_X86_64

            elf-header-len elf-header-shoff-offset
            write-elf-header

            (make-elf-segment* . make-elf-segment)
            elf-segment?
            elf-segment-index
            elf-segment-type elf-segment-offset elf-segment-vaddr
            elf-segment-paddr elf-segment-filesz elf-segment-memsz
            elf-segment-flags elf-segment-align

            elf-program-header-len write-elf-program-header

            PT_NULL PT_LOAD PT_DYNAMIC PT_INTERP PT_NOTE PT_SHLIB
            PT_PHDR PT_TLS PT_NUM PT_LOOS PT_GNU_EH_FRAME PT_GNU_STACK
            PT_GNU_RELRO

            PF_R PF_W PF_X

            (make-elf-section* . make-elf-section)
            elf-section?
            elf-section-index
            elf-section-name elf-section-type elf-section-flags
            elf-section-addr elf-section-offset elf-section-size
            elf-section-link elf-section-info elf-section-addralign
            elf-section-entsize

            elf-section-header-len elf-section-header-addr-offset
            elf-section-header-offset-offset
            write-elf-section-header

            (make-elf-symbol* . make-elf-symbol)
            elf-symbol?
            elf-symbol-name elf-symbol-value elf-symbol-size
            elf-symbol-info elf-symbol-other elf-symbol-shndx
            elf-symbol-binding elf-symbol-type elf-symbol-visibility

            elf-symbol-len elf-symbol-value-offset write-elf-symbol

            SHN_UNDEF

            SHT_NULL SHT_PROGBITS SHT_SYMTAB SHT_STRTAB SHT_RELA
            SHT_HASH SHT_DYNAMIC SHT_NOTE SHT_NOBITS SHT_REL SHT_SHLIB
            SHT_DYNSYM SHT_INIT_ARRAY SHT_FINI_ARRAY SHT_PREINIT_ARRAY
            SHT_GROUP SHT_SYMTAB_SHNDX SHT_NUM SHT_LOOS SHT_HIOS
            SHT_LOPROC SHT_HIPROC SHT_LOUSER SHT_HIUSER

            SHF_WRITE SHF_ALLOC SHF_EXECINSTR SHF_MERGE SHF_STRINGS
            SHF_INFO_LINK SHF_LINK_ORDER SHF_OS_NONCONFORMING SHF_GROUP
            SHF_TLS

            DT_NULL DT_NEEDED DT_PLTRELSZ DT_PLTGOT DT_HASH DT_STRTAB
            DT_SYMTAB DT_RELA DT_RELASZ DT_RELAENT DT_STRSZ DT_SYMENT
            DT_INIT DT_FINI DT_SONAME DT_RPATH DT_SYMBOLIC DT_REL
            DT_RELSZ DT_RELENT DT_PLTREL DT_DEBUG DT_TEXTREL DT_JMPREL
            DT_BIND_NOW DT_INIT_ARRAY DT_FINI_ARRAY DT_INIT_ARRAYSZ
            DT_FINI_ARRAYSZ DT_RUNPATH DT_FLAGS DT_ENCODING
            DT_PREINIT_ARRAY DT_PREINIT_ARRAYSZ DT_NUM DT_LOGUILE
            DT_GUILE_GC_ROOT DT_GUILE_GC_ROOT_SZ DT_GUILE_ENTRY
            DT_GUILE_VM_VERSION DT_GUILE_FRAME_MAPS DT_HIGUILE
            DT_LOOS DT_HIOS DT_LOPROC DT_HIPROC

            string-table-ref

            STB_LOCAL STB_GLOBAL STB_WEAK STB_NUM STB_LOOS STB_GNU
            STB_HIOS STB_LOPROC STB_HIPROC

            STT_NOTYPE STT_OBJECT STT_FUNC STT_SECTION STT_FILE
            STT_COMMON STT_TLS STT_NUM STT_LOOS STT_GNU STT_HIOS
            STT_LOPROC STT_HIPROC

            STV_DEFAULT STV_INTERNAL STV_HIDDEN STV_PROTECTED

            NT_GNU_ABI_TAG NT_GNU_HWCAP NT_GNU_BUILD_ID NT_GNU_GOLD_VERSION

            parse-elf
            elf-segment elf-segments
            elf-section elf-sections elf-section-by-name elf-sections-by-name
            elf-symbol-table-len elf-symbol-table-ref

            parse-elf-note
            elf-note-name elf-note-desc elf-note-type))

;; #define EI_NIDENT 16

;; typedef struct {
;;     unsigned char e_ident[EI_NIDENT];
;;     uint16_t      e_type;
;;     uint16_t      e_machine;
;;     uint32_t      e_version;
;;     ElfN_Addr     e_entry;
;;     ElfN_Off      e_phoff;
;;     ElfN_Off      e_shoff;
;;     uint32_t      e_flags;
;;     uint16_t      e_ehsize;
;;     uint16_t      e_phentsize;
;;     uint16_t      e_phnum;
;;     uint16_t      e_shentsize;
;;     uint16_t      e_shnum;
;;     uint16_t      e_shstrndx;
;; } ElfN_Ehdr;

(define elf32-header-len 52)
(define elf64-header-len 64)
(define (elf-header-len word-size)
  (case word-size
    ((4) elf32-header-len)
    ((8) elf64-header-len)
    (else (error "invalid word size" word-size))))
(define (elf-header-shoff-offset word-size)
  (case word-size
    ((4) 32)
    ((8) 40)
    (else (error "bad word size" word-size))))

(define ELFCLASS32      1)              ; 32-bit objects
(define ELFCLASS64      2)              ; 64-bit objects

(define ELFDATA2LSB     1)              ; 2's complement, little endian
(define ELFDATA2MSB     2)              ; 2's complement, big endian

(define EV_CURRENT      1)              ; Current version

(define ELFOSABI_NONE		0)	; UNIX System V ABI */
(define ELFOSABI_HPUX		1)	; HP-UX
(define ELFOSABI_NETBSD		2)	; NetBSD.
(define ELFOSABI_GNU		3)	; Object uses GNU ELF extensions.
(define ELFOSABI_SOLARIS	6)	; Sun Solaris.
(define ELFOSABI_AIX		7)	; IBM AIX.
(define ELFOSABI_IRIX		8)	; SGI Irix.
(define ELFOSABI_FREEBSD	9)	; FreeBSD.
(define ELFOSABI_TRU64		10)	; Compaq TRU64 UNIX.
(define ELFOSABI_MODESTO	11)	; Novell Modesto.
(define ELFOSABI_OPENBSD	12)	; OpenBSD.
(define ELFOSABI_ARM_AEABI	64)	; ARM EABI
(define ELFOSABI_ARM		97)	; ARM
(define ELFOSABI_STANDALONE     255)    ; Standalone (embedded) application

(define ET_NONE		0)		; No file type
(define ET_REL		1)		; Relocatable file
(define ET_EXEC		2)		; Executable file
(define ET_DYN		3)		; Shared object file
(define ET_CORE		4)		; Core file

;;
;; Machine types
;;
;; Just a sampling of these values.  We could include more, but the
;; important thing is to recognize architectures for which we have a
;; native compiler.  Recognizing more common machine types is icing on
;; the cake.
;; 
(define EM_NONE          0)             ; No machine
(define EM_SPARC         2)             ; SUN SPARC
(define EM_386           3)             ; Intel 80386
(define EM_MIPS          8)             ; MIPS R3000 big-endian
(define EM_PPC          20)             ; PowerPC
(define EM_PPC64        21)             ; PowerPC 64-bit
(define EM_ARM          40)             ; ARM
(define EM_SH           42)             ; Hitachi SH
(define EM_SPARCV9      43)             ; SPARC v9 64-bit
(define EM_IA_64        50)             ; Intel Merced
(define EM_X86_64       62)             ; AMD x86-64 architecture

(define cpu-mapping (make-hash-table))
(for-each (lambda (pair)
            (hashq-set! cpu-mapping (car pair) (cdr pair)))
          `((none . ,EM_NONE)
            (sparc . ,EM_SPARC) ; FIXME: map 64-bit to SPARCV9 ?
            (i386 . ,EM_386)
            (mips . ,EM_MIPS)
            (ppc . ,EM_PPC)
            (ppc64 . ,EM_PPC64)
            (arm . ,EM_ARM) ; FIXME: there are more arm cpu variants
            (sh . ,EM_SH) ; FIXME: there are more sh cpu variants
            (ia64 . ,EM_IA_64)
            (x86_64 . ,EM_X86_64)))

(define SHN_UNDEF 0)

(define host-machine-type
  (hashq-ref cpu-mapping
             (string->symbol (car (string-split %host-type #\-)))
             EM_NONE))

(define host-word-size
  (sizeof '*))

(define host-byte-order
  (native-endianness))

(define (has-elf-header? bv)
  (and
   ;; e_ident
   (>= (bytevector-length bv) 16)
   (= (bytevector-u8-ref bv 0) #x7f)
   (= (bytevector-u8-ref bv 1) (char->integer #\E))
   (= (bytevector-u8-ref bv 2) (char->integer #\L))
   (= (bytevector-u8-ref bv 3) (char->integer #\F))
   (cond
    ((= (bytevector-u8-ref bv 4) ELFCLASS32)
     (>= (bytevector-length bv) elf32-header-len))
    ((= (bytevector-u8-ref bv 4) ELFCLASS64)
     (>= (bytevector-length bv) elf64-header-len))
    (else #f))
   (or (= (bytevector-u8-ref bv 5) ELFDATA2LSB)
       (= (bytevector-u8-ref bv 5) ELFDATA2MSB))
   (= (bytevector-u8-ref bv 6) EV_CURRENT)
   ;; Look at ABI later.
   (= (bytevector-u8-ref bv 8) 0)       ; ABI version
   ;; The rest of the e_ident is padding.

   ;; e_version
   (let ((byte-order (if (= (bytevector-u8-ref bv 5) ELFDATA2LSB)
                         (endianness little)
                         (endianness big))))
     (= (bytevector-u32-ref bv 20 byte-order) EV_CURRENT))))

(define-record-type <elf>
  (make-elf bytes word-size byte-order abi type machine-type
            entry phoff shoff flags ehsize
            phentsize phnum shentsize shnum shstrndx)
  elf?
  (bytes elf-bytes)
  (word-size elf-word-size)
  (byte-order elf-byte-order)
  (abi elf-abi)
  (type elf-type)
  (machine-type elf-machine-type)
  (entry elf-entry)
  (phoff elf-phoff)
  (shoff elf-shoff)
  (flags elf-flags)
  (ehsize elf-ehsize)
  (phentsize elf-phentsize)
  (phnum elf-phnum)
  (shentsize elf-shentsize)
  (shnum elf-shnum)
  (shstrndx elf-shstrndx))

(define* (make-elf* #:key (bytes #f)
                    (byte-order (target-endianness))
                    (word-size (target-word-size))
                    (abi ELFOSABI_STANDALONE)
                    (type ET_DYN)
                    (machine-type EM_NONE)
                    (entry 0)
                    (phoff (elf-header-len word-size))
                    (shoff -1)
                    (flags 0)
                    (ehsize (elf-header-len word-size))
                    (phentsize (elf-program-header-len word-size))
                    (phnum 0)
                    (shentsize (elf-section-header-len word-size))
                    (shnum 0)
                    (shstrndx SHN_UNDEF))
  (make-elf bytes word-size byte-order abi type machine-type
            entry phoff shoff flags ehsize
            phentsize phnum shentsize shnum shstrndx))

(define (parse-elf32 bv byte-order)
  (make-elf bv 4 byte-order
            (bytevector-u8-ref bv 7)
            (bytevector-u16-ref bv 16 byte-order)
            (bytevector-u16-ref bv 18 byte-order)
            (bytevector-u32-ref bv 24 byte-order)
            (bytevector-u32-ref bv 28 byte-order)
            (bytevector-u32-ref bv 32 byte-order)
            (bytevector-u32-ref bv 36 byte-order)
            (bytevector-u16-ref bv 40 byte-order)
            (bytevector-u16-ref bv 42 byte-order)
            (bytevector-u16-ref bv 44 byte-order)
            (bytevector-u16-ref bv 46 byte-order)
            (bytevector-u16-ref bv 48 byte-order)
            (bytevector-u16-ref bv 50 byte-order)))

(define (write-elf-ident bv class data abi)
  (bytevector-u8-set! bv 0 #x7f)
  (bytevector-u8-set! bv 1 (char->integer #\E))
  (bytevector-u8-set! bv 2 (char->integer #\L))
  (bytevector-u8-set! bv 3 (char->integer #\F))
  (bytevector-u8-set! bv 4 class)
  (bytevector-u8-set! bv 5 data)
  (bytevector-u8-set! bv 6 EV_CURRENT)
  (bytevector-u8-set! bv 7 abi)
  (bytevector-u8-set! bv 8 0) ; ABI version
  (bytevector-u8-set! bv 9 0) ; Pad to 16 bytes.
  (bytevector-u8-set! bv 10 0)
  (bytevector-u8-set! bv 11 0)
  (bytevector-u8-set! bv 12 0)
  (bytevector-u8-set! bv 13 0)
  (bytevector-u8-set! bv 14 0)
  (bytevector-u8-set! bv 15 0))

(define (write-elf32-header bv elf)
  (let ((byte-order (elf-byte-order elf)))
    (write-elf-ident bv ELFCLASS32
                     (case byte-order
                       ((little) ELFDATA2LSB)
                       ((big) ELFDATA2MSB)
                       (else (error "unknown endianness" byte-order)))
                     (elf-abi elf))
    (bytevector-u16-set! bv 16 (elf-type elf) byte-order)
    (bytevector-u16-set! bv 18 (elf-machine-type elf) byte-order)
    (bytevector-u32-set! bv 20 EV_CURRENT byte-order)
    (bytevector-u32-set! bv 24 (elf-entry elf) byte-order)
    (bytevector-u32-set! bv 28 (elf-phoff elf) byte-order)
    (bytevector-u32-set! bv 32 (elf-shoff elf) byte-order)
    (bytevector-u32-set! bv 36 (elf-flags elf) byte-order)
    (bytevector-u16-set! bv 40 (elf-ehsize elf) byte-order)
    (bytevector-u16-set! bv 42 (elf-phentsize elf) byte-order)
    (bytevector-u16-set! bv 44 (elf-phnum elf) byte-order)
    (bytevector-u16-set! bv 46 (elf-shentsize elf) byte-order)
    (bytevector-u16-set! bv 48 (elf-shnum elf) byte-order)
    (bytevector-u16-set! bv 50 (elf-shstrndx elf) byte-order)))

(define (parse-elf64 bv byte-order)
  (make-elf bv 8 byte-order
            (bytevector-u8-ref bv 7)
            (bytevector-u16-ref bv 16 byte-order)
            (bytevector-u16-ref bv 18 byte-order)
            (bytevector-u64-ref bv 24 byte-order)
            (bytevector-u64-ref bv 32 byte-order)
            (bytevector-u64-ref bv 40 byte-order)
            (bytevector-u32-ref bv 48 byte-order)
            (bytevector-u16-ref bv 52 byte-order)
            (bytevector-u16-ref bv 54 byte-order)
            (bytevector-u16-ref bv 56 byte-order)
            (bytevector-u16-ref bv 58 byte-order)
            (bytevector-u16-ref bv 60 byte-order)
            (bytevector-u16-ref bv 62 byte-order)))

(define (write-elf64-header bv elf)
  (let ((byte-order (elf-byte-order elf)))
    (write-elf-ident bv ELFCLASS64
                     (case byte-order
                       ((little) ELFDATA2LSB)
                       ((big) ELFDATA2MSB)
                       (else (error "unknown endianness" byte-order)))
                     (elf-abi elf))
    (bytevector-u16-set! bv 16 (elf-type elf) byte-order)
    (bytevector-u16-set! bv 18 (elf-machine-type elf) byte-order)
    (bytevector-u32-set! bv 20 EV_CURRENT byte-order)
    (bytevector-u64-set! bv 24 (elf-entry elf) byte-order)
    (bytevector-u64-set! bv 32 (elf-phoff elf) byte-order)
    (bytevector-u64-set! bv 40 (elf-shoff elf) byte-order)
    (bytevector-u32-set! bv 48 (elf-flags elf) byte-order)
    (bytevector-u16-set! bv 52 (elf-ehsize elf) byte-order)
    (bytevector-u16-set! bv 54 (elf-phentsize elf) byte-order)
    (bytevector-u16-set! bv 56 (elf-phnum elf) byte-order)
    (bytevector-u16-set! bv 58 (elf-shentsize elf) byte-order)
    (bytevector-u16-set! bv 60 (elf-shnum elf) byte-order)
    (bytevector-u16-set! bv 62 (elf-shstrndx elf) byte-order)))

(define (parse-elf bv)
  (cond
   ((has-elf-header? bv)
    (let ((class (bytevector-u8-ref bv 4))
          (byte-order (let ((data (bytevector-u8-ref bv 5)))
                        (cond
                         ((= data ELFDATA2LSB) (endianness little))
                         ((= data ELFDATA2MSB) (endianness big))
                         (else (error "unhandled byte order" data))))))
      (cond
       ((= class ELFCLASS32) (parse-elf32 bv byte-order))
       ((= class ELFCLASS64) (parse-elf64 bv byte-order))
       (else (error "unhandled class" class)))))
   (else
    (error "Invalid ELF" bv))))

(define* (write-elf-header bv elf)
  ((case (elf-word-size elf)
     ((4) write-elf32-header)
     ((8) write-elf64-header)
     (else (error "unknown word size" (elf-word-size elf))))
   bv elf))

;;
;; Segment types
;;
(define PT_NULL         0)              ; Program header table entry unused
(define PT_LOAD         1)              ; Loadable program segment
(define PT_DYNAMIC      2)              ; Dynamic linking information
(define PT_INTERP       3)              ; Program interpreter
(define PT_NOTE         4)              ; Auxiliary information
(define PT_SHLIB        5)              ; Reserved
(define PT_PHDR         6)              ; Entry for header table itself
(define PT_TLS          7)              ; Thread-local storage segment
(define PT_NUM          8)              ; Number of defined types
(define PT_LOOS         #x60000000)     ; Start of OS-specific
(define PT_GNU_EH_FRAME #x6474e550)     ; GCC .eh_frame_hdr segment
(define PT_GNU_STACK    #x6474e551)     ; Indicates stack executability
(define PT_GNU_RELRO    #x6474e552)     ; Read-only after relocation

;;
;; Segment flags
;;
(define PF_X            (ash 1 0))      ; Segment is executable
(define PF_W            (ash 1 1))      ; Segment is writable
(define PF_R            (ash 1 2))      ; Segment is readable

(define-record-type <elf-segment>
  (make-elf-segment index type offset vaddr paddr filesz memsz flags align)
  elf-segment?
  (index elf-segment-index)
  (type elf-segment-type)
  (offset elf-segment-offset)
  (vaddr elf-segment-vaddr)
  (paddr elf-segment-paddr)
  (filesz elf-segment-filesz)
  (memsz elf-segment-memsz)
  (flags elf-segment-flags)
  (align elf-segment-align))

(define* (make-elf-segment* #:key (index -1) (type PT_LOAD) (offset 0) (vaddr 0)
                            (paddr 0) (filesz 0) (memsz filesz)
                            (flags (logior PF_W PF_R))
                            (align 8))
  (make-elf-segment index type offset vaddr paddr filesz memsz flags align))

;; typedef struct {
;;     uint32_t   p_type;
;;     Elf32_Off  p_offset;
;;     Elf32_Addr p_vaddr;
;;     Elf32_Addr p_paddr;
;;     uint32_t   p_filesz;
;;     uint32_t   p_memsz;
;;     uint32_t   p_flags;
;;     uint32_t   p_align;
;; } Elf32_Phdr;

(define (parse-elf32-program-header index bv offset byte-order)
  (if (<= (+ offset 32) (bytevector-length bv))
      (make-elf-segment index
                        (bytevector-u32-ref bv offset byte-order)
                        (bytevector-u32-ref bv (+ offset 4) byte-order)
                        (bytevector-u32-ref bv (+ offset 8) byte-order)
                        (bytevector-u32-ref bv (+ offset 12) byte-order)
                        (bytevector-u32-ref bv (+ offset 16) byte-order)
                        (bytevector-u32-ref bv (+ offset 20) byte-order)
                        (bytevector-u32-ref bv (+ offset 24) byte-order)
                        (bytevector-u32-ref bv (+ offset 28) byte-order))
      (error "corrupt ELF (offset out of range)" offset)))

(define (write-elf32-program-header bv offset byte-order seg)
  (bytevector-u32-set! bv offset (elf-segment-type seg) byte-order)
  (bytevector-u32-set! bv (+ offset 4) (elf-segment-offset seg) byte-order)
  (bytevector-u32-set! bv (+ offset 8) (elf-segment-vaddr seg) byte-order)
  (bytevector-u32-set! bv (+ offset 12) (elf-segment-paddr seg) byte-order)
  (bytevector-u32-set! bv (+ offset 16) (elf-segment-filesz seg) byte-order)
  (bytevector-u32-set! bv (+ offset 20) (elf-segment-memsz seg) byte-order)
  (bytevector-u32-set! bv (+ offset 24) (elf-segment-flags seg) byte-order)
  (bytevector-u32-set! bv (+ offset 28) (elf-segment-align seg) byte-order))


;; typedef struct {
;;     uint32_t   p_type;
;;     uint32_t   p_flags;
;;     Elf64_Off  p_offset;
;;     Elf64_Addr p_vaddr;
;;     Elf64_Addr p_paddr;
;;     uint64_t   p_filesz;
;;     uint64_t   p_memsz;
;;     uint64_t   p_align;
;; } Elf64_Phdr;

;; NB: position of `flags' is different!

(define (parse-elf64-program-header index bv offset byte-order)
  (if (<= (+ offset 56) (bytevector-length bv))
      (make-elf-segment index
                        (bytevector-u32-ref bv offset byte-order)
                        (bytevector-u64-ref bv (+ offset 8) byte-order)
                        (bytevector-u64-ref bv (+ offset 16) byte-order)
                        (bytevector-u64-ref bv (+ offset 24) byte-order)
                        (bytevector-u64-ref bv (+ offset 32) byte-order)
                        (bytevector-u64-ref bv (+ offset 40) byte-order)
                        (bytevector-u32-ref bv (+ offset 4) byte-order)
                        (bytevector-u64-ref bv (+ offset 48) byte-order))
      (error "corrupt ELF (offset out of range)" offset)))

(define (write-elf64-program-header bv offset byte-order seg)
  (bytevector-u32-set! bv offset (elf-segment-type seg) byte-order)
  (bytevector-u64-set! bv (+ offset 8) (elf-segment-offset seg) byte-order)
  (bytevector-u64-set! bv (+ offset 16) (elf-segment-vaddr seg) byte-order)
  (bytevector-u64-set! bv (+ offset 24) (elf-segment-paddr seg) byte-order)
  (bytevector-u64-set! bv (+ offset 32) (elf-segment-filesz seg) byte-order)
  (bytevector-u64-set! bv (+ offset 40) (elf-segment-memsz seg) byte-order)
  (bytevector-u32-set! bv (+ offset 4) (elf-segment-flags seg) byte-order)
  (bytevector-u64-set! bv (+ offset 48) (elf-segment-align seg) byte-order))

(define (write-elf-program-header bv offset byte-order word-size seg)
  ((case word-size
     ((4) write-elf32-program-header)
     ((8) write-elf64-program-header)
     (else (error "invalid word size" word-size)))
   bv offset byte-order seg))

(define (elf-program-header-len word-size)
  (case word-size
    ((4) 32)
    ((8) 56)
    (else (error "bad word size" word-size))))

(define (elf-segment elf n)
  (if (not (< -1 n (elf-phnum elf)))
      (error "bad segment number" n))
  ((case (elf-word-size elf)
     ((4) parse-elf32-program-header)
     ((8) parse-elf64-program-header)
     (else (error "unhandled pointer size")))
   (elf-bytes elf)
   (+ (elf-phoff elf) (* n (elf-phentsize elf)))
   (elf-byte-order elf)))

(define (elf-segments elf)
  (let lp ((n (elf-phnum elf)) (out '()))
    (if (zero? n)
        out
        (lp (1- n) (cons (elf-segment elf (1- n)) out)))))

(define-record-type <elf-section>
  (make-elf-section index name type flags
                    addr offset size link info addralign entsize)
  elf-section?
  (index elf-section-index)
  (name elf-section-name)
  (type elf-section-type)
  (flags elf-section-flags)
  (addr elf-section-addr)
  (offset elf-section-offset)
  (size elf-section-size)
  (link elf-section-link)
  (info elf-section-info)
  (addralign elf-section-addralign)
  (entsize elf-section-entsize))

(define* (make-elf-section* #:key (index SHN_UNDEF) (name 0) (type SHT_PROGBITS)
                            (flags SHF_ALLOC) (addr 0) (offset 0) (size 0)
                            (link 0) (info 0) (addralign 8) (entsize 0))
  (make-elf-section index name type flags addr offset size link info addralign
                    entsize))

;; typedef struct {
;;     uint32_t   sh_name;
;;     uint32_t   sh_type;
;;     uint32_t   sh_flags;
;;     Elf32_Addr sh_addr;
;;     Elf32_Off  sh_offset;
;;     uint32_t   sh_size;
;;     uint32_t   sh_link;
;;     uint32_t   sh_info;
;;     uint32_t   sh_addralign;
;;     uint32_t   sh_entsize;
;; } Elf32_Shdr;

(define (parse-elf32-section-header index bv offset byte-order)
  (if (<= (+ offset 40) (bytevector-length bv))
      (make-elf-section index
                        (bytevector-u32-ref bv offset byte-order)
                        (bytevector-u32-ref bv (+ offset 4) byte-order)
                        (bytevector-u32-ref bv (+ offset 8) byte-order)
                        (bytevector-u32-ref bv (+ offset 12) byte-order)
                        (bytevector-u32-ref bv (+ offset 16) byte-order)
                        (bytevector-u32-ref bv (+ offset 20) byte-order)
                        (bytevector-u32-ref bv (+ offset 24) byte-order)
                        (bytevector-u32-ref bv (+ offset 28) byte-order)
                        (bytevector-u32-ref bv (+ offset 32) byte-order)
                        (bytevector-u32-ref bv (+ offset 36) byte-order))
      (error "corrupt ELF (offset out of range)" offset)))

(define (write-elf32-section-header bv offset byte-order sec)
  (bytevector-u32-set! bv offset (elf-section-name sec) byte-order)
  (bytevector-u32-set! bv (+ offset 4) (elf-section-type sec) byte-order)
  (bytevector-u32-set! bv (+ offset 8) (elf-section-flags sec) byte-order)
  (bytevector-u32-set! bv (+ offset 12) (elf-section-addr sec) byte-order)
  (bytevector-u32-set! bv (+ offset 16) (elf-section-offset sec) byte-order)
  (bytevector-u32-set! bv (+ offset 20) (elf-section-size sec) byte-order)
  (bytevector-u32-set! bv (+ offset 24) (elf-section-link sec) byte-order)
  (bytevector-u32-set! bv (+ offset 28) (elf-section-info sec) byte-order)
  (bytevector-u32-set! bv (+ offset 32) (elf-section-addralign sec) byte-order)
  (bytevector-u32-set! bv (+ offset 36) (elf-section-entsize sec) byte-order))


;; typedef struct {
;;     uint32_t   sh_name;
;;     uint32_t   sh_type;
;;     uint64_t   sh_flags;
;;     Elf64_Addr sh_addr;
;;     Elf64_Off  sh_offset;
;;     uint64_t   sh_size;
;;     uint32_t   sh_link;
;;     uint32_t   sh_info;
;;     uint64_t   sh_addralign;
;;     uint64_t   sh_entsize;
;; } Elf64_Shdr;

(define (elf-section-header-len word-size)
  (case word-size
    ((4) 40)
    ((8) 64)
    (else (error "bad word size" word-size))))

(define (elf-section-header-addr-offset word-size)
  (case word-size
    ((4) 12)
    ((8) 16)
    (else (error "bad word size" word-size))))

(define (elf-section-header-offset-offset word-size)
  (case word-size
    ((4) 16)
    ((8) 24)
    (else (error "bad word size" word-size))))

(define (parse-elf64-section-header index bv offset byte-order)
  (if (<= (+ offset 64) (bytevector-length bv))
      (make-elf-section index
                        (bytevector-u32-ref bv offset byte-order)
                        (bytevector-u32-ref bv (+ offset 4) byte-order)
                        (bytevector-u64-ref bv (+ offset 8) byte-order)
                        (bytevector-u64-ref bv (+ offset 16) byte-order)
                        (bytevector-u64-ref bv (+ offset 24) byte-order)
                        (bytevector-u64-ref bv (+ offset 32) byte-order)
                        (bytevector-u32-ref bv (+ offset 40) byte-order)
                        (bytevector-u32-ref bv (+ offset 44) byte-order)
                        (bytevector-u64-ref bv (+ offset 48) byte-order)
                        (bytevector-u64-ref bv (+ offset 56) byte-order))
      (error "corrupt ELF (offset out of range)" offset)))

(define (write-elf64-section-header bv offset byte-order sec)
  (bytevector-u32-set! bv offset (elf-section-name sec) byte-order)
  (bytevector-u32-set! bv (+ offset 4) (elf-section-type sec) byte-order)
  (bytevector-u64-set! bv (+ offset 8) (elf-section-flags sec) byte-order)
  (bytevector-u64-set! bv (+ offset 16) (elf-section-addr sec) byte-order)
  (bytevector-u64-set! bv (+ offset 24) (elf-section-offset sec) byte-order)
  (bytevector-u64-set! bv (+ offset 32) (elf-section-size sec) byte-order)
  (bytevector-u32-set! bv (+ offset 40) (elf-section-link sec) byte-order)
  (bytevector-u32-set! bv (+ offset 44) (elf-section-info sec) byte-order)
  (bytevector-u64-set! bv (+ offset 48) (elf-section-addralign sec) byte-order)
  (bytevector-u64-set! bv (+ offset 56) (elf-section-entsize sec) byte-order))

(define (elf-section elf n)
  (if (not (< -1 n (elf-shnum elf)))
      (error "bad section number" n))
  ((case (elf-word-size elf)
     ((4) parse-elf32-section-header)
     ((8) parse-elf64-section-header)
     (else (error "unhandled pointer size")))
   n
   (elf-bytes elf)
   (+ (elf-shoff elf) (* n (elf-shentsize elf)))
   (elf-byte-order elf)))

(define (write-elf-section-header bv offset byte-order word-size sec)
  ((case word-size
     ((4) write-elf32-section-header)
     ((8) write-elf64-section-header)
     (else (error "invalid word size" word-size)))
   bv offset byte-order sec))

(define (elf-sections elf)
  (let lp ((n (elf-shnum elf)) (out '()))
    (if (zero? n)
        out
        (lp (1- n) (cons (elf-section elf (1- n)) out)))))

;;
;; Section Types
;;
(define SHT_NULL          0)            ; Section header table entry unused
(define SHT_PROGBITS      1)            ; Program data
(define SHT_SYMTAB        2)            ; Symbol table
(define SHT_STRTAB        3)            ; String table
(define SHT_RELA          4)            ; Relocation entries with addends
(define SHT_HASH          5)            ; Symbol hash table
(define SHT_DYNAMIC       6)            ; Dynamic linking information
(define SHT_NOTE          7)            ; Notes
(define SHT_NOBITS        8)            ; Program space with no data (bss)
(define SHT_REL           9)            ; Relocation entries, no addends
(define SHT_SHLIB         10)           ; Reserved
(define SHT_DYNSYM        11)           ; Dynamic linker symbol table
(define SHT_INIT_ARRAY    14)           ; Array of constructors
(define SHT_FINI_ARRAY    15)           ; Array of destructors
(define SHT_PREINIT_ARRAY 16)           ; Array of pre-constructors
(define SHT_GROUP         17)           ; Section group
(define SHT_SYMTAB_SHNDX  18)           ; Extended section indeces
(define SHT_NUM           19)           ; Number of defined types. 
(define SHT_LOOS          #x60000000)   ; Start OS-specific. 
(define SHT_HIOS          #x6fffffff)   ; End OS-specific type
(define SHT_LOPROC        #x70000000)   ; Start of processor-specific
(define SHT_HIPROC        #x7fffffff)   ; End of processor-specific
(define SHT_LOUSER        #x80000000)   ; Start of application-specific
(define SHT_HIUSER        #x8fffffff)   ; End of application-specific

;;
;; Section Flags
;;
(define SHF_WRITE            (ash 1 0)) ; Writable
(define SHF_ALLOC            (ash 1 1)) ; Occupies memory during execution
(define SHF_EXECINSTR        (ash 1 2)) ; Executable
(define SHF_MERGE            (ash 1 4)) ; Might be merged
(define SHF_STRINGS          (ash 1 5)) ; Contains nul-terminated strings
(define SHF_INFO_LINK        (ash 1 6)) ; `sh_info' contains SHT index
(define SHF_LINK_ORDER       (ash 1 7)) ; Preserve order after combining
(define SHF_OS_NONCONFORMING (ash 1 8)) ; Non-standard OS specific handling required
(define SHF_GROUP            (ash 1 9)) ; Section is member of a group. 
(define SHF_TLS              (ash 1 10)) ; Section hold thread-local data. 

;;
;; Dynamic entry types.  The DT_GUILE types are non-standard.
;;
(define DT_NULL		0)		; Marks end of dynamic section
(define DT_NEEDED	1)		; Name of needed library
(define DT_PLTRELSZ	2)		; Size in bytes of PLT relocs
(define DT_PLTGOT	3)		; Processor defined value
(define DT_HASH		4)		; Address of symbol hash table
(define DT_STRTAB	5)		; Address of string table
(define DT_SYMTAB	6)		; Address of symbol table
(define DT_RELA		7)		; Address of Rela relocs
(define DT_RELASZ	8)		; Total size of Rela relocs
(define DT_RELAENT	9)		; Size of one Rela reloc
(define DT_STRSZ	10)		; Size of string table
(define DT_SYMENT	11)		; Size of one symbol table entry
(define DT_INIT		12)		; Address of init function
(define DT_FINI		13)		; Address of termination function
(define DT_SONAME	14)		; Name of shared object
(define DT_RPATH	15)		; Library search path (deprecated)
(define DT_SYMBOLIC	16)		; Start symbol search here
(define DT_REL		17)		; Address of Rel relocs
(define DT_RELSZ	18)		; Total size of Rel relocs
(define DT_RELENT	19)		; Size of one Rel reloc
(define DT_PLTREL	20)		; Type of reloc in PLT
(define DT_DEBUG	21)		; For debugging ; unspecified
(define DT_TEXTREL	22)		; Reloc might modify .text
(define DT_JMPREL	23)		; Address of PLT relocs
(define	DT_BIND_NOW	24)		; Process relocations of object
(define	DT_INIT_ARRAY	25)		; Array with addresses of init fct
(define	DT_FINI_ARRAY	26)		; Array with addresses of fini fct
(define	DT_INIT_ARRAYSZ	27)		; Size in bytes of DT_INIT_ARRAY
(define	DT_FINI_ARRAYSZ	28)		; Size in bytes of DT_FINI_ARRAY
(define DT_RUNPATH	29)		; Library search path
(define DT_FLAGS	30)		; Flags for the object being loaded
(define DT_ENCODING	32)		; Start of encoded range
(define DT_PREINIT_ARRAY 32)		; Array with addresses of preinit fc
(define DT_PREINIT_ARRAYSZ 33)		; size in bytes of DT_PREINIT_ARRAY
(define	DT_NUM		34)		; Number used
(define DT_LOGUILE      #x37146000)     ; Start of Guile-specific
(define DT_GUILE_GC_ROOT    #x37146000) ; Offset of GC roots
(define DT_GUILE_GC_ROOT_SZ #x37146001) ; Size in machine words of GC roots
(define DT_GUILE_ENTRY      #x37146002) ; Address of entry thunk
(define DT_GUILE_VM_VERSION #x37146003) ; Bytecode version
(define DT_GUILE_FRAME_MAPS #x37146004) ; Offset of .guile.frame-maps
(define DT_HIGUILE      #x37146fff)     ; End of Guile-specific
(define DT_LOOS		#x6000000d)	; Start of OS-specific
(define DT_HIOS		#x6ffff000)	; End of OS-specific
(define DT_LOPROC	#x70000000)	; Start of processor-specific
(define DT_HIPROC	#x7fffffff)	; End of processor-specific


(define (string-table-ref bv offset)
  (let lp ((end offset))
    (if (zero? (bytevector-u8-ref bv end))
        (let ((out (make-bytevector (- end offset))))
          (bytevector-copy! bv offset out 0 (- end offset))
          (utf8->string out))
        (lp (1+ end)))))

(define (elf-section-by-name elf name)
  (let ((off (elf-section-offset (elf-section elf (elf-shstrndx elf)))))
    (let lp ((n (elf-shnum elf)))
      (and (> n 0)
           (let ((section (elf-section elf (1- n))))
             (if (equal? (string-table-ref (elf-bytes elf)
                                           (+ off (elf-section-name section)))
                         name)
                 section
                 (lp (1- n))))))))

(define (elf-sections-by-name elf)
  (let* ((sections (elf-sections elf))
         (off (elf-section-offset (list-ref sections (elf-shstrndx elf)))))
    (map (lambda (section)
           (cons (string-table-ref (elf-bytes elf)
                                   (+ off (elf-section-name section)))
                 section))
         sections)))

(define-record-type <elf-symbol>
  (make-elf-symbol name value size info other shndx)
  elf-symbol?
  (name elf-symbol-name)
  (value elf-symbol-value)
  (size elf-symbol-size)
  (info elf-symbol-info)
  (other elf-symbol-other)
  (shndx elf-symbol-shndx))

(define* (make-elf-symbol* #:key (name 0) (value 0) (size 0)
                           (binding STB_LOCAL) (type STT_NOTYPE)
                           (info (logior (ash binding 4) type))
                           (visibility STV_DEFAULT) (other visibility)
                           (shndx SHN_UNDEF))
  (make-elf-symbol name value size info other shndx))

;; typedef struct {
;;     uint32_t      st_name;
;;     Elf32_Addr    st_value;
;;     uint32_t      st_size;
;;     unsigned char st_info;
;;     unsigned char st_other;
;;     uint16_t      st_shndx;
;; } Elf32_Sym;

(define (elf-symbol-len word-size)
  (case word-size
    ((4) 16)
    ((8) 24)
    (else (error "bad word size" word-size))))

(define (elf-symbol-value-offset word-size)
  (case word-size
    ((4) 4)
    ((8) 8)
    (else (error "bad word size" word-size))))

(define (parse-elf32-symbol bv offset stroff byte-order)
  (if (<= (+ offset 16) (bytevector-length bv))
      (make-elf-symbol (let ((name (bytevector-u32-ref bv offset byte-order)))
                         (if stroff
                             (string-table-ref bv (+ stroff name))
                             name))
                       (bytevector-u32-ref bv (+ offset 4) byte-order)
                       (bytevector-u32-ref bv (+ offset 8) byte-order)
                       (bytevector-u8-ref bv (+ offset 12))
                       (bytevector-u8-ref bv (+ offset 13))
                       (bytevector-u16-ref bv (+ offset 14) byte-order))
      (error "corrupt ELF (offset out of range)" offset)))

(define (write-elf32-symbol bv offset byte-order sym)
  (bytevector-u32-set! bv offset (elf-symbol-name sym) byte-order)
  (bytevector-u32-set! bv (+ offset 4) (elf-symbol-value sym) byte-order)
  (bytevector-u32-set! bv (+ offset 8) (elf-symbol-size sym) byte-order)
  (bytevector-u8-set! bv (+ offset 12) (elf-symbol-info sym))
  (bytevector-u8-set! bv (+ offset 13) (elf-symbol-other sym))
  (bytevector-u16-set! bv (+ offset 14) (elf-symbol-shndx sym) byte-order))

;; typedef struct {
;;     uint32_t      st_name;
;;     unsigned char st_info;
;;     unsigned char st_other;
;;     uint16_t      st_shndx;
;;     Elf64_Addr    st_value;
;;     uint64_t      st_size;
;; } Elf64_Sym;

(define (parse-elf64-symbol bv offset stroff byte-order)
  (if (<= (+ offset 24) (bytevector-length bv))
      (make-elf-symbol (let ((name (bytevector-u32-ref bv offset byte-order)))
                         (if stroff
                             (string-table-ref bv (+ stroff name))
                             name))
                       (bytevector-u64-ref bv (+ offset 8) byte-order)
                       (bytevector-u64-ref bv (+ offset 16) byte-order)
                       (bytevector-u8-ref bv (+ offset 4))
                       (bytevector-u8-ref bv (+ offset 5))
                       (bytevector-u16-ref bv (+ offset 6) byte-order))
      (error "corrupt ELF (offset out of range)" offset)))

(define (write-elf64-symbol bv offset byte-order sym)
  (bytevector-u32-set! bv offset (elf-symbol-name sym) byte-order)
  (bytevector-u8-set! bv (+ offset 4) (elf-symbol-info sym))
  (bytevector-u8-set! bv (+ offset 5) (elf-symbol-other sym))
  (bytevector-u16-set! bv (+ offset 6) (elf-symbol-shndx sym) byte-order)
  (bytevector-u64-set! bv (+ offset 8) (elf-symbol-value sym) byte-order)
  (bytevector-u64-set! bv (+ offset 16) (elf-symbol-size sym) byte-order))

(define (write-elf-symbol bv offset byte-order word-size sym)
  ((case word-size
     ((4) write-elf32-symbol)
     ((8) write-elf64-symbol)
     (else (error "invalid word size" word-size)))
   bv offset byte-order sym))

(define (elf-symbol-table-len section)
  (let ((len (elf-section-size section))
        (entsize (elf-section-entsize section)))
    (unless (and (not (zero? entsize)) (zero? (modulo len entsize)))
      (error "bad symbol table" section))
    (/ len entsize)))

(define* (elf-symbol-table-ref elf section n #:optional strtab)
  (let ((bv (elf-bytes elf))
        (byte-order (elf-byte-order elf))
        (stroff (and strtab (elf-section-offset strtab)))
        (base (elf-section-offset section))
        (len (elf-section-size section))
        (entsize (elf-section-entsize section)))
    (unless (<= (* (1+ n) entsize) len)
      (error "out of range symbol table access" section n))
    (case (elf-word-size elf)
      ((4)
       (unless (<= 16 entsize)
         (error "bad entsize for symbol table" section))
       (parse-elf32-symbol bv (+ base (* n entsize)) stroff byte-order))
      ((8)
       (unless (<= 24 entsize)
         (error "bad entsize for symbol table" section))
       (parse-elf64-symbol bv (+ base (* n entsize)) stroff byte-order))
      (else (error "bad word size" elf)))))

;; Legal values for ST_BIND subfield of st_info (symbol binding).

(define STB_LOCAL	0)		; Local symbol
(define STB_GLOBAL	1)		; Global symbol
(define STB_WEAK	2)		; Weak symbol
(define STB_NUM		3)		; Number of defined types. 
(define STB_LOOS	10)		; Start of OS-specific
(define STB_GNU_UNIQUE	10)		; Unique symbol. 
(define STB_HIOS	12)		; End of OS-specific
(define STB_LOPROC	13)		; Start of processor-specific
(define STB_HIPROC	15)		; End of processor-specific

;; Legal values for ST_TYPE subfield of st_info (symbol type).

(define STT_NOTYPE	0)		; Symbol type is unspecified
(define STT_OBJECT	1)		; Symbol is a data object
(define STT_FUNC	2)		; Symbol is a code object
(define STT_SECTION	3)		; Symbol associated with a section
(define STT_FILE	4)		; Symbol's name is file name
(define STT_COMMON	5)		; Symbol is a common data object
(define STT_TLS		6)		; Symbol is thread-local data objec
(define STT_NUM		7)		; Number of defined types. 
(define STT_LOOS	10)		; Start of OS-specific
(define STT_GNU_IFUNC	10)		; Symbol is indirect code object
(define STT_HIOS	12)		; End of OS-specific
(define STT_LOPROC	13)		; Start of processor-specific
(define STT_HIPROC	15)		; End of processor-specific

;; Symbol visibility specification encoded in the st_other field.

(define STV_DEFAULT	0)		; Default symbol visibility rules
(define STV_INTERNAL	1)		; Processor specific hidden class
(define STV_HIDDEN	2)		; Sym unavailable in other modules
(define STV_PROTECTED	3)		; Not preemptible, not exported

(define (elf-symbol-binding sym)
  (ash (elf-symbol-info sym) -4))

(define (elf-symbol-type sym)
  (logand (elf-symbol-info sym) #xf))

(define (elf-symbol-visibility sym)
  (logand (elf-symbol-other sym) #x3))

(define NT_GNU_ABI_TAG 1)
(define NT_GNU_HWCAP 2)
(define NT_GNU_BUILD_ID 3)
(define NT_GNU_GOLD_VERSION 4)

(define-record-type <elf-note>
  (make-elf-note name desc type)
  elf-note?
  (name elf-note-name)
  (desc elf-note-desc)
  (type elf-note-type))

(define (parse-elf-note elf section)
  (let ((bv (elf-bytes elf))
        (byte-order (elf-byte-order elf))
        (offset (elf-section-offset section)))
    (unless (<= (+ offset 12) (bytevector-length bv))
      (error "corrupt ELF (offset out of range)" offset))
    (let ((namesz (bytevector-u32-ref bv offset byte-order))
          (descsz (bytevector-u32-ref bv (+ offset 4) byte-order))
          (type (bytevector-u32-ref bv (+ offset 8) byte-order)))
      (unless (<= (+ offset 12 namesz descsz) (bytevector-length bv))
        (error "corrupt ELF (offset out of range)" offset))
      (let ((name (make-bytevector (1- namesz)))
            (desc (make-bytevector descsz)))
        (bytevector-copy! bv (+ offset 12) name 0 (1- namesz))
        (bytevector-copy! bv (+ offset 12 namesz) desc 0 descsz)
        (make-elf-note (utf8->string name) desc type)))))

M guix/gnu-maintenance.scm => guix/gnu-maintenance.scm +5 -3
@@ 233,12 233,14 @@ stored."
     (values "ftp.gnu.org" (string-append "/gnu/" project)))))

(define (sans-extension tarball)
  "Return TARBALL without its .tar.* extension."
  (let ((end (string-contains tarball ".tar")))
  "Return TARBALL without its .tar.* or .zip extension."
  (let ((end (or (string-contains tarball ".tar")
                 (string-contains tarball ".zip"))))
    (substring tarball 0 end)))

(define %tarball-rx
  (make-regexp "^(.+)-([0-9]|[^-])*(-src)?\\.tar\\."))
  ;; Note: .zip files are notably used for freefont-ttf.
  (make-regexp "^(.+)-([0-9]|[^-])*(-src)?\\.(tar\\.|zip$)"))

(define %alpha-tarball-rx
  (make-regexp "^.*-.*[0-9](-|~)?(alpha|beta|rc|cvs|svn|git)-?[0-9\\.]*\\.tar\\."))

M guix/import/gnu.scm => guix/import/gnu.scm +1 -1
@@ 84,7 84,7 @@
                                     ,(string-append ".tar." archive-type)))
                 (sha256
                  (base32
                   ,(bytevector->base32-string (file-sha256 tarball))))))
                   ,(bytevector->nix-base32-string (file-sha256 tarball))))))
       (build-system gnu-build-system)
       (synopsis ,(gnu-package-doc-summary package))
       (description ,(gnu-package-doc-description package))

M guix/licenses.scm => guix/licenses.scm +12 -1
@@ 40,7 40,8 @@
            ibmpl1.0
            imlib2
            lgpl2.0 lgpl2.0+ lgpl2.1 lgpl2.1+ lgpl3 lgpl3+
            mpl2.0
            mpl1.1 mpl2.0
            ncsa
            openldap2.8 openssl
            psfl public-domain
            qpl


@@ 239,11 240,21 @@ which may be a file:// URI pointing the package's tree."
           "https://www.gnu.org/licenses/lgpl.html"
           "https://www.gnu.org/licenses/license-list#LGPLv3"))

(define mpl1.1
  (license "MPL 1.1"
           "http://directory.fsf.org/wiki/License:MPLv1.1"
           "https://www.gnu.org/licenses/license-list#MPL"))

(define mpl2.0
  (license "MPL 2.0"
           "http://directory.fsf.org/wiki/License:MPLv2.0"
           "https://www.gnu.org/licenses/license-list#MPL-2.0"))

(define ncsa
  (license "NCSA/University of Illinois Open Source License"
           "http://directory.fsf.org/wiki/License:IllinoisNCSA"
           "https://www.gnu.org/licenses/license-list#NCSA"))

(define openssl
  (license "OpenSSL"
           "http://directory.fsf.org/wiki/License:OpenSSL"

M guix/monads.scm => guix/monads.scm +31 -2
@@ 39,7 39,9 @@
            mlet
            mlet*
            mbegin
            lift1 lift2 lift3 lift4 lift5 lift6 lift7 lift
            mwhen
            munless
            lift0 lift1 lift2 lift3 lift4 lift5 lift6 lift7 lift
            listm
            foldm
            mapm


@@ 173,9 175,15 @@ form is (VAR -> VAL), bind VAR to the non-monadic value VAL in the same way as
               body ...)))))))

(define-syntax mbegin
  (syntax-rules ()
  (syntax-rules (%current-monad)
    "Bind the given monadic expressions in sequence, returning the result of
the last one."
    ((_ %current-monad mexp)
     mexp)
    ((_ %current-monad mexp rest ...)
     (>>= mexp
          (lambda (unused-value)
            (mbegin %current-monad rest ...))))
    ((_ monad mexp)
     (with-monad monad
       mexp))


@@ 185,6 193,26 @@ the last one."
            (lambda (unused-value)
              (mbegin monad rest ...)))))))

(define-syntax mwhen
  (syntax-rules ()
    "When CONDITION is true, evaluate EXP0..EXP* as in an 'mbegin'.  When
CONDITION is false, return *unspecified* in the current monad."
    ((_ condition exp0 exp* ...)
     (if condition
         (mbegin %current-monad
           exp0 exp* ...)
         (return *unspecified*)))))

(define-syntax munless
  (syntax-rules ()
    "When CONDITION is false, evaluate EXP0..EXP* as in an 'mbegin'.  When
CONDITION is true, return *unspecified* in the current monad."
    ((_ condition exp0 exp* ...)
     (if condition
         (return *unspecified*)
         (mbegin %current-monad
           exp0 exp* ...)))))

(define-syntax define-lift
  (syntax-rules ()
    ((_ liftn (args ...))


@@ 194,6 222,7 @@ the last one."
         (with-monad monad
           (return (proc args ...))))))))

(define-lift lift0 ())
(define-lift lift1 (a))
(define-lift lift2 (a b))
(define-lift lift3 (a b c))

M guix/packages.scm => guix/packages.scm +1 -1
@@ 376,7 376,7 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
                    (add-to-store store (basename patch) #t
                                  "sha256" patch))
                   ((? origin?)
                    (package-source-derivation store patch)))))
                    (package-source-derivation store patch system)))))
         (iota (length patches))

         patches))

M guix/scripts/archive.scm => guix/scripts/archive.scm +5 -0
@@ 293,6 293,11 @@ the input port."
(define (guix-archive . args)
  (define (parse-options)
    ;; Return the alist of option values.
    (append (parse-options-from args)
            (parse-options-from (environment-build-options))))

  (define (parse-options-from args)
    ;; Actual parsing takes place here.
    (args-fold* args %options
                (lambda (opt name arg result)
                  (leave (_ "~A: unrecognized option~%") name))

M guix/scripts/build.scm => guix/scripts/build.scm +18 -2
@@ 119,7 119,9 @@ options handled by 'set-build-options-from-command-line', and listed in
  (display (_ "
      --verbosity=LEVEL  use the given verbosity LEVEL"))
  (display (_ "
  -c, --cores=N          allow the use of up to N CPU cores for the build")))
  -c, --cores=N          allow the use of up to N CPU cores for the build"))
  (display (_ "
  -M, --max-jobs=N       allow at most N build jobs")))

(define (set-build-options-from-command-line store opts)
  "Given OPTS, an alist as returned by 'args-fold' given


@@ 128,6 130,7 @@ options handled by 'set-build-options-from-command-line', and listed in
  (set-build-options store
                     #:keep-failed? (assoc-ref opts 'keep-failed?)
                     #:build-cores (or (assoc-ref opts 'cores) 0)
                     #:max-build-jobs (or (assoc-ref opts 'max-jobs) 1)
                     #:fallback? (assoc-ref opts 'fallback?)
                     #:use-substitutes? (assoc-ref opts 'substitutes?)
                     #:use-build-hook? (assoc-ref opts 'build-hook?)


@@ 192,7 195,15 @@ options handled by 'set-build-options-from-command-line', and listed in
                  (let ((c (false-if-exception (string->number arg))))
                    (if c
                        (apply values (alist-cons 'cores c result) rest)
                        (leave (_ "~a: not a number~%") arg)))))))
                        (leave (_ "not a number: '~a' option argument: ~a~%")
                               name arg)))))
        (option '(#\M "max-jobs") #t #f
                (lambda (opt name arg result . rest)
                  (let ((c (false-if-exception (string->number arg))))
                    (if c
                        (apply values (alist-cons 'max-jobs c result) rest)
                        (leave (_ "not a number: '~a' option argument: ~a~%")
                               name arg)))))))


;;;


@@ 390,6 401,11 @@ arguments with packages that use the specified source."
(define (guix-build . args)
  (define (parse-options)
    ;; Return the alist of option values.
    (append (parse-options-from args)
            (parse-options-from (environment-build-options))))

  (define (parse-options-from args)
    ;; Actual parsing takes place here.
    (args-fold* args %options
                (lambda (opt name arg result)
                  (leave (_ "~A: unrecognized option~%") name))

M guix/scripts/environment.scm => guix/scripts/environment.scm +6 -0
@@ 213,6 213,12 @@ packages."
;; Entry point.
(define (guix-environment . args)
  (define (parse-options)
    ;; Return the alist of option values.
    (append (parse-options-from args)
            (parse-options-from (environment-build-options))))

  (define (parse-options-from args)
    ;; Actual parsing takes place here.
    (args-fold* args %options
                (lambda (opt name arg result)
                  (leave (_ "~A: unrecognized option~%") name))

M guix/scripts/package.scm => guix/scripts/package.scm +5 -0
@@ 668,6 668,11 @@ removed from MANIFEST."
(define (guix-package . args)
  (define (parse-options)
    ;; Return the alist of option values.
    (append (parse-options-from args)
            (parse-options-from (environment-build-options))))

  (define (parse-options-from args)
    ;; Actual parsing takes place here.
    (args-fold* args %options
                (lambda (opt name arg result arg-handler)
                  (leave (_ "~A: unrecognized option~%") name))

M guix/scripts/substitute-binary.scm => guix/scripts/substitute-binary.scm +5 -1
@@ 175,7 175,7 @@ to the caller without emitting an error message."
                           %fetch-timeout
                           0)
           (begin
             (warning (_ "while fetching ~a: server is unresponsive~%")
             (warning (_ "while fetching ~a: server is somewhat slow~%")
                      (uri->string uri))
             (warning (_ "try `--no-substitutes' if the problem persists~%"))



@@ 758,6 758,10 @@ substituter disabled~%")
                                            progress)))
            ;; Unpack the Nar at INPUT into DESTINATION.
            (restore-file input destination)

            ;; Skip a line after what 'progress-proc' printed.
            (newline (current-error-port))

            (every (compose zero? cdr waitpid) pids))))
       (("--version")
        (show-version-and-exit "guix substitute-binary"))

M guix/scripts/system.scm => guix/scripts/system.scm +41 -17
@@ 131,6 131,27 @@ TARGET, and register them."
              (map (cut copy-item <> target #:log-port log-port)
                   to-copy))))

(define (install-grub* grub.cfg device target)
  "This is a variant of 'install-grub' with error handling, lifted in
%STORE-MONAD"
  (let* ((gc-root      (string-append %gc-roots-directory "/grub.cfg"))
         (temp-gc-root (string-append gc-root ".new"))
         (delete-file  (lift1 delete-file %store-monad))
         (make-symlink (lift2 switch-symlinks %store-monad))
         (rename       (lift2 rename-file %store-monad)))
    (mbegin %store-monad
      ;; Prepare the symlink to GRUB.CFG to make sure that it's a GC root when
      ;; 'install-grub' completes (being a bit paranoid.)
      (make-symlink temp-gc-root grub.cfg)

      (munless (false-if-exception (install-grub grub.cfg device target))
        (delete-file temp-gc-root)
        (leave (_ "failed to install GRUB on device '~a'~%") device))

      ;; Register GRUB.CFG as a GC root so that its dependencies (background
      ;; image, font, etc.) are not reclaimed.
      (rename temp-gc-root gc-root))))

(define* (install os-drv target
                  #:key (log-port (current-output-port))
                  grub? grub.cfg device)


@@ 151,18 172,19 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
            ;; Copy items to the new store.
            (copy-closure to-copy target #:log-port log-port)))))

  (mlet* %store-monad ((os-dir -> (derivation->output-path os-drv))
                       (%         (maybe-copy os-dir)))
  (let ((os-dir   (derivation->output-path os-drv))
        (format   (lift format %store-monad))
        (populate (lift2 populate-root-file-system %store-monad)))

    ;; Create a bunch of additional files.
    (format log-port "populating '~a'...~%" target)
    (populate-root-file-system os-dir target)
    (mbegin %store-monad
      (maybe-copy os-dir)

    (when grub?
      (unless (false-if-exception (install-grub grub.cfg device target))
        (leave (_ "failed to install GRUB on device '~a'~%") device)))
      ;; Create a bunch of additional files.
      (format log-port "populating '~a'...~%" target)
      (populate os-dir target)

    (return #t)))
      (mwhen grub?
        (install-grub* grub.cfg device target)))))


;;;


@@ 334,14 356,11 @@ boot directly to the kernel or to the bootloader."

          (case action
            ((reconfigure)
             (mlet %store-monad ((% (switch-to-system os)))
               (when grub?
                 (unless (false-if-exception
                          (install-grub (derivation->output-path grub.cfg)
                                        device "/"))
                   (leave (_ "failed to install GRUB on device '~a'~%")
                          device)))
               (return #t)))
             (mbegin %store-monad
               (switch-to-system os)
               (mwhen grub?
                 (install-grub* (derivation->output-path grub.cfg)
                                device "/"))))
            ((init)
             (newline)
             (format #t (_ "initializing operating system under '~a'...~%")


@@ 467,6 486,11 @@ Build the operating system declared in FILE according to ACTION.\n"))
(define (guix-system . args)
  (define (parse-options)
    ;; Return the alist of option values.
    (append (parse-options-from args)
            (parse-options-from (environment-build-options))))

  (define (parse-options-from args)
    ;; Actual parsing takes place here.
    (args-fold* args %options
                (lambda (opt name arg result)
                  (leave (_ "~A: unrecognized option~%") name))

M guix/store.scm => guix/store.scm +2 -2
@@ 435,14 435,14 @@ encoding conversion errors."
(define* (set-build-options server
                            #:key keep-failed? keep-going? fallback?
                            (verbosity 0)
                            (max-build-jobs (current-processor-count))
                            (max-build-jobs 1)
                            timeout
                            (max-silent-time 3600)
                            (use-build-hook? #t)
                            (build-verbosity 0)
                            (log-type 0)
                            (print-build-trace #t)
                            (build-cores 1)
                            (build-cores (current-processor-count))
                            (use-substitutes? #t)
                            (binary-caches '())) ; client "untrusted" cache URLs
  ;; Must be called after `open-connection'.

M guix/ui.scm => guix/ui.scm +5 -0
@@ 64,6 64,7 @@
            string->generations
            string->duration
            args-fold*
            environment-build-options
            run-guix-command
            program-name
            guix-warning-port


@@ 712,6 713,10 @@ reporting."
      (leave (_ "invalid argument: ~a~%")
             (apply format #f msg args)))))

(define (environment-build-options)
  "Return additional build options passed as environment variables."
  (arguments-from-environment-variable "GUIX_BUILD_OPTIONS"))

(define (show-guix-usage)
  (format (current-error-port)
          (_ "Try `guix --help' for more information.~%"))

M guix/utils.scm => guix/utils.scm +10 -0
@@ 72,6 72,7 @@
            package-name->name+version
            string-tokenize*
            string-replace-substring
            arguments-from-environment-variable
            file-extension
            file-sans-extension
            call-with-temporary-output-file


@@ 627,6 628,15 @@ REPLACEMENT."
                       (substring str start index)
                       pieces))))))))

(define (arguments-from-environment-variable variable)
  "Retrieve value of environment variable denoted by string VARIABLE in the
form of a list of strings (`char-set:graphic' tokens) suitable for consumption
by `args-fold', if VARIABLE is defined, otherwise return an empty list."
  (let ((env (getenv variable)))
    (if env
        (string-tokenize env char-set:graphic)
        '())))

(define (call-with-temporary-output-file proc)
  "Call PROC with a name of a temporary file and open output port to that
file; close the file and delete it when leaving the dynamic extent of this

M nix/nix-daemon/guix-daemon.cc => nix/nix-daemon/guix-daemon.cc +3 -0
@@ 264,6 264,9 @@ main (int argc, char *argv[])
  /* Turn automatic deduplication on by default.  */
  settings.autoOptimiseStore = true;

  /* Default to using as many cores as possible.  */
  settings.buildCores = 0;

  argvSaved = argv;

  try

M po/guix/POTFILES.in => po/guix/POTFILES.in +1 -0
@@ 1,6 1,7 @@
# List of source files which contain translatable strings.
# This should be source files of the various tools, and not package modules.
gnu/packages.scm
gnu/system.scm
guix/scripts/build.scm
guix/scripts/download.scm
guix/scripts/package.scm

M po/guix/eo.po => po/guix/eo.po +375 -231
@@ 5,49 5,68 @@
#
msgid ""
msgstr ""
"Project-Id-Version: guix 0.7-pre1\n"
"Project-Id-Version: guix 0.8\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-07-25 00:55+0200\n"
"PO-Revision-Date: 2014-07-14 11:29-0300\n"
"POT-Creation-Date: 2014-11-09 22:32+0100\n"
"PO-Revision-Date: 2014-12-07 16:05-0300\n"
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: eo\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
"X-Generator: Poedit 1.6.10\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: gnu/packages.scm:102
#: gnu/packages.scm:120
#, scheme-format
msgid "cannot access `~a': ~a~%"
msgstr "ne eblas atingi '~a': ~a~%"

#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
#: gnu/packages.scm:350
#, scheme-format
msgid "looking for the latest release of GNU ~a..."
msgstr "ni serĉas la lastan eldonon de GNU ~a..."

#: gnu/packages.scm:354
#, scheme-format
msgid "~a: note: using ~a but ~a is available upstream~%"
msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%"

#: gnu/packages.scm:376 guix/scripts/package.scm:305
#, scheme-format
msgid "ambiguous package specification `~a'~%"
msgstr "plursenca pak-specifigo '~a'~%"

#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
#: gnu/packages.scm:377 guix/scripts/package.scm:307
#, scheme-format
msgid "choosing ~a from ~a~%"
msgstr "ni elektas ~a el ~a~%"

#: guix/scripts/build.scm:61
#: gnu/packages.scm:383
#, scheme-format
msgid "~A: package not found for version ~a~%"
msgstr "~A: pako ne trovita por versio ~a~%"

#: guix/scripts/build.scm:63
#: gnu/packages.scm:385
#, scheme-format
msgid "~A: unknown package~%"
msgstr "~A: nekonata pako~%"

#: guix/scripts/build.scm:86
#: guix/scripts/build.scm:65
#, scheme-format
msgid "failed to create GC root `~a': ~a~%"
msgstr "fiasko dum kreo de radiko GC '~a': ~a~%"

#: guix/scripts/build.scm:123
#: guix/scripts/build.scm:102
msgid ""
"\n"
"  -L, --load-path=DIR    prepend DIR to the package module search path"
msgstr ""
"\n"
"  -L, --load-path=UJO    antaŭmedi UJOn al la modula serĉvojo de la pako"

#: guix/scripts/build.scm:104
msgid ""
"\n"
"  -K, --keep-failed      keep build tree of failed builds"


@@ 55,7 74,7 @@ msgstr ""
"\n"
"  -K, --keep-failed      teni konstru-arbon el fiaskintaj konstruoj"

#: guix/scripts/build.scm:125
#: guix/scripts/build.scm:106
msgid ""
"\n"
"  -n, --dry-run          do not build the derivations"


@@ 63,7 82,7 @@ msgstr ""
"\n"
"  -n, --dry-run          ne konstrui derivaĵojn"

#: guix/scripts/build.scm:127
#: guix/scripts/build.scm:108
msgid ""
"\n"
"      --fallback         fall back to building when the substituter fails"


@@ 71,7 90,7 @@ msgstr ""
"\n"
"      --fallback         retropaŝi al konstruado kiam la anstataŭiganto fiaskas"

#: guix/scripts/build.scm:129
#: guix/scripts/build.scm:110
msgid ""
"\n"
"      --no-substitutes   build instead of resorting to pre-built substitutes"


@@ 79,7 98,7 @@ msgstr ""
"\n"
"      --no-substitutes   konstrui anstataŭ provi jam-konstruitajn anstataŭigantojn"

#: guix/scripts/build.scm:131
#: guix/scripts/build.scm:112
msgid ""
"\n"
"      --no-build-hook    do not attempt to offload builds via the build hook"


@@ 87,7 106,7 @@ msgstr ""
"\n"
"      --no-build-hook    ne provi disŝarĝi konstruojn per la konstru-hoko"

#: guix/scripts/build.scm:133
#: guix/scripts/build.scm:114
msgid ""
"\n"
"      --max-silent-time=SECONDS\n"


@@ 97,7 116,7 @@ msgstr ""
"      --max-silent-time=SEKUNDOJ\n"
"                         marki la konstruon kiel fiaskintan post SEKUNDOJ da silento"

#: guix/scripts/build.scm:136
#: guix/scripts/build.scm:117
msgid ""
"\n"
"      --timeout=SECONDS  mark the build as failed after SECONDS of activity"


@@ 105,7 124,7 @@ msgstr ""
"\n"
"      --timeout=SEKUNDOJ marki la konstruon kiel fiaskintan post SEKUNDOJ da aktivado"

#: guix/scripts/build.scm:138
#: guix/scripts/build.scm:119
msgid ""
"\n"
"      --verbosity=LEVEL  use the given verbosity LEVEL"


@@ 113,7 132,7 @@ msgstr ""
"\n"
"      --verbosity=NIVELO uzi la indikitan detaligan NIVELOn"

#: guix/scripts/build.scm:140
#: guix/scripts/build.scm:121
msgid ""
"\n"
"  -c, --cores=N          allow the use of up to N CPU cores for the build"


@@ 121,12 140,12 @@ msgstr ""
"\n"
"  -c, --cores=N          permesigi uzon de ĝis N CPU-nukleojn por la konstruo"

#: guix/scripts/build.scm:206
#: guix/scripts/build.scm:195
#, scheme-format
msgid "~a: not a number~%"
msgstr "~a: ne estas numero~%"

#: guix/scripts/build.scm:223
#: guix/scripts/build.scm:213
msgid ""
"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"


@@ 134,7 153,7 @@ msgstr ""
"Uzado: guix build [MODIFILO]... PAKO-AŬ-DERIVAĴO...\n"
"Konstrui la indikitan PAKO-AŬ-DERIVAĴOn kaj montri iliajn eligajn vojojn.\n"

#: guix/scripts/build.scm:225
#: guix/scripts/build.scm:215
msgid ""
"\n"
"  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"


@@ 142,7 161,7 @@ msgstr ""
"\n"
"  -e, --expression=ESPR  konstrui la pakon aŭ derivaĵon kiu rezultas de ESPR"

#: guix/scripts/build.scm:227
#: guix/scripts/build.scm:217
msgid ""
"\n"
"  -S, --source           build the packages' source derivations"


@@ 150,7 169,7 @@ msgstr ""
"\n"
"  -S, --source           konstrui la font-derivaĵojn de la pakoj"

#: guix/scripts/build.scm:229
#: guix/scripts/build.scm:219
msgid ""
"\n"
"  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""


@@ 158,7 177,7 @@ msgstr ""
"\n"
"  -s, --system=SISTEMO   provi konstrui por SISTEMO--ekz., \"i686-linux\""

#: guix/scripts/build.scm:231
#: guix/scripts/build.scm:221
msgid ""
"\n"
"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""


@@ 166,7 185,7 @@ msgstr ""
"\n"
"      --target=TRIOPO    cruc-konstrui por TRIOPO--ekz., \"armel-linux-gnu\""

#: guix/scripts/build.scm:233
#: guix/scripts/build.scm:223
msgid ""
"\n"
"      --with-source=SOURCE\n"


@@ 176,7 195,15 @@ msgstr ""
"      --with-source=FONTO\n"
"                         uzi FONTOn dum konstruo de la koresponda pako"

#: guix/scripts/build.scm:236
#: guix/scripts/build.scm:226
msgid ""
"\n"
"      --no-grafts        do not graft packages"
msgstr ""
"\n"
"      --no-grafts        ne kunmetu pakojn"

#: guix/scripts/build.scm:228
msgid ""
"\n"
"  -d, --derivations      return the derivation paths of the given packages"


@@ 184,7 211,7 @@ msgstr ""
"\n"
"  -d, --derivations      liveri la derivaĵajn vojojn de la indikitaj pakoj"

#: guix/scripts/build.scm:238
#: guix/scripts/build.scm:230
msgid ""
"\n"
"  -r, --root=FILE        make FILE a symlink to the result, and register it\n"


@@ 194,7 221,7 @@ msgstr ""
"  -r, --root=DOSIERO     igi DOSIEROn simbola ligo al la rezulto, kaj registri\n"
"                         ĝin kiel radikon de rubaĵ-kolektanto"

#: guix/scripts/build.scm:241
#: guix/scripts/build.scm:233
msgid ""
"\n"
"      --log-file         return the log file names for the given derivations"


@@ 202,10 229,11 @@ msgstr ""
"\n"
"      --log-file         liveri la protokol-dosierajn nomojn por la indikitaj derivaĵoj"

#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
#: guix/scripts/build.scm:238 guix/scripts/download.scm:53
#: guix/scripts/package.scm:451 guix/scripts/gc.scm:58
#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81
#: guix/scripts/substitute-binary.scm:560 guix/scripts/system.scm:371
#: guix/scripts/lint.scm:262
msgid ""
"\n"
"  -h, --help             display this help and exit"


@@ 213,10 241,11 @@ msgstr ""
"\n"
"  -h, --help             montri ĉi tiun helpon kaj eliri"

#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
#: guix/scripts/build.scm:240 guix/scripts/download.scm:55
#: guix/scripts/package.scm:453 guix/scripts/gc.scm:60
#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83
#: guix/scripts/substitute-binary.scm:562 guix/scripts/system.scm:373
#: guix/scripts/lint.scm:266
msgid ""
"\n"
"  -V, --version          display version information and exit"


@@ 224,19 253,20 @@ msgstr ""
"\n"
"  -V, --version          montri informon pri versio kaj eliri"

#: guix/scripts/build.scm:368
#: guix/scripts/build.scm:366
#, scheme-format
msgid "sources do not match any package:~{ ~a~}~%"
msgstr "fontoj ne kongruas al iu ajn pako:~{ ~a~}~%"

#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#: guix/scripts/build.scm:395 guix/scripts/download.scm:96
#: guix/scripts/package.scm:673 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:213 guix/scripts/system.scm:426
#: guix/scripts/lint.scm:313
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: nerekonata modifilo~%"

#: guix/scripts/build.scm:425
#: guix/scripts/build.scm:423
#, scheme-format
msgid "no build log for '~a'~%"
msgstr "neniu konstruita protokolo por '~a'~%"


@@ 280,73 310,42 @@ msgstr "~a: analizo de URI fiaskis~%"
msgid "~a: download failed~%"
msgstr "~a: elŝuto fiaskis~%"

#: guix/scripts/package.scm:88
#: guix/scripts/package.scm:97
#, scheme-format
msgid "failed to build the empty profile~%"
msgstr "fiasko dum konstruo de malplena profilo~%"

#: guix/scripts/package.scm:97
#: guix/scripts/package.scm:113
#, scheme-format
msgid "switching from generation ~a to ~a~%"
msgstr "alterno el generacio ~a al ~a~%"

#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:985
#, scheme-format
msgid "profile '~a' does not exist~%"
msgstr "profilo '~a' ne ekzistas~%"

#: guix/scripts/package.scm:112
#: guix/scripts/package.scm:132
#, scheme-format
msgid "nothing to do: already at the empty profile~%"
msgstr "nenio por fari: jam estas ĉe la malplena profilo~%"

#: guix/scripts/package.scm:197
#, scheme-format
msgid "The following package would be removed:~%~{~a~%~}~%"
msgstr "La jena pako devos esti forigata:~%~{~a~%~}~%"

#: guix/scripts/package.scm:202
#, scheme-format
msgid "The following package will be removed:~%~{~a~%~}~%"
msgstr "La jena pako estos forigata:~%~{~a~%~}~%"

#: guix/scripts/package.scm:214
#, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%"
msgstr "La jena pako estus instalata:~% ~{~a~%~}~%"

#: guix/scripts/package.scm:219
#: guix/scripts/package.scm:144
#, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%"
msgstr "La jena pako estos instalata:~% ~{~a~%~}~%"
msgid "deleting ~a~%"
msgstr "ni forigas ~a~%"

#: guix/scripts/package.scm:339
#: guix/scripts/package.scm:295
#, scheme-format
msgid "package `~a' lacks output `~a'~%"
msgstr "pako '~a' malhavas eligon '~a'~%"

#: guix/scripts/package.scm:356
#: guix/scripts/package.scm:312
#, scheme-format
msgid "~a: package not found~%"
msgstr "~a: pako ne trovita~%"

#: guix/scripts/package.scm:391
#, scheme-format
msgid "looking for the latest release of GNU ~a..."
msgstr "ni serĉas la lastan eldonon de GNU ~a..."

#: guix/scripts/package.scm:395
#, scheme-format
msgid "~a: note: using ~a but ~a is available upstream~%"
msgstr "~a: rimarko: ni uzas ~a sed ~a disponeblas unuanivele~%"

#: guix/scripts/package.scm:467
#: guix/scripts/package.scm:390
#, scheme-format
msgid "The following environment variable definitions may be needed:~%"
msgstr "La jenaj medi-variablaj difinoj povos esti necesaj:~%"

#: guix/scripts/package.scm:483
#: guix/scripts/package.scm:406
msgid ""
"Usage: guix package [OPTION]... PACKAGES...\n"
"Install, remove, or upgrade PACKAGES in a single transaction.\n"


@@ 354,7 353,7 @@ msgstr ""
"Uzmaniero: guix package [MODIFILO]... PAKOJ...\n"
"Instalas, forigas, aŭ ĝisdatigas PAKOJn en ununura ago.\n"

#: guix/scripts/package.scm:485
#: guix/scripts/package.scm:408
msgid ""
"\n"
"  -i, --install=PACKAGE  install PACKAGE"


@@ 362,7 361,7 @@ msgstr ""
"\n"
"  -i, --install=PAKO     instali PAKOn"

#: guix/scripts/package.scm:487
#: guix/scripts/package.scm:410
msgid ""
"\n"
"  -e, --install-from-expression=EXP\n"


@@ 372,7 371,7 @@ msgstr ""
"  -e, --install-from-expression=ESP\n"
"                         instali la pakon ESP rezultas al"

#: guix/scripts/package.scm:490
#: guix/scripts/package.scm:413
msgid ""
"\n"
"  -r, --remove=PACKAGE   remove PACKAGE"


@@ 380,7 379,7 @@ msgstr ""
"\n"
"  -r, --remove=PAKO      forigi PAKOn"

#: guix/scripts/package.scm:492
#: guix/scripts/package.scm:415
msgid ""
"\n"
"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"


@@ 388,7 387,7 @@ msgstr ""
"\n"
"  -u, --upgrade[=REGESP] ĝisdatigi ĉiujn instalitajn pakojn kongruantajn al REGESP"

#: guix/scripts/package.scm:494
#: guix/scripts/package.scm:417
msgid ""
"\n"
"      --roll-back        roll back to the previous generation"


@@ 396,7 395,7 @@ msgstr ""
"\n"
"      --roll-back        retropaŝi al la antaŭa generacio"

#: guix/scripts/package.scm:496
#: guix/scripts/package.scm:419
msgid ""
"\n"
"      --search-paths     display needed environment variable definitions"


@@ 404,7 403,7 @@ msgstr ""
"\n"
"      --search-paths     montri necesajn medi-variablajn difinojn"

#: guix/scripts/package.scm:498
#: guix/scripts/package.scm:421
msgid ""
"\n"
"  -l, --list-generations[=PATTERN]\n"


@@ 414,7 413,7 @@ msgstr ""
"  -I, --list-generations[=ŜABLONO]\n"
"                         listigi generaciojn kongruantajn al ŜABLONO"

#: guix/scripts/package.scm:501
#: guix/scripts/package.scm:424
msgid ""
"\n"
"  -d, --delete-generations[=PATTERN]\n"


@@ 424,7 423,17 @@ msgstr ""
"  -d, --delete-generations[=ŜABLONO]\n"
"                         forigi generaciojn kongruantajn al ŜABLONO"

#: guix/scripts/package.scm:504
#: guix/scripts/package.scm:427
msgid ""
"\n"
"  -S, --switch-generation=PATTERN\n"
"                         switch to a generation matching PATTERN"
msgstr ""
"\n"
"  -S, --switch-generations=ŜABLONO\n"
"                         ŝalti al generacio kongruanta al ŜABLONO"

#: guix/scripts/package.scm:430
msgid ""
"\n"
"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"


@@ 432,7 441,7 @@ msgstr ""
"\n"
"  -p, --profile=PROFILO  uzi PROFILOn anstataŭ la apriora profilo de la uzanto"

#: guix/scripts/package.scm:507
#: guix/scripts/package.scm:433
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the profile"


@@ 440,7 449,7 @@ msgstr ""
"\n"
"      --bootstrap        uzi la praŝargilon Guile por konstrui la profilon"

#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
#: guix/scripts/package.scm:435 guix/scripts/pull.scm:74
msgid ""
"\n"
"      --verbose          produce verbose output"


@@ 448,7 457,7 @@ msgstr ""
"\n"
"      --verbose          produkti detalplenan eligon"

#: guix/scripts/package.scm:512
#: guix/scripts/package.scm:438
msgid ""
"\n"
"  -s, --search=REGEXP    search in synopsis and description using REGEXP"


@@ 456,7 465,7 @@ msgstr ""
"\n"
"  -s, --search=REGESP    serĉi en resumo kaj priskribo uzante REGESP"

#: guix/scripts/package.scm:514
#: guix/scripts/package.scm:440
msgid ""
"\n"
"  -I, --list-installed[=REGEXP]\n"


@@ 466,7 475,7 @@ msgstr ""
"  -I, --list-installed[=REGESP]\n"
"                         listigi instalitajn pakojn kongruantajn al REGESP"

#: guix/scripts/package.scm:517
#: guix/scripts/package.scm:443
msgid ""
"\n"
"  -A, --list-available[=REGEXP]\n"


@@ 476,71 485,72 @@ msgstr ""
"  -A, --list-available[=REGESP]\n"
"                         listigi disponeblajn pakojn kongruantajn al REGESP"

#: guix/scripts/package.scm:520
#, fuzzy
#: guix/scripts/package.scm:446
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=PAKO     instali PAKOn"
"  -show=PAKO             montri detalojn pri PAKO"

#: guix/scripts/package.scm:767
#: guix/scripts/package.scm:677
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr "~A: fremda argumento~%"

#: guix/scripts/package.scm:782
#: guix/scripts/package.scm:687
#, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%"

#: guix/scripts/package.scm:804
#: guix/scripts/package.scm:709
#, scheme-format
msgid "error: while creating directory `~a': ~a~%"
msgstr "eraro: dum kreo de dosierujo '~a': ~a~%"

#: guix/scripts/package.scm:808
#: guix/scripts/package.scm:713
#, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%"

#: guix/scripts/package.scm:815
#: guix/scripts/package.scm:720
#, scheme-format
msgid "error: directory `~a' is not owned by you~%"
msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%"

#: guix/scripts/package.scm:818
#: guix/scripts/package.scm:723
#, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%"

#: guix/scripts/package.scm:843
#: guix/scripts/package.scm:756
#, scheme-format
msgid "deleting ~a~%"
msgstr "ni forigas ~a~%"
msgid "cannot switch to generation '~a'~%"
msgstr "ne eblas ŝalti al generacio '~a'~%"

#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#: guix/scripts/package.scm:788 guix/scripts/package.scm:889
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "malvalida sintakso: ~a~%"

#: guix/scripts/package.scm:925
#: guix/scripts/package.scm:825
#, scheme-format
msgid "nothing to be done~%"
msgstr "nenio por fari~%"

#: guix/scripts/package.scm:948
#: guix/scripts/package.scm:840
#, scheme-format
msgid "~a package in profile~%"
msgstr "pako ~a en profilo~%"
msgid_plural "~a packages in profile~%"
msgstr[0] "pako ~a en profilo~%"
msgstr[1] "pakoj ~a en profilo~%"

#: guix/scripts/package.scm:963
#: guix/scripts/package.scm:855
#, scheme-format
msgid "Generation ~a\t~a"
msgstr "Generacio ~a\t~a"

#: guix/scripts/package.scm:970
#: guix/scripts/package.scm:862
#, scheme-format
msgid "~a\t(current)~%"
msgstr "~a\t(nuna)~%"


@@ 643,7 653,7 @@ msgstr ""
msgid "unrecognized option: ~a~%"
msgstr "nerekonata modifilo: ~a~%"

#: guix/scripts/hash.scm:134 guix/ui.scm:233
#: guix/scripts/hash.scm:134 guix/ui.scm:252
#, scheme-format
msgid "~a~%"
msgstr "~a~%"


@@ 653,7 663,7 @@ msgstr "~a~%"
msgid "wrong number of arguments~%"
msgstr "malĝusta nombro da argumentoj~%"

#: guix/scripts/pull.scm:73
#: guix/scripts/pull.scm:72
msgid ""
"Usage: guix pull [OPTION]...\n"
"Download and deploy the latest version of Guix.\n"


@@ 661,7 671,7 @@ msgstr ""
"Uzmaniero: guix pull [MODIFILO]...\n"
"Elŝuti kaj liveri la lastan version de Guix.\n"

#: guix/scripts/pull.scm:77
#: guix/scripts/pull.scm:76
msgid ""
"\n"
"      --url=URL          download the Guix tarball from URL"


@@ 669,7 679,7 @@ msgstr ""
"\n"
"      --url=URL          elŝuti la tar-dosiero de Guix el URL"

#: guix/scripts/pull.scm:79
#: guix/scripts/pull.scm:78
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the new Guix"


@@ 677,29 687,42 @@ msgstr ""
"\n"
"      --bootstrap        uzi la 'bootstrap' Guile por konstrui novan Guix"

#: guix/scripts/pull.scm:117
#: guix/scripts/pull.scm:132
msgid "tarball did not produce a single source directory"
msgstr "tarball ne produktis ununuran fontan dosierujon"

#: guix/scripts/pull.scm:150
#, scheme-format
msgid "~A: unexpected argument~%"
msgstr "~A: neatendita argumento~%"
msgid "unpacking '~a'...~%"
msgstr "malpakado de '~a'...~%"

#: guix/scripts/pull.scm:126
msgid "failed to download up-to-date source, exiting\n"
msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n"
#: guix/scripts/pull.scm:159
msgid "failed to unpack source code"
msgstr "ni malsukcesis malpaki font-kodon"

#: guix/scripts/pull.scm:145
#: guix/scripts/pull.scm:200
#, scheme-format
msgid "updated ~a successfully deployed under `~a'~%"
msgstr "ni ĝisdatigis ~a sukcese, liverita sur '~a'~%"

#: guix/scripts/pull.scm:148
#: guix/scripts/pull.scm:203
#, scheme-format
msgid "failed to update Guix, check the build log~%"
msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%"

#: guix/scripts/pull.scm:150
#: guix/scripts/pull.scm:205
msgid "Guix already up to date\n"
msgstr "Guix jam estas ĝisdata\n"

#: guix/scripts/pull.scm:215
#, scheme-format
msgid "~A: unexpected argument~%"
msgstr "~A: neatendita argumento~%"

#: guix/scripts/pull.scm:224
msgid "failed to download up-to-date source, exiting\n"
msgstr "fiasko dum elŝuto de aktuala fonto, ni ĉesas\n"

#: guix/scripts/substitute-binary.scm:80
#, scheme-format
msgid "authentication and authorization of substitutes disabled!~%"


@@ 775,12 798,12 @@ msgstr "Ni elŝutas, bonvolu atendi...~%"
msgid "(Please consider upgrading Guile to get proper progress report.)~%"
msgstr "(Bonvolu konsideri pri ĝisdatigo de Guile por havigi ĝustan progres-raporton.)~%"

#: guix/scripts/substitute-binary.scm:545
#: guix/scripts/substitute-binary.scm:541
#, scheme-format
msgid "host name lookup error: ~a~%"
msgstr "eraro en serĉado de gastigant-nomo: ~a~%"

#: guix/scripts/substitute-binary.scm:554
#: guix/scripts/substitute-binary.scm:550
msgid ""
"Usage: guix substitute-binary [OPTION]...\n"
"Internal tool to substitute a pre-built binary to a local build.\n"


@@ 788,7 811,7 @@ msgstr ""
"Uzmaniero: guix substitute-binary [MODIFILO]...\n"
"Interna ilo por anstataŭigi antaŭ-konstruitan duumaĵon al loka kompilaĵo.\n"

#: guix/scripts/substitute-binary.scm:556
#: guix/scripts/substitute-binary.scm:552
msgid ""
"\n"
"      --query            report on the availability of substitutes for the\n"


@@ 798,7 821,7 @@ msgstr ""
"      --query            raporti pri la disponebleco de anstataŭigoj por la\n"
"                         konservaj dosier-nomoj indikitaj per la ĉefenigujo"

#: guix/scripts/substitute-binary.scm:559
#: guix/scripts/substitute-binary.scm:555
msgid ""
"\n"
"      --substitute STORE-FILE DESTINATION\n"


@@ 810,16 833,21 @@ msgstr ""
"                         elŝuti KONSERV-DOSIEROn kaj konservi ĝin kiel Nar en la\n"
"                         dosiero CELO"

#: guix/scripts/substitute-binary.scm:604
#: guix/scripts/substitute-binary.scm:600
msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
msgstr "ACL por importo de arĥivoj ŝajnas esti ne-ekigita, anstataŭoj eble ne disponeblos\n"

#: guix/scripts/substitute-binary.scm:625
#: guix/scripts/substitute-binary.scm:634
#, scheme-format
msgid "these substitute URLs will not be used:~{ ~a~}~%"
msgstr "tiuj ĉi anstataŭigaj URL-oj ne estos uzataj:~{ ~a~}~%"

#: guix/scripts/substitute-binary.scm:660
#, scheme-format
msgid "failed to look up host '~a' (~a), substituter disabled~%"
msgstr "ni malsukcesis serĉi gastiganton '~a' (~a), anstataŭiganto estas malebligata~%"

#: guix/scripts/substitute-binary.scm:732
#: guix/scripts/substitute-binary.scm:767
#, scheme-format
msgid "~a: unrecognized options~%"
msgstr "~a: nerekonata modifiloj~%"


@@ 863,7 891,7 @@ msgstr "malĝustaj argumentoj"
msgid "failed to open operating system file '~a': ~a~%"
msgstr "fiasko dum malfermo de la operaci-sistema dosiero '~a': ~a~%"

#: guix/scripts/system.scm:78 guix/ui.scm:238
#: guix/scripts/system.scm:78 guix/ui.scm:258
#, scheme-format
msgid "~a: ~a~%"
msgstr "~a: ~a~%"


@@ 883,7 911,7 @@ msgstr "fiasko dum registro de '~a' sub '~a'~%"
msgid "initializing the current root file system~%"
msgstr "ekigado de la nuna radika dosiersistemo~%"

#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#: guix/scripts/system.scm:162 guix/scripts/system.scm:325
#, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%"


@@ 893,17 921,17 @@ msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%"
msgid "activating system...~%"
msgstr "ni aktivas la sistemon...~%"

#: guix/scripts/system.scm:236
#: guix/scripts/system.scm:239
#, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "nerekonataj ekŝargaj parametroj por '~a'~%"

#: guix/scripts/system.scm:323
#: guix/scripts/system.scm:330
#, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr "ni ekigas la operaci-sistemon sub '~a'...~%"

#: guix/scripts/system.scm:339
#: guix/scripts/system.scm:346
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"


@@ 911,35 939,35 @@ msgstr ""
"Uzmaniero: guix system [MODIFILO] AGO DOSIERO\n"
"Konstrui la operaci-sistemon deklarita en DOSIERO akorde al AGO.\n"

#: guix/scripts/system.scm:342
#: guix/scripts/system.scm:349
msgid "The valid values for ACTION are:\n"
msgstr "La validaj valoroj por AGO estas:\n"

#: guix/scripts/system.scm:343
#: guix/scripts/system.scm:350
msgid "  - 'reconfigure', switch to a new operating system configuration\n"
msgstr "  - 'reconfigure', alterni al nova operaci-sistema agordaro\n"

#: guix/scripts/system.scm:345
#: guix/scripts/system.scm:352
msgid "  - 'build', build the operating system without installing anything\n"
msgstr "  - 'build', konstrui la operaci-sistemon sen instali ion ajn\n"

#: guix/scripts/system.scm:347
#: guix/scripts/system.scm:354
msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
msgstr "  - 'vm', konstrui virtual-maŝinan bildon kiu kundividas la gastigantan memoron\n"

#: guix/scripts/system.scm:349
#: guix/scripts/system.scm:356
msgid "  - 'vm-image', build a freestanding virtual machine image\n"
msgstr "  - 'vm-image', konstrui memstaran virtual-maŝinan bildon\n"

#: guix/scripts/system.scm:351
#: guix/scripts/system.scm:358
msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr "  - 'disk-image', konstrui disk-bildon, taŭga por USB-memoro\n"

#: guix/scripts/system.scm:353
#: guix/scripts/system.scm:360
msgid "  - 'init', initialize a root file system to run GNU.\n"
msgstr "  - 'init', ekigi radikan dosiersistemon por lanĉi GNU-on.\n"

#: guix/scripts/system.scm:357
#: guix/scripts/system.scm:364
msgid ""
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"


@@ 947,7 975,7 @@ msgstr ""
"\n"
"      --image-size=GRANDO por 'vm-image', produkti bildon je GRANDO"

#: guix/scripts/system.scm:359
#: guix/scripts/system.scm:366
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"


@@ 955,21 983,86 @@ msgstr ""
"\n"
"      --no-grub          por 'init', ne instali GRUB"

#: guix/scripts/system.scm:422
#: guix/scripts/system.scm:368
msgid ""
"\n"
"      --full-boot        for 'vm', make a full boot sequence"
msgstr ""
"\n"
"      --full-boot        por 'vm', fari kompletan ekŝargan sekvon"

#: guix/scripts/system.scm:434
#, scheme-format
msgid "~a: unknown action~%"
msgstr "~a: nekonata pako~%"

#: guix/scripts/system.scm:439
#: guix/scripts/system.scm:451
#, scheme-format
msgid "wrong number of arguments for action '~a'~%"
msgstr "malĝusta nombro da argumentoj por la ago '~a'~%"

#: guix/scripts/system.scm:459
#: guix/scripts/system.scm:471
#, scheme-format
msgid "no configuration file specified~%"
msgstr "neniu agorda dosiero estis indikata~%"

#: guix/scripts/lint.scm:51
#, scheme-format
msgid "~a: ~a: ~a~%"
msgstr "~a: ~a: ~a~%"

#: guix/scripts/lint.scm:72
#, scheme-format
msgid "Available checkers:~%"
msgstr "Disponeblaj kontroliloj:~%"

#: guix/scripts/lint.scm:226
msgid "Validate package descriptions"
msgstr "Validigi pak-priskribojn"

#: guix/scripts/lint.scm:230
msgid "Identify inputs that should be native inputs"
msgstr "Identigi enigojn kiuj devus esti originalaj enigoj"

#: guix/scripts/lint.scm:234
msgid "Validate filenames of patches"
msgstr "Validigi dosiernomojn de flikaĵoj"

#: guix/scripts/lint.scm:238
msgid "Validate package synopsis"
msgstr "Validigi pak-resumojn"

#: guix/scripts/lint.scm:257
msgid ""
"Usage: guix lint [OPTION]... [PACKAGE]...\n"
"Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n"
msgstr ""
"Uzmaniero: guix lint [MODIFILO]... [PAKO]...\n"
"Lanĉi aron da kontroliloj por la indikita pako; se neniu estas indikita, lanĉi la konstrolilojn por ĉiuj pakoj.\n"

#: guix/scripts/lint.scm:259
msgid ""
"\n"
"  -c, --checkers=CHECKER1,CHECKER2...\n"
"                         only run the specificed checkers"
msgstr ""
"\n"
"  -c, --checkers=KONTROL1,KONTROL2...\n"
"                         nur lanĉi la indikitajn kontrolilojn"

#: guix/scripts/lint.scm:264
msgid ""
"\n"
"  -l, --list-checkers    display the list of available lint checkers"
msgstr ""
"\n"
"  -l, --list-checkers    montri la liston de disponeblaj kontroliloj"

#: guix/scripts/lint.scm:283
#, scheme-format
msgid "~a: invalid checker"
msgstr "~a: malvalida kontrolilo"

#: guix/gnu-maintenance.scm:373
#, scheme-format
msgid "signature verification failed for `~a'~%"


@@ 990,12 1083,12 @@ msgstr "~a: ne eblis trovi fontan dosieron"
msgid "~a: ~a: no `version' field in source; skipping~%"
msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%"

#: guix/ui.scm:131
#: guix/ui.scm:135
#, scheme-format
msgid "failed to install locale: ~a~%"
msgstr "fiasko dum instalo de lokaĵaro: ~a~%"

#: guix/ui.scm:150
#: guix/ui.scm:154
msgid ""
"Copyright (C) 2014 the Guix authors\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"


@@ 1007,7 1100,7 @@ msgstr ""
"Tio ĉi estas libera programaro: vi estas libera por modifi kaj redisdoni ĝin.\n"
"Estas NENIU GARANTIO, plejamplekse permesate de leĝoj.\n"

#: guix/ui.scm:158
#: guix/ui.scm:162
#, scheme-format
msgid ""
"\n"


@@ 1016,7 1109,7 @@ msgstr ""
"\n"
"Raportu program-misojn al: ~a."

#: guix/ui.scm:160
#: guix/ui.scm:164
#, scheme-format
msgid ""
"\n"


@@ 1025,7 1118,7 @@ msgstr ""
"\n"
"hejm-paĝo de ~a: <~a>"

#: guix/ui.scm:162
#: guix/ui.scm:166
msgid ""
"\n"
"General help using GNU software: <http://www.gnu.org/gethelp/>"


@@ 1033,100 1126,160 @@ msgstr ""
"\n"
"Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>"

#: guix/ui.scm:169
#: guix/ui.scm:173
#, scheme-format
msgid "~a: invalid number~%"
msgstr "~a: malvalida numero~%"

#: guix/ui.scm:186
#: guix/ui.scm:190
#, scheme-format
msgid "invalid number: ~a~%"
msgstr "malvalida numero: ~a~%"

#: guix/ui.scm:201
#: guix/ui.scm:213
#, scheme-format
msgid "unknown unit: ~a~%"
msgstr "nekonata unuo: ~a~%"

#: guix/ui.scm:212
#: guix/ui.scm:224
#, scheme-format
msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%"

#: guix/ui.scm:219
#: guix/ui.scm:231
#, scheme-format
msgid "~a: ~a: build system `~a' does not support cross builds~%"
msgstr "~a: ~a: konstrui sistemon '~a' ne subtenas crucajn konstruojn~%"

#: guix/ui.scm:224
#: guix/ui.scm:236
#, scheme-format
msgid "profile '~a' does not exist~%"
msgstr "profilo '~a' ne ekzistas~%"

#: guix/ui.scm:239
#, scheme-format
msgid "generation ~a of profile '~a' does not exist~%"
msgstr "generacio ~a de la profilo '~a' ne ekzistas~%"

#: guix/ui.scm:243
#, scheme-format
msgid "failed to connect to `~a': ~a~%"
msgstr "fiasko dum konekto al '~a': ~a~%"

#: guix/ui.scm:229
#: guix/ui.scm:248
#, scheme-format
msgid "build failed: ~a~%"
msgstr "konstruo fiakis: ~a~%"

#: guix/ui.scm:257
#: guix/ui.scm:277
#, scheme-format
msgid "failed to read expression ~s: ~s~%"
msgstr "fiasko dum lego de esprimo ~s: ~s~%"

#: guix/ui.scm:263
#: guix/ui.scm:283
#, scheme-format
msgid "failed to evaluate expression `~a': ~s~%"
msgstr "fiasko dum analizo de esprimo '~a': ~a~%"

#: guix/ui.scm:272
#: guix/ui.scm:292
#, scheme-format
msgid "expression ~s does not evaluate to a package~%"
msgstr "la esprimo ~s ne rezultas pakon~%"

#: guix/ui.scm:319
#: guix/ui.scm:339
#, scheme-format
msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
msgstr "~:[La jena derivo povus esti konstruata:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following derivations would be built:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[La jena derivo estus konstruata:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[La jenaj derivoj estus konstruataj:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:324
#: guix/ui.scm:344
#, scheme-format
msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[La jena derivo povus esti elŝutata:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following files would be downloaded:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[La jena derivo estus elŝutata:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[La jenaj derivoj estus elŝutataj:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:330
#: guix/ui.scm:350
#, scheme-format
msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
msgstr "~:[La jena derivo estos esti konstruata:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following derivations will be built:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[La jena derivo estos konstruata:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[La jenaj derivoj estos konstruataj:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:335
#: guix/ui.scm:355
#, scheme-format
msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[La jena derivo estos esti elŝutata:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following files will be downloaded:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[La jena derivo estos elŝutata:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[La jenaj derivoj estos elŝutataj:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:407
#, scheme-format
msgid "The following package would be removed:~%~{~a~%~}~%"
msgid_plural "The following packages would be removed:~%~{~a~%~}~%"
msgstr[0] "La jena pako estus forigata:~%~{~a~%~}~%"
msgstr[1] "La jenaj pakoj estus forigataj:~%~{~a~%~}~%"

#: guix/ui.scm:412
#, scheme-format
msgid "The following package will be removed:~%~{~a~%~}~%"
msgid_plural "The following packages will be removed:~%~{~a~%~}~%"
msgstr[0] "La jena pako estos forigata:~%~{~a~%~}~%"
msgstr[1] "La jenaj pakoj estos forigataj:~%~{~a~%~}~%"

#: guix/ui.scm:425
#, scheme-format
msgid "The following package would be upgraded:~%~{~a~%~}~%"
msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%"
msgstr[0] "La jena pako estus ĝisdatigata:~%~{~a~%~}~%"
msgstr[1] "La jenaj pakoj estus ĝisdatigataj:~%~{~a~%~}~%"

#: guix/ui.scm:430
#, scheme-format
msgid "The following package will be upgraded:~%~{~a~%~}~%"
msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%"
msgstr[0] "La jena pako estos ĝisdatigata:~%~{~a~%~}~%"
msgstr[1] "La jenaj pakoj estos ĝisdatigataj:~%~{~a~%~}~%"

#: guix/ui.scm:441
#, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%"
msgid_plural "The following packages would be installed:~%~{~a~%~}~%"
msgstr[0] "La jena pako estus instalata:~% ~{~a~%~}~%"
msgstr[1] "La jenaj pakoj estus instalataj:~% ~{~a~%~}~%"

#: guix/ui.scm:446
#, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%"
msgid_plural "The following packages will be installed:~%~{~a~%~}~%"
msgstr[0] "La jena pako estos instalata:~% ~{~a~%~}~%"
msgstr[1] "La jenaj pakoj estos instalataj:~% ~{~a~%~}~%"

#: guix/ui.scm:352
#: guix/ui.scm:463
msgid "<unknown location>"
msgstr "<nekonata loko>"

#: guix/ui.scm:380
#: guix/ui.scm:489
#, scheme-format
msgid "failed to create configuration directory `~a': ~a~%"
msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%"

#: guix/ui.scm:475 guix/ui.scm:489
#: guix/ui.scm:589 guix/ui.scm:603
msgid "unknown"
msgstr "nekonata"

#: guix/ui.scm:598
#: guix/ui.scm:712
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "malvalida argumento: ~a~%"

#: guix/ui.scm:603
#: guix/ui.scm:717
#, scheme-format
msgid "Try `guix --help' for more information.~%"
msgstr "Provu 'guix --help' por pli da informo.~%"

#: guix/ui.scm:633
#: guix/ui.scm:747
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"


@@ 1134,21 1287,21 @@ msgstr ""
"Uzmaniero: guix KOMANDO ARGj...\n"
"Lanĉas KOMANDOn kun ARGj.\n"

#: guix/ui.scm:636
#: guix/ui.scm:750
msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n"

#: guix/ui.scm:656
#: guix/ui.scm:770
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: komando ne trovita~%"

#: guix/ui.scm:674
#: guix/ui.scm:788
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: mankas komanda nomo~%"

#: guix/ui.scm:682
#: guix/ui.scm:796
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: nerekonata modifilo: '~a'~%"


@@ 1172,84 1325,75 @@ msgstr "ni sekvas la redirektigon al '~a'...~%"
msgid "download failed"
msgstr "elŝuto fiaskis"

#: guix/nar.scm:134
msgid "unexpected executable file marker"
msgstr "neatendita rul-dosiera markilo"

#: guix/nar.scm:141
msgid "unsupported nar file type"
msgstr "nesubtenata dosier-tipo nar"

#: guix/nar.scm:209
msgid "unsupported file type"
msgstr "nesubtenata dosier-tipo"

#: guix/nar.scm:219
msgid "invalid nar signature"
msgstr "malvalida subskribo nar"

#: guix/nar.scm:230
msgid "invalid nar end-of-file marker"
msgstr "malvalida dosierfina markilo nar"

#: guix/nar.scm:244
msgid "invalid symlink tokens"
msgstr "malvalidaj simbol-ligaj ĵetonoj"

#: guix/nar.scm:263
msgid "unexpected directory entry termination"
msgstr "neatendita fino de dosieruja enigo"

#: guix/nar.scm:272
msgid "unexpected directory inter-entry marker"
msgstr "neatendita dosieruja inter-eniga markilo"

#: guix/nar.scm:277
msgid "unsupported nar entry type"
msgstr "nesubtenata enig-tipo nar"

#: guix/nar.scm:376
#: guix/nar.scm:155
msgid "signature is not a valid s-expression"
msgstr "subskribo ne estas valida s-esprimo"

#: guix/nar.scm:385
#: guix/nar.scm:164
msgid "invalid signature"
msgstr "nevalida subskribo"

#: guix/nar.scm:389
#: guix/nar.scm:168
msgid "invalid hash"
msgstr "nevalida haketo"

#: guix/nar.scm:397
#: guix/nar.scm:176
msgid "unauthorized public key"
msgstr "nerajtigita publika ŝlosilo"

#: guix/nar.scm:402
#: guix/nar.scm:181
msgid "corrupt signature data"
msgstr "difektita subskriba datumaro"

#: guix/nar.scm:422
#: guix/nar.scm:201
msgid "corrupt file set archive"
msgstr "difektita arĥivo de dosier-grupo"

#: guix/nar.scm:432
#: guix/nar.scm:211
#, scheme-format
msgid "importing file or directory '~a'...~%"
msgstr "ni importas dosieron aŭ dosierujon '~a'...~%"

#: guix/nar.scm:441
#: guix/nar.scm:220
#, scheme-format
msgid "found valid signature for '~a'~%"
msgstr "ni trovis validan subskribon por '~a'~%"

#: guix/nar.scm:448
#: guix/nar.scm:227
msgid "imported file lacks a signature"
msgstr "importita dosiero malhavas subskribon"

#: guix/nar.scm:487
#: guix/nar.scm:266
msgid "invalid inter-file archive mark"
msgstr "malvalida inter-dosiera arĥiva marko"

#~ msgid "unexpected executable file marker"
#~ msgstr "neatendita rul-dosiera markilo"

#~ msgid "unsupported nar file type"
#~ msgstr "nesubtenata dosier-tipo nar"

#~ msgid "unsupported file type"
#~ msgstr "nesubtenata dosier-tipo"

#~ msgid "invalid nar signature"
#~ msgstr "malvalida subskribo nar"

#~ msgid "invalid nar end-of-file marker"
#~ msgstr "malvalida dosierfina markilo nar"

#~ msgid "invalid symlink tokens"
#~ msgstr "malvalidaj simbol-ligaj ĵetonoj"

#~ msgid "unexpected directory entry termination"
#~ msgstr "neatendita fino de dosieruja enigo"

#~ msgid "unexpected directory inter-entry marker"
#~ msgstr "neatendita dosieruja inter-eniga markilo"

#~ msgid "unsupported nar entry type"
#~ msgstr "nesubtenata enig-tipo nar"

#~ msgid "Hello, GNU world: An example GNU package"
#~ msgstr "Saluton, mondo GNU: ekzemplo de pako GNU"


M po/guix/hu.po => po/guix/hu.po +373 -230
@@ 5,10 5,10 @@
# Balázs Úr <urbalazs@gmail.com>, 2014.
msgid ""
msgstr ""
"Project-Id-Version: guix 0.7-pre1\n"
"Project-Id-Version: guix 0.8\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-07-25 00:55+0200\n"
"PO-Revision-Date: 2014-07-18 17:37+0200\n"
"POT-Creation-Date: 2014-11-09 22:32+0100\n"
"PO-Revision-Date: 2014-12-03 21:49+0100\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
"Language: hu\n"


@@ 18,37 18,55 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 1.5\n"

#: gnu/packages.scm:102
#: gnu/packages.scm:120
#, scheme-format
msgid "cannot access `~a': ~a~%"
msgstr "nem sikerült elérni: „~a”: ~a~%"

#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
#: gnu/packages.scm:350
#, scheme-format
msgid "looking for the latest release of GNU ~a..."
msgstr "a GNU ~a legutóbbi kiadásának keresése…"

#: gnu/packages.scm:354
#, scheme-format
msgid "~a: note: using ~a but ~a is available upstream~%"
msgstr "~a: megjegyzés: ~a használata, de ~a elérhető a tárolóban~%"

#: gnu/packages.scm:376 guix/scripts/package.scm:305
#, scheme-format
msgid "ambiguous package specification `~a'~%"
msgstr "nem egyértelmű csomag specifikáció: „~a”~%"

#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
#: gnu/packages.scm:377 guix/scripts/package.scm:307
#, scheme-format
msgid "choosing ~a from ~a~%"
msgstr "~a választása innen: ~a~%"

#: guix/scripts/build.scm:61
#: gnu/packages.scm:383
#, scheme-format
msgid "~A: package not found for version ~a~%"
msgstr "~A: nem található csomag ehhez a verzióhoz: ~a~%"

#: guix/scripts/build.scm:63
#: gnu/packages.scm:385
#, scheme-format
msgid "~A: unknown package~%"
msgstr "~A: ismeretlen csomag~%"

#: guix/scripts/build.scm:86
#: guix/scripts/build.scm:65
#, scheme-format
msgid "failed to create GC root `~a': ~a~%"
msgstr "nem sikerült a GC gyökér létrehozása: „~a”: ~a~%"

#: guix/scripts/build.scm:123
#: guix/scripts/build.scm:102
msgid ""
"\n"
"  -L, --load-path=DIR    prepend DIR to the package module search path"
msgstr ""
"\n"
"  -L, --load-path=KVT    KVT beszúrása a csomag modul keresési útvonalhoz"

#: guix/scripts/build.scm:104
msgid ""
"\n"
"  -K, --keep-failed      keep build tree of failed builds"


@@ 57,7 75,7 @@ msgstr ""
"  -K, --keep-failed      sikertelen összeállítások összeállítási fájának\n"
"                         megtartása"

#: guix/scripts/build.scm:125
#: guix/scripts/build.scm:106
msgid ""
"\n"
"  -n, --dry-run          do not build the derivations"


@@ 65,7 83,7 @@ msgstr ""
"\n"
"  -n, --dry-run          ne állítsa össze a származékokat"

#: guix/scripts/build.scm:127
#: guix/scripts/build.scm:108
msgid ""
"\n"
"      --fallback         fall back to building when the substituter fails"


@@ 74,7 92,7 @@ msgstr ""
"      --fallback         térjen vissza az összeállításra, ha a helyettesítő\n"
"                         sikertelen"

#: guix/scripts/build.scm:129
#: guix/scripts/build.scm:110
msgid ""
"\n"
"      --no-substitutes   build instead of resorting to pre-built substitutes"


@@ 83,7 101,7 @@ msgstr ""
"      --no-substitutes   összeállítás az előre összeállított helyettesítők\n"
"                         felhasználása helyett"

#: guix/scripts/build.scm:131
#: guix/scripts/build.scm:112
msgid ""
"\n"
"      --no-build-hook    do not attempt to offload builds via the build hook"


@@ 92,7 110,7 @@ msgstr ""
"      --no-build-hook    ne próbáljon meg összeállításokat tehermentesíteni\n"
"                         az összeállítási hurkon keresztül"

#: guix/scripts/build.scm:133
#: guix/scripts/build.scm:114
msgid ""
"\n"
"      --max-silent-time=SECONDS\n"


@@ 103,7 121,7 @@ msgstr ""
"                         az összeállítás sikertelennek jelölése MÁSODPERC\n"
"                         hallgatás után"

#: guix/scripts/build.scm:136
#: guix/scripts/build.scm:117
msgid ""
"\n"
"      --timeout=SECONDS  mark the build as failed after SECONDS of activity"


@@ 112,7 130,7 @@ msgstr ""
"      --timeout=MÁSODPERC  az összeállítás sikertelennek jelölése MÁSODPERC\n"
"                         aktivitás után"

#: guix/scripts/build.scm:138
#: guix/scripts/build.scm:119
msgid ""
"\n"
"      --verbosity=LEVEL  use the given verbosity LEVEL"


@@ 120,7 138,7 @@ msgstr ""
"\n"
"      --verbosity=SZINT  a megadott bőbeszédűségi SZINT használata"

#: guix/scripts/build.scm:140
#: guix/scripts/build.scm:121
msgid ""
"\n"
"  -c, --cores=N          allow the use of up to N CPU cores for the build"


@@ 129,12 147,12 @@ msgstr ""
"  -c, --cores=N          legfeljebb N CPU-mag használatának engedélyezése\n"
"                         az összeállításhoz"

#: guix/scripts/build.scm:206
#: guix/scripts/build.scm:195
#, scheme-format
msgid "~a: not a number~%"
msgstr "~a: nem szám~%"

#: guix/scripts/build.scm:223
#: guix/scripts/build.scm:213
msgid ""
"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"


@@ 143,7 161,7 @@ msgstr ""
"A megadott CSOMAG-VAGY-SZÁRMAZTATOTT összeállítása, és a kimeneti elérési\n"
"útjaik visszaadása.\n"

#: guix/scripts/build.scm:225
#: guix/scripts/build.scm:215
msgid ""
"\n"
"  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"


@@ 152,7 170,7 @@ msgstr ""
"  -e, --expression=KIF   a csomag vagy a kiértékelt származtatott KIF\n"
"                         összeállítása"

#: guix/scripts/build.scm:227
#: guix/scripts/build.scm:217
msgid ""
"\n"
"  -S, --source           build the packages' source derivations"


@@ 160,7 178,7 @@ msgstr ""
"\n"
"  -S, --source           a csomagok forrásszármazékainak összeállítása"

#: guix/scripts/build.scm:229
#: guix/scripts/build.scm:219
msgid ""
"\n"
"  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""


@@ 169,7 187,7 @@ msgstr ""
"  -s, --system=RENDSZER  kísérlet a RENDSZERRE történő összeállításra,\n"
"                         például „i686-linux”"

#: guix/scripts/build.scm:231
#: guix/scripts/build.scm:221
msgid ""
"\n"
"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""


@@ 178,7 196,7 @@ msgstr ""
"      --target=HÁRMAS    kereszt összeállítás a HÁRMASRA, például\n"
"                         „armel-linux-gnu”"

#: guix/scripts/build.scm:233
#: guix/scripts/build.scm:223
msgid ""
"\n"
"      --with-source=SOURCE\n"


@@ 188,7 206,15 @@ msgstr ""
"      --with-source=FORRÁS\n"
"                         FORRÁS használata a megfelelő csomag összeállításakor"

#: guix/scripts/build.scm:236
#: guix/scripts/build.scm:226
msgid ""
"\n"
"      --no-grafts        do not graft packages"
msgstr ""
"\n"
"      --no-grafts        ne oltsa be a csomagokat"

#: guix/scripts/build.scm:228
msgid ""
"\n"
"  -d, --derivations      return the derivation paths of the given packages"


@@ 196,7 222,7 @@ msgstr ""
"\n"
"  -d, --derivations      a megadott csomagok származék-útvonalának visszaadása"

#: guix/scripts/build.scm:238
#: guix/scripts/build.scm:230
msgid ""
"\n"
"  -r, --root=FILE        make FILE a symlink to the result, and register it\n"


@@ 206,7 232,7 @@ msgstr ""
"  -r, --root=FÁJL        a FÁJL az eredmény egy szimbolikus linkje legyen,\n"
"                         és regisztrálja gyökér szemétgyűjtőként"

#: guix/scripts/build.scm:241
#: guix/scripts/build.scm:233
msgid ""
"\n"
"      --log-file         return the log file names for the given derivations"


@@ 214,10 240,11 @@ msgstr ""
"\n"
"      --log-file         a megadott származékok naplófájl-neveinek visszaadása"

#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
#: guix/scripts/build.scm:238 guix/scripts/download.scm:53
#: guix/scripts/package.scm:451 guix/scripts/gc.scm:58
#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:81
#: guix/scripts/substitute-binary.scm:560 guix/scripts/system.scm:371
#: guix/scripts/lint.scm:262
msgid ""
"\n"
"  -h, --help             display this help and exit"


@@ 225,10 252,11 @@ msgstr ""
"\n"
"  -h, --help             ezen súgó megjelenítése és kilépés"

#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
#: guix/scripts/build.scm:240 guix/scripts/download.scm:55
#: guix/scripts/package.scm:453 guix/scripts/gc.scm:60
#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:83
#: guix/scripts/substitute-binary.scm:562 guix/scripts/system.scm:373
#: guix/scripts/lint.scm:266
msgid ""
"\n"
"  -V, --version          display version information and exit"


@@ 236,19 264,20 @@ msgstr ""
"\n"
"  -V, --version          verzióinformációk megjelenítése és kilépés"

#: guix/scripts/build.scm:368
#: guix/scripts/build.scm:366
#, scheme-format
msgid "sources do not match any package:~{ ~a~}~%"
msgstr "a források nem illeszkednek semmilyen csomagra:~{ ~a~}~%"

#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#: guix/scripts/build.scm:395 guix/scripts/download.scm:96
#: guix/scripts/package.scm:673 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:213 guix/scripts/system.scm:426
#: guix/scripts/lint.scm:313
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: ismeretlen kapcsoló~%"

#: guix/scripts/build.scm:425
#: guix/scripts/build.scm:423
#, scheme-format
msgid "no build log for '~a'~%"
msgstr "nincs összeállítási napló ehhez: „~a”~%"


@@ 292,73 321,42 @@ msgstr "~a: az URI feldolgozása sikertelen~%"
msgid "~a: download failed~%"
msgstr "~a: letöltés sikertelen~%"

#: guix/scripts/package.scm:88
#: guix/scripts/package.scm:97
#, scheme-format
msgid "failed to build the empty profile~%"
msgstr "az üres profil összeállítása sikertelen~%"

#: guix/scripts/package.scm:97
#: guix/scripts/package.scm:113
#, scheme-format
msgid "switching from generation ~a to ~a~%"
msgstr "átváltás a(z) ~a generációról erre: ~a~%"

#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:985
#, scheme-format
msgid "profile '~a' does not exist~%"
msgstr "a(z) „~a” profil nem létezik~%"

#: guix/scripts/package.scm:112
#: guix/scripts/package.scm:132
#, scheme-format
msgid "nothing to do: already at the empty profile~%"
msgstr "nincs mit tenni: már az üres profilnál van~%"

#: guix/scripts/package.scm:197
#, scheme-format
msgid "The following package would be removed:~%~{~a~%~}~%"
msgstr "A következő csomagot el kellene távolítani:~%~{~a~%~}~%"

#: guix/scripts/package.scm:202
#, scheme-format
msgid "The following package will be removed:~%~{~a~%~}~%"
msgstr "A következő csomag el lesz távolítva:~%~{~a~%~}~%"

#: guix/scripts/package.scm:214
#, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%"
msgstr "A következő csomagot telepíteni kellene:~%~{~a~%~}~%"

#: guix/scripts/package.scm:219
#: guix/scripts/package.scm:144
#, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%"
msgstr "A következő csomag telepítve lesz:~%~{~a~%~}~%"
msgid "deleting ~a~%"
msgstr "~a törlése~%"

#: guix/scripts/package.scm:339
#: guix/scripts/package.scm:295
#, scheme-format
msgid "package `~a' lacks output `~a'~%"
msgstr "a(z) „~a” csomag hiányolja a kimenetet: „~a”~%"

#: guix/scripts/package.scm:356
#: guix/scripts/package.scm:312
#, scheme-format
msgid "~a: package not found~%"
msgstr "~a: a csomag nem található~%"

#: guix/scripts/package.scm:391
#, scheme-format
msgid "looking for the latest release of GNU ~a..."
msgstr "a GNU ~a legutóbbi kiadásának keresése…"

#: guix/scripts/package.scm:395
#, scheme-format
msgid "~a: note: using ~a but ~a is available upstream~%"
msgstr "~a: megjegyzés: ~a használata, de ~a elérhető a tárolóban~%"

#: guix/scripts/package.scm:467
#: guix/scripts/package.scm:390
#, scheme-format
msgid "The following environment variable definitions may be needed:~%"
msgstr "A következő környezeti változó meghatározások lehetnek szükségesek:~%"

#: guix/scripts/package.scm:483
#: guix/scripts/package.scm:406
msgid ""
"Usage: guix package [OPTION]... PACKAGES...\n"
"Install, remove, or upgrade PACKAGES in a single transaction.\n"


@@ 366,7 364,7 @@ msgstr ""
"Használat: guix package [KAPCSOLÓ]… CSOMAGOK…\n"
"CSOMAGOK telepítése, eltávolítása vagy frissítése egyetlen tranzakcióban.\n"

#: guix/scripts/package.scm:485
#: guix/scripts/package.scm:408
msgid ""
"\n"
"  -i, --install=PACKAGE  install PACKAGE"


@@ 374,7 372,7 @@ msgstr ""
"\n"
"  -i, --install=CSOMAG   CSOMAG telepítése"

#: guix/scripts/package.scm:487
#: guix/scripts/package.scm:410
msgid ""
"\n"
"  -e, --install-from-expression=EXP\n"


@@ 384,7 382,7 @@ msgstr ""
"  -e, --install-from-expression=KIF\n"
"                         a kiértékelt KIF csomag telepítése"

#: guix/scripts/package.scm:490
#: guix/scripts/package.scm:413
msgid ""
"\n"
"  -r, --remove=PACKAGE   remove PACKAGE"


@@ 392,7 390,7 @@ msgstr ""
"\n"
"  -r, --remove=CSOMAG    CSOMAG eltávolítása"

#: guix/scripts/package.scm:492
#: guix/scripts/package.scm:415
msgid ""
"\n"
"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"


@@ 401,7 399,7 @@ msgstr ""
"  -u, --upgrade[=REGKIF] az összes REGKIF-re illeszkedő telepített csomag\n"
"                         frissítése"

#: guix/scripts/package.scm:494
#: guix/scripts/package.scm:417
msgid ""
"\n"
"      --roll-back        roll back to the previous generation"


@@ 409,7 407,7 @@ msgstr ""
"\n"
"      --roll-back        visszagörgetés az előző generációra"

#: guix/scripts/package.scm:496
#: guix/scripts/package.scm:419
msgid ""
"\n"
"      --search-paths     display needed environment variable definitions"


@@ 418,7 416,7 @@ msgstr ""
"      --search-paths     a szükséges környezeti változó meghatározások\n"
"                         megjelenítése"

#: guix/scripts/package.scm:498
#: guix/scripts/package.scm:421
msgid ""
"\n"
"  -l, --list-generations[=PATTERN]\n"


@@ 428,7 426,7 @@ msgstr ""
"  -l, --list-generations[=MINTA]\n"
"                         a MINTÁRA illeszkedő generációk listázása"

#: guix/scripts/package.scm:501
#: guix/scripts/package.scm:424
msgid ""
"\n"
"  -d, --delete-generations[=PATTERN]\n"


@@ 438,7 436,17 @@ msgstr ""
"  -d, --delete-generations[=MINTA]\n"
"                         a MINTÁRA illeszkedő generációk törlése"

#: guix/scripts/package.scm:504
#: guix/scripts/package.scm:427
msgid ""
"\n"
"  -S, --switch-generation=PATTERN\n"
"                         switch to a generation matching PATTERN"
msgstr ""
"\n"
"  -S, --switch-generation=MINTA\n"
"                         átváltás a MINTÁRA illeszkedő generációra"

#: guix/scripts/package.scm:430
msgid ""
"\n"
"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"


@@ 447,7 455,7 @@ msgstr ""
"  -p, --profile=PROFIL   a PROFIL használata a felhasználó alapértelmezett\n"
"                         profilja helyett"

#: guix/scripts/package.scm:507
#: guix/scripts/package.scm:433
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the profile"


@@ 456,7 464,7 @@ msgstr ""
"      --bootstrap        a Guile rendszertöltő használata a profil\n"
"                         összeállításához"

#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
#: guix/scripts/package.scm:435 guix/scripts/pull.scm:74
msgid ""
"\n"
"      --verbose          produce verbose output"


@@ 464,7 472,7 @@ msgstr ""
"\n"
"      --verbose          bőbeszédű kimenet előállítása"

#: guix/scripts/package.scm:512
#: guix/scripts/package.scm:438
msgid ""
"\n"
"  -s, --search=REGEXP    search in synopsis and description using REGEXP"


@@ 473,7 481,7 @@ msgstr ""
"  -s, --search=REGKIF    keresés az összegzésben és a leírásban REGKIF\n"
"                         használatával"

#: guix/scripts/package.scm:514
#: guix/scripts/package.scm:440
msgid ""
"\n"
"  -I, --list-installed[=REGEXP]\n"


@@ 483,7 491,7 @@ msgstr ""
"  -I, --list-installed[=REGKIF]\n"
"                         a REGKIF-re illeszkedő telepített csomagok listázása"

#: guix/scripts/package.scm:517
#: guix/scripts/package.scm:443
msgid ""
"\n"
"  -A, --list-available[=REGEXP]\n"


@@ 493,73 501,74 @@ msgstr ""
"  -A, --list-available[=REGKIF]\n"
"                         a REGKIF-re illeszkedő elérhető csomagok listázása"

#: guix/scripts/package.scm:520
#, fuzzy
#: guix/scripts/package.scm:446
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=CSOMAG   CSOMAG telepítése"
"  --show=CSOMAG          a CSOMAG részleteinek megjelenítése"

#: guix/scripts/package.scm:767
#: guix/scripts/package.scm:677
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr "~A: nem odatartozó argumentum~%"

#: guix/scripts/package.scm:782
#: guix/scripts/package.scm:687
#, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr ""
"További információkért próbálja az „info '(guix) Invoking guix package'”\n"
"parancsot.~%"

#: guix/scripts/package.scm:804
#: guix/scripts/package.scm:709
#, scheme-format
msgid "error: while creating directory `~a': ~a~%"
msgstr "hiba: a(z) „~a” könyvtár létrehozása közben: ~a~%"

#: guix/scripts/package.scm:808
#: guix/scripts/package.scm:713
#, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr "Hozza létre a(z) „~a” könyvtárat az ön nevében, tulajdonosként.~%"

#: guix/scripts/package.scm:815
#: guix/scripts/package.scm:720
#, scheme-format
msgid "error: directory `~a' is not owned by you~%"
msgstr "hiba: a(z) „~a” könyvtárnak nem ön a tulajdonosa~%"

#: guix/scripts/package.scm:818
#: guix/scripts/package.scm:723
#, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "Változtassa meg a(z) „~a” tulajdonosát erre a felhasználóra: ~s.~%"

#: guix/scripts/package.scm:843
#: guix/scripts/package.scm:756
#, scheme-format
msgid "deleting ~a~%"
msgstr "~a törlése~%"
msgid "cannot switch to generation '~a'~%"
msgstr "nem sikerült átváltani erre a generációra: „~a”~%"

#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#: guix/scripts/package.scm:788 guix/scripts/package.scm:889
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "érvénytelen szintaxis: ~a~%"

#: guix/scripts/package.scm:925
#: guix/scripts/package.scm:825
#, scheme-format
msgid "nothing to be done~%"
msgstr "nincs mit tenni~%"

#: guix/scripts/package.scm:948
#: guix/scripts/package.scm:840
#, scheme-format
msgid "~a package in profile~%"
msgstr "~a csomag a profilban~%"
msgid_plural "~a packages in profile~%"
msgstr[0] "~a csomag a profilban~%"
msgstr[1] "~a csomag a profilban~%"

#: guix/scripts/package.scm:963
#: guix/scripts/package.scm:855
#, scheme-format
msgid "Generation ~a\t~a"
msgstr "~a generáció\t~a"

#: guix/scripts/package.scm:970
#: guix/scripts/package.scm:862
#, scheme-format
msgid "~a\t(current)~%"
msgstr "~a\t(jelenlegi)~%"


@@ 662,7 671,7 @@ msgstr ""
msgid "unrecognized option: ~a~%"
msgstr "ismeretlen kapcsoló: ~a~%"

#: guix/scripts/hash.scm:134 guix/ui.scm:233
#: guix/scripts/hash.scm:134 guix/ui.scm:252
#, scheme-format
msgid "~a~%"
msgstr "~a~%"


@@ 672,7 681,7 @@ msgstr "~a~%"
msgid "wrong number of arguments~%"
msgstr "nem megfelelő számú argumentum~%"

#: guix/scripts/pull.scm:73
#: guix/scripts/pull.scm:72
msgid ""
"Usage: guix pull [OPTION]...\n"
"Download and deploy the latest version of Guix.\n"


@@ 680,7 689,7 @@ msgstr ""
"Használat: guix pull [KAPCSOLÓ]…\n"
"A Guix legújabb verziójának letöltése és telepítése.\n"

#: guix/scripts/pull.scm:77
#: guix/scripts/pull.scm:76
msgid ""
"\n"
"      --url=URL          download the Guix tarball from URL"


@@ 688,7 697,7 @@ msgstr ""
"\n"
"      --url=URL          a Guix tarball letöltése az URL-ről"

#: guix/scripts/pull.scm:79
#: guix/scripts/pull.scm:78
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the new Guix"


@@ 697,29 706,42 @@ msgstr ""
"      --bootstrap        a Guile rendszertöltő használata az új Guix\n"
"                         összeállításához"

#: guix/scripts/pull.scm:117
#: guix/scripts/pull.scm:132
msgid "tarball did not produce a single source directory"
msgstr "a tarball nem hozott létre egyedüli forráskönyvtárat"

#: guix/scripts/pull.scm:150
#, scheme-format
msgid "~A: unexpected argument~%"
msgstr "~A: nem várt argumentum~%"
msgid "unpacking '~a'...~%"
msgstr "kibontás: „~a”...~%"

#: guix/scripts/pull.scm:126
msgid "failed to download up-to-date source, exiting\n"
msgstr "a legfrissebb forrás letöltése sikertelen, kilépés\n"
#: guix/scripts/pull.scm:159
msgid "failed to unpack source code"
msgstr "nem sikerült a forráskód kibontása"

#: guix/scripts/pull.scm:145
#: guix/scripts/pull.scm:200
#, scheme-format
msgid "updated ~a successfully deployed under `~a'~%"
msgstr "a(z) ~a frissítése sikeresen telepítve ez alá: „~a”~%"

#: guix/scripts/pull.scm:148
#: guix/scripts/pull.scm:203
#, scheme-format
msgid "failed to update Guix, check the build log~%"
msgstr "a Guix frissítése sikertelen, nézze meg az összeállítási naplót~%"

#: guix/scripts/pull.scm:150
#: guix/scripts/pull.scm:205
msgid "Guix already up to date\n"
msgstr "A Guix már naprakész\n"

#: guix/scripts/pull.scm:215
#, scheme-format
msgid "~A: unexpected argument~%"
msgstr "~A: nem várt argumentum~%"

#: guix/scripts/pull.scm:224
msgid "failed to download up-to-date source, exiting\n"
msgstr "a legfrissebb forrás letöltése sikertelen, kilépés\n"

#: guix/scripts/substitute-binary.scm:80
#, scheme-format
msgid "authentication and authorization of substitutes disabled!~%"


@@ 795,12 817,12 @@ msgstr "Letöltés, kérem várjon…~%"
msgid "(Please consider upgrading Guile to get proper progress report.)~%"
msgstr "(Fontolja meg a Guile frissítését a megfelelő állapotjelentés beszerzéséhez.)~%"

#: guix/scripts/substitute-binary.scm:545
#: guix/scripts/substitute-binary.scm:541
#, scheme-format
msgid "host name lookup error: ~a~%"
msgstr "gépnév keresési hiba: ~a~%"

#: guix/scripts/substitute-binary.scm:554
#: guix/scripts/substitute-binary.scm:550
msgid ""
"Usage: guix substitute-binary [OPTION]...\n"
"Internal tool to substitute a pre-built binary to a local build.\n"


@@ 809,7 831,7 @@ msgstr ""
"Belső eszköz egy előre összeállított binárisnak egy helyi összeállítással\n"
"való helyettesítéséhez.\n"

#: guix/scripts/substitute-binary.scm:556
#: guix/scripts/substitute-binary.scm:552
msgid ""
"\n"
"      --query            report on the availability of substitutes for the\n"


@@ 819,7 841,7 @@ msgstr ""
"      --query            a helyettesítők elérhetőségének jelentése a\n"
"                         szabványos bemeneten átadott tároló fájlnevekhez"

#: guix/scripts/substitute-binary.scm:559
#: guix/scripts/substitute-binary.scm:555
msgid ""
"\n"
"      --substitute STORE-FILE DESTINATION\n"


@@ 831,18 853,23 @@ msgstr ""
"                         TÁROLÓ-FÁJL letöltése és eltárolása Nar formátumban\n"
"                         a CÉL fájlban"

#: guix/scripts/substitute-binary.scm:604
#: guix/scripts/substitute-binary.scm:600
msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
msgstr ""
"Az ACL előkészítetlennek tűnik az archívum importokhoz, a helyettesítők\n"
"elérhetetlenek lehetnek\n"

#: guix/scripts/substitute-binary.scm:625
#: guix/scripts/substitute-binary.scm:634
#, scheme-format
msgid "these substitute URLs will not be used:~{ ~a~}~%"
msgstr "ezek a helyettesítő URL-ek nem lesznek használva:~{ ~a~}~%"

#: guix/scripts/substitute-binary.scm:660
#, scheme-format
msgid "failed to look up host '~a' (~a), substituter disabled~%"
msgstr "a(z) „~a” (~a) gép keresése sikertelen, a helyettesítő letiltva~%"

#: guix/scripts/substitute-binary.scm:732
#: guix/scripts/substitute-binary.scm:767
#, scheme-format
msgid "~a: unrecognized options~%"
msgstr "~a: ismeretlen kapcsolók~%"


@@ 886,7 913,7 @@ msgstr "hibás argumentumok"
msgid "failed to open operating system file '~a': ~a~%"
msgstr "a(z) „~a” operációs rendszer fájl megnyitása sikertelen: ~a~%"

#: guix/scripts/system.scm:78 guix/ui.scm:238
#: guix/scripts/system.scm:78 guix/ui.scm:258
#, scheme-format
msgid "~a: ~a~%"
msgstr "~a: ~a~%"


@@ 906,7 933,7 @@ msgstr "a(z) „~a” regisztrálása sikertelen ez alá: „~a”~%"
msgid "initializing the current root file system~%"
msgstr "a jelenlegi gyökér fájlrendszer előkészítése~%"

#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#: guix/scripts/system.scm:162 guix/scripts/system.scm:325
#, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr "a GRUB telepítése sikertelen a(z) „~a” eszközre~%"


@@ 916,17 943,17 @@ msgstr "a GRUB telepítése sikertelen a(z) „~a” eszközre~%"
msgid "activating system...~%"
msgstr "a rendszer aktiválása…~%"

#: guix/scripts/system.scm:236
#: guix/scripts/system.scm:239
#, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "azonosítatlan indítási paraméterek ehhez: „~a”~%"

#: guix/scripts/system.scm:323
#: guix/scripts/system.scm:330
#, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr "az operációs rendszer előkészítése „~a” alá…~%"

#: guix/scripts/system.scm:339
#: guix/scripts/system.scm:346
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"


@@ 934,37 961,37 @@ msgstr ""
"Használat: guix system [KAPCSOLÓ] MŰVELET FÁJL\n"
"A FÁJLBAN meghatározott operációs rendszer összeállítása a MŰVELET szerint.\n"

#: guix/scripts/system.scm:342
#: guix/scripts/system.scm:349
msgid "The valid values for ACTION are:\n"
msgstr "A MŰVELET érvényes értékei a következők:\n"

#: guix/scripts/system.scm:343
#: guix/scripts/system.scm:350
msgid "  - 'reconfigure', switch to a new operating system configuration\n"
msgstr "  - „reconfigure”, átváltás egy új operációs rendszer beállításra\n"

#: guix/scripts/system.scm:345
#: guix/scripts/system.scm:352
msgid "  - 'build', build the operating system without installing anything\n"
msgstr "  - „build”, az operációs rendszer összeállítása bármi telepítése nélkül\n"

#: guix/scripts/system.scm:347
#: guix/scripts/system.scm:354
msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
msgstr ""
"  - „vm”, egy virtuális gép lemezkép összeállítása, amely megosztja a gazda\n"
"              tárolóját\n"

#: guix/scripts/system.scm:349
#: guix/scripts/system.scm:356
msgid "  - 'vm-image', build a freestanding virtual machine image\n"
msgstr "  - „vm-image”, egy szabadon álló virtuális gép lemezkép összeállítása\n"

#: guix/scripts/system.scm:351
#: guix/scripts/system.scm:358
msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr "  - „disk-image”, egy USB-meghajtóhoz megfelelő lemezkép összeállítása\n"

#: guix/scripts/system.scm:353
#: guix/scripts/system.scm:360
msgid "  - 'init', initialize a root file system to run GNU.\n"
msgstr "  - „init”, a gyökér fájlrendszer előkészítése a GNU futtatásához.\n"

#: guix/scripts/system.scm:357
#: guix/scripts/system.scm:364
msgid ""
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"


@@ 972,7 999,7 @@ msgstr ""
"\n"
"      --image-size=MÉRET  a „vm-image”-hez, adott MÉRETŰ lemezkép előállítása"

#: guix/scripts/system.scm:359
#: guix/scripts/system.scm:366
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"


@@ 980,21 1007,86 @@ msgstr ""
"\n"
"      --no-grub          az „init”-hez, ne telepítse a GRUB rendszerbetöltőt"

#: guix/scripts/system.scm:422
#: guix/scripts/system.scm:368
msgid ""
"\n"
"      --full-boot        for 'vm', make a full boot sequence"
msgstr ""
"\n"
"      --full-boot        „vm” esetén, teljes indítási sorozat készítése"

#: guix/scripts/system.scm:434
#, scheme-format
msgid "~a: unknown action~%"
msgstr "~a: ismeretlen művelet~%"

#: guix/scripts/system.scm:439
#: guix/scripts/system.scm:451
#, scheme-format
msgid "wrong number of arguments for action '~a'~%"
msgstr "nem megfelelő számú argumentum a(z) „~a” művelethez~%"

#: guix/scripts/system.scm:459
#: guix/scripts/system.scm:471
#, scheme-format
msgid "no configuration file specified~%"
msgstr "nincs beállítófájl megadva~%"

#: guix/scripts/lint.scm:51
#, scheme-format
msgid "~a: ~a: ~a~%"
msgstr "~a: ~a: ~a~%"

#: guix/scripts/lint.scm:72
#, scheme-format
msgid "Available checkers:~%"
msgstr "Elérhető ellenőrzők:~%"

#: guix/scripts/lint.scm:226
msgid "Validate package descriptions"
msgstr "Csomagleírások ellenőrzése"

#: guix/scripts/lint.scm:230
msgid "Identify inputs that should be native inputs"
msgstr "Bemenetek azonosítása, amelyek natív bemenetek lehetnek"

#: guix/scripts/lint.scm:234
msgid "Validate filenames of patches"
msgstr "Javítócsomagok fájlneveinek ellenőrzése"

#: guix/scripts/lint.scm:238
msgid "Validate package synopsis"
msgstr "Csomagáttekintés ellenőrzése"

#: guix/scripts/lint.scm:257
msgid ""
"Usage: guix lint [OPTION]... [PACKAGE]...\n"
"Run a set of checkers on the specified package; if none is specified, run the checkers on all packages.\n"
msgstr ""
"Használat: guix lint [KAPCSOLÓ]… [CSOMAG]…\n"
"Számos ellenőrző futtatása a megadott csomagon. Ha semmi sincs megadva, az ellenőrzők futtatása minden csomagon.\n"

#: guix/scripts/lint.scm:259
msgid ""
"\n"
"  -c, --checkers=CHECKER1,CHECKER2...\n"
"                         only run the specificed checkers"
msgstr ""
"\n"
"  -c, --checkers=ELLENŐRZŐ1,ELLENŐRZŐ2…\n"
"                         csak a megadott ellenőrzők futtatása"

#: guix/scripts/lint.scm:264
msgid ""
"\n"
"  -l, --list-checkers    display the list of available lint checkers"
msgstr ""
"\n"
"  -l, --list-checkers    az elérhető lint ellenőrzők listájának megjelenítése"

#: guix/scripts/lint.scm:283
#, scheme-format
msgid "~a: invalid checker"
msgstr "~a: érvénytelen ellenőrző"

#: guix/gnu-maintenance.scm:373
#, scheme-format
msgid "signature verification failed for `~a'~%"


@@ 1015,12 1107,12 @@ msgstr "~a: nem található a forrásfájl"
msgid "~a: ~a: no `version' field in source; skipping~%"
msgstr "~a: ~a: nincs „version” mező a forrásban; kihagyás~%"

#: guix/ui.scm:131
#: guix/ui.scm:135
#, scheme-format
msgid "failed to install locale: ~a~%"
msgstr "a területi beállítás telepítése sikertelen: ~a~%"

#: guix/ui.scm:150
#: guix/ui.scm:154
msgid ""
"Copyright (C) 2014 the Guix authors\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"


@@ 1033,7 1125,7 @@ msgstr ""
"Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja.\n"
"NINCS GARANCIA, a törvény által engedélyezett mértékig.\n"

#: guix/ui.scm:158
#: guix/ui.scm:162
#, scheme-format
msgid ""
"\n"


@@ 1042,7 1134,7 @@ msgstr ""
"\n"
"A hibákat ide jelentse: ~a."

#: guix/ui.scm:160
#: guix/ui.scm:164
#, scheme-format
msgid ""
"\n"


@@ 1051,7 1143,7 @@ msgstr ""
"\n"
"~a honlap: <~a>"

#: guix/ui.scm:162
#: guix/ui.scm:166
msgid ""
"\n"
"General help using GNU software: <http://www.gnu.org/gethelp/>"


@@ 1059,100 1151,160 @@ msgstr ""
"\n"
"Általános segítség a GNU szoftverek használatához: <http://www.gnu.org/gethelp/>"

#: guix/ui.scm:169
#: guix/ui.scm:173
#, scheme-format
msgid "~a: invalid number~%"
msgstr "~a: érvénytelen szám~%"

#: guix/ui.scm:186
#: guix/ui.scm:190
#, scheme-format
msgid "invalid number: ~a~%"
msgstr "érvénytelen szám: ~a~%"

#: guix/ui.scm:201
#: guix/ui.scm:213
#, scheme-format
msgid "unknown unit: ~a~%"
msgstr "ismeretlen egység: ~a~%"

#: guix/ui.scm:212
#: guix/ui.scm:224
#, scheme-format
msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
msgstr "~a:~a:~a: a(z) „~a” csomagnak érvénytelen bemenete van: ~s~%"

#: guix/ui.scm:219
#: guix/ui.scm:231
#, scheme-format
msgid "~a: ~a: build system `~a' does not support cross builds~%"
msgstr "~a: ~a: a(z) „~a” összeállítási rendszer nem támogatja a kereszt összeállításokat~%"

#: guix/ui.scm:224
#: guix/ui.scm:236
#, scheme-format
msgid "profile '~a' does not exist~%"
msgstr "a(z) „~a” profil nem létezik~%"

#: guix/ui.scm:239
#, scheme-format
msgid "generation ~a of profile '~a' does not exist~%"
msgstr "a(z) ~a generáció a(z) „~a” profilhoz nem létezik~%"

#: guix/ui.scm:243
#, scheme-format
msgid "failed to connect to `~a': ~a~%"
msgstr "sikertelen csatlakozás ehhez: „~a”: ~a~%"

#: guix/ui.scm:229
#: guix/ui.scm:248
#, scheme-format
msgid "build failed: ~a~%"
msgstr "az összeállítás sikertelen: ~a~%"

#: guix/ui.scm:257
#: guix/ui.scm:277
#, scheme-format
msgid "failed to read expression ~s: ~s~%"
msgstr "a(z) ~s kifejezés olvasása sikertelen: ~s~%"

#: guix/ui.scm:263
#: guix/ui.scm:283
#, scheme-format
msgid "failed to evaluate expression `~a': ~s~%"
msgstr "a(z) „~a” kifejezés kiértékelése sikertelen: ~s~%"

#: guix/ui.scm:272
#: guix/ui.scm:292
#, scheme-format
msgid "expression ~s does not evaluate to a package~%"
msgstr "a(z) ~s kifejezés nem értékelhető ki a csomaghoz~%"

#: guix/ui.scm:319
#: guix/ui.scm:339
#, scheme-format
msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő származékot kellene összeállítani:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following derivations would be built:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[A következő származékot kellene összeállítani:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[A következő származékokat kellene összeállítani:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:324
#: guix/ui.scm:344
#, scheme-format
msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő fájlt kellene letölteni:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following files would be downloaded:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[A következő fájlt kellene letölteni:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[A következő fájlokat kellene letölteni:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:330
#: guix/ui.scm:350
#, scheme-format
msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő származék lesz összeállítva:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following derivations will be built:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[A következő származék lesz összeállítva:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[A következő származékok lesznek összeállítva:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:335
#: guix/ui.scm:355
#, scheme-format
msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő fájl lesz letöltve:~%~{   ~a~%~}~;~]"
msgid_plural "~:[The following files will be downloaded:~%~{   ~a~%~}~;~]"
msgstr[0] "~:[A következő fájl lesz letöltve:~%~{   ~a~%~}~;~]"
msgstr[1] "~:[A következő fájlok lesznek letöltve:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:407
#, scheme-format
msgid "The following package would be removed:~%~{~a~%~}~%"
msgid_plural "The following packages would be removed:~%~{~a~%~}~%"
msgstr[0] "A következő csomagot el kellene távolítani:~%~{~a~%~}~%"
msgstr[1] "A következő csomagokat el kellene távolítani:~%~{~a~%~}~%"

#: guix/ui.scm:412
#, scheme-format
msgid "The following package will be removed:~%~{~a~%~}~%"
msgid_plural "The following packages will be removed:~%~{~a~%~}~%"
msgstr[0] "A következő csomag el lesz távolítva:~%~{~a~%~}~%"
msgstr[1] "A következő csomagok el lesznek távolítva:~%~{~a~%~}~%"

#: guix/ui.scm:425
#, scheme-format
msgid "The following package would be upgraded:~%~{~a~%~}~%"
msgid_plural "The following packages would be upgraded:~%~{~a~%~}~%"
msgstr[0] "A következő csomagot kellene frissíteni:~%~{~a~%~}~%"
msgstr[1] "A következő csomagokat kellene frissíteni:~%~{~a~%~}~%"

#: guix/ui.scm:430
#, scheme-format
msgid "The following package will be upgraded:~%~{~a~%~}~%"
msgid_plural "The following packages will be upgraded:~%~{~a~%~}~%"
msgstr[0] "A következő csomag lesz frissítve:~%~{~a~%~}~%"
msgstr[1] "A következő csomagok lesznek frissítve:~%~{~a~%~}~%"

#: guix/ui.scm:441
#, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%"
msgid_plural "The following packages would be installed:~%~{~a~%~}~%"
msgstr[0] "A következő csomagot kellene telepíteni:~%~{~a~%~}~%"
msgstr[1] "A következő csomagokat kellene telepíteni:~%~{~a~%~}~%"

#: guix/ui.scm:446
#, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%"
msgid_plural "The following packages will be installed:~%~{~a~%~}~%"
msgstr[0] "A következő csomag lesz telepítve:~%~{~a~%~}~%"
msgstr[1] "A következő csomagok lesznek telepítve:~%~{~a~%~}~%"

#: guix/ui.scm:352
#: guix/ui.scm:463
msgid "<unknown location>"
msgstr "<ismeretlen hely>"

#: guix/ui.scm:380
#: guix/ui.scm:489
#, scheme-format
msgid "failed to create configuration directory `~a': ~a~%"
msgstr "a(z) „~a” beállítási könyvtár létrehozása sikertelen: ~a~%"

#: guix/ui.scm:475 guix/ui.scm:489
#: guix/ui.scm:589 guix/ui.scm:603
msgid "unknown"
msgstr "ismeretlen"

#: guix/ui.scm:598
#: guix/ui.scm:712
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "érvénytelen argumentum: ~a~%"

#: guix/ui.scm:603
#: guix/ui.scm:717
#, scheme-format
msgid "Try `guix --help' for more information.~%"
msgstr "További információkért próbálja a „guix --help” parancsot.~%"

#: guix/ui.scm:633
#: guix/ui.scm:747
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"


@@ 1160,21 1312,21 @@ msgstr ""
"Használat: guix PARANCS ARGUMENTUMOK…\n"
"A PARANCS futtatása ARGUMENTUMOKKAL.\n"

#: guix/ui.scm:636
#: guix/ui.scm:750
msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "A PARANCSNAK a lenti listában lévő alparancsok egyikének kell lennie:\n"

#: guix/ui.scm:656
#: guix/ui.scm:770
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: a parancs nem található~%"

#: guix/ui.scm:674
#: guix/ui.scm:788
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: hiányzó parancsnév~%"

#: guix/ui.scm:682
#: guix/ui.scm:796
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: ismeretlen kapcsoló: „~a”~%"


@@ 1198,80 1350,71 @@ msgstr "átirányítás követése ide: „~a”…~%"
msgid "download failed"
msgstr "letöltés sikertelen"

#: guix/nar.scm:134
msgid "unexpected executable file marker"
msgstr "nem várt végrehajtható fájljelölő"

#: guix/nar.scm:141
msgid "unsupported nar file type"
msgstr "nem támogatott nar fájltípus"

#: guix/nar.scm:209
msgid "unsupported file type"
msgstr "nem támogatott fájltípus"

#: guix/nar.scm:219
msgid "invalid nar signature"
msgstr "érvénytelen nar aláírás"

#: guix/nar.scm:230
msgid "invalid nar end-of-file marker"
msgstr "érvénytelen nar fájlvége jelölő"

#: guix/nar.scm:244
msgid "invalid symlink tokens"
msgstr "érvénytelen szimbolikus link jelsorok"

#: guix/nar.scm:263
msgid "unexpected directory entry termination"
msgstr "nem várt könyvtárbejegyzés végződés"

#: guix/nar.scm:272
msgid "unexpected directory inter-entry marker"
msgstr "nem várt könyvtár belső-bejegyzés jelölő"

#: guix/nar.scm:277
msgid "unsupported nar entry type"
msgstr "nem támogatott nar bejegyzéstípus"

#: guix/nar.scm:376
#: guix/nar.scm:155
msgid "signature is not a valid s-expression"
msgstr "az aláírás nem érvényes s-kifejezés"

#: guix/nar.scm:385
#: guix/nar.scm:164
msgid "invalid signature"
msgstr "érvénytelen aláírás"

#: guix/nar.scm:389
#: guix/nar.scm:168
msgid "invalid hash"
msgstr "érvénytelen hash"

#: guix/nar.scm:397
#: guix/nar.scm:176
msgid "unauthorized public key"
msgstr "jogosulatlan nyilvános kulcs"

#: guix/nar.scm:402
#: guix/nar.scm:181
msgid "corrupt signature data"
msgstr "sérült aláírás adatok"

#: guix/nar.scm:422
#: guix/nar.scm:201
msgid "corrupt file set archive"
msgstr "sérült fájlhalmaz archívum"

#: guix/nar.scm:432
#: guix/nar.scm:211
#, scheme-format
msgid "importing file or directory '~a'...~%"
msgstr "fájl vagy könyvtár importálása: „~a”…~%"

#: guix/nar.scm:441
#: guix/nar.scm:220
#, scheme-format
msgid "found valid signature for '~a'~%"
msgstr "érvényes aláírás található ehhez: „~a”~%"

#: guix/nar.scm:448
#: guix/nar.scm:227
msgid "imported file lacks a signature"
msgstr "az importált fájl egy aláírást hiányol"

#: guix/nar.scm:487
#: guix/nar.scm:266
msgid "invalid inter-file archive mark"
msgstr "érvénytelen belső-fájl archívum jelölő"

#~ msgid "unexpected executable file marker"
#~ msgstr "nem várt végrehajtható fájljelölő"

#~ msgid "unsupported nar file type"
#~ msgstr "nem támogatott nar fájltípus"

#~ msgid "unsupported file type"
#~ msgstr "nem támogatott fájltípus"

#~ msgid "invalid nar signature"
#~ msgstr "érvénytelen nar aláírás"

#~ msgid "invalid nar end-of-file marker"
#~ msgstr "érvénytelen nar fájlvége jelölő"

#~ msgid "invalid symlink tokens"
#~ msgstr "érvénytelen szimbolikus link jelsorok"

#~ msgid "unexpected directory entry termination"
#~ msgstr "nem várt könyvtárbejegyzés végződés"

#~ msgid "unexpected directory inter-entry marker"
#~ msgstr "nem várt könyvtár belső-bejegyzés jelölő"

#~ msgid "unsupported nar entry type"
#~ msgstr "nem támogatott nar bejegyzéstípus"

M po/packages/LINGUAS => po/packages/LINGUAS +1 -0
@@ 4,6 4,7 @@ de
en@boldquot
en@quot
eo
hu
pt_BR
sr
vi

A po/packages/hu.po => po/packages/hu.po +1262 -0
@@ 0,0 1,1262 @@
# Hungarian translation for guix-packages.
# Copyright (C) 2014 Free Software Foundation, Inc.
# This file is distributed under the same license as the guix package.
#
# Balázs Úr <urbalazs@gmail.com>, 2014.
msgid ""
msgstr ""
"Project-Id-Version: guix-packages 0.8\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-11-10 15:37+0100\n"
"PO-Revision-Date: 2014-12-03 21:17+0100\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 1.5\n"

#: gnu/packages/aspell.scm:42
msgid "Spell checker"
msgstr "Helyesírás-ellenőrző"

#: gnu/packages/aspell.scm:44
msgid ""
"Aspell is a spell-checker which can be used either as a library or as\n"
"a standalone program.  Notable features of Aspell include its full support of\n"
"documents written in the UTF-8 encoding and its ability to use multiple\n"
"dictionaries, including personal ones."
msgstr ""

#: gnu/packages/aspell.scm:84
msgid "This package provides a dictionary for the GNU Aspell spell checker."
msgstr "Ez a csomag egy szótárat biztosít a GNU Aspell helyesírás-ellenőrzőhöz."

#: gnu/packages/backup.scm:87
msgid "Encrypted backup using rsync algorithm"
msgstr "Titkosított biztonsági mentés az rsync algoritmus használatával"

#: gnu/packages/backup.scm:89
msgid ""
"Duplicity backs up directories by producing encrypted tar-format volumes\n"
"and uploading them to a remote or local file server.  Because duplicity uses\n"
"librsync, the incremental archives are space efficient and only record the\n"
"parts of files that have changed since the last backup.  Because duplicity\n"
"uses GnuPG to encrypt and/or sign these archives, they will be safe from\n"
"spying and/or modification by the server."
msgstr ""

#: gnu/packages/backup.scm:123
msgid "Simple incremental backup tool"
msgstr "Egyszerű növekményes biztonsági mentés eszköz"

#: gnu/packages/backup.scm:125
msgid ""
"Hdup2 is a backup utilty, its aim is to make backup really simple.  The\n"
"backup scheduling is done by means of a cron job.  It supports an\n"
"include/exclude mechanism, remote backups, encrypted backups and split\n"
"backups (called chunks) to allow easy burning to CD/DVD."
msgstr ""

#: gnu/packages/backup.scm:178
msgid "Multi-format archive and compression library"
msgstr ""

#: gnu/packages/backup.scm:180
msgid ""
"Libarchive provides a flexible interface for reading and writing\n"
"archives in various formats such as tar and cpio.  Libarchive also supports\n"
"reading and writing archives compressed using various compression filters such\n"
"as gzip and bzip2.  The library is inherently stream-oriented; readers\n"
"serially iterate through the archive, writers serially add things to the\n"
"archive.  In particular, note that there is currently no built-in support for\n"
"random access nor for in-place modification."
msgstr ""

#: gnu/packages/backup.scm:243
msgid "Provide a list of files to backup"
msgstr ""

#: gnu/packages/backup.scm:245
msgid ""
"Rdup is a utility inspired by rsync and the plan9 way of doing backups.\n"
"Rdup itself does not backup anything, it only print a list of absolute\n"
"filenames to standard output.  Auxiliary scripts are needed that act on this\n"
"list and implement the backup strategy."
msgstr ""

#: gnu/packages/backup.scm:275
msgid "Tar-compatible archiver"
msgstr "Tar-kompatibilis archiváló"

#: gnu/packages/backup.scm:277
msgid ""
"Btar is a tar-compatible archiver which allows arbitrary compression and\n"
"ciphering, redundancy, differential backup, indexed extraction, multicore\n"
"compression, input and output serialisation, and tolerance to partial archive\n"
"errors."
msgstr ""

#: gnu/packages/backup.scm:305
msgid "Local/remote mirroring+incremental backup"
msgstr "Helyi/távoli tükröző + növekményes biztonsági mentés"

#: gnu/packages/backup.scm:307
msgid ""
"Rdiff-backup backs up one directory to another, possibly over a network.\n"
"The target directory ends up a copy of the source directory, but extra reverse\n"
"diffs are stored in a special subdirectory of that target directory, so you\n"
"can still recover files lost some time ago.  The idea is to combine the best\n"
"features of a mirror and an incremental backup.  Rdiff-backup also preserves\n"
"subdirectories, hard links, dev files, permissions, uid/gid ownership,\n"
"modification times, extended attributes, acls, and resource forks.  Also,\n"
"rdiff-backup can operate in a bandwidth efficient manner over a pipe, like\n"
"rsync.  Thus you can use rdiff-backup and ssh to securely back a hard drive up\n"
"to a remote location, and only the differences will be transmitted.  Finally,\n"
"rdiff-backup is easy to use and settings have sensical defaults."
msgstr ""

#: gnu/packages/base.scm:56
msgid "Hello, GNU world: An example GNU package"
msgstr "Helló, GNU világ: egy példa GNU csomag"

#: gnu/packages/base.scm:58
msgid ""
"GNU Hello prints the message \"Hello, world!\" and then exits.  It\n"
"serves as an example of standard GNU coding practices.  As such, it supports\n"
"command-line arguments, multiple languages, and so on."
msgstr ""
"A GNU Helló a „Helló, világ!” üzenetet írja ki, majd kilép. Ez a szabványos\n"
"GNU kódolási gyakorlatok példájaként szolgál. Mint olyan, támogatja a\n"
"parancssori argumentumokat, több nyelvet, és így tovább."

#: gnu/packages/base.scm:76
msgid "Print lines matching a pattern"
msgstr "Egy mintára illeszkedő sorok kiírása"

#: gnu/packages/base.scm:78
msgid ""
"grep is a tool for finding text inside files.  Text is found by\n"
"matching a pattern provided by the user in one or many files.  The pattern\n"
"may be provided as a basic or extended regular expression, or as fixed\n"
"strings.  By default, the matching text is simply printed to the screen,\n"
"however the output can be greatly customized to include, for example, line\n"
"numbers.  GNU grep offers many extensions over the standard utility,\n"
"including, for example, recursive directory searching."
msgstr ""
"A grep a fájlokon belüli szöveg keresésére szolgáló eszköz. A szöveg a\n"
"felhasználó által megadott mintákra illeszkedve található meg egy vagy több\n"
"fájlban. A minta megadható alap vagy kiterjesztett reguláris kifejezésként,\n"
"illetve rögzített szövegként. Alapértelmezetten az illeszkedő szöveg\n"
"egyszerűen kiírásra kerül a képernyőre, viszont a kimenet nagymértékben\n"
"testre szabható a beágyazáshoz, például sorok számozásához. A GNU grep számos\n"
"kiterjesztést nyújt a szabványos segédprogramokon túl, beleértve például a\n"
"rekurzív könyvtárkeresést."

#: gnu/packages/base.scm:100
msgid "Stream editor"
msgstr "Folyamszerkesztő"

#: gnu/packages/base.scm:115
msgid ""
"Sed is a non-interactive, text stream editor.  It receives a text\n"
"input from a file or from standard input and it then applies a series of text\n"
"editing commands to the stream and prints its output to standard output.  It\n"
"is often used for substituting text patterns in a stream.  The GNU\n"
"implementation offers several extensions over the standard utility."
msgstr ""
"A sed egy nem interaktív szövegfolyam-szerkesztő. Szöveges bemenetet fogad\n"
"egy fájlból vagy a szabványos bemenetről, majd egy sor szövegszerkesztési\n"
"parancsot alkalmaz a folyamon, és kiírja a kimenetét a szabványos kimenetre.\n"
"Gyakran használják szövegminták helyettesítésére egy folyamban. A GNU\n"
"megvalósítása számos kiterjesztést nyújt a szabványos segédprogramokon túl."

#: gnu/packages/base.scm:135
msgid "Managing tar archives"
msgstr "Tar archívumok kezelése"

#: gnu/packages/base.scm:137
msgid ""
"Tar provides the ability to create tar archives, as well as the\n"
"ability to extract, update or list files in an existing archive.  It is\n"
"useful for combining many files into one larger file, while maintaining\n"
"directory structure and file information such as permissions and\n"
"creation/modification dates.  GNU tar offers many extensions over the\n"
"standard utility."
msgstr ""

#: gnu/packages/base.scm:161
msgid "Apply differences to originals, with optional backups"
msgstr ""

#: gnu/packages/base.scm:163
msgid ""
"Patch is a program that applies changes to files based on differences\n"
"laid out as by the program \"diff\".  The changes may be applied to one or more\n"
"files depending on the contents of the diff file.  It accepts several\n"
"different diff formats.  It may also be used to revert previously applied\n"
"differences."
msgstr ""

#: gnu/packages/base.scm:183
msgid "Comparing and merging files"
msgstr ""

#: gnu/packages/base.scm:185
msgid ""
"GNU Diffutils is a package containing tools for finding the\n"
"differences between files.  The \"diff\" command is used to show how two files\n"
"differ, while \"cmp\" shows the offsets and line numbers where they differ. \n"
"\"diff3\" allows you to compare three files.  Finally, \"sdiff\" offers an\n"
"interactive means to merge two files."
msgstr ""

#: gnu/packages/base.scm:212
msgid "Operating on files matching given criteria"
msgstr ""

#: gnu/packages/base.scm:214
msgid ""
"Findutils supplies the basic file directory searching utilities of the\n"
"GNU system.  It consists of two primary searching utilities: \"find\"\n"
"recursively searches for files in a directory according to given criteria and\n"
"\"locate\" lists files in a database that match a query.  Two auxiliary tools\n"
"are included: \"updatedb\" updates the file name database and \"xargs\" may be\n"
"used to apply commands with arbitrarily long arguments."
msgstr ""

#: gnu/packages/base.scm:264
msgid "Core GNU utilities (file, text, shell)"
msgstr ""

#: gnu/packages/base.scm:266
msgid ""
"GNU Coreutils includes all of the basic command-line tools that are\n"
"expected in a POSIX system.  These provide the basic file, shell and text\n"
"manipulation functions of the GNU system.  Most of these tools offer extended\n"
"functionality beyond that which is outlined in the POSIX standard."
msgstr ""

#: gnu/packages/base.scm:300
msgid "Remake files automatically"
msgstr ""

#: gnu/packages/base.scm:302
msgid ""
"Make is a program that is used to control the production of\n"
"executables or other files from their source files.  The process is\n"
"controlled from a Makefile, in which the developer specifies how each file is\n"
"generated from its source.  It has powerful dependency resolution and the\n"
"ability to determine when files have to be regenerated after their sources\n"
"change.  GNU make offers many powerful extensions over the standard utility."
msgstr ""

#: gnu/packages/base.scm:347
msgid "Binary utilities: bfd gas gprof ld"
msgstr ""

#: gnu/packages/base.scm:349
msgid ""
"GNU Binutils is a collection of tools for working with binary files.\n"
"Perhaps the most notable are \"ld\", a linker, and \"as\", an assembler.\n"
"Other tools include programs to display binary profiling information, list\n"
"the strings in a binary file, and utilities for working with archives.  The\n"
"\"bfd\" library for working with executable and object formats is also\n"
"included."
msgstr ""

#: gnu/packages/base.scm:491
msgid "The GNU C Library"
msgstr ""

#: gnu/packages/base.scm:493
msgid ""
"Any Unix-like operating system needs a C library: the library which\n"
"defines the \"system calls\" and other basic facilities such as open, malloc,\n"
"printf, exit...\n"
"\n"
"The GNU C library is used as the C library in the GNU system and most systems\n"
"with the Linux kernel."
msgstr ""

#: gnu/packages/base.scm:562
msgid "Database of current and historical time zones"
msgstr ""

#: gnu/packages/base.scm:563
msgid ""
"The Time Zone Database (often called tz or zoneinfo)\n"
"contains code and data that represent the history of local time for many\n"
"representative locations around the globe.  It is updated periodically to\n"
"reflect changes made by political bodies to time zone boundaries, UTC offsets,\n"
"and daylight-saving rules."
msgstr ""

#: gnu/packages/databases.scm:83
msgid "Berkeley database"
msgstr ""

#: gnu/packages/databases.scm:85
msgid ""
"Berkeley DB is an embeddable database allowing developers the choice of\n"
"SQL, Key/Value, XML/XQuery or Java Object storage for their data model."
msgstr ""

#: gnu/packages/databases.scm:143
msgid "Fast, easy to use, and popular database"
msgstr ""

#: gnu/packages/databases.scm:145
msgid ""
"MySQL is a fast, reliable, and easy to use relational database\n"
"management system that supports the standardized Structured Query\n"
"Language."
msgstr ""

#: gnu/packages/databases.scm:166
msgid "Powerful object-relational database system"
msgstr ""

#: gnu/packages/databases.scm:168
msgid ""
"PostgreSQL is a powerful object-relational database system.  It is fully\n"
"ACID compliant, has full support for foreign keys, joins, views, triggers, and\n"
"stored procedures (in multiple languages).  It includes most SQL:2008 data\n"
"types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and\n"
"TIMESTAMP.  It also supports storage of binary large objects, including\n"
"pictures, sounds, or video."
msgstr ""

#: gnu/packages/databases.scm:203
msgid "Manipulate plain text files as databases"
msgstr ""

#: gnu/packages/databases.scm:205
msgid ""
"GNU Recutils is a set of tools and libraries for creating and\n"
"manipulating text-based, human-editable databases.  Despite being text-based,\n"
"databases created with Recutils carry all of the expected features such as\n"
"unique fields, primary keys, time stamps and more.  Many different field\n"
"types are supported, as is encryption."
msgstr ""

#: gnu/packages/databases.scm:243
msgid "The SQLite database management system"
msgstr ""

#: gnu/packages/databases.scm:245
msgid ""
"SQLite is a software library that implements a self-contained, serverless,\n"
"zero-configuration, transactional SQL database engine.  SQLite is the most\n"
"widely deployed SQL database engine in the world.  The source code for SQLite\n"
"is in the public domain."
msgstr ""

#: gnu/packages/databases.scm:280
msgid "Trivial database"
msgstr ""

#: gnu/packages/databases.scm:282
msgid ""
"TDB is a Trivial Database.  In concept, it is very much like GDBM,\n"
"and BSD's DB except that it allows multiple simultaneous writers and uses\n"
"locking internally to keep writers from trampling on each other.  TDB is also\n"
"extremely small."
msgstr ""

#: gnu/packages/databases.scm:301
msgid "Database independent interface for Perl"
msgstr ""

#: gnu/packages/databases.scm:302
msgid "This package provides an database interface for Perl."
msgstr ""

#: gnu/packages/databases.scm:321
msgid "SQlite interface for Perl"
msgstr ""

#: gnu/packages/databases.scm:322
msgid ""
"DBD::SQLite is a Perl DBI driver for SQLite, that includes\n"
"the entire thing in the distribution.  So in order to get a fast transaction\n"
"capable RDBMS working for your Perl project you simply have to install this\n"
"module, and nothing else."
msgstr ""

#: gnu/packages/databases.scm:342
msgid "Data source abstraction library"
msgstr ""

#: gnu/packages/databases.scm:343
msgid ""
"Unixodbc is a library providing an API with which to access\n"
"data sources.  Data sources include SQL Servers and any software with an ODBC\n"
"Driver."
msgstr ""

#: gnu/packages/gcc.scm:254
msgid "GNU Compiler Collection"
msgstr ""

#: gnu/packages/gcc.scm:256
msgid ""
"GCC is the GNU Compiler Collection.  It provides compiler front-ends\n"
"for several languages, including C, C++, Objective-C, Fortran, Java, Ada, and\n"
"Go.  It also includes runtime support libraries for these languages."
msgstr ""

#: gnu/packages/gcc.scm:340
msgid "Manipulating sets and relations of integer points bounded by linear constraints"
msgstr ""

#: gnu/packages/gcc.scm:343
msgid ""
"isl is a library for manipulating sets and relations of integer points\n"
"bounded by linear constraints.  Supported operations on sets include\n"
"intersection, union, set difference, emptiness check, convex hull, (integer)\n"
"affine hull, integer projection, computing the lexicographic minimum using\n"
"parametric integer programming, coalescing and parametric vertex\n"
"enumeration.  It also includes an ILP solver based on generalized basis\n"
"reduction, transitive closures on maps (which may encode infinite graphs),\n"
"dependence analysis and bounds on piecewise step-polynomials."
msgstr ""

#: gnu/packages/gcc.scm:375
msgid "Library to generate code for scanning Z-polyhedra"
msgstr ""

#: gnu/packages/gcc.scm:377
msgid ""
"CLooG is a free software library to generate code for scanning\n"
"Z-polyhedra.  That is, it finds a code (e.g., in C, FORTRAN...) that\n"
"reaches each integral point of one or more parameterized polyhedra.\n"
"CLooG has been originally written to solve the code generation problem\n"
"for optimizing compilers based on the polytope model.  Nevertheless it\n"
"is used now in various area e.g., to build control automata for\n"
"high-level synthesis or to find the best polynomial approximation of a\n"
"function.  CLooG may help in any situation where scanning polyhedra\n"
"matters.  While the user has full control on generated code quality,\n"
"CLooG is designed to avoid control overhead and to produce a very\n"
"effective code."
msgstr ""

#: gnu/packages/gettext.scm:74
msgid "Tools and documentation for translation"
msgstr ""

#: gnu/packages/gettext.scm:76
msgid ""
"GNU Gettext is a package providing a framework for translating the\n"
"textual output of programs into multiple languages.  It provides translators\n"
"with the means to create message catalogs, as well as an Emacs mode to work\n"
"with them, and a runtime library to load translated messages from the\n"
"catalogs.  Nearly all GNU packages use Gettext."
msgstr ""

#: gnu/packages/guile.scm:100 gnu/packages/guile.scm:163
msgid "Scheme implementation intended especially for extensions"
msgstr ""

#: gnu/packages/guile.scm:102 gnu/packages/guile.scm:165
msgid ""
"Guile is the GNU Ubiquitous Intelligent Language for Extensions, the\n"
"official extension language of the GNU system.  It is an implementation of\n"
"the Scheme language which can be easily embedded in other applications to\n"
"provide a convenient means of extending the functionality of the application\n"
"without requiring the source code to be rewritten."
msgstr ""

#: gnu/packages/guile.scm:208
msgid "Framework for building readers for GNU Guile"
msgstr ""

#: gnu/packages/guile.scm:210
msgid ""
"Guile-Reader is a simple framework for building readers for GNU Guile.\n"
"\n"
"The idea is to make it easy to build procedures that extend Guile’s read\n"
"procedure.  Readers supporting various syntax variants can easily be written,\n"
"possibly by re-using existing “token readers” of a standard Scheme\n"
"readers.  For example, it is used to implement Skribilo’s R5RS-derived\n"
"document syntax.\n"
"\n"
"Guile-Reader’s approach is similar to Common Lisp’s “read table”, but\n"
"hopefully more powerful and flexible (for instance, one may instantiate as\n"
"many readers as needed)."
msgstr ""

#: gnu/packages/guile.scm:263
msgid "Guile bindings to ncurses"
msgstr ""

#: gnu/packages/guile.scm:265
msgid ""
"guile-ncurses provides Guile language bindings for the ncurses\n"
"library."
msgstr ""

#: gnu/packages/guile.scm:285
msgid "Run jobs at scheduled times"
msgstr ""

#: gnu/packages/guile.scm:287
msgid ""
"GNU Mcron is a complete replacement for Vixie cron.  It is used to run\n"
"tasks on a schedule, such as every hour or every Monday.  Mcron is written in\n"
"Guile, so its configuration can be written in Scheme; the original cron\n"
"format is also supported."
msgstr ""

#: gnu/packages/guile.scm:315
msgid "Collection of useful Guile Scheme modules"
msgstr ""

#: gnu/packages/guile.scm:317
msgid ""
"Guile-Lib is intended as an accumulation place for pure-scheme Guile\n"
"modules, allowing for people to cooperate integrating their generic Guile\n"
"modules into a coherent library.  Think \"a down-scaled, limited-scope CPAN\n"
"for Guile\"."
msgstr ""

#: gnu/packages/guile.scm:348
msgid "JSON module for Guile"
msgstr ""

#: gnu/packages/guile.scm:350
msgid ""
"Guile-json supports parsing and building JSON documents according to the\n"
"http:://json.org specification.  These are the main features:\n"
"- Strictly complies to http://json.org specification.\n"
"- Build JSON documents programmatically via macros.\n"
"- Unicode support for strings.\n"
"- Allows JSON pretty printing."
msgstr ""

#: gnu/packages/guile.scm:381
msgid "Create charts and graphs in Guile"
msgstr ""

#: gnu/packages/guile.scm:383
msgid ""
"Guile-Charting is a Guile Scheme library to create bar charts and graphs\n"
"using the Cairo drawing library."
msgstr ""

#: gnu/packages/inkscape.scm:78
msgid "Vector graphics editor"
msgstr ""

#: gnu/packages/inkscape.scm:79
msgid ""
"Inkscape is a vector graphics editor.  What sets Inkscape\n"
"apart is its use of Scalable Vector Graphics (SVG), an XML-based W3C standard,\n"
"as the native format."
msgstr ""

#: gnu/packages/linux.scm:131
msgid "GNU Linux-Libre kernel headers"
msgstr ""

#: gnu/packages/linux.scm:132
msgid "Headers of the Linux-Libre kernel."
msgstr ""

#: gnu/packages/linux.scm:163
msgid "Tools for loading and managing Linux kernel modules"
msgstr ""

#: gnu/packages/linux.scm:165
msgid ""
"Tools for loading and managing Linux kernel modules, such as `modprobe',\n"
"`insmod', `lsmod', and more."
msgstr ""

#: gnu/packages/linux.scm:296
msgid "100% free redistribution of a cleaned Linux kernel"
msgstr ""

#: gnu/packages/linux.scm:298
msgid ""
"GNU Linux-Libre is a free (as in freedom) variant of the Linux kernel.\n"
"It has been modified to remove all non-free binary blobs."
msgstr ""

#: gnu/packages/linux.scm:341
msgid "Pluggable authentication modules for Linux"
msgstr ""

#: gnu/packages/linux.scm:343
msgid ""
"A *Free* project to implement OSF's RFC 86.0.\n"
"Pluggable authentication modules are small shared object files that can\n"
"be used through the PAM API to perform tasks, like authenticating a user\n"
"at login.  Local and dynamic reconfiguration are its key features"
msgstr ""

#: gnu/packages/linux.scm:370
msgid "Small utilities that use the proc filesystem"
msgstr ""

#: gnu/packages/linux.scm:372
msgid ""
"This PSmisc package is a set of some small useful utilities that\n"
"use the proc filesystem.  We're not about changing the world, but\n"
"providing the system administrator with some help in common tasks."
msgstr ""

#: gnu/packages/linux.scm:416
msgid "Collection of utilities for the Linux kernel"
msgstr ""

#: gnu/packages/linux.scm:418
msgid "Util-linux is a random collection of utilities for the Linux kernel."
msgstr ""

#: gnu/packages/linux.scm:472
msgid "Utilities that give information about processes"
msgstr ""

#: gnu/packages/linux.scm:474
msgid ""
"Procps is the package that has a bunch of small useful utilities\n"
"that give information about processes using the Linux /proc file system.\n"
"The package includes the programs ps, top, vmstat, w, kill, free,\n"
"slabtop, and skill."
msgstr ""

#: gnu/packages/linux.scm:499
msgid "Tools for working with USB devices, such as lsusb"
msgstr ""

#: gnu/packages/linux.scm:501
msgid "Tools for working with USB devices, such as lsusb."
msgstr ""

#: gnu/packages/linux.scm:542
msgid "Creating and checking ext2/ext3/ext4 file systems"
msgstr ""

#: gnu/packages/linux.scm:544
msgid "This package provides tools for manipulating ext2/ext3/ext4 file systems."
msgstr ""

#: gnu/packages/linux.scm:575
msgid "Statically-linked fsck.* commands from e2fsprogs"
msgstr ""

#: gnu/packages/linux.scm:577
msgid ""
"This package provides statically-linked command of fsck.ext[234] taken\n"
"from the e2fsprogs package.  It is meant to be used in initrds."
msgstr ""

#: gnu/packages/linux.scm:596
msgid "System call tracer for Linux"
msgstr ""

#: gnu/packages/linux.scm:598
msgid ""
"strace is a system call tracer, i.e. a debugging tool which prints out a\n"
"trace of all the system calls made by a another process/program."
msgstr ""

#: gnu/packages/linux.scm:617
msgid "The Advanced Linux Sound Architecture libraries"
msgstr ""

#: gnu/packages/linux.scm:619 gnu/packages/linux.scm:661
msgid ""
"The Advanced Linux Sound Architecture (ALSA) provides audio and\n"
"MIDI functionality to the Linux-based operating system."
msgstr ""

#: gnu/packages/linux.scm:659
msgid "Utilities for the Advanced Linux Sound Architecture (ALSA)"
msgstr ""

#: gnu/packages/linux.scm:683
msgid "Program to configure the Linux IP packet filtering rules"
msgstr ""

#: gnu/packages/linux.scm:685
msgid ""
"iptables is the userspace command line program used to configure the\n"
"Linux 2.4.x and later IPv4 packet filtering ruleset.  It is targeted towards\n"
"system administrators.  Since Network Address Translation is also configured\n"
"from the packet filter ruleset, iptables is used for this, too.  The iptables\n"
"package also includes ip6tables.  ip6tables is used for configuring the IPv6\n"
"packet filter."
msgstr ""

#: gnu/packages/linux.scm:733
msgid "Utilities for controlling TCP/IP networking and traffic in Linux"
msgstr ""

#: gnu/packages/linux.scm:735
msgid ""
"Iproute2 is a collection of utilities for controlling TCP/IP\n"
"networking and traffic with the Linux kernel.\n"
"\n"
"Most network configuration manuals still refer to ifconfig and route as the\n"
"primary network configuration tools, but ifconfig is known to behave\n"
"inadequately in modern network environments.  They should be deprecated, but\n"
"most distros still include them.  Most network configuration systems make use\n"
"of ifconfig and thus provide a limited feature set.  The /etc/net project aims\n"
"to support most modern network technologies, as it doesn't use ifconfig and\n"
"allows a system administrator to make use of all iproute2 features, including\n"
"traffic control.\n"
"\n"
"iproute2 is usually shipped in a package called iproute or iproute2 and\n"
"consists of several tools, of which the most important are ip and tc.  ip\n"
"controls IPv4 and IPv6 configuration and tc stands for traffic control.  Both\n"
"tools print detailed usage messages and are accompanied by a set of\n"
"manpages."
msgstr ""

#: gnu/packages/linux.scm:827
msgid "Tools for controlling the network subsystem in Linux"
msgstr ""

#: gnu/packages/linux.scm:829
msgid ""
"This package includes the important tools for controlling the network\n"
"subsystem of the Linux kernel.  This includes arp, hostname, ifconfig,\n"
"netstat, rarp and route.  Additionally, this package contains utilities\n"
"relating to particular network hardware types (plipconfig, slattach) and\n"
"advanced aspects of IP configuration (iptunnel, ipmaddr)."
msgstr ""

#: gnu/packages/linux.scm:862
msgid "Library for working with POSIX capabilities"
msgstr ""

#: gnu/packages/linux.scm:864
msgid ""
"Libcap2 provides a programming interface to POSIX capabilities on\n"
"Linux-based operating systems."
msgstr ""

#: gnu/packages/linux.scm:896
msgid "Manipulate Ethernet bridges"
msgstr ""

#: gnu/packages/linux.scm:898
msgid ""
"Utilities for Linux's Ethernet bridging facilities.  A bridge is a way\n"
"to connect two Ethernet segments together in a protocol independent way.\n"
"Packets are forwarded based on Ethernet address, rather than IP address (like\n"
"a router).  Since forwarding is done at Layer 2, all protocols can go\n"
"transparently through a bridge."
msgstr ""

#: gnu/packages/linux.scm:920
msgid "NetLink protocol library suite"
msgstr ""

#: gnu/packages/linux.scm:922
msgid ""
"The libnl suite is a collection of libraries providing APIs to netlink\n"
"protocol based Linux kernel interfaces.  Netlink is an IPC mechanism primarly\n"
"between the kernel and user space processes.  It was designed to be a more\n"
"flexible successor to ioctl to provide mainly networking related kernel\n"
"configuration and monitoring interfaces."
msgstr ""

#: gnu/packages/linux.scm:955
msgid "Analyze power consumption on Intel-based laptops"
msgstr ""

#: gnu/packages/linux.scm:957
msgid ""
"PowerTOP is a Linux tool to diagnose issues with power consumption and\n"
"power management.  In addition to being a diagnostic tool, PowerTOP also has\n"
"an interactive mode where the user can experiment various power management\n"
"settings for cases where the operating system has not enabled these\n"
"settings."
msgstr ""

#: gnu/packages/linux.scm:979
msgid "Audio mixer for X and the console"
msgstr ""

#: gnu/packages/linux.scm:981
msgid ""
"Aumix adjusts an audio mixer from X, the console, a terminal,\n"
"the command line or a script."
msgstr ""

#: gnu/packages/linux.scm:1005
msgid "Displays the IO activity of running processes"
msgstr ""

#: gnu/packages/linux.scm:1007
msgid ""
"Iotop is a Python program with a top like user interface to show the\n"
"processes currently causing I/O."
msgstr ""

#: gnu/packages/linux.scm:1058
msgid "Support file systems implemented in user space"
msgstr ""

#: gnu/packages/linux.scm:1060
msgid ""
"As a consequence of its monolithic design, file system code for Linux\n"
"normally goes into the kernel itself---which is not only a robustness issue,\n"
"but also an impediment to system extensibility.  FUSE, for \"file systems in\n"
"user space\", is a kernel module and user-space library that tries to address\n"
"part of this problem by allowing users to run file system implementations as\n"
"user-space processes."
msgstr ""

#: gnu/packages/linux.scm:1085
msgid "User-space union file system"
msgstr ""

#: gnu/packages/linux.scm:1087
msgid ""
"UnionFS-FUSE is a flexible union file system implementation in user\n"
"space, using the FUSE library.  Mounting a union file system allows you to\n"
"\"aggregate\" the contents of several directories into a single mount point.\n"
"UnionFS-FUSE additionally supports copy-on-write."
msgstr ""

#: gnu/packages/linux.scm:1112
msgid "User-space union file system (statically linked)"
msgstr ""

#: gnu/packages/linux.scm:1154
msgid "Mount remote file systems over SSH"
msgstr ""

#: gnu/packages/linux.scm:1156
msgid ""
"This is a file system client based on the SSH File Transfer Protocol.\n"
"Since most SSH servers already support this protocol it is very easy to set\n"
"up: on the server side there's nothing to do; on the client side mounting the\n"
"file system is as easy as logging into the server with an SSH client."
msgstr ""

#: gnu/packages/linux.scm:1204
msgid "Tools for non-uniform memory access (NUMA) machines"
msgstr ""

#: gnu/packages/linux.scm:1206
msgid ""
"NUMA stands for Non-Uniform Memory Access, in other words a system whose\n"
"memory is not all in one place.  The numactl program allows you to run your\n"
"application program on specific CPU's and memory nodes.  It does this by\n"
"supplying a NUMA memory policy to the operating system before running your\n"
"program.\n"
"\n"
"The package contains other commands, such as numademo, numastat and memhog.\n"
"The numademo command provides a quick overview of NUMA performance on your\n"
"system."
msgstr ""

#: gnu/packages/linux.scm:1269
msgid "Linux keyboard utilities and keyboard maps"
msgstr ""

#: gnu/packages/linux.scm:1271
msgid ""
"This package contains keytable files and keyboard utilities compatible\n"
"for systems using the Linux kernel.  This includes commands such as\n"
"'loadkeys', 'setfont', 'kbdinfo', and 'chvt'."
msgstr ""

#: gnu/packages/linux.scm:1290
msgid "Monitor file accesses"
msgstr ""

#: gnu/packages/linux.scm:1292
msgid ""
"The inotify-tools packages provides a C library and command-line tools\n"
"to use Linux' inotify mechanism, which allows file accesses to be monitored."
msgstr ""

#: gnu/packages/linux.scm:1330
msgid "Kernel module tools"
msgstr ""

#: gnu/packages/linux.scm:1331
msgid ""
"Kmod is a set of tools to handle common tasks with Linux\n"
"kernel modules like insert, remove, list, check properties, resolve\n"
"dependencies and aliases.\n"
"\n"
"These tools are designed on top of libkmod, a library that is shipped with\n"
"kmod.  The aim is to be compatible with tools, configurations and indices\n"
"from the module-init-tools project."
msgstr ""

#: gnu/packages/linux.scm:1380
msgid "Userspace device management"
msgstr ""

#: gnu/packages/linux.scm:1381
msgid ""
"Udev is a daemon which dynamically creates and removes\n"
"device nodes from /dev/, handles hotplug events and loads drivers at boot\n"
"time."
msgstr ""

#: gnu/packages/linux.scm:1470
msgid "Logical volume management for Linux"
msgstr ""

#: gnu/packages/linux.scm:1472
msgid ""
"LVM2 is the logical volume management tool set for Linux-based systems.\n"
"This package includes the user-space libraries and tools, including the device\n"
"mapper.  Kernel components are part of Linux-libre."
msgstr ""

#: gnu/packages/linux.scm:1499
msgid "Tools for manipulating Linux Wireless Extensions"
msgstr ""

#: gnu/packages/linux.scm:1500
msgid ""
"Wireless Tools are used to manipulate the Linux Wireless\n"
"Extensions.  The Wireless Extension is an interface allowing you to set\n"
"Wireless LAN specific parameters and get the specific stats."
msgstr ""

#: gnu/packages/linux.scm:1572
msgid "Utilities to read temperature/voltage/fan sensors"
msgstr ""

#: gnu/packages/linux.scm:1574
msgid ""
"Lm-sensors is a hardware health monitoring package for Linux.  It allows\n"
"you to access information from temperature, voltage, and fan speed sensors.\n"
"It works with most newer systems."
msgstr ""

#: gnu/packages/linux.scm:1609
msgid "Hardware health information viewer"
msgstr ""

#: gnu/packages/linux.scm:1611
msgid ""
"Xsensors reads data from the libsensors library regarding hardware\n"
"health such as temperature, voltage and fan speed and displays the information\n"
"in a digital read-out."
msgstr ""

#: gnu/packages/linux.scm:1654
msgid "Linux profiling with performance counters"
msgstr ""

#: gnu/packages/linux.scm:1656
msgid ""
"perf is a tool suite for profiling using hardware performance counters,\n"
"with support in the Linux kernel.  perf can instrument CPU performance\n"
"counters, tracepoints, kprobes, and uprobes (dynamic tracing).  It is capable\n"
"of lightweight profiling.  This package contains the user-land tools and in\n"
"particular the 'perf' command."
msgstr ""

#: gnu/packages/lout.scm:109
msgid "Document layout system"
msgstr ""

#: gnu/packages/lout.scm:111
msgid ""
"The Lout document formatting system reads a high-level description of\n"
"a document similar in style to LaTeX and produces a PostScript or plain text\n"
"output file.\n"
"\n"
"Lout offers an unprecedented range of advanced features, including optimal\n"
"paragraph and page breaking, automatic hyphenation, PostScript EPS file\n"
"inclusion and generation, equation formatting, tables, diagrams, rotation and\n"
"scaling, sorted indexes, bibliographic databases, running headers and\n"
"odd-even pages, automatic cross referencing, multilingual documents including\n"
"hyphenation (most European languages are supported), formatting of computer\n"
"programs, and much more, all ready to use.  Furthermore, Lout is easily\n"
"extended with definitions which are very much easier to write than troff of\n"
"TeX macros because Lout is a high-level, purely functional language, the\n"
"outcome of an eight-year research project that went back to the\n"
"beginning."
msgstr ""

#: gnu/packages/mpd.scm:62
msgid "Music Player Daemon client library"
msgstr ""

#: gnu/packages/mpd.scm:63
msgid ""
"A stable, documented, asynchronous API library for\n"
"interfacing MPD in the C, C++ & Objective C languages."
msgstr ""

#: gnu/packages/mpd.scm:121
msgid "Music Player Daemon"
msgstr ""

#: gnu/packages/mpd.scm:122
msgid ""
"Music Player Daemon (MPD) is a flexible, powerful,\n"
"server-side application for playing music.  Through plugins and libraries it\n"
"can play a variety of sound files while being controlled by its network\n"
"protocol."
msgstr ""

#: gnu/packages/mpd.scm:147
msgid "Curses Music Player Daemon client"
msgstr ""

#: gnu/packages/mpd.scm:148
msgid ""
"ncmpc is a fully featured MPD client, which runs in a\n"
"terminal using ncurses."
msgstr ""

#: gnu/packages/mpd.scm:169
msgid "Featureful ncurses based MPD client inspired by ncmpc"
msgstr ""

#: gnu/packages/mpd.scm:170
msgid ""
"Ncmpcpp is an mpd client with a UI very similar to ncmpc,\n"
"but it provides new useful features such as support for regular expressions\n"
"for library searches, extended song format, items filtering, the ability to\n"
"sort playlists, and a local filesystem browser."
msgstr ""

#: gnu/packages/pdf.scm:79
msgid "PDF rendering library"
msgstr ""

#: gnu/packages/pdf.scm:81
msgid "Poppler is a PDF rendering library based on the xpdf-3.0 code base."
msgstr ""

#: gnu/packages/pdf.scm:124
msgid "Viewer for PDF files based on the Motif toolkit"
msgstr ""

#: gnu/packages/pdf.scm:126
msgid "Xpdf is a viewer for Portable Document Format (PDF) files"
msgstr ""

#: gnu/packages/pdf.scm:154
msgid "Tools to work with the PDF file format"
msgstr ""

#: gnu/packages/pdf.scm:156
msgid ""
"PoDoFo is a C++ library and set of command-line tools to work with the\n"
"PDF file format.  It can parse PDF files and load them into memory, and makes\n"
"it easy to modify them and write the changes to disk.  It is primarily useful\n"
"for applications that wish to do lower level manipulation of PDF, such as\n"
"extracting content or merging files."
msgstr ""

#: gnu/packages/pdf.scm:217
msgid "Lightweight PDF viewer and toolkit"
msgstr ""

#: gnu/packages/pdf.scm:219
msgid ""
"MuPDF is a C library that implements a PDF and XPS parsing and\n"
"rendering engine.  It is used primarily to render pages into bitmaps,\n"
"but also provides support for other operations such as searching and\n"
"listing the table of contents and hyperlinks.\n"
"\n"
"The library ships with a rudimentary X11 viewer, and a set of command\n"
"line tools for batch rendering (pdfdraw), examining the file structure\n"
"(pdfshow), and rewriting files (pdfclean)."
msgstr ""

#: gnu/packages/ratpoison.scm:60
msgid "Simple mouse-free tiling window manager"
msgstr ""

#: gnu/packages/ratpoison.scm:62
msgid ""
"Ratpoison is a simple window manager with no fat library\n"
"dependencies, no fancy graphics, no window decorations, and no\n"
"rodent dependence.  It is largely modelled after GNU Screen which\n"
"has done wonders in the virtual terminal market.\n"
"\n"
"The screen can be split into non-overlapping frames.  All windows\n"
"are kept maximized inside their frames to take full advantage of\n"
"your precious screen real estate.\n"
"\n"
"All interaction with the window manager is done through keystrokes.\n"
"Ratpoison has a prefix map to minimize the key clobbering that\n"
"cripples Emacs and other quality pieces of software."
msgstr ""

#: gnu/packages/scanner.scm:52
msgid "Raster image scanner library and drivers"
msgstr ""

#: gnu/packages/scanner.scm:53
msgid ""
"SANE stands for \"Scanner Access Now Easy\" and is an API\n"
"proving access to any raster image scanner hardware (flatbed scanner,\n"
"hand-held scanner, video- and still-cameras, frame-grabbers, etc.).  The\n"
"package contains the library and drivers."
msgstr ""

#: gnu/packages/scheme.scm:126
msgid "A Scheme implementation with integrated editor and debugger"
msgstr ""

#: gnu/packages/scheme.scm:128
msgid ""
"GNU/MIT Scheme is an implementation of the Scheme programming\n"
"language.  It provides an interpreter, a compiler and a debugger.  It also\n"
"features an integrated Emacs-like editor and a large runtime library."
msgstr ""

#: gnu/packages/scheme.scm:208
msgid "Efficient Scheme compiler"
msgstr ""

#: gnu/packages/scheme.scm:210
msgid ""
"Bigloo is a Scheme implementation devoted to one goal: enabling\n"
"Scheme based programming style where C(++) is usually\n"
"required.  Bigloo attempts to make Scheme practical by offering\n"
"features usually presented by traditional programming languages\n"
"but not offered by Scheme and functional programming.  Bigloo\n"
"compiles Scheme modules.  It delivers small and fast stand alone\n"
"binary executables.  Bigloo enables full connections between\n"
"Scheme and C programs and between Scheme and Java programs."
msgstr ""

#: gnu/packages/scheme.scm:281
msgid "Multi-tier programming language for the Web 2.0"
msgstr ""

#: gnu/packages/scheme.scm:283
msgid ""
"HOP is a multi-tier programming language for the Web 2.0 and the\n"
"so-called diffuse Web.  It is designed for programming interactive web\n"
"applications in many fields such as multimedia (web galleries, music players,\n"
"...), ubiquitous and house automation (SmartPhones, personal appliance),\n"
"mashups, office (web agendas, mail clients, ...), etc."
msgstr ""

#: gnu/packages/scheme.scm:323
msgid "R5RS Scheme implementation that compiles native code via C"
msgstr ""

#: gnu/packages/scheme.scm:325
msgid ""
"CHICKEN is a compiler for the Scheme programming language.  CHICKEN\n"
"produces portable and efficient C, supports almost all of the R5RS Scheme\n"
"language standard, and includes many enhancements and extensions."
msgstr ""

#: gnu/packages/scheme.scm:344
msgid "Scheme implementation using a bytecode interpreter"
msgstr ""

#: gnu/packages/scheme.scm:346
msgid ""
"Scheme 48 is an implementation of Scheme based on a byte-code\n"
"interpreter and is designed to be used as a testbed for experiments in\n"
"implementation techniques and as an expository tool."
msgstr ""

#: gnu/packages/scheme.scm:419
msgid "Implementation of Scheme and related languages"
msgstr ""

#: gnu/packages/scheme.scm:421
msgid ""
"Racket is an implementation of the Scheme programming language (R5RS and\n"
"R6RS) and related languages, such as Typed Racket.  It features a compiler and\n"
"a virtual machine with just-in-time native compilation, as well as a large set\n"
"of libraries."
msgstr ""

#: gnu/packages/wordnet.scm:79
msgid "Lexical database for the English language"
msgstr ""

#: gnu/packages/wordnet.scm:81
msgid ""
"WordNet® is a large lexical database of English.  Nouns, verbs,\n"
"adjectives and adverbs are grouped into sets of cognitive synonyms\n"
"(synsets), each expressing a distinct concept.  Synsets are interlinked by\n"
"means of conceptual-semantic and lexical relations.  The resulting network of\n"
"meaningfully related words and concepts can be navigated with the browser.\n"
"WordNet is also freely and publicly available for download.  WordNet's\n"
"structure makes it a useful tool for computational linguistics and natural\n"
"language processing."
msgstr ""

#: gnu/packages/zip.scm:56
msgid "Compression and file packing utility"
msgstr ""

#: gnu/packages/zip.scm:58
msgid ""
"Zip is a compression and file packaging/archive utility.  Zip is useful\n"
"for packaging a set of files for distribution, for archiving files, and for\n"
"saving disk space by temporarily compressing unused files or directories.\n"
"Zip puts one or more compressed files into a single ZIP archive, along with\n"
"information about the files (name, path, date, time of last modification,\n"
"protection, and check information to verify file integrity).  An entire\n"
"directory structure can be packed into a ZIP archive with a single command.\n"
"\n"
"Zip has one compression method (deflation) and can also store files without\n"
"compression.  Zip automatically chooses the better of the two for each file.\n"
"Compression ratios of 2:1 to 3:1 are common for text files."
msgstr ""

#: gnu/packages/zip.scm:98
msgid "Decompression and file extraction utility"
msgstr ""

#: gnu/packages/zip.scm:100
msgid ""
"UnZip is an extraction utility for archives compressed in .zip format,\n"
"also called \"zipfiles\".\n"
"\n"
"UnZip lists, tests, or extracts files from a .zip archive.  The default\n"
"behaviour (with no options) is to extract into the current directory, and\n"
"subdirectories below it, all files from the specified zipfile.  UnZip\n"
"recreates the stored directory structure by default."
msgstr ""

#: gnu/packages/zip.scm:134
msgid "Library for accessing zip files"
msgstr ""

#: gnu/packages/zip.scm:136
msgid "ZZipLib is a library based on zlib for accessing zip files."
msgstr ""

#: gnu/packages/zip.scm:154
msgid "Provides an interface to ZIP archive files"
msgstr ""

#: gnu/packages/zip.scm:155
msgid ""
"The Archive::Zip module allows a Perl program to create,\n"
"manipulate, read, and write Zip archive files."
msgstr ""

#: gnu/packages/zsh.scm:63
msgid "Powerful shell for interactive use and scripting"
msgstr ""

#: gnu/packages/zsh.scm:64
msgid ""
"The Z shell (zsh) is a Unix shell that can be used\n"
"as an interactive login shell and as a powerful command interpreter\n"
"for shell scripting.  Zsh can be thought of as an extended Bourne shell\n"
"with a large number of improvements, including some features of bash,\n"
"ksh, and tcsh."
msgstr ""

M test-env.in => test-env.in +2 -2
@@ 99,8 99,8 @@ unset LANGUAGE
LC_MESSAGES=C
export LC_MESSAGES

# Ignore user modules.
unset GUIX_PACKAGE_PATH
# Ignore user settings.
unset GUIX_PACKAGE_PATH GUIX_BUILD_OPTIONS

storedir="@storedir@"
prefix="@prefix@"

M tests/guix-build.sh => tests/guix-build.sh +10 -0
@@ 84,3 84,13 @@ guix build -e "(begin
# Running a gexp.
guix build -e '#~(mkdir #$output)' -d
guix build -e '#~(mkdir #$output)' -d | grep 'gexp\.drv'

# Using 'GUIX_BUILD_OPTIONS'.
GUIX_BUILD_OPTIONS="--dry-run"
export GUIX_BUILD_OPTIONS

guix build emacs

GUIX_BUILD_OPTIONS="--something-completely-crazy"
if guix build emacs;
then false; else true; fi

M tests/guix-package.sh => tests/guix-package.sh +13 -0
@@ 289,3 289,16 @@ GUIX_PACKAGE_PATH="$module_dir"
export GUIX_PACKAGE_PATH
guix package -A emacs-foo-bar | grep 42
guix package -i emacs-foo-bar-42 -n
unset GUIX_PACKAGE_PATH

# Using 'GUIX_BUILD_OPTIONS'.

available="`guix package -A | sort`"
GUIX_BUILD_OPTIONS="--dry-run"
export GUIX_BUILD_OPTIONS

# Make sure $GUIX_BUILD_OPTIONS is not simply appended to the command-line,
# which would break 'guix package -A' and similar.
available2="`guix package -A | sort`"
test "$available2" = "$available"
guix package -I