~ruther/guix-local

33690ffde5af2c516bc6b2dd060ab9cf7ab88eb2 — Mark H Weaver 11 years ago 5c47b06 + b966347
Merge branch 'master' into core-updates
66 files changed, 3150 insertions(+), 864 deletions(-)

M Makefile.am
M NEWS
M THANKS
M build-aux/hydra/demo-os.scm
M configure.ac
M daemon.am
M doc.am
M doc/guix.texi
M gnu-system.am
M gnu/packages.scm
M gnu/packages/admin.scm
M gnu/packages/algebra.scm
M gnu/packages/boost.scm
M gnu/packages/cdrom.scm
M gnu/packages/gcc.scm
M gnu/packages/gimp.scm
M gnu/packages/gnome.scm
A gnu/packages/libftdi.scm
M gnu/packages/linux.scm
M gnu/packages/mail.scm
M gnu/packages/nano.scm
M gnu/packages/package-management.scm
M gnu/packages/parallel.scm
M gnu/packages/patches/module-init-tools-moduledir.patch
M gnu/packages/texlive.scm
M gnu/packages/video.scm
M gnu/services/avahi.scm
M gnu/services/base.scm
M gnu/services/dbus.scm
M gnu/services/dmd.scm
M gnu/services/networking.scm
M gnu/services/xorg.scm
M gnu/system.scm
M gnu/system/file-systems.scm
M gnu/system/install.scm
A gnu/system/os-config.tmpl
M gnu/system/shadow.scm
M guix/build-system/gnu.scm
M guix/build/activation.scm
M guix/build/linux-initrd.scm
M guix/monads.scm
M guix/packages.scm
M guix/profiles.scm
M guix/scripts/package.scm
M guix/scripts/refresh.scm
M guix/scripts/system.scm
M guix/ui.scm
M guix/utils.scm
M po/guix/LINGUAS
M po/guix/de.po
M po/guix/eo.po
A po/guix/hu.po
M po/guix/pt_BR.po
M po/guix/sr.po
M po/guix/vi.po
M po/packages/de.po
M po/packages/eo.po
M po/packages/pt_BR.po
M po/packages/sr.po
M po/packages/vi.po
M tests/gexp.scm
M tests/guix-package.sh
M tests/guix-register.sh
M tests/monads.scm
M tests/profiles.scm
M tests/utils.scm
M Makefile.am => Makefile.am +1 -0
@@ 253,6 253,7 @@ guix_install_go_files = install-nobase_nodist_guilemoduleDATA
$(guix_install_go_files): install-nobase_dist_guilemoduleDATA

SUBDIRS = po/guix po/packages
BUILT_SOURCES =

include doc.am


M NEWS => NEWS +115 -0
@@ 10,6 10,121 @@ Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>

Please send Guix bug reports to bug-guix@gnu.org.

* Changes in 0.7 (since 0.6)
** Package management
*** Binaries for mips64el-linux now available from hydra.gnu.org

These come in addition to the x86_64-linux and i686-linux binaries already
provided, thanks to our generous donor and friendly admins.  See
“Substitutes” in the manual.

*** ‘guix package’ has a new ‘--show’ option
*** ‘guix refresh’ has a new ‘--list-dependent’ option

** Programming interfaces
*** New (guix gexp) module, which implements “G-expressions”

G-expressions are a new mechanism to embed build-side code in host-side
code.  See “G-Expressions” in the manual.

*** (gnu system) and related modules now use G-expressions

This greatly simplifies code, and guarantees that build code carries
references to the packages or derivations it uses.

*** ‘build-expression->derivation’ is deprecated in favor of G-expressions
*** The (gnu system) module has been largely augmented and factorized
*** New (guix build vm) module, support for virtual machine images
*** New (guix build activation) module, for “system activation”
*** New (guix build syscalls) module
*** New (guix build install) and module for whole system installation
*** New (gnu system install) module, for the installation system
*** New (gnu system file-systems) module, for ‘file-system’ declarations
*** New (gnu) module, which aggregates common (gnu …) modules
*** ‘service’ records now have an optional ‘activate’ field

This allows services to specify code to run at system activation time.

** GNU distribution
*** An image to install the GNU system from a USB stick is provided

This is the first time an installation image is provided.  See “System
Installation” in the manual for details.  This is work in progress as noted
in “Limitations”.  Your feedback and help are welcome!

*** Support for more parameters in ‘operating-system’ declarations

Operating system declarations can now provide a list of file systems, a list
of setuid programs, bootloader options, and more.  See “System Configuration”
in the manual.

*** ‘guix system’ supports more actions

Newly supported actions are ‘init’, ‘build’, ‘reconfigure’, and ‘disk-image’.
See “Invoking guix system” in the manual.

*** User accounts and groups are created at system activation time
*** Virtual machine support uses para-virtualized devices
*** GCC package now has an additional ‘lib’ output, for run-time support libs
*** GLib package now has a separate “bin” output (<http://bugs.gnu.org/17853>)
*** 134 new packages

abbaye, aegis, attica, babl, barcode, behave, btar, busybox, ccache, ccrtp,
chess, clucene, cmatrix, commoncpp, conkeror, cook, cssc, datamash, diffstat,
doxygen, dropbear, dtach, duplicity, e2fsck-static, exosip, fftw-openmpi,
fish, gconf, gegl, gimp, gmsh, gnome-mime-data, gnome-vfs, gnumeric, goffice,
gsegrafix, guile-opengl, guile-static-stripped, hdup, hwloc, inotify-tools,
jrnl, kbd, kmod, lftp, libarchive, libart-lgpl, libbonobo, libbonoboui,
libcroco, libdbusmenu-qt, libftdi, libglade, libgnome, libgnomecanvas,
libgnomeprint, libgnomeprintui, libgnomeui, libgsf, libidl, libmcrypt,
libmhash, librsvg, librsync, libsodium, libuv, libvpx, links, lzop, man-pages,
maxima, mcrypt, mosh, mpg123, mplayer, mu, ncmpcpp, node, notmuch, numactl,
offlineimap, openmpi, orbit2, osip, pangox-compat, perl-io-tty, petsc,
petsc-complex, petsc-complex-openmpi, petsc-openmpi, pingus, podofo, protobuf,
pt-scotch, python-enum34, python-keyring, python-lockfile, python-mock,
python-parse, python-parse-type, python-parsedatetime, python-pycrypto,
python-six, python-tzlocal, python2-lockfile, python2-mock, qjson, qrencode,
rasqal, rdiff-backup, rdup, redland, rottlog, scotch, sipwitch, sshfs-fuse,
strigi, sudo, superlu, superlu-dist, talkfilters, talloc, tcpdump, tinyproxy,
transmission, ucommon, udev, vlc, vtk, wakelan, wireless-tools,
wpa-supplicant, xboard, youtube-dl

*** 87 package updates

bitlbee-3.2.2, cursynth-1.5, ddrescue-1.18.1, dfc-3.0.4, dmd-0.2,
docbook-xml-4.3, docbook-xml-4.4, docbook-xsl-1.78.1, dvdisaster-0.72.6,
ffmpeg-2.3, fftw-3.3.4, fftwf-3.3.4, flac-1.3.0, gawk-4.1.1, gcc-4.7.4,
gcc-4.8.3, gcc-4.8.3, gcc-4.9.1, gcc-cross-mips64el-linux-gnuabi64-4.8.3,
gcc-objc++-4.8.3, gcc-objc-4.8.3, gcc-stripped-tarball-4.8.3,
gcc-toolchain-4.8.3, gcc-toolchain-4.9.1, gccgo-4.8.3, gdb-7.7.1,
gettext-0.19.2, gfortran-4.8.3, glib-2.40.0, global-6.3, gmp-6.0.0a,
gnupg-1.4.18, gnupg-2.0.25, gnutls-3.2.15, gp2c-0.0.9pl1, grep-2.20,
gst-plugins-base-1.0.10, gstreamer-0.10.36, gtk+-3.10.1, gtkmm-2.24.2,
guile-2.0.11, guile-2.0.11, guix-0.6, guix-0.6.0ae8c15, htop-1.0.3,
icu4c-53.1, imagemagick-6.8.9-0, json-c-0.12, libdrm-2.4.33, libgc-7.2e,
libgcrypt-1.5.3, libgpg-error-1.13, libjpeg-8d, libmicrohttpd-0.9.37,
libogg-1.3.2, libotr-4.0.0, libtasn1-3.6, libvorbis-1.3.4, lightning-2.0.4,
linux-libre-3.15.6, lua-5.1.5, lua-5.2.3, mcron-1.0.8, moe-1.6, nano-2.3.6,
neon-0.29.6, nettle-3.0, openssl-1.0.1h, parallel-20140722, pari-gp-2.7.1,
pspp-0.8.3, python-2.7.6, python-dateutil-2.2, python2-dateutil-2.2,
qemu-2.0.0, qemu-headless-2.0.0, qt-4.8.6, qt-5.2.1, readline-6.2,
screen-4.2.1, soprano-2.9.4, texinfo-5.2, texlive-2014, tor-0.2.4.22,
wdiff-1.2.2, xorriso-1.3.8, xterm-304

** Native language support
*** New translations: de (German), and hu (Hungarian)
*** Updated translations: eo, pt_BR, sr, vi
*** Package descriptions moved from the ‘guix’ text domain to ‘guix-packages’
** Bugs fixed
*** Downloads are now faster (<http://bugs.gnu.org/15368>)
*** ‘guix authenticate’ properly writes signatures to stdout
    (<http://bugs.gnu.org/17312>)
*** Progress report of downloads is now properly displayed
*** Error reporting of pk-crypto errors has been improved
*** The 'patches' field now works for origins with no extension
*** Synchronization and GC issues fixed in the offload hook
*** (guix ftp-client) emits USER commands suitable for all servers

* Changes in 0.6 (since 0.5)
** Package management
*** Default store directory changed to /gnu/store

M THANKS => THANKS +1 -0
@@ 23,6 23,7 @@ infrastructure help:
	  Matthew Lien <bluet@bluet.org>
	    Niels Möller <nisse@lysator.liu.se>
	   Yutaka Niibe <gniibe@fsij.org>
             Adam Pribyl <pribyl@lowlevel.cz>
	   Cyrill Schenkel <cyrill.schenkel@gmail.com>
	    Benno Schulenberg <coordinator@translationproject.org>
	    Jason Self <jself@gnu.org>

M build-aux/hydra/demo-os.scm => build-aux/hydra/demo-os.scm +7 -7
@@ 44,13 44,13 @@
 (file-systems
  ;; We provide a dummy file system for /, but that's OK because the VM build
  ;; code will automatically declare the / file system for us.
  (list (file-system
          (mount-point "/")
          (device "dummy")
          (type "dummy"))
        ;; %fuse-control-file-system   ; needs fuse.ko
        ;; %binary-format-file-system  ; needs binfmt.ko
        ))
  (cons* (file-system
           (mount-point "/")
           (device "dummy")
           (type "dummy"))
         ;; %fuse-control-file-system   ; needs fuse.ko
         ;; %binary-format-file-system  ; needs binfmt.ko
         %base-file-systems))

 (users (list (user-account
               (name "guest")

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

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



@@ 16,7 16,7 @@ dnl For the C++ code.  This must be used early.
AC_USE_SYSTEM_EXTENSIONS

AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.18.3])
AM_GNU_GETTEXT_VERSION([0.18.1])

guilemoduledir="${datarootdir}/guile/site/2.0"
AC_SUBST([guilemoduledir])

M daemon.am => daemon.am +1 -1
@@ 20,7 20,7 @@
# Integration of the `guix-daemon' code taken from upstream Nix.
#

BUILT_SOURCES = nix/libstore/schema.sql.hh
BUILT_SOURCES += nix/libstore/schema.sql.hh
CLEANFILES += $(BUILT_SOURCES)

noinst_LIBRARIES = libformat.a libutil.a libstore.a

M doc.am => doc.am +10 -1
@@ 1,5 1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
#
# This file is part of GNU Guix.


@@ 24,6 24,15 @@ EXTRA_DIST +=					\
  doc/images/bootstrap-graph.eps		\
  doc/images/bootstrap-graph.pdf

# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
BUILT_SOURCES        += doc/os-config.texi
EXTRA_DIST           += doc/os-config.texi
MAINTAINERCLEANFILES  = doc/os-config.texi

doc/os-config.texi: gnu/system/os-config.tmpl
	$(MKDIR_P) "`dirname "$@"`"
	cp "$<" "$@"

infoimagedir = $(infodir)/images
dist_infoimage_DATA = doc/images/bootstrap-graph.png


M doc/guix.texi => doc/guix.texi +161 -30
@@ 29,6 29,8 @@ Documentation License''.
                      Managing packages with Guix.
* guix build: (guix)Invoking guix build
                      Building packages with Guix.
* guix system: (guix)Invoking guix system
                      Managing the operating system configuration.
@end direntry

@titlepage


@@ 67,7 69,7 @@ package management tool written for the GNU system.
* Acknowledgments::             Thanks!
* GNU Free Documentation License::  The license of this manual.
* Concept Index::               Concepts.
* Function Index::              Functions.
* Programming Index::           Data types, functions, and variables.
@end menu

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


@@ 129,7 131,7 @@ ready to use it.
Note that this section is concerned with the installation of the package
manager, which can be done on top of a running GNU/Linux system.  If,
instead, you want to install the complete GNU operating system,
@ref{System Installation}.
@pxref{System Installation}.

The build procedure for Guix is the same as for other GNU software, and
is not covered here.  Please see the files @file{README} and


@@ 844,6 846,30 @@ name: gmp
@dots{}
@end example

@item --show=@var{package}
Show details about @var{package}, taken from the list of available packages, in
@code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU
recutils manual}).

@example
$ guix package --show=python | recsel -p name,version
name: python
version: 2.7.6

name: python
version: 3.3.5
@end example

You may also specify the full name of a package to only get details about a
specific version of it:
@example
$ guix package --show=python-3.3.5 | recsel -p name,version
name: python
version: 3.3.5
@end example



@item --list-installed[=@var{regexp}]
@itemx -I [@var{regexp}]
List the currently installed packages in the specified profile, with the


@@ 1792,7 1818,7 @@ As can be guessed, this primitive is cumbersome to use directly.  A
better approach is to write build scripts in Scheme, of course!  The
best course of action for that is to write the build code as a
``G-expression'', and to pass it to @code{gexp->derivation}.  For more
information, @ref{G-Expressions}.
information, @pxref{G-Expressions}.

Once upon a time, @code{gexp->derivation} did not exist and constructing
derivations with build code written in Scheme was achieved with


@@ 1988,6 2014,29 @@ will references @var{coreutils}, @var{grep}, and @var{sed}, thereby
preventing them from being garbage-collected during its lifetime.
@end deffn

@deffn {Monadic Procedure} interned-file @var{file} [@var{name}] @
         [#:recursive? #t]
Return the name of @var{file} once interned in the store.  Use
@var{name} as its store name, or the basename of @var{file} if
@var{name} is omitted.

When @var{recursive?} is true, the contents of @var{file} are added
recursively; if @var{file} designates a flat file and @var{recursive?}
is true, its contents are added, and its permission bits are kept.

The example below adds a file to the store, under two different names:

@example
(run-with-store (open-connection)
  (mlet %store-monad ((a (interned-file "README"))
                      (b (interned-file "README" "LEGU-MIN")))
    (return (list a b))))

@result{} ("/gnu/store/rwm@dots{}-README" "/gnu/store/44i@dots{}-LEGU-MIN")
@end example

@end deffn

@deffn {Monadic Procedure} package-file @var{package} [@var{file}] @
       [#:system (%current-system)] [#:output "out"] Return as a monadic
value in the absolute file name of @var{file} within the @var{output}


@@ 2545,6 2594,33 @@ The command above specifically updates the @code{emacs} and
@code{idutils} packages.  The @code{--select} option would have no
effect in this case.

When considering whether to upgrade a package, it is sometimes
convenient to know which packages would be affected by the upgrade and
should be checked for compatibility.  For this the following option may
be used when passing @command{guix refresh} one or more package names:

@table @code

@item --list-dependent
@itemx -l
List top-level dependent packages that would need to be rebuilt as a
result of upgrading one or more packages.

@end table

Be aware that the @code{--list-dependent} option only
@emph{approximates} the rebuilds that would be required as a result of
an upgrade.  More rebuilds might be required under some circumstances.

@example
$ guix refresh --list-dependent flex
Building the following 120 packages would ensure 213 dependent packages are rebuilt:
hop-2.4.0 geiser-0.4 notmuch-0.18 mu-0.9.9.5 cflow-1.4 idutils-4.6 @dots{}
@end example

The command above lists a set of packages that could be built to check
for compatibility with an upgraded @code{flex} package.

The following options can be used to customize GnuPG operation:

@table @code


@@ 2620,14 2696,14 @@ to join!  @ref{Contributing}, for information about how you can help.

This section explains how to install the complete GNU operating system
on a machine.  The Guix package manager can also be installed on top of
a running GNU/Linux system, @ref{Installation}.
a running GNU/Linux system, @pxref{Installation}.

@ifinfo
@c This paragraph is for people reading this from tty2 of the
@c installation image.
You're reading this documentation with an Info reader.  For details on
how to use it, hit the @key{RET} key (``return'' or ``enter'') on the
link that follows: @ref{Help,,, info, Info: An Introduction}.  Hit
link that follows: @pxref{Help,,, info, Info: An Introduction}.  Hit
@kbd{l} afterwards to come back here.
@end ifinfo



@@ 2658,7 2734,7 @@ GNOME and KDE.

@item
Support for encrypted disks, the Logical Volume Manager (LVM), and swap
devices are missing.
devices is missing.

@item
Few system services are currently supported out-of-the-box


@@ 2707,7 2783,7 @@ its device name.  Assuming that USB stick is known as @file{/dev/sdX},
copy the image with:

@example
dd if=gnu-usb-install-20140629.x86_64 of=/dev/sdX
dd if=gnu-usb-install-@value{VERSION}.x86_64 of=/dev/sdX
@end example

Access to @file{/dev/sdX} usually requires root privileges.


@@ 2744,13 2820,27 @@ image does not contain all the software and tools that may be needed.
Unless this has already been done, you must partition and format the
target partitions.

Preferably, assign partitions a label so that you can easily and
reliably refer to them in @code{file-system} declarations (@pxref{File
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.

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

@item
Lastly, run @code{deco start cow-store /mnt}.

This will make @file{/gnu/store} copy-on-write, such that packages added
to it during the installation phase will be written to the target disk
rather than kept in memory.

@end enumerate

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

@subsection Proceeding with the Installation



@@ 2762,28 2852,16 @@ It is better to store that file on the target root file system, say, as
@file{/mnt/etc/config.scm}.

A minimal operating system configuration, with just the bare minimum and
only a root account would look like this:
only a root account would look like this (on the installation system,
this example is available as @file{/etc/configuration-template.scm}):

@example
(use-modules (gnu))

(operating-system
  (host-name "foo")
  (timezone "Europe/Paris")
  (locale "en_US.UTF-8")

  ;; Assuming /dev/sdX is the target hard disk, and /dev/sdX1 the
  ;; target root file system.
  (bootloader (grub-configuration (device "/dev/sdX")))
  (file-systems (list (file-system
                        (device "/dev/sdX1")
                        (mount-point "/")
                        (type "ext4")))))
@include os-config.texi
@end example

@noindent
For more information on @code{operating-system} declarations,
@xref{Using the Configuration System}.
@pxref{Using the Configuration System}.

Once that is done, the new system must be initialized (remember that the
target root file system is mounted under @file{/mnt}):


@@ 2795,7 2873,7 @@ guix system init /mnt/etc/config.scm /mnt
@noindent
This will copy all the necessary files, and install GRUB on
@file{/dev/sdX}, unless you pass the @option{--no-grub} option.  For
more information, @xref{Invoking guix system}.  This command may trigger
more information, @pxref{Invoking guix system}.  This command may trigger
downloads or builds of missing packages, which can take some time.

Once that command has completed---and hopefully succeeded!---you can


@@ 2874,10 2952,11 @@ kernel, initial RAM disk, and boot loader looks like this:
  (locale "fr_FR.UTF-8")
  (bootloader (grub-configuration
                (device "/dev/sda")))
  (file-systems (list (file-system
  (file-systems (cons (file-system
                        (device "/dev/sda1") ; or partition label
                        (mount-point "/")
                        (type "ext3"))))
                        (type "ext3"))
                      %base-file-systems))
  (users (list (user-account
                (name "alice")
                (password "")


@@ 2986,7 3065,9 @@ partitions without having to hard-code their actual device name.

@item @code{flags} (default: @code{'()})
This is a list of symbols denoting mount flags.  Recognized flags
include @code{read-only} and @code{bind-mount}.
include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow
access to special files), @code{no-suid} (ignore setuid and setgid
bits), and @code{no-exec} (disallow program execution.)

@item @code{options} (default: @code{#f})
This is either @code{#f}, or a string denoting mount options.


@@ 3001,9 3082,52 @@ instance, for the root file system.
This Boolean indicates whether the file system needs to be checked for
errors before being mounted.

@item @code{create-mount-point?} (default: @code{#f})
When true, the mount point is created if it does not exist yet.

@end table
@end deftp

The @code{(gnu system file-systems)} exports the following useful
variables.

@defvr {Scheme Variable} %base-file-systems
These are essential file systems that are required on normal systems,
such as @var{%devtmpfs-file-system} (see below.)  Operating system
declarations should always contain at least these.
@end defvr

@defvr {Scheme Variable} %devtmpfs-file-system
The @code{devtmpfs} file system to be mounted on @file{/dev}.  This is a
requirement for udev (@pxref{Base Services, @code{udev-service}}).
@end defvr

@defvr {Scheme Variable} %pseudo-terminal-file-system
This is the file system to be mounted as @file{/dev/pts}.  It supports
@dfn{pseudo-terminals} created @i{via} @code{openpty} and similar
functions (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference
Manual}).  Pseudo-terminals are used by terminal emulators such as
@command{xterm}.
@end defvr

@defvr {Scheme Variable} %shared-memory-file-system
This file system is mounted as @file{/dev/shm} and is used to support
memory sharing across processes (@pxref{Memory-mapped I/O,
@code{shm_open},, libc, The GNU C Library Reference Manual}).
@end defvr

@defvr {Scheme Variable} %binary-format-file-system
The @code{binfmt_misc} file system, which allows handling of arbitrary
executable file types to be delegated to user space.  This requires the
@code{binfmt.ko} kernel module to be loaded.
@end defvr

@defvr {Scheme Variable} %fuse-control-file-system
The @code{fusectl} file system, which allows unprivileged users to mount
and unmount user-space FUSE file systems.  This requires the
@code{fuse.ko} kernel module to be loaded.
@end defvr

@node User Accounts
@subsection User Accounts



@@ 3077,6 3201,10 @@ The group's name.
The group identifier (a number).  If @code{#f}, a new number is
automatically allocated when the group is created.

@item @code{system?} (default: @code{#f})
This Boolean value indicates whether the group is a ``system'' group.
System groups have low numerical IDs.

@item @code{password} (default: @code{#f})
What, user groups can have a password?  Well, apparently yes.  Unless
@code{#f}, this field specifies the group's password.


@@ 3194,6 3322,7 @@ passed to @command{guix-daemon}.
Run @var{udev}, which populates the @file{/dev} directory dynamically.
@end deffn


@node Networking Services
@subsubsection Networking Services



@@ 4040,8 4169,10 @@ an inspiration for Guix.
@unnumbered Concept Index
@printindex cp

@node Function Index
@unnumbered Function Index
@node Programming Index
@unnumbered Programming Index
@syncodeindex tp fn
@syncodeindex vr fn
@printindex fn

@bye

M gnu-system.am => gnu-system.am +2 -0
@@ 139,6 139,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/packages/libdaemon.scm			\
  gnu/packages/libevent.scm			\
  gnu/packages/libffi.scm			\
  gnu/packages/libftdi.scm			\
  gnu/packages/libidn.scm			\
  gnu/packages/libphidget.scm			\
  gnu/packages/libsigsegv.scm			\


@@ 267,6 268,7 @@ GNU_SYSTEM_MODULES =				\
  gnu/system/file-systems.scm			\
  gnu/system/grub.scm				\
  gnu/system/install.scm			\
  gnu/system/os-config.tmpl			\
  gnu/system/linux.scm				\
  gnu/system/linux-initrd.scm			\
  gnu/system/shadow.scm				\

M gnu/packages.scm => gnu/packages.scm +65 -1
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 31,10 32,16 @@
            search-bootstrap-binary
            %patch-directory
            %bootstrap-binaries-path

            fold-packages

            find-packages-by-name
            find-best-packages-by-name
            find-newest-available-packages))
            find-newest-available-packages

            package-direct-dependents
            package-transitive-dependents
            package-covering-dependents))

;;; Commentary:
;;;


@@ 182,3 189,60 @@ VERSION."
      (match (vhash-assoc name (find-newest-available-packages))
        ((_ version pkgs ...) pkgs)
        (#f '()))))


(define* (vhash-refq vhash key #:optional (dflt #f))
  "Look up KEY in the vhash VHASH, and return the value (if any) associated
with it.  If KEY is not found, return DFLT (or `#f' if no DFLT argument is
supplied).  Uses `eq?' for equality testing."
  (or (and=> (vhash-assq key vhash) cdr)
      dflt))

(define package-dependencies
  (memoize
   (lambda ()
     "Return a vhash keyed by package, and with associated values that are a
list of packages that depend on that package."
     (fold-packages
      (lambda (package dag)
        (fold
         (lambda (in d)
           ;; Insert a graph edge from each of package's inputs to package.
           (vhash-consq in
                        (cons package (vhash-refq d in '()))
                        (vhash-delq in d)))
         dag
         (match (package-direct-inputs package)
           (((labels packages . _) ...)
            packages) )))
      vlist-null))))

(define (package-direct-dependents packages)
  "Return a list of packages from the distribution that directly depend on the
packages in PACKAGES."
  (delete-duplicates
   (concatenate
    (map (lambda (p)
           (vhash-refq (package-dependencies) p '()))
         packages))))

(define (package-transitive-dependents packages)
  "Return the transitive dependent packages of the distribution packages in
PACKAGES---i.e. the dependents of those packages, plus their dependents,
recursively."
  (let ((dependency-dag (package-dependencies)))
    (fold-tree
     cons '()
     (lambda (node) (vhash-refq dependency-dag node))
     ;; Start with the dependents to avoid including PACKAGES in the result.
     (package-direct-dependents packages))))

(define (package-covering-dependents packages)
  "Return a minimal list of packages from the distribution whose dependencies
include all of PACKAGES and all packages that depend on PACKAGES."
  (let ((dependency-dag (package-dependencies)))
    (fold-tree-leaves
     cons '()
     (lambda (node) (vhash-refq dependency-dag node))
     ;; Start with the dependents to avoid including PACKAGES in the result.
     (package-direct-dependents packages))))

M gnu/packages/admin.scm => gnu/packages/admin.scm +53 -12
@@ 78,16 78,16 @@ interface and is based on GNU Guile.")
(define-public dfc
  (package
   (name "dfc")
   (version "3.0.3")
   (version "3.0.4")
   (source
    (origin
     (method url-fetch)
      (uri (string-append
            "http://projects.gw-computing.net/attachments/download/78/dfc-"
            "http://projects.gw-computing.net/attachments/download/79/dfc-"
            version ".tar.gz"))
      (sha256
       (base32
        "1b4hfqv23l87cb37fxwzfk2sgspkyxpr3ig2hsd23hr6mm982j7z"))))
        "0zk1ppx93ijimf4sbgqilxxikpsa2gmpbynknyh41xy7jbdjxp0b"))))
   (build-system cmake-build-system)
   (arguments '(#:tests? #f)) ; There are no tests.
   (native-inputs `(("gettext" ,gnu-gettext)))


@@ 101,14 101,14 @@ graphs and can export its output to different formats.")
(define-public htop
  (package
   (name "htop")
   (version "1.0.2")
   (version "1.0.3")
   (source (origin
            (method url-fetch)
            (uri (string-append "mirror://sourceforge/htop/"
            (uri (string-append "http://hisham.hm/htop/releases/"
                  version "/htop-" version ".tar.gz"))
            (sha256
             (base32
              "18fqrhvnm7h4c3939av8lpiwrwxbyw6hcly0jvq0vkjf0ixnaq7f"))))
              "0a8qbpsifzjwc4f45xfwm48jhm59g6q5hlib4bf7z13mgy95fp05"))))
   (build-system gnu-build-system)
   (inputs
    `(("ncurses" ,ncurses)))


@@ 617,7 617,7 @@ system administrator.")
(define-public sudo
  (package
    (name "sudo")
    (version "1.8.10p2")
    (version "1.8.10p3")
    (source (origin
              (method url-fetch)
              (uri


@@ 627,10 627,10 @@ system administrator.")
                                    version ".tar.gz")))
              (sha256
               (base32
                "1wbrygz584abmywklq0b4xhqn3s1bjk3rrladslr5nycdpdvhv5s"))))
                "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf"))))
    (build-system gnu-build-system)
    (arguments
     '(#:configure-flags '("--with-logpath=/var/log/sudo.log")
     `(#:configure-flags '("--with-logpath=/var/log/sudo.log")
       #:phases (alist-cons-before
                 'configure 'pre-configure
                 (lambda _


@@ 644,7 644,18 @@ system administrator.")
                      "")
                     (("^install: (.*)install-sudoers(.*)" _ before after)
                      ;; Don't try to create /etc/sudoers.
                      (string-append "install: " before after "\n"))))
                      (string-append "install: " before after "\n")))

                   ;; XXX FIXME sudo 1.8.10p3 was bootstrapped with a
                   ;; prerelease libtool, which fails on MIPS in the absence
                   ;; of /usr/bin/file.  As a temporary workaround, we patch
                   ;; the configure script to hardcode use of the little
                   ;; endian N32 ABI on MIPS.
                   ,@(if (equal? "mips64el-linux" (or (%current-target-system)
                                                      (%current-system)))
                         '((substitute* "configure"
                             (("\\$emul") "elf32ltsmipn32")))
                         '()))
                 %standard-phases)

       ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but


@@ 668,7 679,7 @@ commands and their arguments.")
(define-public wpa-supplicant
  (package
    (name "wpa-supplicant")
    (version "2.1")
    (version "2.2")
    (source (origin
              (method url-fetch)
              (uri (string-append


@@ 677,7 688,7 @@ commands and their arguments.")
                    ".tar.gz"))
              (sha256
               (base32
                "0xxjw7lslvql1ykfbwmbhdrnjsjljf59fbwf837418s97dz2wqwi"))))
                "1vf8jc4yyksbxf86narvsli3vxfbm8nbnim2mdp66nd6d3yvin70"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (alist-replace


@@ 762,3 773,33 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
     "WakeLan broadcasts a properly formatted UDP packet across the local area
network, which causes enabled computers to power on.")
    (license gpl2+)))

(define-public dmidecode
  (package
    (name "dmidecode")
    (version "2.12")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "mirror://savannah/dmidecode/dmidecode-"
                    version ".tar.bz2"))
              (sha256
               (base32
                "122hgaw8mpqdfra159lfl6pyk3837giqx6vq42j64fjnbl2z6gwi"))))
    (build-system gnu-build-system)
    (arguments
     '(#:phases (alist-delete 'configure %standard-phases)
       #:tests? #f                                ; no 'check' target
       #:make-flags (list (string-append "prefix="
                                         (assoc-ref %outputs "out")))))
    (home-page "http://www.nongnu.org/dmidecode/")
    (synopsis "Read hardware information from the BIOS")
    (description
     "Dmidecode reports information about your system's hardware as described
in your system BIOS according to the SMBIOS/DMI standard.  This typically
includes system manufacturer, model name, serial number, BIOS version, asset
tag as well as a lot of other details of varying level of interest and
reliability depending on the manufacturer.  This will often include usage
status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
    (license gpl2+)))

M gnu/packages/algebra.scm => gnu/packages/algebra.scm +2 -2
@@ 84,14 84,14 @@ solve the shortest vector problem.")
(define-public pari-gp
  (package
   (name "pari-gp")
   (version "2.7.0")
   (version "2.7.1")
   (source (origin
            (method url-fetch)
            (uri (string-append
                  "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
                  version ".tar.gz"))
            (sha256 (base32
                     "1hk7lmq09crr9jvia8nxzhvbwf8mw62xk456i96jg8dljh0r9sgz"))))
                     "1gj1rddi22hinzwy7r6hljgbi252wwwyd6gapg4hvcn0ycc7jqyc"))))
   (build-system gnu-build-system)
   (inputs `(("gmp" ,gmp)
             ("perl" ,perl)

M gnu/packages/boost.scm => gnu/packages/boost.scm +39 -29
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 46,39 47,48 @@
       ("python" ,python-2)
       ("tcsh" ,tcsh)))
    (arguments
     `(#:phases
       (alist-replace
        'configure
        (lambda* (#:key outputs #:allow-other-keys)
          (let ((out (assoc-ref outputs "out")))
            (substitute* '("libs/config/configure"
                           "libs/spirit/classic/phoenix/test/runtest.sh"
                           "tools/build/v2/doc/bjam.qbk"
                           "tools/build/v2/engine/execunix.c"
                           "tools/build/v2/engine/Jambase"
                           "tools/build/v2/engine/jambase.c")
              (("/bin/sh") (which "sh")))

            (setenv "SHELL" (which "sh"))
            (setenv "CONFIG_SHELL" (which "sh"))

            (zero? (system* "./bootstrap.sh"
                            (string-append "--prefix=" out)
                            "--with-toolset=gcc"))))
        (alist-replace
         'build
         (lambda _
           (zero? (system* "./b2" "threading=multi" "link=shared")))

     (let ((build-flags
            `("threading=multi" "link=shared"
              ;; Boost's 'context' library is not yet supported on mips64, so
              ;; we disable it.  The 'coroutine' library depends on 'context',
              ;; so we disable that too.
              ,@(if (equal? "mips64el-linux" (or (%current-target-system)
                                                 (%current-system)))
                    '("--without-context" "--without-coroutine")
                    '()))))
       `(#:phases
         (alist-replace
          'check
          (lambda _ #t)
          'configure
          (lambda* (#:key outputs #:allow-other-keys)
            (let ((out (assoc-ref outputs "out")))
              (substitute* '("libs/config/configure"
                             "libs/spirit/classic/phoenix/test/runtest.sh"
                             "tools/build/v2/doc/bjam.qbk"
                             "tools/build/v2/engine/execunix.c"
                             "tools/build/v2/engine/Jambase"
                             "tools/build/v2/engine/jambase.c")
                (("/bin/sh") (which "sh")))

              (setenv "SHELL" (which "sh"))
              (setenv "CONFIG_SHELL" (which "sh"))

              (zero? (system* "./bootstrap.sh"
                              (string-append "--prefix=" out)
                              "--with-toolset=gcc"))))
          (alist-replace
           'install
           'build
           (lambda _
             (zero? (system* "./b2" "install" "threading=multi" "link=shared")))
           %standard-phases))))))
             (zero? (system* "./b2" ,@build-flags)))

           (alist-replace
            'check
            (lambda _ #t)

            (alist-replace
             'install
             (lambda _
               (zero? (system* "./b2" "install" ,@build-flags)))
             %standard-phases)))))))

    (home-page "http://boost.org")
    (synopsis "Peer-reviewed portable C++ source libraries")

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


@@ 98,14 98,14 @@ extraction from CDs.")
(define-public xorriso
  (package
    (name "xorriso")
    (version "1.3.6.pl01")
    (version "1.3.8")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/xorriso/xorriso-"
                                 version ".tar.gz"))
             (sha256
              (base32
               "07bm20kb4f6q5pbkxhy7w8ggw2gxkrq45cda2kbh6wgphs5z2h7q"))))
               "0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh"))))
    (build-system gnu-build-system)
    (inputs
     `(("acl" ,acl)


@@ 173,14 173,14 @@ reconstruction capability.")
(define-public dvdisaster
  (package
    (name "dvdisaster")
    (version "0.72.4")
    (version "0.72.6")
    (source (origin
             (method url-fetch)
             (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
                                 version ".tar.bz2"))
             (sha256
              (base32
               "0pm039a78h7m9vvjmmjfkl05ii6qdmfhvbypxjbc7j5w82y66is4"))))
               "0sqrprc5rh3shnfli25m2wy0i5f83db54iv04s5s7bxf77m7sy79"))))
    (build-system gnu-build-system)
    (inputs
     `(("gtk+" ,gtk+-2)))


@@ 192,7 192,14 @@ reconstruction capability.")
     `(;; Parallel builds appear to be unsafe, see
       ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
       #:parallel-build? #f
       #:tests? #f)) ; no check target
       #:tests? #f ; no check target
       #:phases
         (alist-cons-before
          'patch-source-shebangs 'sanitise
          (lambda _
            ;; delete dangling symlink
            (delete-file ".#GNUmakefile"))
          %standard-phases)))
    (home-page "http://dvdisaster.net/en/index.html")
    (synopsis "error correcting codes for optical media images")
    (description "Optical media (CD,DVD,BD) keep their data only for a

M gnu/packages/gcc.scm => gnu/packages/gcc.scm +2 -2
@@ 272,14 272,14 @@ Go.  It also includes runtime support libraries for these languages.")

(define-public gcc-4.9
  (package (inherit gcc-4.7)
    (version "4.9.0")
    (version "4.9.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnu/gcc/gcc-"
                                 version "/gcc-" version ".tar.bz2"))
             (sha256
              (base32
               "0mqjxpw2klskls00lwx1k24pnyzm3whqxg3hk74c3sddgfllgc5r"))))))
               "0zki3ngi0gsidnmsp88mjl2868cc7cm5wm1vwqw6znja28d7hd6k"))))))

(define (custom-gcc gcc name languages)
  "Return a custom version of GCC that supports LANGUAGES."

M gnu/packages/gimp.scm => gnu/packages/gimp.scm +1 -0
@@ 101,6 101,7 @@ provided as well as the framework to add new color models and data types.")
       ("libjpeg" ,libjpeg-8)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("glib" ,glib "bin")             ; for gtester
       ("intltool" ,intltool)))
    (home-page "http://gegl.org")
    (synopsis "Graph based image processing framework")

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +3 -0
@@ 449,6 449,7 @@ some form of information without getting in the user's way.")
       ("pango" ,pango)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("glib:bin" ,glib "bin")
       ("gobject-introspection" ,gobject-introspection)
       ("intltool" ,intltool)))
    (home-page "https://wiki.gnome.org/Libpeas")


@@ 1138,6 1139,7 @@ controls using the Bonobo component framework.")
       ("libxml2" ,libxml2)))
    (native-inputs
     `(("intltool" ,intltool)
       ("glib" ,glib "bin")
       ("pkg-config" ,pkg-config)))
    (home-page "https://developer.gnome.org/goffice/")
    (synopsis "Document-centric objects and utilities")


@@ 1187,6 1189,7 @@ controls using the Bonobo component framework.")
       ("zlib" ,zlib)))
    (native-inputs
     `(("intltool" ,intltool)
       ("glib:bin" ,glib "bin")
       ("pkg-config" ,pkg-config)))
    (home-page "http://www.gnumeric.org")
    (synopsis "Spreadsheet application")

A gnu/packages/libftdi.scm => gnu/packages/libftdi.scm +48 -0
@@ 0,0 1,48 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@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 libftdi)
  #:use-module (guix licenses)
  #:use-module (guix download)
  #:use-module (guix packages)
  #:use-module (gnu packages)
  #:use-module (gnu packages libusb)
  #:use-module (guix build-system cmake))

(define-public libftdi
  (package
    (name "libftdi")
    (version "1.1")
    (source (origin
              (method url-fetch)
              (uri (string-append
                    "http://www.intra2net.com/en/developer/libftdi/download/libftdi1-"
                    version ".tar.bz2"))
              (sha256
               (base32
                "088yh8pxd6q53ssqndydcw1dkq51cjqyahc03lm6iip22cdazcf0"))))
    (build-system cmake-build-system)
    (native-inputs
     `(("libusb" ,libusb)))
    (home-page "http://www.intra2net.com")
    (synopsis "FTDI USB driver with bitbang mode")
    (description
     "libFTDI is a library to talk to FTDI chips: FT232BM,
FT245BM, FT2232C, FT2232D, FT245R and FT232H including the popular
bitbangmode.")
    (license lgpl2.1+)))

M gnu/packages/linux.scm => gnu/packages/linux.scm +12 -1
@@ 1273,7 1273,18 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.")
       ("zlib" ,guix:zlib)))
    (arguments
     `(#:tests? #f ; FIXME: Investigate test failures
       #:configure-flags '("--with-xz" "--with-zlib")))
       #:configure-flags '("--with-xz" "--with-zlib")
       #:phases (alist-cons-after
                 'install 'install-modprobe&co
                 (lambda* (#:key outputs #:allow-other-keys)
                   (let* ((out (assoc-ref outputs "out"))
                          (bin (string-append out "/bin")))
                     (for-each (lambda (tool)
                                 (symlink "kmod"
                                          (string-append bin "/" tool)))
                               '("insmod" "rmmod" "lsmod" "modprobe"
                                 "modinfo" "depmod"))))
                 %standard-phases)))
    (home-page "https://www.kernel.org/")
    (synopsis "Kernel module tools")
    (description "kmod is a set of tools to handle common tasks with Linux

M gnu/packages/mail.scm => gnu/packages/mail.scm +1 -0
@@ 301,6 301,7 @@ repository and Maildir/IMAP as LOCAL repository.")
    (build-system gnu-build-system)
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("glib" ,glib "bin")             ; for gtester
       ("texinfo" ,texinfo)))
    ;; TODO: Add webkit and gtk to build the mug GUI.
    (inputs

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


@@ 35,7 35,7 @@
                          version ".tar.gz"))
      (sha256
       (base32
        "1hcqv5yam4pkqx1sviigikzvd7n1pz6lwp7lzpdzagck9fgi4x0p"))))
        "0d4ml0v9yi37pjs211xs38w9whsj6530wz3kmrvwgh8jigqz6jx7"))))
    (build-system gnu-build-system)
    (inputs
     `(("gettext" ,gnu-gettext)

M gnu/packages/package-management.scm => gnu/packages/package-management.scm +9 -7
@@ 34,17 34,17 @@
  #:use-module (gnu packages gettext)
  #:use-module (gnu packages texinfo))

(define-public guix-0.6
(define guix-0.7
  (package
    (name "guix")
    (version "0.6")
    (version "0.7")
    (source (origin
             (method url-fetch)
             (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
                                 version ".tar.gz"))
             (sha256
              (base32
               "01xw51wizhsk827w4xp79k2b6dxjaviw04r6rbrb85qdxnwg6k9n"))))
               "05r7bsjgc0a4m7yy433n3c1dlv2yqlf3qpwlhayn9djhpp2q1ssb"))))
    (build-system gnu-build-system)
    (arguments
     `(#:configure-flags (list


@@ 109,10 109,12 @@ upgrades and roll-backs, per-user profiles, and much more. It is based on the
Nix package manager.")
    (license gpl3+)))

(define-public guix
(define-public guix guix-0.7)

(define-public guix-devel
  ;; Development version of Guix.
  (let ((commit "0ae8c15"))
    (package (inherit guix-0.6)
    (package (inherit guix-0.7)
      (version (string-append "0.6." commit))
      (source (origin
                (method git-fetch)


@@ 124,7 126,7 @@ Nix package manager.")
                 (base32
                  "1y6mwzwsjdxbfibqypb55dix371rifhfz0bygfr8k868lcdsawic"))))
      (arguments
       (substitute-keyword-arguments (package-arguments guix-0.6)
       (substitute-keyword-arguments (package-arguments guix-0.7)
         ((#:phases phases)
          `(alist-cons-before
            'configure 'bootstrap


@@ 160,4 162,4 @@ Nix package manager.")
         ("gettext" ,gnu-gettext)
         ("texinfo" ,texinfo)
         ("graphviz" ,graphviz)
         ,@(package-native-inputs guix-0.6))))))
         ,@(package-native-inputs guix-0.7))))))

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


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

M gnu/packages/patches/module-init-tools-moduledir.patch => gnu/packages/patches/module-init-tools-moduledir.patch +21 -21
@@ 2,17 2,11 @@ This patch changes 'modprobe' & co. so they honor the 'LINUX_MODULE_DIRECTORY'
environment variable, rather than looking for modules exclusively in
/lib/modules.

Patch by David Guibert, from Nixpkgs; adjusted to use 'LINUX_MODULE_DIRECTORY'
rather than 'MODULE_DIR' as the variable name.

commit cf2c95edb7918bc658f6cae93793c1949fc9cb6e
Author: David Guibert <david.guibert@gmail.com>
Date:   Fri Aug 5 14:20:12 2011 +0200

    introduce module-dir
Original patch by David Guibert, from Nixpkgs; adjusted to use
'LINUX_MODULE_DIRECTORY' rather than 'MODULE_DIR' as the variable name.

diff --git a/depmod.c b/depmod.c
index a1d2f8c..9362a35 100644
index a1d2f8c..ff579c7 100644
--- a/depmod.c
+++ b/depmod.c
@@ -48,9 +48,6 @@


@@ 38,26 32,30 @@ index a1d2f8c..9362a35 100644
 	}
 
+        if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
+                module_dir = "/lib/modules/";
+                module_dir = "/lib/modules";
+        }
+
 	while ((line = getline_wrapped(cfile, &linenum)) != NULL) {
 		char *ptr = line;
 		char *cmd, *modname;
@@ -1550,7 +1552,7 @@ static int parse_config_file(const char *filename,
@@ -1549,8 +1551,8 @@ static int parse_config_file(const char *filename,
 							     0, *search);
 					continue;
 				}
 				nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
-				nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
-					MODULE_DIR, kernelversion, search_path);
+				nofail_asprintf(&dirname, "%s%s/%s/%s", basedir,
+					module_dir, kernelversion, search_path);
 				len = strlen(dirname);
 				*search = add_search(dirname, len, *search);
 				free(dirname);
@@ -1565,7 +1567,7 @@ static int parse_config_file(const char *filename,
@@ -1564,8 +1566,8 @@ static int parse_config_file(const char *filename,
 			if (!regex_match(kernelversion, (const char *)version))
 				continue;
 
 			nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir,
-			nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir,
-				MODULE_DIR, kernelversion, subdir, modname);
+			nofail_asprintf(&pathname, "%s%s/%s/%s/%s.ko", basedir,
+				module_dir, kernelversion, subdir, modname);
 
 			*overrides = add_override(pathname, *overrides);


@@ 76,24 74,26 @@ index a1d2f8c..9362a35 100644
 
-	nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version);
+        if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
+                module_dir = "/lib/modules/";
+                module_dir = "/lib/modules";
+        }
+
+	nofail_asprintf(&dirname, "%s%s%s", basedir, module_dir, version);
+	nofail_asprintf(&dirname, "%s%s/%s", basedir, module_dir, version);
 
 	if (maybe_all) {
 		if (!doing_stdout && !depfile_out_of_date(dirname))
@@ -1850,7 +1857,7 @@ int main(int argc, char *argv[])
@@ -1849,8 +1856,8 @@ int main(int argc, char *argv[])
 		char *dirname;
 		size_t len;
 
 		nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
-		nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
-				MODULE_DIR, version);
+		nofail_asprintf(&dirname, "%s%s/%s/updates", basedir,
+				module_dir, version);
 		len = strlen(dirname);
 		search = add_search(dirname, len, search);
 	}
diff --git a/modinfo.c b/modinfo.c
index 1dd8469..67b1041 100644
index 1dd8469..6a1865b 100644
--- a/modinfo.c
+++ b/modinfo.c
@@ -19,9 +19,6 @@


@@ 113,7 113,7 @@ index 1dd8469..67b1041 100644
+ 	char *module_dir;
+
+        if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
+                module_dir = "/lib/modules/";
+                module_dir = "/lib/modules";
+        }
 
 	if (strchr(name, '.') || strchr(name, '/')) {


@@ 131,7 131,7 @@ index 1dd8469..67b1041 100644
 	/* Search for it in modules.dep. */
 	nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep");
diff --git a/modprobe.c b/modprobe.c
index 5464f45..d9fbf9d 100644
index 5464f45..cb57917 100644
--- a/modprobe.c
+++ b/modprobe.c
@@ -86,10 +86,6 @@ typedef enum

M gnu/packages/texlive.scm => gnu/packages/texlive.scm +5 -0
@@ 115,6 115,11 @@
         "--with-system-xpdf"
         "--with-system-zlib"
         "--with-system-zziplib")

      ;; Disable tests on mips64 to cope with a failure of luajiterr.test.
      ;; XXX FIXME fix luajit properly on mips64.
      #:tests? ,(not (equal? "mips64el-linux" (or (%current-target-system)
                                                  (%current-system))))
      #:phases
       (alist-cons-after
        'install 'postinst

M gnu/packages/video.scm => gnu/packages/video.scm +0 -1
@@ 193,7 193,6 @@
                      "--disable-armv6t2"
                      "--disable-vfp"
                      "--disable-neon"
                      "--disable-vis"
                      "--disable-mips32r2"
                      "--disable-mipsdspr1"
                      "--disable-mipsdspr2"

M gnu/services/avahi.scm => gnu/services/avahi.scm +2 -1
@@ 96,7 96,8 @@ sockets."
                    (mkdir-p "/var/run/avahi-daemon")))

      (user-groups (list (user-group
                          (name "avahi"))))
                          (name "avahi")
                          (system? #t))))
      (user-accounts (list (user-account
                            (name "avahi")
                            (group "avahi")

M gnu/services/base.scm => gnu/services/base.scm +29 -6
@@ 25,10 25,12 @@
  #:use-module (gnu system linux)                 ; 'pam-service', etc.
  #:use-module (gnu packages admin)
  #:use-module ((gnu packages linux)
                #:select (udev kbd))
                #:select (udev kbd e2fsprogs))
  #:use-module ((gnu packages base)
                #:select (glibc-final))
  #:use-module (gnu packages package-management)
  #:use-module ((guix build linux-initrd)
                #:select (mount-flags->bit-mask))
  #:use-module (guix gexp)
  #:use-module (guix monads)
  #:use-module (srfi srfi-1)


@@ 96,11 98,14 @@ This service must be the root of the service dependency graph so that its
      (respawn? #f)))))

(define* (file-system-service device target type
                              #:key (check? #t) options (title 'any))
                              #:key (flags '()) (check? #t)
                              create-mount-point? options (title 'any))
  "Return a service that mounts DEVICE on TARGET as a file system TYPE with
OPTIONS.  TITLE is a symbol specifying what kind of name DEVICE is: 'label for
a partition label, 'device for a device file name, or 'any.  When CHECK? is
true, check the file system before mounting it."
true, check the file system before mounting it.  When CREATE-MOUNT-POINT? is
true, create TARGET if it does not exist yet.  FLAGS is a list of symbols,
such as 'read-only' etc."
  (with-monad %store-monad
    (return
     (service


@@ 109,10 114,22 @@ true, check the file system before mounting it."
      (documentation "Check, mount, and unmount the given file system.")
      (start #~(lambda args
                 (let ((device (canonicalize-device-spec #$device '#$title)))
                   #$(if create-mount-point?
                         #~(mkdir-p #$target)
                         #~#t)
                   #$(if check?
                         #~(check-file-system device #$type)
                         #~(begin
                             ;; Make sure fsck.ext2 & co. can be found.
                             (setenv "PATH"
                                     (string-append
                                      #$e2fsprogs "/sbin:"
                                      "/run/current-system/profile/sbin:"
                                      (getenv "PATH")))
                             (check-file-system device #$type))
                         #~#t)
                   (mount device #$target #$type 0 #$options))
                   (mount device #$target #$type
                          #$(mount-flags->bit-mask flags)
                          #$options))
                 #t))
      (stop #~(lambda args
                ;; Normally there are no processes left at this point, so


@@ 455,6 472,7 @@ passed to @command{guix-daemon}."
             (user-accounts accounts)
             (user-groups (list (user-group
                                 (name builder-group)
                                 (system? #t)

                                 ;; Use a fixed GID so that we can create the
                                 ;; store with the right owner.


@@ 466,8 484,13 @@ passed to @command{guix-daemon}."
  (with-monad %store-monad
    (return (service
             (provision '(udev))

             ;; Udev needs /dev to be a 'devtmpfs' mount so that new device
             ;; nodes can be added: see
             ;; <http://www.linuxfromscratch.org/lfs/view/development/chapter07/udev.html>.
             (requirement '(root-file-system))
             (documentation "Populate the /dev directory.")

             (documentation "Populate the /dev directory, dynamically.")
             (start #~(lambda ()
                        (define udevd
                          (string-append #$udev "/libexec/udev/udevd"))

M gnu/services/dbus.scm => gnu/services/dbus.scm +2 -1
@@ 86,7 86,8 @@ and policy files.  For example, to allow avahi-daemon to use the system bus,
                      (string-append "--config-file=" #$conf "/system.conf"))))
      (stop #~(make-kill-destructor))
      (user-groups (list (user-group
                          (name "messagebus"))))
                          (name "messagebus")
                          (system? #t))))
      (user-accounts (list (user-account
                            (name "messagebus")
                            (group "messagebus")

M gnu/services/dmd.scm => gnu/services/dmd.scm +1 -0
@@ 49,6 49,7 @@

          (use-modules (ice-9 ftw)
                       (guix build syscalls)
                       (guix build utils)
                       ((guix build linux-initrd)
                        #:select (check-file-system canonicalize-device-spec)))


M gnu/services/networking.scm => gnu/services/networking.scm +2 -1
@@ 107,7 107,8 @@ policy) as the @code{tor} unprivileged user."
      (stop #~(make-kill-destructor))

      (user-groups   (list (user-group
                            (name "tor"))))
                            (name "tor")
                            (system? #t))))
      (user-accounts (list (user-account
                            (name "tor")
                            (group "tor")

M gnu/services/xorg.scm => gnu/services/xorg.scm +15 -5
@@ 97,7 97,12 @@ EndSection
    #~(begin
        (use-modules (ice-9 match))

        ;; TODO: Check for ~/.xsession.
        ;; First, try to run ~/.xsession.
        (let* ((home (getenv "HOME"))
               (file (string-append home "/.xsession")))
          (false-if-exception (execl file file)))

        ;; Then try a pre-configured session type.
        (match (command-line)
          ((_ "ratpoison")
           (execl (string-append #$ratpoison "/bin/ratpoison")))


@@ 146,10 151,15 @@ reboot_cmd " dmd "/sbin/reboot
      (provision '(xorg-server))
      (requirement '(user-processes host-name udev))
      (start
       #~(make-forkexec-constructor
          (list (string-append #$slim "/bin/slim") "-nodaemon")
          #:environment-variables
          (list (string-append "SLIM_CFGFILE=" #$slim.cfg))))
       #~(lambda ()
           ;; A stale lock file can prevent SLiM from starting, so remove it
           ;; to be on the safe side.
           (false-if-exception (delete-file "/var/run/slim.lock"))

           (fork+exec-command
            (list (string-append #$slim "/bin/slim") "-nodaemon")
            #:environment-variables
            (list (string-append "SLIM_CFGFILE=" #$slim.cfg)))))
      (stop #~(make-kill-destructor))
      (respawn? #t)
      (pam-services

M gnu/system.scm => gnu/system.scm +6 -3
@@ 181,11 181,13 @@ as 'needed-for-boot'."
  (sequence %store-monad
            (map (match-lambda
                  (($ <file-system> device title target type flags opts
                                    #f check?)
                                    #f check? create?)
                   (file-system-service device target type
                                        #:title title
                                        #:check? check?
                                        #:options opts)))
                                        #:create-mount-point? create?
                                        #:options opts
                                        #:flags flags)))
                 file-systems)))

(define (essential-services os)


@@ 361,7 363,8 @@ alias ll='ls -l'
'active-groups'."
  #~(list #$(user-group-name group)
          #$(user-group-password group)
          #$(user-group-id group)))
          #$(user-group-id group)
          #$(user-group-system? group)))

(define (user-account->gexp account)
  "Turn ACCOUNT, a <user-account> object, into a list-valued gexp suitable for

M gnu/system/file-systems.scm => gnu/system/file-systems.scm +58 -2
@@ 28,9 28,16 @@
            file-system-needed-for-boot?
            file-system-flags
            file-system-options
            file-system-check?
            file-system-create-mount-point?

            %fuse-control-file-system
            %binary-format-file-system))
            %binary-format-file-system
            %shared-memory-file-system
            %pseudo-terminal-file-system
            %devtmpfs-file-system

            %base-file-systems))

;;; Commentary:
;;;


@@ 54,7 61,9 @@
  (needed-for-boot? file-system-needed-for-boot?  ; Boolean
                    (default #f))
  (check?           file-system-check?            ; Boolean
                    (default #t)))
                    (default #t))
  (create-mount-point? file-system-create-mount-point? ; Boolean
                       (default #f)))

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


@@ 72,4 81,51 @@
    (type "binfmt_misc")
    (check? #f)))

(define %devtmpfs-file-system
  ;; /dev as a 'devtmpfs' file system, needed for udev.
  (file-system
    (device "none")
    (mount-point "/dev")
    (type "devtmpfs")
    (check? #f)

    ;; Mount it from the initrd so /dev/pts & co. can then be mounted over it.
    (needed-for-boot? #t)))

(define %tty-gid
  ;; ID of the 'tty' group.  Allocate it statically to make it easy to refer
  ;; to it from here and from the 'tty' group definitions.
  996)

(define %pseudo-terminal-file-system
  ;; The pseudo-terminal file system.  It needs to be mounted so that
  ;; statfs(2) returns DEVPTS_SUPER_MAGIC like libc's getpt(3) expects (and
  ;; thus openpty(3) and its users, such as xterm.)
  (file-system
    (device "none")
    (mount-point "/dev/pts")
    (type "devpts")
    (check? #f)
    (needed-for-boot? #f)
    (create-mount-point? #t)
    (options (string-append "gid=" (number->string %tty-gid) ",mode=620"))))

(define %shared-memory-file-system
  ;; Shared memory.
  (file-system
    (device "tmpfs")
    (mount-point "/dev/shm")
    (type "tmpfs")
    (check? #f)
    (flags '(no-suid no-dev))
    (options "size=50%")                         ;TODO: make size configurable
    (create-mount-point? #t)))

(define %base-file-systems
  ;; List of basic file systems to be mounted.  Note that /proc and /sys are
  ;; currently mounted by the initrd.
  (list %devtmpfs-file-system
        %pseudo-terminal-file-system
        %shared-memory-file-system))

;;; file-systems.scm ends here

M gnu/system/install.scm => gnu/system/install.scm +104 -2
@@ 20,6 20,7 @@
  #:use-module (gnu)
  #:use-module (guix gexp)
  #:use-module (guix monads)
  #:use-module ((guix store) #:select (%store-prefix))
  #:use-module (gnu packages linux)
  #:use-module (gnu packages package-management)
  #:use-module (gnu packages disk)


@@ 42,6 43,99 @@ manual."
                         "-f" (string-append #$guix "/share/info/guix.info")
                         "-n" "System Installation")))

(define %backing-directory
  ;; Sub-directory used as the backing store for copy-on-write.
  "/tmp/guix-inst")

(define (make-cow-store target)
  "Return a gexp that makes the store copy-on-write, using TARGET as the
backing store.  This is useful when TARGET is on a hard disk, whereas the
current store is on a RAM disk."
  (define (unionfs read-only read-write mount-point)
    ;; Make MOUNT-POINT the union of READ-ONLY and READ-WRITE.

    ;; Note: in the command below, READ-WRITE appears before READ-ONLY so that
    ;; it is considered a "higher-level branch", as per unionfs-fuse(8),
    ;; thereby allowing files existing on READ-ONLY to be copied over to
    ;; READ-WRITE.
    #~(fork+exec-command
       (list (string-append #$unionfs-fuse "/bin/unionfs")
             "-o"
             "cow,allow_other,use_ino,max_files=65536,nonempty"
             (string-append #$read-write "=RW:" #$read-only "=RO")
             #$mount-point)))

  (define (set-store-permissions directory)
    ;; Set the right perms on DIRECTORY to use it as the store.
    #~(begin
        (chown #$directory 0 30000)             ;use the fixed 'guixbuild' GID
        (chmod #$directory #o1775)))

  #~(begin
      (unless (file-exists? "/.ro-store")
        (mkdir "/.ro-store")
        (mount #$(%store-prefix) "/.ro-store" "none"
               (logior MS_BIND MS_RDONLY)))

      (let ((rw-dir (string-append target #$%backing-directory)))
        (mkdir-p rw-dir)
        (mkdir-p "/.rw-store")
        #$(set-store-permissions #~rw-dir)
        #$(set-store-permissions "/.rw-store")

        ;; Mount the union, then atomically make it the store.
        (and #$(unionfs "/.ro-store" #~rw-dir "/.rw-store")
             (begin
               (sleep 1) ;XXX: wait for unionfs to be ready
               (mount "/.rw-store" #$(%store-prefix) "" MS_MOVE)
               (rmdir "/.rw-store"))))))

(define (cow-store-service)
  "Return a service that makes the store copy-on-write, such that writes go to
the user's target storage device rather than on the RAM disk."
  ;; See <http://bugs.gnu.org/18061> for the initial report.
  (with-monad %store-monad
    (return (service
             (requirement '(root-file-system user-processes))
             (provision '(cow-store))
             (documentation
              "Make the store copy-on-write, with writes going to \
the given target.")
             (start #~(case-lambda
                        ((target)
                         #$(make-cow-store #~target)
                         target)
                        (else
                         ;; Do nothing, and mark the service as stopped.
                         #f)))
             (stop #~(lambda (target)
                       ;; Delete the temporary directory, but leave everything
                       ;; mounted as there may still be processes using it
                       ;; since 'user-processes' doesn't depend on us.
                       (delete-file-recursively
                        (string-append target #$%backing-directory))))))))

(define (configuration-template-service)
  "Return a dummy service whose purpose is to install an operating system
configuration template file in the installation system."

  (define local-template
    "/etc/configuration-template.scm")
  (define template
    (search-path %load-path "gnu/system/os-config.tmpl"))

  (mlet %store-monad ((template (interned-file template)))
    (return (service
             (requirement '(root-file-system))
             (provision '(os-config-template))
             (documentation
              "This dummy service installs an OS configuration template.")
             (start #~(const #t))
             (stop  #~(const #f))
             (activate
              #~(unless (file-exists? #$local-template)
                  (copy-file #$template #$local-template)))))))

(define (installation-services)
  "Return the list services for the installation image."
  (let ((motd (text-file "motd" "


@@ 71,6 165,9 @@ You have been warned.  Thanks for being so brave.
                            #:auto-login "guest"
                            #:login-program (log-to-info))

          ;; Documentation add-on.
          (configuration-template-service)

          ;; A bunch of 'root' ttys.
          (normal-tty "tty3")
          (normal-tty "tty4")


@@ 88,6 185,10 @@ You have been warned.  Thanks for being so brave.
          ;; Start udev so that useful device nodes are available.
          (udev-service)

          ;; Add the 'cow-store' service, which users have to start manually
          ;; since it takes the installation directory as an argument.
          (cow-store-service)

          ;; Install Unicode support and a suitable font.
          (console-font-service "tty1")
          (console-font-service "tty2")


@@ 117,10 218,11 @@ Use Alt-F2 for documentation.
    (file-systems
     ;; Note: the disk image build code overrides this root file system with
     ;; the appropriate one.
     (list (file-system
     (cons (file-system
             (mount-point "/")
             (device "gnu-disk-image")
             (type "ext4"))))
             (type "ext4"))
           %base-file-systems))

    (users (list (user-account
                  (name "guest")

A gnu/system/os-config.tmpl => gnu/system/os-config.tmpl +31 -0
@@ 0,0 1,31 @@
;; This is an operating system configuration template.

(use-modules (gnu))

(operating-system
  (host-name "antelope")
  (timezone "Europe/Paris")
  (locale "en_US.UTF-8")

  ;; Assuming /dev/sdX is the target hard disk, and "root" is
  ;; the label of the target root file system.
  (bootloader (grub-configuration (device "/dev/sdX")))
  (file-systems (cons (file-system
                        (device "root")
                        (title 'label)
                        (mount-point "/")
                        (type "ext4"))
                      %base-file-systems))

  ;; This is where user accounts are specified.  The "root"
  ;; account is implicit, and is initially created with the
  ;; empty password.
  (users (list (user-account
                (name "alice")
                (comment "Bob's sister")
                (group "users")

                ;; Adding the account to the "wheel" group
                ;; makes it a sudoer.
                (supplementary-groups '("wheel"))
                (home-directory "/home/alice")))))

M gnu/system/shadow.scm => gnu/system/shadow.scm +26 -18
@@ 20,6 20,8 @@
  #:use-module (guix records)
  #:use-module (guix gexp)
  #:use-module (guix monads)
  #:use-module ((gnu system file-systems)
                #:select (%tty-gid))
  #:use-module ((gnu packages admin)
                #:select (shadow))
  #:use-module (gnu packages bash)


@@ 41,6 43,7 @@
            user-group-name
            user-group-password
            user-group-id
            user-group-system?

            default-skeletons
            skeleton-directory


@@ 73,28 76,33 @@
  user-group?
  (name           user-group-name)
  (password       user-group-password (default #f))
  (id             user-group-id (default #f)))
  (id             user-group-id (default #f))
  (system?        user-group-system?              ; Boolean
                  (default #f)))

(define %base-groups
  ;; Default set of groups.
  (list (user-group (name "root") (id 0))
        (user-group (name "wheel"))               ; root-like users
        (user-group (name "users"))               ; normal users
        (user-group (name "nogroup"))             ; for daemons etc.
  (let-syntax ((system-group (syntax-rules ()
                               ((_ args ...)
                                (user-group (system? #t) args ...)))))
    (list (system-group (name "root") (id 0))
          (system-group (name "wheel"))              ; root-like users
          (system-group (name "users"))              ; normal users
          (system-group (name "nogroup"))            ; for daemons etc.

        ;; The following groups are conventionally used by things like udev to
        ;; control access to hardware devices.
        (user-group (name "tty"))
        (user-group (name "dialout"))
        (user-group (name "kmem"))
        (user-group (name "video"))
        (user-group (name "audio"))
        (user-group (name "netdev"))              ; used in avahi-dbus.conf
        (user-group (name "lp"))
        (user-group (name "disk"))
        (user-group (name "floppy"))
        (user-group (name "cdrom"))
        (user-group (name "tape"))))
          ;; The following groups are conventionally used by things like udev to
          ;; control access to hardware devices.
          (system-group (name "tty") (id %tty-gid))
          (system-group (name "dialout"))
          (system-group (name "kmem"))
          (system-group (name "video"))
          (system-group (name "audio"))
          (system-group (name "netdev"))             ; used in avahi-dbus.conf
          (system-group (name "lp"))
          (system-group (name "disk"))
          (system-group (name "floppy"))
          (system-group (name "cdrom"))
          (system-group (name "tape")))))

(define (default-skeletons)
  "Return the default skeleton files for /etc/skel.  These files are copied by

M guix/build-system/gnu.scm => guix/build-system/gnu.scm +3 -0
@@ 250,6 250,9 @@ derivations for SYSTEM.  Include propagated inputs in the result."
                           inputs))))

(define standard-inputs
  ;; FIXME: Memoization should be associated with the open store (as for
  ;; 'add-text-to-store'), otherwise we get .drv that may not be valid when
  ;; switching to another store.
  (memoize
   (lambda (system)
     "Return the list of implicit standard inputs used with the GNU Build

M guix/build/activation.scm => guix/build/activation.scm +6 -3
@@ 36,13 36,14 @@
;;;
;;; Code:

(define* (add-group name #:key gid password
(define* (add-group name #:key gid password system?
                    (log-port (current-error-port)))
  "Add NAME as a user group, with the given numeric GID if specified."
  ;; Use 'groupadd' from the Shadow package.
  (format log-port "adding group '~a'...~%" name)
  (let ((args `(,@(if gid `("-g" ,(number->string gid)) '())
                ,@(if password `("-p" ,password) '())
                ,@(if system? `("--system") '())
                ,name)))
    (zero? (apply system* "groupadd" args))))



@@ 128,9 129,11 @@ numeric gid or #f."

  ;; Then create the groups.
  (for-each (match-lambda
             ((name password gid)
             ((name password gid system?)
              (unless (false-if-exception (getgrnam name))
                (add-group name #:gid gid #:password password))))
                (add-group name
                           #:gid gid #:password password
                           #:system? system?))))
            groups)

  ;; Finally create the other user accounts.

M guix/build/linux-initrd.scm => guix/build/linux-initrd.scm +24 -16
@@ 40,6 40,7 @@
            find-partition-by-label
            canonicalize-device-spec

            mount-flags->bit-mask
            check-file-system
            mount-file-system
            bind-mount


@@ 393,6 394,9 @@ networking values.)  Return #t if INTERFACE is up, #f otherwise."

;; Linux mount flags, from libc's <sys/mount.h>.
(define MS_RDONLY 1)
(define MS_NOSUID 2)
(define MS_NODEV  4)
(define MS_NOEXEC 8)
(define MS_BIND 4096)
(define MS_MOVE 8192)



@@ 494,6 498,24 @@ UNIONFS."
               fsck code device)
       (start-repl)))))

(define (mount-flags->bit-mask flags)
  "Return the number suitable for the 'flags' argument of 'mount' that
corresponds to the symbols listed in FLAGS."
  (let loop ((flags flags))
    (match flags
      (('read-only rest ...)
       (logior MS_RDONLY (loop rest)))
      (('bind-mount rest ...)
       (logior MS_BIND (loop rest)))
      (('no-suid rest ...)
       (logior MS_NOSUID (loop rest)))
      (('no-dev rest ...)
       (logior MS_NODEV (loop rest)))
      (('no-exec rest ...)
       (logior MS_NOEXEC (loop rest)))
      (()
       0))))

(define* (mount-file-system spec #:key (root "/root"))
  "Mount the file system described by SPEC under ROOT.  SPEC must have the
form:


@@ 503,15 525,6 @@ form:
DEVICE, MOUNT-POINT, and TYPE must be strings; OPTIONS can be a string or #f;
FLAGS must be a list of symbols.  CHECK? is a Boolean indicating whether to
run a file system check."
  (define flags->bit-mask
    (match-lambda
     (('read-only rest ...)
      (or MS_RDONLY (flags->bit-mask rest)))
     (('bind-mount rest ...)
      (or MS_BIND (flags->bit-mask rest)))
     (()
      0)))

  (match spec
    ((source title mount-point type (flags ...) options check?)
     (let ((source      (canonicalize-device-spec source title))


@@ 519,7 532,7 @@ run a file system check."
       (when check?
         (check-file-system source type))
       (mkdir-p mount-point)
       (mount source mount-point type (flags->bit-mask flags)
       (mount source mount-point type (mount-flags->bit-mask flags)
              (if options
                  (string->pointer options)
                  %null-pointer))


@@ 528,7 541,7 @@ run a file system check."
       (mkdir-p (string-append root "/etc"))
       (let ((port (open-file (string-append root "/etc/mtab") "a")))
         (format port "~a ~a ~a ~a 0 0~%"
                 source mount-point type options)
                 source mount-point type (or options ""))
         (close-port port))))))

(define (switch-root root)


@@ 670,11 683,6 @@ to it are lost."
             (switch-root "/root")
             (format #t "loading '~a'...\n" to-load)

             ;; Obviously this has to be done each time we boot.  Do it from here
             ;; so that statfs(2) returns DEVPTS_SUPER_MAGIC like libc's getpt(3)
             ;; expects (and thus openpty(3) and its users, such as xterm.)
             (mount "none" "/dev/pts" "devpts")

             ;; TODO: Remove /lib, /share, and /loader.go.
             (primitive-load to-load)


M guix/monads.scm => guix/monads.scm +13 -0
@@ 55,6 55,7 @@
            run-with-store
            text-file
            text-file*
            interned-file
            package-file
            origin->derivation
            package->derivation


@@ 362,6 363,18 @@ and store file names; the resulting store file holds references to all these."
    (derivation-expression name (builder inputs)
                           #:inputs inputs)))

(define* (interned-file file #:optional name
                        #:key (recursive? #t))
  "Return the name of FILE once interned in the store.  Use NAME as its store
name, or the basename of FILE if NAME is omitted.

When RECURSIVE? is true, the contents of FILE are added recursively; if FILE
designates a flat file and RECURSIVE? is true, its contents are added, and its
permission bits are kept."
  (lambda (store)
    (add-to-store store (or name (basename file))
                  recursive? "sha256" file)))

(define* (package-file package
                       #:optional file
                       #:key (system (%current-system)) (output "out"))

M guix/packages.scm => guix/packages.scm +11 -3
@@ 75,6 75,7 @@
            package-location
            package-field-location

            package-direct-inputs
            package-transitive-inputs
            package-transitive-target-inputs
            package-transitive-native-inputs


@@ 484,12 485,17 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
      ((input rest ...)
       (loop rest (cons input result))))))

(define (package-direct-inputs package)
  "Return all the direct inputs of PACKAGE---i.e, its direct inputs along
with their propagated inputs."
  (append (package-native-inputs package)
          (package-inputs package)
          (package-propagated-inputs package)))

(define (package-transitive-inputs package)
  "Return the transitive inputs of PACKAGE---i.e., its direct inputs along
with their propagated inputs, recursively."
  (transitive-inputs (append (package-native-inputs package)
                             (package-inputs package)
                             (package-propagated-inputs package))))
  (transitive-inputs (package-direct-inputs package)))

(define (package-transitive-target-inputs package)
  "Return the transitive target inputs of PACKAGE---i.e., its direct inputs


@@ 521,6 527,8 @@ recursively."
(define (cache package system thunk)
  "Memoize the return values of THUNK as the derivation of PACKAGE on
SYSTEM."
  ;; FIXME: This memoization should be associated with the open store, because
  ;; otherwise it breaks when switching to a different store.
  (let ((vals (call-with-values thunk list)))
    ;; Use `hashq-set!' instead of `hash-set!' because `hash' returns the
    ;; same value for all structs (as of Guile 2.0.6), and because pointer

M guix/profiles.scm => guix/profiles.scm +61 -71
@@ 22,6 22,7 @@
  #:use-module (guix records)
  #:use-module (guix derivations)
  #:use-module (guix packages)
  #:use-module (guix gexp)
  #:use-module (ice-9 match)
  #:use-module (ice-9 regex)
  #:use-module (ice-9 ftw)


@@ 39,21 40,18 @@
            manifest-entry-name
            manifest-entry-version
            manifest-entry-output
            manifest-entry-path
            manifest-entry-item
            manifest-entry-dependencies

            manifest-pattern
            manifest-pattern?

            read-manifest
            write-manifest

            manifest-remove
            manifest-installed?
            manifest-matching-entries
            manifest=?

            profile-manifest
            package->manifest-entry
            profile-derivation
            generation-number
            generation-numbers


@@ 88,11 86,9 @@
  (version      manifest-entry-version)           ; string
  (output       manifest-entry-output             ; string
                (default "out"))
  (path         manifest-entry-path)              ; store path
  (dependencies manifest-entry-dependencies       ; list of store paths
                (default '()))
  (inputs       manifest-entry-inputs             ; list of inputs to build
                (default '())))                   ; this entry
  (item         manifest-entry-item)              ; package | store path
  (dependencies manifest-entry-dependencies       ; (store path | package)*
                (default '())))

(define-record-type* <manifest-pattern> manifest-pattern
  make-manifest-pattern


@@ 110,17 106,36 @@
        (call-with-input-file file read-manifest)
        (manifest '()))))

(define (manifest->sexp manifest)
  "Return a representation of MANIFEST as an sexp."
  (define (entry->sexp entry)
(define* (package->manifest-entry package #:optional output)
  "Return a manifest entry for the OUTPUT of package PACKAGE.  When OUTPUT is
omitted or #f, use the first output of PACKAGE."
  (let ((deps (map (match-lambda
                    ((label package)
                     `(,package "out"))
                    ((label package output)
                     `(,package ,output)))
                   (package-transitive-propagated-inputs package))))
    (manifest-entry
     (name (package-name package))
     (version (package-version package))
     (output (or output (car (package-outputs package))))
     (item package)
     (dependencies (delete-duplicates deps)))))

(define (manifest->gexp manifest)
  "Return a representation of MANIFEST as a gexp."
  (define (entry->gexp entry)
    (match entry
      (($ <manifest-entry> name version path output (deps ...))
       (list name version path output deps))))
      (($ <manifest-entry> name version output (? string? path) (deps ...))
       #~(#$name #$version #$output #$path #$deps))
      (($ <manifest-entry> name version output (? package? package) (deps ...))
       #~(#$name #$version #$output
                 (ungexp package (or output "out")) #$deps))))

  (match manifest
    (($ <manifest> (entries ...))
     `(manifest (version 1)
                (packages ,(map entry->sexp entries))))))
     #~(manifest (version 1)
                 (packages #$(map entry->gexp entries))))))

(define (sexp->manifest sexp)
  "Parse SEXP as a manifest."


@@ 133,7 148,7 @@
              (name name)
              (version version)
              (output output)
              (path path)))
              (item path)))
           name version output path)))

    ;; Version 1 adds a list of propagated inputs to the


@@ 146,7 161,7 @@
              (name name)
              (version version)
              (output output)
              (path path)
              (item path)
              (dependencies deps)))
           name version output path deps)))



@@ 157,10 172,6 @@
  "Return the packages listed in MANIFEST."
  (sexp->manifest (read port)))

(define (write-manifest manifest port)
  "Write MANIFEST to PORT."
  (write (manifest->sexp manifest) port))

(define (entry-predicate pattern)
  "Return a procedure that returns #t when passed a manifest entry that
matches NAME/OUTPUT/VERSION.  OUTPUT and VERSION may be #f, in which case they


@@ 203,62 214,41 @@ must be a manifest-pattern."

  (filter matches? (manifest-entries manifest)))

(define (manifest=? m1 m2)
  "Return #t if manifests M1 and M2 are equal.  This differs from 'equal?' in
that the 'inputs' field is ignored for the comparison, since it is know to
have no effect on the manifest contents."
  (equal? (manifest->sexp m1)
          (manifest->sexp m2)))


;;;
;;; Profiles.
;;;

(define* (lower-input store input #:optional (system (%current-system)))
  "Lower INPUT so that it contains derivations instead of packages."
  (match input
    ((name (? package? package))
     `(,name ,(package-derivation store package system)))
    ((name (? package? package) output)
     `(,name ,(package-derivation store package system)
             ,output))
    (_ input)))

(define (profile-derivation store manifest)
(define (profile-derivation manifest)
  "Return a derivation that builds a profile (aka. 'user environment') with
the given MANIFEST."
  (define inputs
    (append-map (match-lambda
                 (($ <manifest-entry> name version
                                      output (? package? package) deps)
                  `((,package ,output) ,@deps))
                 (($ <manifest-entry> name version output path deps)
                  ;; Assume PATH and DEPS are already valid.
                  `(,path ,@deps)))
                (manifest-entries manifest)))

  (define builder
    `(begin
       (use-modules (ice-9 pretty-print)
                    (guix build union))

       (setvbuf (current-output-port) _IOLBF)
       (setvbuf (current-error-port) _IOLBF)

       (let ((output (assoc-ref %outputs "out"))
             (inputs (map cdr %build-inputs)))
         (union-build output inputs
                      #:log-port (%make-void-port "w"))
         (call-with-output-file (string-append output "/manifest")
           (lambda (p)
             (pretty-print ',(manifest->sexp manifest) p))))))

  (build-expression->derivation store "profile" builder
                                #:inputs
                                (append-map (match-lambda
                                             (($ <manifest-entry> name version
                                                 output path deps (inputs ..1))
                                              (map (cute lower-input store <>)
                                                   inputs))
                                             (($ <manifest-entry> name version
                                                 output path deps)
                                              ;; Assume PATH and DEPS are
                                              ;; already valid.
                                              `((,name ,path) ,@deps)))
                                            (manifest-entries manifest))
                                #:modules '((guix build union))
                                #:local-build? #t))
    #~(begin
        (use-modules (ice-9 pretty-print)
                     (guix build union))

        (setvbuf (current-output-port) _IOLBF)
        (setvbuf (current-error-port) _IOLBF)

        (union-build #$output '#$inputs
                     #:log-port (%make-void-port "w"))
        (call-with-output-file (string-append #$output "/manifest")
          (lambda (p)
            (pretty-print '#$(manifest->gexp manifest) p)))))

  (gexp->derivation "profile" builder
                    #:modules '((guix build union))
                    #:local-build? #t))

(define (profile-regexp profile)
  "Return a regular expression that matches PROFILE's name and number."

M guix/scripts/package.scm => guix/scripts/package.scm +76 -62
@@ 24,6 24,7 @@
  #:use-module (guix derivations)
  #:use-module (guix packages)
  #:use-module (guix profiles)
  #:use-module (guix monads)
  #:use-module (guix utils)
  #:use-module (guix config)
  #:use-module (guix scripts build)


@@ 82,7 83,8 @@ return PROFILE unchanged.  The goal is to treat '-p ~/.guix-profile' as if

(define (link-to-empty-profile generation)
  "Link GENERATION, a string, to the empty profile."
  (let* ((drv  (profile-derivation (%store) (manifest '())))
  (let* ((drv  (run-with-store (%store)
                 (profile-derivation (manifest '()))))
         (prof (derivation->output-path drv "out")))
    (when (not (build-derivations (%store) (list drv)))
          (leave (_ "failed to build the empty profile~%")))


@@ 205,10 207,14 @@ packages that will/would be installed and removed."
                   remove))))
    (_ #f))
  (match install
    ((($ <manifest-entry> name version output path _) ..1)
    ((($ <manifest-entry> name version output item _) ..1)
     (let ((len     (length name))
           (install (map (cut format #f "   ~a-~a\t~a\t~a" <> <> <> <>)
                         name version output path)))
           (install (map (lambda (name version output item)
                           (format #f "   ~a-~a\t~a\t~a" name version output
                                   (if (package? item)
                                       (package-output (%store) item output)
                                       item)))
                         name version output item)))
       (if dry-run?
           (format (current-error-port)
                   (N_ "The following package would be installed:~%~{~a~%~}~%"


@@ 253,17 259,6 @@ RX."
                (package-name p2))))
   same-location?))

(define (input->name+path input)
  "Convert the name/package/sub-drv tuple INPUT to a name/store-path tuple."
  (let loop ((input input))
    (match input
      ((name (? package? package))
       (loop `(,name ,package "out")))
      ((name (? package? package) sub-drv)
       `(,name ,(package-output (%store) package sub-drv)))
      (_
       input))))

(define %sigint-prompt
  ;; The prompt to jump to upon SIGINT.
  (make-prompt-tag "interruptible"))


@@ 517,6 512,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
  (display (_ "
  -A, --list-available[=REGEXP]
                         list available packages matching REGEXP"))
  (display (_ "
  --show=PACKAGE         show details about PACKAGE"))
  (newline)
  (show-build-options-help)
  (newline)


@@ 615,6 612,11 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
                   (values (cons `(query list-available ,(or arg ""))
                                 result)
                           #f)))
         (option '("show") #t #t
                 (lambda (opt name arg result arg-handler)
                   (values (cons `(query show ,arg)
                                 result)
                           #f)))

         %standard-build-options))



@@ 639,22 641,11 @@ return the new list of manifest entries."

    (delete-duplicates deps same?))

  (define (package->manifest-entry p output)
    ;; Return a manifest entry for the OUTPUT of package P.
    (check-package-freshness p)
  (define (package->manifest-entry* package output)
    (check-package-freshness package)
    ;; When given a package via `-e', install the first of its
    ;; outputs (XXX).
    (let* ((output (or output (car (package-outputs p))))
           (path   (package-output (%store) p output))
           (deps   (deduplicate (package-transitive-propagated-inputs p))))
      (manifest-entry
       (name (package-name p))
       (version (package-version p))
       (output output)
       (path path)
       (dependencies (map input->name+path deps))
       (inputs (cons (list (package-name p) p output)
                     deps)))))
    (package->manifest-entry package output))

  (define upgrade-regexps
    (filter-map (match-lambda


@@ 685,7 676,7 @@ return the new list of manifest entries."
  (define to-upgrade
    (map (match-lambda
          ((package output)
           (package->manifest-entry package output)))
           (package->manifest-entry* package output)))
         packages-to-upgrade))

  (define packages-to-install


@@ 703,7 694,7 @@ return the new list of manifest entries."
  (define to-install
    (append (map (match-lambda
                  ((package output)
                   (package->manifest-entry package output)))
                   (package->manifest-entry* package output)))
                 packages-to-install)
            (filter-map (match-lambda
                         (('install . (? package?))


@@ 716,7 707,7 @@ return the new list of manifest entries."
                             (name name)
                             (version version)
                             (output #f)
                             (path path))))
                             (item path))))
                         (_ #f))
                        opts)))



@@ 743,6 734,16 @@ removed from MANIFEST."
  (unless (string=? profile %current-profile)
    (add-indirect-root store (canonicalize-path profile))))

(define (readlink* file)
  "Call 'readlink' until the result is not a symlink."
  (catch 'system-error
    (lambda ()
      (readlink* (readlink file)))
    (lambda args
      (if (= EINVAL (system-error-errno args))
          file
          (apply throw args)))))


;;;
;;; Entry point.


@@ 914,36 915,41 @@ more information.~%"))
             (when (equal? profile %current-profile)
               (ensure-default-profile))

             (if (manifest=? new manifest)
                 (format (current-error-port) (_ "nothing to be done~%"))
                 (let ((prof-drv (profile-derivation (%store) new))
                       (remove   (manifest-matching-entries manifest remove)))
                   (show-what-to-remove/install remove install dry-run?)
                   (show-what-to-build (%store) (list prof-drv)
                                       #:use-substitutes?
                                       (assoc-ref opts 'substitutes?)
                                       #:dry-run? dry-run?)

                   (or dry-run?
                       (let* ((prof   (derivation->output-path prof-drv))
                              (number (generation-number profile))

                              ;; Always use NUMBER + 1 for the new profile,
                              ;; possibly overwriting a "previous future
                              ;; generation".
                              (name   (generation-file-name profile
                                                            (+ 1 number))))
                         (and (build-derivations (%store) (list prof-drv))
                              (let ((count (length entries)))
                                (switch-symlinks name prof)
                                (switch-symlinks profile name)
                                (maybe-register-gc-root (%store) profile)
                                (format #t (N_ "~a package in profile~%"
                                               "~a packages in profile~%"
                                               count)
                                        count)
                                (display-search-paths entries
                                                      profile)))))))))))
             (unless (and (null? install) (null? remove))
               (let* ((prof-drv (run-with-store (%store)
                                  (profile-derivation new)))
                      (prof     (derivation->output-path prof-drv))
                      (remove   (manifest-matching-entries manifest remove)))
                 (show-what-to-remove/install remove install dry-run?)
                 (show-what-to-build (%store) (list prof-drv)
                                     #:use-substitutes?
                                     (assoc-ref opts 'substitutes?)
                                     #:dry-run? dry-run?)

                 (cond
                  (dry-run? #t)
                  ((and (file-exists? profile)
                        (and=> (readlink* profile) (cut string=? prof <>)))
                   (format (current-error-port) (_ "nothing to be done~%")))
                  (else
                   (let* ((number (generation-number profile))

                          ;; Always use NUMBER + 1 for the new profile,
                          ;; possibly overwriting a "previous future
                          ;; generation".
                          (name   (generation-file-name profile
                                                        (+ 1 number))))
                     (and (build-derivations (%store) (list prof-drv))
                          (let ((count (length entries)))
                            (switch-symlinks name prof)
                            (switch-symlinks profile name)
                            (maybe-register-gc-root (%store) profile)
                            (format #t (N_ "~a package in profile~%"
                                           "~a packages in profile~%"
                                           count)
                                    count)
                            (display-search-paths entries
                                                  profile))))))))))))

  (define (process-query opts)
    ;; Process any query specified by OPTS.  Return #t when a query was


@@ 1042,6 1048,14 @@ more information.~%"))
                      (find-packages-by-description regexp)))
           #t))

        (('show requested-name)
         (let-values (((name version)
                       (package-name->name+version requested-name)))
           (leave-on-EPIPE
            (for-each (cute package->recutils <> (current-output-port))
                      (find-packages-by-name name version)))
           #t))

        (('search-paths)
         (let* ((manifest (profile-manifest profile))
                (entries  (manifest-entries manifest))

M guix/scripts/refresh.scm => guix/scripts/refresh.scm +59 -27
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 29,6 30,8 @@
  #:use-module ((gnu packages base) #:select (%final-inputs))
  #:use-module (ice-9 match)
  #:use-module (ice-9 regex)
  #:use-module (ice-9 vlist)
  #:use-module (ice-9 format)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-11)
  #:use-module (srfi srfi-26)


@@ 59,6 62,9 @@
                    (x
                     (leave (_ "~a: invalid selection; expected `core' or `non-core'")
                            arg)))))
        (option '(#\l "list-dependent") #f #f
                (lambda (opt name arg result)
                  (alist-cons 'list-dependent? #t result)))

        (option '("key-server") #t #f
                (lambda (opt name arg result)


@@ 96,6 102,9 @@ specified with `--select'.\n"))
  (display (_ "
  -s, --select=SUBSET    select all the packages in SUBSET, one of
                         `core' or `non-core'"))
  (display (_ "
  -l, --list-dependent   list top-level dependent packages that would need to
                         be rebuilt as a result of upgrading PACKAGE..."))
  (newline)
  (display (_ "
      --key-server=HOST  use HOST as the OpenPGP key server"))


@@ 193,9 202,10 @@ update would trigger a complete rebuild."
        ;; XXX: Fails to catch MPFR/MPC, whose *source* is used as input.
        (member (package-name package) names))))

  (let* ((opts         (parse-options))
         (update?      (assoc-ref opts 'update?))
         (key-download (assoc-ref opts 'key-download))
  (let* ((opts            (parse-options))
         (update?         (assoc-ref opts 'update?))
         (list-dependent? (assoc-ref opts 'list-dependent?))
         (key-download    (assoc-ref opts 'key-download))
         (packages
          (match (concatenate
                  (filter-map (match-lambda


@@ 220,26 230,48 @@ update would trigger a complete rebuild."
                 (some                        ; user-specified packages
                  some))))
    (with-error-handling
      (if update?
          (let ((store (open-connection)))
            (parameterize ((%openpgp-key-server
                            (or (assoc-ref opts 'key-server)
                                (%openpgp-key-server)))
                           (%gpg-command
                            (or (assoc-ref opts 'gpg-command)
                                (%gpg-command))))
              (for-each
               (cut update-package store <> #:key-download key-download)
               packages)))
          (for-each (lambda (package)
                      (match (false-if-exception (package-update-path package))
                        ((new-version . directory)
                         (let ((loc (or (package-field-location package 'version)
                                        (package-location package))))
                           (format (current-error-port)
                                   (_ "~a: ~a would be upgraded from ~a to ~a~%")
                                   (location->string loc)
                                   (package-name package) (package-version package)
                                   new-version)))
                        (_ #f)))
                    packages)))))
      (cond
       (list-dependent?
        (let* ((rebuilds (map package-full-name
                              (package-covering-dependents packages)))
               (total-dependents
                (length (package-transitive-dependents packages))))
          (if (= total-dependents 0)
              (format (current-output-port)
                      (N_ "No dependents other than itself: ~{~a~}~%"
                          "No dependents other than themselves: ~{~a~^ ~}~%"
                          (length packages))
                      (map package-full-name packages))
              (format (current-output-port)
                      (N_ (N_ "A single dependent package: ~2*~{~a~}~%"
                              "Building the following package would ensure ~d \
dependent packages are rebuilt; ~*~{~a~^ ~}~%"
                              total-dependents)
                          "Building the following ~d packages would ensure ~d \
dependent packages are rebuilt: ~{~a~^ ~}~%"
                          (length rebuilds))
                      (length rebuilds) total-dependents rebuilds))))
       (update?
        (let ((store (open-connection)))
          (parameterize ((%openpgp-key-server
                          (or (assoc-ref opts 'key-server)
                              (%openpgp-key-server)))
                         (%gpg-command
                          (or (assoc-ref opts 'gpg-command)
                              (%gpg-command))))
            (for-each
             (cut update-package store <> #:key-download key-download)
             packages))))
       (else
        (for-each (lambda (package)
                    (match (false-if-exception (package-update-path package))
                      ((new-version . directory)
                       (let ((loc (or (package-field-location package 'version)
                                      (package-location package))))
                         (format (current-error-port)
                                 (_ "~a: ~a would be upgraded from ~a to ~a~%")
                                 (location->string loc)
                                 (package-name package) (package-version package)
                                 new-version)))
                      (_ #f)))
                  packages))))))

M guix/scripts/system.scm => guix/scripts/system.scm +33 -12
@@ 95,8 95,8 @@
  (store-lift show-what-to-build))


(define* (copy-closure item target
                       #:key (log-port (current-error-port)))
(define* (copy-item item target
                    #:key (log-port (current-error-port)))
  "Copy ITEM to the store under root directory TARGET and register it."
  (mlet* %store-monad ((refs (references* item)))
    (let ((dest  (string-append target item))


@@ 118,6 118,18 @@

      (return #t))))

(define* (copy-closure item target
                       #:key (log-port (current-error-port)))
  "Copy ITEM and all its dependencies to the store under root directory
TARGET, and register them."
  (mlet* %store-monad ((refs    (references* item))
                       (to-copy (topologically-sorted*
                                 (delete-duplicates (cons item refs)
                                                    string=?))))
    (sequence %store-monad
              (map (cut copy-item <> target #:log-port log-port)
                   to-copy))))

(define* (install os-drv target
                  #:key (log-port (current-output-port))
                  grub? grub.cfg device)


@@ 136,16 148,10 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
            (mkdir-p (string-append target (%store-prefix)))

            ;; Copy items to the new store.
            (sequence %store-monad
                      (map (cut copy-closure <> target #:log-port log-port)
                           to-copy))))))
            (copy-closure to-copy target #:log-port log-port)))))

  (mlet* %store-monad ((os-dir -> (derivation->output-path os-drv))
                       (refs      (references* os-dir))
                       (lst    -> (delete-duplicates (cons os-dir refs)
                                                     string=?))
                       (to-copy   (topologically-sorted* lst))
                       (%         (maybe-copy to-copy)))
                       (%         (maybe-copy os-dir)))

    ;; Create a bunch of additional files.
    (format log-port "populating '~a'...~%" target)


@@ 166,6 172,16 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
  ;; The system profile.
  (string-append %state-directory "/profiles/system"))

(define-syntax-rule (save-environment-excursion body ...)
  "Save the current environment variables, run BODY..., and restore them."
  (let ((env (environ)))
    (dynamic-wind
      (const #t)
      (lambda ()
        body ...)
      (lambda ()
        (environ env)))))

(define* (switch-to-system os
                           #:optional (profile %system-profile))
  "Make a new generation of PROFILE pointing to the directory of OS, switch to


@@ 179,7 195,11 @@ it atomically, and then run OS's activation script."
      (switch-symlinks profile generation)

      (format #t (_ "activating system...~%"))
      (return (primitive-load (derivation->output-path script)))

      ;; The activation script may change $PATH, among others, so protect
      ;; against that.
      (return (save-environment-excursion
               (primitive-load (derivation->output-path script))))

      ;; TODO: Run 'deco reload ...'.
      )))


@@ 293,7 313,8 @@ actions."
             (mlet %store-monad ((% (switch-to-system os)))
               (when grub?
                 (unless (false-if-exception
                          (install-grub grub.cfg device "/"))
                          (install-grub (derivation->output-path grub.cfg)
                                        device "/"))
                   (leave (_ "failed to install GRUB on device '~a'~%")
                          device)))
               (return #t)))

M guix/ui.scm => guix/ui.scm +14 -0
@@ 453,9 453,23 @@ WIDTH columns."
       (fill-paragraph str width
                       (string-length "description: ")))))

  (define (dependencies->recutils packages)
    (let ((list (string-join (map package-full-name
                                  (sort packages package<?)) " ")))
      (string->recutils
       (fill-paragraph list width
                       (string-length "dependencies: ")))))

  (define (package<? p1 p2)
    (string<? (package-full-name p1) (package-full-name p2)))

  ;; Note: Don't i18n field names so that people can post-process it.
  (format port "name: ~a~%" (package-name p))
  (format port "version: ~a~%" (package-version p))
  (format port "dependencies: ~a~%"
          (match (package-direct-inputs p)
            (((labels inputs . _) ...)
             (dependencies->recutils (filter package? inputs)))))
  (format port "location: ~a~%"
          (or (and=> (package-location p) location->string)
              (_ "unknown")))

M guix/utils.scm => guix/utils.scm +33 -0
@@ 1,6 1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 72,6 73,8 @@
            call-with-temporary-output-file
            with-atomic-file-output
            fold2
            fold-tree
            fold-tree-leaves

            filtered-port
            compressed-port


@@ 649,6 652,36 @@ output port, and PROC's result is returned."
             (lambda (result1 result2)
               (fold2 proc result1 result2 (cdr lst1) (cdr lst2)))))))))

(define (fold-tree proc init children roots)
  "Call (PROC NODE RESULT) for each node in the tree that is reachable from
ROOTS, using INIT as the initial value of RESULT.  The order in which nodes
are traversed is not specified, however, each node is visited only once, based
on an eq? check.  Children of a node to be visited are generated by
calling (CHILDREN NODE), the result of which should be a list of nodes that
are connected to NODE in the tree, or '() or #f if NODE is a leaf node."
  (let loop ((result init)
             (seen vlist-null)
             (lst roots))
    (match lst
      (() result)
      ((head . tail)
       (if (not (vhash-assq head seen))
           (loop (proc head result)
                 (vhash-consq head #t seen)
                 (match (children head)
                   ((or () #f) tail)
                   (children (append tail children))))
           (loop result seen tail))))))

(define (fold-tree-leaves proc init children roots)
  "Like fold-tree, but call (PROC NODE RESULT) only for leaf nodes."
  (fold-tree
   (lambda (node result)
     (match (children node)
       ((or () #f) (proc node result))
       (else result)))
   init children roots))


;;;
;;; Source location.

M po/guix/LINGUAS => po/guix/LINGUAS +1 -0
@@ 4,6 4,7 @@ de
en@boldquot
en@quot
eo
hu
pt_BR
sr
vi

M po/guix/de.po => po/guix/de.po +58 -49
@@ 7,7 7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-07-13 17:06+0200\n"
"POT-Creation-Date: 2014-07-25 00:55+0200\n"
"PO-Revision-Date: 2014-07-13 20:38+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"


@@ 18,7 18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"

#: gnu/packages.scm:95
#: gnu/packages.scm:102
#, scheme-format
msgid "cannot access `~a': ~a~%"
msgstr "Zugriff auf »~a« nicht möglich: ~a~%"


@@ 165,9 165,9 @@ msgid ""
msgstr ""

#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
#: guix/scripts/package.scm:523 guix/scripts/gc.scm:58
#: 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:334
#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
msgid ""
"\n"
"  -h, --help             display this help and exit"


@@ 176,9 176,9 @@ msgstr ""
"  -h, --help             diese Hilfe anzeigen und beenden"

#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
#: guix/scripts/package.scm:525 guix/scripts/gc.scm:60
#: 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:336
#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
msgid ""
"\n"
"  -V, --version          display version information and exit"


@@ 192,8 192,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
msgstr ""

#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386
#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: nicht erkannte Option~%"


@@ 244,8 244,8 @@ msgstr "Leeres Profil konnte nicht erstellt werden~%"
msgid "switching from generation ~a to ~a~%"
msgstr ""

#: guix/scripts/package.scm:108 guix/scripts/package.scm:866
#: guix/scripts/package.scm:978
#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:985
#, scheme-format
msgid "profile '~a' does not exist~%"
msgstr "Profil »~a« existiert nicht~%"


@@ 399,62 399,71 @@ msgid ""
"                         list available packages matching REGEXP"
msgstr ""

#: guix/scripts/package.scm:760
#: guix/scripts/package.scm:520
#, fuzzy
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=PAKET    PAKET installieren"

#: guix/scripts/package.scm:767
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr ""

#: guix/scripts/package.scm:775
#: guix/scripts/package.scm:782
#, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr ""

#: guix/scripts/package.scm:797
#: guix/scripts/package.scm:804
#, scheme-format
msgid "error: while creating directory `~a': ~a~%"
msgstr ""

#: guix/scripts/package.scm:801
#: guix/scripts/package.scm:808
#, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr ""

#: guix/scripts/package.scm:808
#: guix/scripts/package.scm:815
#, scheme-format
msgid "error: directory `~a' is not owned by you~%"
msgstr ""

#: guix/scripts/package.scm:811
#: guix/scripts/package.scm:818
#, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%"
msgstr ""

#: guix/scripts/package.scm:836
#: guix/scripts/package.scm:843
#, scheme-format
msgid "deleting ~a~%"
msgstr ""

#: guix/scripts/package.scm:889 guix/scripts/package.scm:994
#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "Unzulässige Syntax: ~a~%"

#: guix/scripts/package.scm:918
#: guix/scripts/package.scm:925
#, scheme-format
msgid "nothing to be done~%"
msgstr "Nichts zu tun~%"

#: guix/scripts/package.scm:941
#: guix/scripts/package.scm:948
#, scheme-format
msgid "~a package in profile~%"
msgstr "~a-Paket im Profil~%"

#: guix/scripts/package.scm:956
#: guix/scripts/package.scm:963
#, scheme-format
msgid "Generation ~a\t~a"
msgstr ""

#: guix/scripts/package.scm:963
#: guix/scripts/package.scm:970
#, scheme-format
msgid "~a\t(current)~%"
msgstr "~a\t(aktuell)~%"


@@ 747,93 756,93 @@ msgstr "~a: ~a~%"
msgid "failed to load operating system file '~a': ~s~%"
msgstr ""

#: guix/scripts/system.scm:111
#: guix/scripts/system.scm:116
#, scheme-format
msgid "failed to register '~a' under '~a'~%"
msgstr ""

#: guix/scripts/system.scm:127
#: guix/scripts/system.scm:144
#, scheme-format
msgid "initializing the current root file system~%"
msgstr ""

#: guix/scripts/system.scm:151 guix/scripts/system.scm:291
#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr ""

#: guix/scripts/system.scm:176
#: guix/scripts/system.scm:197
#, scheme-format
msgid "activating system...~%"
msgstr "System wird aktiviert …~%"

#: guix/scripts/system.scm:211
#: guix/scripts/system.scm:236
#, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "Nicht erkannte Startparameter für »~a«~%"

#: guix/scripts/system.scm:295
#: guix/scripts/system.scm:323
#, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr ""

#: guix/scripts/system.scm:311
#: guix/scripts/system.scm:339
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"
msgstr ""

#: guix/scripts/system.scm:314
#: guix/scripts/system.scm:342
msgid "The valid values for ACTION are:\n"
msgstr "Die gültigen Werte für AKTION sind:\n"

#: guix/scripts/system.scm:315
#: guix/scripts/system.scm:343
msgid "  - 'reconfigure', switch to a new operating system configuration\n"
msgstr ""

#: guix/scripts/system.scm:317
#: guix/scripts/system.scm:345
msgid "  - 'build', build the operating system without installing anything\n"
msgstr ""

#: guix/scripts/system.scm:319
#: guix/scripts/system.scm:347
msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
msgstr ""

#: guix/scripts/system.scm:321
#: guix/scripts/system.scm:349
msgid "  - 'vm-image', build a freestanding virtual machine image\n"
msgstr ""

#: guix/scripts/system.scm:323
#: guix/scripts/system.scm:351
msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr ""

#: guix/scripts/system.scm:325
#: guix/scripts/system.scm:353
msgid "  - 'init', initialize a root file system to run GNU.\n"
msgstr ""

#: guix/scripts/system.scm:329
#: guix/scripts/system.scm:357
msgid ""
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
msgstr ""

#: guix/scripts/system.scm:331
#: guix/scripts/system.scm:359
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"
msgstr ""

#: guix/scripts/system.scm:394
#: guix/scripts/system.scm:422
#, scheme-format
msgid "~a: unknown action~%"
msgstr "~a: unbekannte Aktion~%"

#: guix/scripts/system.scm:411
#: guix/scripts/system.scm:439
#, scheme-format
msgid "wrong number of arguments for action '~a'~%"
msgstr "Falsche Anzahl an Argumenten für Aktion »~a«~%"

#: guix/scripts/system.scm:431
#: guix/scripts/system.scm:459
#, scheme-format
msgid "no configuration file specified~%"
msgstr "Keine Konfigurationsdatei angegeben~%"


@@ 976,21 985,21 @@ msgstr "<unbekannter Ort>"
msgid "failed to create configuration directory `~a': ~a~%"
msgstr "Konfigurationsverzeichnis »~a« konnte nicht angelegt werden: ~a~%"

#: guix/ui.scm:461 guix/ui.scm:475
#: guix/ui.scm:475 guix/ui.scm:489
msgid "unknown"
msgstr "unbekannt"

#: guix/ui.scm:584
#: guix/ui.scm:598
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "Ungültiges Argument: ~a~%"

#: guix/ui.scm:589
#: guix/ui.scm:603
#, scheme-format
msgid "Try `guix --help' for more information.~%"
msgstr "Rufen Sie »guix --help« auf, um weitere Informationen zu erhalten.~%"

#: guix/ui.scm:619
#: guix/ui.scm:633
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"


@@ 998,21 1007,21 @@ msgstr ""
"Aufruf: guix BEFEHL ARGUMENTE …\n"
"BEFEHL mit ARGUMENTEN ausführen.\n"

#: guix/ui.scm:622
#: guix/ui.scm:636
msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "BEFEHL muss einer der unten aufgelisteten Unterbefehle sein:\n"

#: guix/ui.scm:642
#: guix/ui.scm:656
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: Befehl nicht gefunden~%"

#: guix/ui.scm:660
#: guix/ui.scm:674
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: Befehlsname fehlt~%"

#: guix/ui.scm:668
#: guix/ui.scm:682
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: nicht erkannte Option »~a«~%"

M po/guix/eo.po => po/guix/eo.po +59 -50
@@ 7,17 7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: guix 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-07-13 17:06+0200\n"
"POT-Creation-Date: 2014-07-25 00:55+0200\n"
"PO-Revision-Date: 2014-07-14 11:29-0300\n"
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: Esperanto\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"

#: gnu/packages.scm:95
#: gnu/packages.scm:102
#, scheme-format
msgid "cannot access `~a': ~a~%"
msgstr "ne eblas atingi '~a': ~a~%"


@@ 203,9 203,9 @@ msgstr ""
"      --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:523 guix/scripts/gc.scm:58
#: 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:334
#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
msgid ""
"\n"
"  -h, --help             display this help and exit"


@@ 214,9 214,9 @@ msgstr ""
"  -h, --help             montri ĉi tiun helpon kaj eliri"

#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
#: guix/scripts/package.scm:525 guix/scripts/gc.scm:60
#: 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:336
#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
msgid ""
"\n"
"  -V, --version          display version information and exit"


@@ 230,8 230,8 @@ 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:756 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386
#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: nerekonata modifilo~%"


@@ 290,8 290,8 @@ msgstr "fiasko dum konstruo de malplena profilo~%"
msgid "switching from generation ~a to ~a~%"
msgstr "alterno el generacio ~a al ~a~%"

#: guix/scripts/package.scm:108 guix/scripts/package.scm:866
#: guix/scripts/package.scm:978
#: 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~%"


@@ 476,62 476,71 @@ msgstr ""
"  -A, --list-available[=REGESP]\n"
"                         listigi disponeblajn pakojn kongruantajn al REGESP"

#: guix/scripts/package.scm:760
#: guix/scripts/package.scm:520
#, fuzzy
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=PAKO     instali PAKOn"

#: guix/scripts/package.scm:767
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr "~A: fremda argumento~%"

#: guix/scripts/package.scm:775
#: guix/scripts/package.scm:782
#, 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:797
#: guix/scripts/package.scm:804
#, scheme-format
msgid "error: while creating directory `~a': ~a~%"
msgstr "eraro: dum kreo de dosierujo '~a': ~a~%"

#: guix/scripts/package.scm:801
#: guix/scripts/package.scm:808
#, 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:808
#: guix/scripts/package.scm:815
#, scheme-format
msgid "error: directory `~a' is not owned by you~%"
msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%"

#: guix/scripts/package.scm:811
#: guix/scripts/package.scm:818
#, 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:836
#: guix/scripts/package.scm:843
#, scheme-format
msgid "deleting ~a~%"
msgstr "ni forigas ~a~%"

#: guix/scripts/package.scm:889 guix/scripts/package.scm:994
#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "malvalida sintakso: ~a~%"

#: guix/scripts/package.scm:918
#: guix/scripts/package.scm:925
#, scheme-format
msgid "nothing to be done~%"
msgstr "nenio por fari~%"

#: guix/scripts/package.scm:941
#: guix/scripts/package.scm:948
#, scheme-format
msgid "~a package in profile~%"
msgstr "pako ~a en profilo~%"

#: guix/scripts/package.scm:956
#: guix/scripts/package.scm:963
#, scheme-format
msgid "Generation ~a\t~a"
msgstr "Generacio ~a\t~a"

#: guix/scripts/package.scm:963
#: guix/scripts/package.scm:970
#, scheme-format
msgid "~a\t(current)~%"
msgstr "~a\t(nuna)~%"


@@ 864,37 873,37 @@ msgstr "~a: ~a~%"
msgid "failed to load operating system file '~a': ~s~%"
msgstr "fiasko dum ŝargo je operaci-sistema dosiero '~a': ~s~%"

#: guix/scripts/system.scm:111
#: guix/scripts/system.scm:116
#, scheme-format
msgid "failed to register '~a' under '~a'~%"
msgstr "fiasko dum registro de '~a' sub '~a'~%"

#: guix/scripts/system.scm:127
#: guix/scripts/system.scm:144
#, scheme-format
msgid "initializing the current root file system~%"
msgstr "ekigado de la nuna radika dosiersistemo~%"

#: guix/scripts/system.scm:151 guix/scripts/system.scm:291
#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%"

#: guix/scripts/system.scm:176
#: guix/scripts/system.scm:197
#, scheme-format
msgid "activating system...~%"
msgstr "ni aktivas la sistemon...~%"

#: guix/scripts/system.scm:211
#: guix/scripts/system.scm:236
#, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "nerekonataj ekŝargaj parametroj por '~a'~%"

#: guix/scripts/system.scm:295
#: guix/scripts/system.scm:323
#, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr "ni ekigas la operaci-sistemon sub '~a'...~%"

#: guix/scripts/system.scm:311
#: guix/scripts/system.scm:339
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"


@@ 902,35 911,35 @@ msgstr ""
"Uzmaniero: guix system [MODIFILO] AGO DOSIERO\n"
"Konstrui la operaci-sistemon deklarita en DOSIERO akorde al AGO.\n"

#: guix/scripts/system.scm:314
#: guix/scripts/system.scm:342
msgid "The valid values for ACTION are:\n"
msgstr "La validaj valoroj por AGO estas:\n"

#: guix/scripts/system.scm:315
#: guix/scripts/system.scm:343
msgid "  - 'reconfigure', switch to a new operating system configuration\n"
msgstr "  - 'reconfigure', alterni al nova operaci-sistema agordaro\n"

#: guix/scripts/system.scm:317
#: guix/scripts/system.scm:345
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:319
#: guix/scripts/system.scm:347
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:321
#: guix/scripts/system.scm:349
msgid "  - 'vm-image', build a freestanding virtual machine image\n"
msgstr "  - 'vm-image', konstrui memstaran virtual-maŝinan bildon\n"

#: guix/scripts/system.scm:323
#: guix/scripts/system.scm:351
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:325
#: guix/scripts/system.scm:353
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:329
#: guix/scripts/system.scm:357
msgid ""
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"


@@ 938,7 947,7 @@ msgstr ""
"\n"
"      --image-size=GRANDO por 'vm-image', produkti bildon je GRANDO"

#: guix/scripts/system.scm:331
#: guix/scripts/system.scm:359
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"


@@ 946,17 955,17 @@ msgstr ""
"\n"
"      --no-grub          por 'init', ne instali GRUB"

#: guix/scripts/system.scm:394
#: guix/scripts/system.scm:422
#, scheme-format
msgid "~a: unknown action~%"
msgstr "~a: nekonata pako~%"

#: guix/scripts/system.scm:411
#: guix/scripts/system.scm:439
#, scheme-format
msgid "wrong number of arguments for action '~a'~%"
msgstr "malĝusta nombro da argumentoj por la ago '~a'~%"

#: guix/scripts/system.scm:431
#: guix/scripts/system.scm:459
#, scheme-format
msgid "no configuration file specified~%"
msgstr "neniu agorda dosiero estis indikata~%"


@@ 1103,21 1112,21 @@ msgstr "<nekonata loko>"
msgid "failed to create configuration directory `~a': ~a~%"
msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%"

#: guix/ui.scm:461 guix/ui.scm:475
#: guix/ui.scm:475 guix/ui.scm:489
msgid "unknown"
msgstr "nekonata"

#: guix/ui.scm:584
#: guix/ui.scm:598
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "malvalida argumento: ~a~%"

#: guix/ui.scm:589
#: guix/ui.scm:603
#, scheme-format
msgid "Try `guix --help' for more information.~%"
msgstr "Provu 'guix --help' por pli da informo.~%"

#: guix/ui.scm:619
#: guix/ui.scm:633
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"


@@ 1125,21 1134,21 @@ msgstr ""
"Uzmaniero: guix KOMANDO ARGj...\n"
"Lanĉas KOMANDOn kun ARGj.\n"

#: guix/ui.scm:622
#: guix/ui.scm:636
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:642
#: guix/ui.scm:656
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: komando ne trovita~%"

#: guix/ui.scm:660
#: guix/ui.scm:674
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: mankas komanda nomo~%"

#: guix/ui.scm:668
#: guix/ui.scm:682
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: nerekonata modifilo: '~a'~%"

A po/guix/hu.po => po/guix/hu.po +1277 -0
@@ 0,0 1,1277 @@
# Hungarian translation for guix.
# 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 0.7-pre1\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"
"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.scm:102
#, 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
#, 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
#, scheme-format
msgid "choosing ~a from ~a~%"
msgstr "~a választása innen: ~a~%"

#: guix/scripts/build.scm:61
#, 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
#, scheme-format
msgid "~A: unknown package~%"
msgstr "~A: ismeretlen csomag~%"

#: guix/scripts/build.scm:86
#, 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
msgid ""
"\n"
"  -K, --keep-failed      keep build tree of failed builds"
msgstr ""
"\n"
"  -K, --keep-failed      sikertelen összeállítások összeállítási fájának\n"
"                         megtartása"

#: guix/scripts/build.scm:125
msgid ""
"\n"
"  -n, --dry-run          do not build the derivations"
msgstr ""
"\n"
"  -n, --dry-run          ne állítsa össze a származékokat"

#: guix/scripts/build.scm:127
msgid ""
"\n"
"      --fallback         fall back to building when the substituter fails"
msgstr ""
"\n"
"      --fallback         térjen vissza az összeállításra, ha a helyettesítő\n"
"                         sikertelen"

#: guix/scripts/build.scm:129
msgid ""
"\n"
"      --no-substitutes   build instead of resorting to pre-built substitutes"
msgstr ""
"\n"
"      --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
msgid ""
"\n"
"      --no-build-hook    do not attempt to offload builds via the build hook"
msgstr ""
"\n"
"      --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
msgid ""
"\n"
"      --max-silent-time=SECONDS\n"
"                         mark the build as failed after SECONDS of silence"
msgstr ""
"\n"
"      --max-silent-time=MÁSODPERC\n"
"                         az összeállítás sikertelennek jelölése MÁSODPERC\n"
"                         hallgatás után"

#: guix/scripts/build.scm:136
msgid ""
"\n"
"      --timeout=SECONDS  mark the build as failed after SECONDS of activity"
msgstr ""
"\n"
"      --timeout=MÁSODPERC  az összeállítás sikertelennek jelölése MÁSODPERC\n"
"                         aktivitás után"

#: guix/scripts/build.scm:138
msgid ""
"\n"
"      --verbosity=LEVEL  use the given verbosity LEVEL"
msgstr ""
"\n"
"      --verbosity=SZINT  a megadott bőbeszédűségi SZINT használata"

#: guix/scripts/build.scm:140
msgid ""
"\n"
"  -c, --cores=N          allow the use of up to N CPU cores for the build"
msgstr ""
"\n"
"  -c, --cores=N          legfeljebb N CPU-mag használatának engedélyezése\n"
"                         az összeállításhoz"

#: guix/scripts/build.scm:206
#, scheme-format
msgid "~a: not a number~%"
msgstr "~a: nem szám~%"

#: guix/scripts/build.scm:223
msgid ""
"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
msgstr ""
"Használat: guix build [KAPCSOLÓ]… CSOMAG-VAGY-SZÁRMAZTATOTT…\n"
"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
msgid ""
"\n"
"  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"
msgstr ""
"\n"
"  -e, --expression=KIF   a csomag vagy a kiértékelt származtatott KIF\n"
"                         összeállítása"

#: guix/scripts/build.scm:227
msgid ""
"\n"
"  -S, --source           build the packages' source derivations"
msgstr ""
"\n"
"  -S, --source           a csomagok forrásszármazékainak összeállítása"

#: guix/scripts/build.scm:229
msgid ""
"\n"
"  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""
msgstr ""
"\n"
"  -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
msgid ""
"\n"
"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
msgstr ""
"\n"
"      --target=HÁRMAS    kereszt összeállítás a HÁRMASRA, például\n"
"                         „armel-linux-gnu”"

#: guix/scripts/build.scm:233
msgid ""
"\n"
"      --with-source=SOURCE\n"
"                         use SOURCE when building the corresponding package"
msgstr ""
"\n"
"      --with-source=FORRÁS\n"
"                         FORRÁS használata a megfelelő csomag összeállításakor"

#: guix/scripts/build.scm:236
msgid ""
"\n"
"  -d, --derivations      return the derivation paths of the given packages"
msgstr ""
"\n"
"  -d, --derivations      a megadott csomagok származék-útvonalának visszaadása"

#: guix/scripts/build.scm:238
msgid ""
"\n"
"  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
"                         as a garbage collector root"
msgstr ""
"\n"
"  -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
msgid ""
"\n"
"      --log-file         return the log file names for the given derivations"
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
msgid ""
"\n"
"  -h, --help             display this help and exit"
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
msgid ""
"\n"
"  -V, --version          display version information and exit"
msgstr ""
"\n"
"  -V, --version          verzióinformációk megjelenítése és kilépés"

#: guix/scripts/build.scm:368
#, 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
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: ismeretlen kapcsoló~%"

#: guix/scripts/build.scm:425
#, scheme-format
msgid "no build log for '~a'~%"
msgstr "nincs összeállítási napló ehhez: „~a”~%"

#: guix/scripts/download.scm:44
msgid ""
"Usage: guix download [OPTION] URL\n"
"Download the file at URL, add it to the store, and print its store path\n"
"and the hash of its contents.\n"
"\n"
"Supported formats: 'nix-base32' (default), 'base32', and 'base16'\n"
"('hex' and 'hexadecimal' can be used as well).\n"
msgstr ""
"Használat: guix download [KAPCSOLÓ] URL\n"
"A fájl letöltése az URL-ről, hozzáadás a tárolóhoz, és a tárolója\n"
"útvonalának és a tartalma hash-ének kiírása.\n"
"\n"
"Támogatott formátumok: „nix-base32” (alapértelmezett), „base32” és „base16”\n"
"(„hex” és „hexadecimal” is használható).\n"

#: guix/scripts/download.scm:50 guix/scripts/hash.scm:50
msgid ""
"\n"
"  -f, --format=FMT       write the hash in the given format"
msgstr ""
"\n"
"  -f, --format=FMT       a hash kiírása a megadott formátumban"

#: guix/scripts/download.scm:73 guix/scripts/hash.scm:75
#, scheme-format
msgid "unsupported hash format: ~a~%"
msgstr "nem támogatott hash-formátum: ~a~%"

#: guix/scripts/download.scm:106
#, scheme-format
msgid "~a: failed to parse URI~%"
msgstr "~a: az URI feldolgozása sikertelen~%"

#: guix/scripts/download.scm:117
#, scheme-format
msgid "~a: download failed~%"
msgstr "~a: letöltés sikertelen~%"

#: guix/scripts/package.scm:88
#, scheme-format
msgid "failed to build the empty profile~%"
msgstr "az üres profil összeállítása sikertelen~%"

#: guix/scripts/package.scm:97
#, 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
#, 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
#, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%"
msgstr "A következő csomag telepítve lesz:~%~{~a~%~}~%"

#: guix/scripts/package.scm:339
#, scheme-format
msgid "package `~a' lacks output `~a'~%"
msgstr "a(z) „~a” csomag hiányolja a kimenetet: „~a”~%"

#: guix/scripts/package.scm:356
#, 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
#, 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
msgid ""
"Usage: guix package [OPTION]... PACKAGES...\n"
"Install, remove, or upgrade PACKAGES in a single transaction.\n"
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
msgid ""
"\n"
"  -i, --install=PACKAGE  install PACKAGE"
msgstr ""
"\n"
"  -i, --install=CSOMAG   CSOMAG telepítése"

#: guix/scripts/package.scm:487
msgid ""
"\n"
"  -e, --install-from-expression=EXP\n"
"                         install the package EXP evaluates to"
msgstr ""
"\n"
"  -e, --install-from-expression=KIF\n"
"                         a kiértékelt KIF csomag telepítése"

#: guix/scripts/package.scm:490
msgid ""
"\n"
"  -r, --remove=PACKAGE   remove PACKAGE"
msgstr ""
"\n"
"  -r, --remove=CSOMAG    CSOMAG eltávolítása"

#: guix/scripts/package.scm:492
msgid ""
"\n"
"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
msgstr ""
"\n"
"  -u, --upgrade[=REGKIF] az összes REGKIF-re illeszkedő telepített csomag\n"
"                         frissítése"

#: guix/scripts/package.scm:494
msgid ""
"\n"
"      --roll-back        roll back to the previous generation"
msgstr ""
"\n"
"      --roll-back        visszagörgetés az előző generációra"

#: guix/scripts/package.scm:496
msgid ""
"\n"
"      --search-paths     display needed environment variable definitions"
msgstr ""
"\n"
"      --search-paths     a szükséges környezeti változó meghatározások\n"
"                         megjelenítése"

#: guix/scripts/package.scm:498
msgid ""
"\n"
"  -l, --list-generations[=PATTERN]\n"
"                         list generations matching PATTERN"
msgstr ""
"\n"
"  -l, --list-generations[=MINTA]\n"
"                         a MINTÁRA illeszkedő generációk listázása"

#: guix/scripts/package.scm:501
msgid ""
"\n"
"  -d, --delete-generations[=PATTERN]\n"
"                         delete generations matching PATTERN"
msgstr ""
"\n"
"  -d, --delete-generations[=MINTA]\n"
"                         a MINTÁRA illeszkedő generációk törlése"

#: guix/scripts/package.scm:504
msgid ""
"\n"
"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
msgstr ""
"\n"
"  -p, --profile=PROFIL   a PROFIL használata a felhasználó alapértelmezett\n"
"                         profilja helyett"

#: guix/scripts/package.scm:507
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the profile"
msgstr ""
"\n"
"      --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
msgid ""
"\n"
"      --verbose          produce verbose output"
msgstr ""
"\n"
"      --verbose          bőbeszédű kimenet előállítása"

#: guix/scripts/package.scm:512
msgid ""
"\n"
"  -s, --search=REGEXP    search in synopsis and description using REGEXP"
msgstr ""
"\n"
"  -s, --search=REGKIF    keresés az összegzésben és a leírásban REGKIF\n"
"                         használatával"

#: guix/scripts/package.scm:514
msgid ""
"\n"
"  -I, --list-installed[=REGEXP]\n"
"                         list installed packages matching REGEXP"
msgstr ""
"\n"
"  -I, --list-installed[=REGKIF]\n"
"                         a REGKIF-re illeszkedő telepített csomagok listázása"

#: guix/scripts/package.scm:517
msgid ""
"\n"
"  -A, --list-available[=REGEXP]\n"
"                         list available packages matching REGEXP"
msgstr ""
"\n"
"  -A, --list-available[=REGKIF]\n"
"                         a REGKIF-re illeszkedő elérhető csomagok listázása"

#: guix/scripts/package.scm:520
#, fuzzy
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=CSOMAG   CSOMAG telepítése"

#: guix/scripts/package.scm:767
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr "~A: nem odatartozó argumentum~%"

#: guix/scripts/package.scm:782
#, 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
#, 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
#, 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
#, 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
#, 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
#, scheme-format
msgid "deleting ~a~%"
msgstr "~a törlése~%"

#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "érvénytelen szintaxis: ~a~%"

#: guix/scripts/package.scm:925
#, scheme-format
msgid "nothing to be done~%"
msgstr "nincs mit tenni~%"

#: guix/scripts/package.scm:948
#, scheme-format
msgid "~a package in profile~%"
msgstr "~a csomag a profilban~%"

#: guix/scripts/package.scm:963
#, scheme-format
msgid "Generation ~a\t~a"
msgstr "~a generáció\t~a"

#: guix/scripts/package.scm:970
#, scheme-format
msgid "~a\t(current)~%"
msgstr "~a\t(jelenlegi)~%"

#: guix/scripts/gc.scm:39
msgid ""
"Usage: guix gc [OPTION]... PATHS...\n"
"Invoke the garbage collector.\n"
msgstr ""
"Használat: guix gc [KAPCSOLÓ]… ÚTVONALAK…\n"
"A szemétgyűjtő meghívása.\n"

#: guix/scripts/gc.scm:41
msgid ""
"\n"
"  -C, --collect-garbage[=MIN]\n"
"                         collect at least MIN bytes of garbage"
msgstr ""
"\n"
"  -C, --collect-garbage[=MIN]\n"
"                         legalább MIN bájt szemét összegyűjtése"

#: guix/scripts/gc.scm:44
msgid ""
"\n"
"  -d, --delete           attempt to delete PATHS"
msgstr ""
"\n"
"  -d, --delete           ÚTVONALAK törlésének kísérlete"

#: guix/scripts/gc.scm:46
msgid ""
"\n"
"      --list-dead        list dead paths"
msgstr ""
"\n"
"      --list-dead        halott útvonalak listázása"

#: guix/scripts/gc.scm:48
msgid ""
"\n"
"      --list-live        list live paths"
msgstr ""
"\n"
"      --list-live        élő útvonalak listázása"

#: guix/scripts/gc.scm:51
msgid ""
"\n"
"      --references       list the references of PATHS"
msgstr ""
"\n"
"      --references       az ÚTVONALAK hivatkozásainak listázása"

#: guix/scripts/gc.scm:53
msgid ""
"\n"
"  -R, --requisites       list the requisites of PATHS"
msgstr ""
"\n"
"  -R, --requisites       az ÚTVONALAK követelményeinek listázása"

#: guix/scripts/gc.scm:55
msgid ""
"\n"
"      --referrers        list the referrers of PATHS"
msgstr ""
"\n"
"      --referrers        az ÚTVONALAK ajánlóinak listázása"

#: guix/scripts/gc.scm:84
#, scheme-format
msgid "invalid amount of storage: ~a~%"
msgstr "érvénytelen tárolómennyiség: ~a~%"

#: guix/scripts/hash.scm:45
msgid ""
"Usage: guix hash [OPTION] FILE\n"
"Return the cryptographic hash of FILE.\n"
"\n"
"Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'\n"
"and 'hexadecimal' can be used as well).\n"
msgstr ""
"Használat: guix hash [KAPCSOLÓ] FÁJL\n"
"A FÁJL kriptográfiai hash-ének visszaadása.\n"
"\n"
"Támogatott formátumok: „nix-base32” (alapértelmezett), „base32” és „base16”\n"
"(„hex” és „hexadecimal” is használható).\n"

#: guix/scripts/hash.scm:52
msgid ""
"\n"
"  -r, --recursive        compute the hash on FILE recursively"
msgstr ""
"\n"
"  -r, --recursive        a FILE hash-ének rekurzív számítása"

#: guix/scripts/hash.scm:103
#, scheme-format
msgid "unrecognized option: ~a~%"
msgstr "ismeretlen kapcsoló: ~a~%"

#: guix/scripts/hash.scm:134 guix/ui.scm:233
#, scheme-format
msgid "~a~%"
msgstr "~a~%"

#: guix/scripts/hash.scm:137
#, scheme-format
msgid "wrong number of arguments~%"
msgstr "nem megfelelő számú argumentum~%"

#: guix/scripts/pull.scm:73
msgid ""
"Usage: guix pull [OPTION]...\n"
"Download and deploy the latest version of Guix.\n"
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
msgid ""
"\n"
"      --url=URL          download the Guix tarball from URL"
msgstr ""
"\n"
"      --url=URL          a Guix tarball letöltése az URL-ről"

#: guix/scripts/pull.scm:79
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the new Guix"
msgstr ""
"\n"
"      --bootstrap        a Guile rendszertöltő használata az új Guix\n"
"                         összeállításához"

#: guix/scripts/pull.scm:117
#, scheme-format
msgid "~A: unexpected argument~%"
msgstr "~A: nem várt argumentum~%"

#: 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:145
#, 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
#, 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
msgid "Guix already up to date\n"
msgstr "A Guix már naprakész\n"

#: guix/scripts/substitute-binary.scm:80
#, scheme-format
msgid "authentication and authorization of substitutes disabled!~%"
msgstr "a helyettesítők hitelesítése és felhatalmazása letiltva!~%"

#: guix/scripts/substitute-binary.scm:163
#, scheme-format
msgid "download from '~a' failed: ~a, ~s~%"
msgstr "a letöltés sikertelen innen: „~a”: ~a, ~s~%"

#: guix/scripts/substitute-binary.scm:178
#, scheme-format
msgid "while fetching ~a: server is unresponsive~%"
msgstr "~a lekérése közben: a kiszolgáló nem válaszol~%"

#: guix/scripts/substitute-binary.scm:180
#, scheme-format
msgid "try `--no-substitutes' if the problem persists~%"
msgstr "próbálja a „--no-substitutes” kapcsolót, ha a probléma továbbra is fennáll~%"

#: guix/scripts/substitute-binary.scm:244
#, scheme-format
msgid "signature version must be a number: ~a~%"
msgstr "az aláírás verziójának számnak kell lennie: ~a~%"

#: guix/scripts/substitute-binary.scm:248
#, scheme-format
msgid "unsupported signature version: ~a~%"
msgstr "nem támogatott aláírás verzió: ~a~%"

#: guix/scripts/substitute-binary.scm:256
#, scheme-format
msgid "signature is not a valid s-expression: ~s~%"
msgstr "az aláírás nem érvényes s-kifejezés: ~s~%"

#: guix/scripts/substitute-binary.scm:260
#, scheme-format
msgid "invalid format of the signature field: ~a~%"
msgstr "az aláírásmező formátuma érvénytelen: ~a~%"

#: guix/scripts/substitute-binary.scm:295
#, scheme-format
msgid "invalid signature for '~a'~%"
msgstr "érvénytelen aláírás ehhez: „~a”~%"

#: guix/scripts/substitute-binary.scm:297
#, scheme-format
msgid "hash mismatch for '~a'~%"
msgstr "hash eltérés ennél: „~a”~%"

#: guix/scripts/substitute-binary.scm:299
#, scheme-format
msgid "'~a' is signed with an unauthorized key~%"
msgstr "a(z) „~a” egy jogosulatlan kulccsal van aláírva~%"

#: guix/scripts/substitute-binary.scm:301
#, scheme-format
msgid "signature on '~a' is corrupt~%"
msgstr "a(z) „~a” aláírása sérült~%"

#: guix/scripts/substitute-binary.scm:338
#, scheme-format
msgid "substitute at '~a' lacks a signature~%"
msgstr "a helyettesítő ennél: „~a” hiányol egy aláírást~%"

#: guix/scripts/substitute-binary.scm:526
#, scheme-format
msgid "Downloading, please wait...~%"
msgstr "Letöltés, kérem várjon…~%"

#: guix/scripts/substitute-binary.scm:528
#, scheme-format
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
#, scheme-format
msgid "host name lookup error: ~a~%"
msgstr "gépnév keresési hiba: ~a~%"

#: guix/scripts/substitute-binary.scm:554
msgid ""
"Usage: guix substitute-binary [OPTION]...\n"
"Internal tool to substitute a pre-built binary to a local build.\n"
msgstr ""
"Használat: guix substitute-binary [KAPCSOLÓ]…\n"
"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
msgid ""
"\n"
"      --query            report on the availability of substitutes for the\n"
"                         store file names passed on the standard input"
msgstr ""
"\n"
"      --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
msgid ""
"\n"
"      --substitute STORE-FILE DESTINATION\n"
"                         download STORE-FILE and store it as a Nar in file\n"
"                         DESTINATION"
msgstr ""
"\n"
"      --substitute TÁROLÓ-FÁJL CÉL\n"
"                         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
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
#, 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
#, scheme-format
msgid "~a: unrecognized options~%"
msgstr "~a: ismeretlen kapcsolók~%"

#: guix/scripts/authenticate.scm:58
#, scheme-format
msgid "cannot find public key for secret key '~a'~%"
msgstr "nem található nyilvános kulcs a(z) „~a” titkos kulcshoz~%"

#: guix/scripts/authenticate.scm:78
#, scheme-format
msgid "error: invalid signature: ~a~%"
msgstr "hiba: érvénytelen aláírás: ~a~%"

#: guix/scripts/authenticate.scm:80
#, scheme-format
msgid "error: unauthorized public key: ~a~%"
msgstr "hiba: jogosulatlan nyilvános kulcs: ~a~%"

#: guix/scripts/authenticate.scm:82
#, scheme-format
msgid "error: corrupt signature data: ~a~%"
msgstr "hiba: sérült aláírás adatok: ~a~%"

#: guix/scripts/authenticate.scm:126
msgid ""
"Usage: guix authenticate OPTION...\n"
"Sign or verify the signature on the given file.  This tool is meant to\n"
"be used internally by 'guix-daemon'.\n"
msgstr ""
"Használat: guix authenticate KAPCSOLÓ…\n"
"Aláírás vagy a megadott fájl aláírásának ellenőrzése. Az eszköz célja, hogy\n"
"a „guix-daemon” belsőleg felhasználja.\n"

#: guix/scripts/authenticate.scm:132
msgid "wrong arguments"
msgstr "hibás argumentumok"

#: guix/scripts/system.scm:74
#, scheme-format
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
#, scheme-format
msgid "~a: ~a~%"
msgstr "~a: ~a~%"

#: guix/scripts/system.scm:81
#, scheme-format
msgid "failed to load operating system file '~a': ~s~%"
msgstr "a(z) „~a” operációs rendszer fájl betöltése sikertelen: ~s~%"

#: guix/scripts/system.scm:116
#, scheme-format
msgid "failed to register '~a' under '~a'~%"
msgstr "a(z) „~a” regisztrálása sikertelen ez alá: „~a”~%"

#: guix/scripts/system.scm:144
#, scheme-format
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
#, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr "a GRUB telepítése sikertelen a(z) „~a” eszközre~%"

#: guix/scripts/system.scm:197
#, scheme-format
msgid "activating system...~%"
msgstr "a rendszer aktiválása…~%"

#: guix/scripts/system.scm:236
#, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "azonosítatlan indítási paraméterek ehhez: „~a”~%"

#: guix/scripts/system.scm:323
#, 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
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"
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
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
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
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
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
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
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
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
msgid ""
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
msgstr ""
"\n"
"      --image-size=MÉRET  a „vm-image”-hez, adott MÉRETŰ lemezkép előállítása"

#: guix/scripts/system.scm:359
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"
msgstr ""
"\n"
"      --no-grub          az „init”-hez, ne telepítse a GRUB rendszerbetöltőt"

#: guix/scripts/system.scm:422
#, scheme-format
msgid "~a: unknown action~%"
msgstr "~a: ismeretlen művelet~%"

#: guix/scripts/system.scm:439
#, 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
#, scheme-format
msgid "no configuration file specified~%"
msgstr "nincs beállítófájl megadva~%"

#: guix/gnu-maintenance.scm:373
#, scheme-format
msgid "signature verification failed for `~a'~%"
msgstr "az aláírás-ellenőrzés sikertelen ennél: „~a”~%"

#: guix/gnu-maintenance.scm:375
#, scheme-format
msgid "(could be because the public key is not in your keyring)~%"
msgstr "(azért lehet, mert a nyilvános kulcs nincs a kulcstartón)~%"

#: guix/gnu-maintenance.scm:450
#, scheme-format
msgid "~a: could not locate source file"
msgstr "~a: nem található a forrásfájl"

#: guix/gnu-maintenance.scm:455
#, scheme-format
msgid "~a: ~a: no `version' field in source; skipping~%"
msgstr "~a: ~a: nincs „version” mező a forrásban; kihagyás~%"

#: guix/ui.scm:131
#, 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
msgid ""
"Copyright (C) 2014 the Guix authors\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
"Copyright © 2014 a Guix szerzői\n"
"Licenc GPLv3+: GNU GPL 3. vagy újabb verzió <http://gnu.org/licenses/gpl.html>\n"
"\n"
"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
#, scheme-format
msgid ""
"\n"
"Report bugs to: ~a."
msgstr ""
"\n"
"A hibákat ide jelentse: ~a."

#: guix/ui.scm:160
#, scheme-format
msgid ""
"\n"
"~a home page: <~a>"
msgstr ""
"\n"
"~a honlap: <~a>"

#: guix/ui.scm:162
msgid ""
"\n"
"General help using GNU software: <http://www.gnu.org/gethelp/>"
msgstr ""
"\n"
"Általános segítség a GNU szoftverek használatához: <http://www.gnu.org/gethelp/>"

#: guix/ui.scm:169
#, scheme-format
msgid "~a: invalid number~%"
msgstr "~a: érvénytelen szám~%"

#: guix/ui.scm:186
#, scheme-format
msgid "invalid number: ~a~%"
msgstr "érvénytelen szám: ~a~%"

#: guix/ui.scm:201
#, scheme-format
msgid "unknown unit: ~a~%"
msgstr "ismeretlen egység: ~a~%"

#: guix/ui.scm:212
#, 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
#, 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
#, scheme-format
msgid "failed to connect to `~a': ~a~%"
msgstr "sikertelen csatlakozás ehhez: „~a”: ~a~%"

#: guix/ui.scm:229
#, scheme-format
msgid "build failed: ~a~%"
msgstr "az összeállítás sikertelen: ~a~%"

#: guix/ui.scm:257
#, scheme-format
msgid "failed to read expression ~s: ~s~%"
msgstr "a(z) ~s kifejezés olvasása sikertelen: ~s~%"

#: guix/ui.scm:263
#, 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
#, 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
#, scheme-format
msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő származékot kellene összeállítani:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:324
#, scheme-format
msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő fájlt kellene letölteni:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:330
#, scheme-format
msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő származék lesz összeállítva:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:335
#, scheme-format
msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[A következő fájl lesz letöltve:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:352
msgid "<unknown location>"
msgstr "<ismeretlen hely>"

#: guix/ui.scm:380
#, 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
msgid "unknown"
msgstr "ismeretlen"

#: guix/ui.scm:598
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "érvénytelen argumentum: ~a~%"

#: guix/ui.scm:603
#, 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
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"
msgstr ""
"Használat: guix PARANCS ARGUMENTUMOK…\n"
"A PARANCS futtatása ARGUMENTUMOKKAL.\n"

#: guix/ui.scm:636
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
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: a parancs nem található~%"

#: guix/ui.scm:674
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: hiányzó parancsnév~%"

#: guix/ui.scm:682
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: ismeretlen kapcsoló: „~a”~%"

#: guix/http-client.scm:217
#, scheme-format
msgid "using Guile ~a, which does not support ~s encoding~%"
msgstr "a Guile ~a használata, amely nem támogatja a(z) ~s kódolást~%"

#: guix/http-client.scm:220
#, scheme-format
msgid "download failed; use a newer Guile~%"
msgstr "letöltés sikertelen; használja a Guile újabb verzióját~%"

#: guix/http-client.scm:232
#, scheme-format
msgid "following redirection to `~a'...~%"
msgstr "átirányítás követése ide: „~a”…~%"

#: guix/http-client.scm:241
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
msgid "signature is not a valid s-expression"
msgstr "az aláírás nem érvényes s-kifejezés"

#: guix/nar.scm:385
msgid "invalid signature"
msgstr "érvénytelen aláírás"

#: guix/nar.scm:389
msgid "invalid hash"
msgstr "érvénytelen hash"

#: guix/nar.scm:397
msgid "unauthorized public key"
msgstr "jogosulatlan nyilvános kulcs"

#: guix/nar.scm:402
msgid "corrupt signature data"
msgstr "sérült aláírás adatok"

#: guix/nar.scm:422
msgid "corrupt file set archive"
msgstr "sérült fájlhalmaz archívum"

#: guix/nar.scm:432
#, scheme-format
msgid "importing file or directory '~a'...~%"
msgstr "fájl vagy könyvtár importálása: „~a”…~%"

#: guix/nar.scm:441
#, scheme-format
msgid "found valid signature for '~a'~%"
msgstr "érvényes aláírás található ehhez: „~a”~%"

#: guix/nar.scm:448
msgid "imported file lacks a signature"
msgstr "az importált fájl egy aláírást hiányol"

#: guix/nar.scm:487
msgid "invalid inter-file archive mark"
msgstr "érvénytelen belső-fájl archívum jelölő"

M po/guix/pt_BR.po => po/guix/pt_BR.po +143 -135
@@ 8,11 8,10 @@ msgid ""
msgstr ""
"Project-Id-Version: guix 0.4-pre2\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-06-14 22:38+0200\n"
"POT-Creation-Date: 2014-07-25 00:55+0200\n"
"PO-Revision-Date: 2013-09-28 21:29-0300\n"
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
"net>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"


@@ 20,17 19,17 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.5.7\n"

#: gnu/packages.scm:95
#: gnu/packages.scm:102
#, scheme-format
msgid "cannot access `~a': ~a~%"
msgstr "não foi possível acessar \"~a\": ~a~%"

#: guix/scripts/build.scm:54 guix/scripts/package.scm:337
#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
#, scheme-format
msgid "ambiguous package specification `~a'~%"
msgstr "especificação ambígua de pacote \"~a\"~%"

#: guix/scripts/build.scm:55 guix/scripts/package.scm:339
#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
#, scheme-format
msgid "choosing ~a from ~a~%"
msgstr "escolhendo ~a de ~a~%"


@@ 97,8 96,7 @@ msgid ""
msgstr ""
"\n"
"      --max-silent-time=SEGUNDOS\n"
"                         marca compilação como falha após SEGUNDOS de "
"silêncio"
"                         marca compilação como falha após SEGUNDOS de silêncio"

#: guix/scripts/build.scm:136
#, fuzzy


@@ 108,8 106,7 @@ msgid ""
msgstr ""
"\n"
"      --max-silent-time=SEGUNDOS\n"
"                         marca compilação como falha após SEGUNDOS de "
"silêncio"
"                         marca compilação como falha após SEGUNDOS de silêncio"

#: guix/scripts/build.scm:138
msgid ""


@@ 125,8 122,7 @@ msgid ""
"  -c, --cores=N          allow the use of up to N CPU cores for the build"
msgstr ""
"\n"
"  -c, --cores=N          permite o uso de até N núcleos de CPU para "
"compilação"
"  -c, --cores=N          permite o uso de até N núcleos de CPU para compilação"

#: guix/scripts/build.scm:206
#, scheme-format


@@ 172,8 168,7 @@ msgid ""
"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
msgstr ""
"\n"
"      --target=TRIO      compilação cruzada para TRIO. ex.: \"armel-linux-gnu"
"\""
"      --target=TRIO      compilação cruzada para TRIO. ex.: \"armel-linux-gnu\""

#: guix/scripts/build.scm:233
msgid ""


@@ 197,8 192,7 @@ msgid ""
"                         as a garbage collector root"
msgstr ""
"\n"
"  -r, --root=ARQUIVO     faz do ARQUIVO um link simbólico para o resultado "
"e\n"
"  -r, --root=ARQUIVO     faz do ARQUIVO um link simbólico para o resultado e\n"
"                         registra-o, como um coletor de lixo"

#: guix/scripts/build.scm:241


@@ 208,9 202,9 @@ msgid ""
msgstr ""

#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
#: guix/scripts/package.scm:511 guix/scripts/gc.scm:58
#: 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:142
#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
msgid ""
"\n"
"  -h, --help             display this help and exit"


@@ 219,9 213,9 @@ msgstr ""
"  -h, --help             exibe esta ajuda e sai"

#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
#: guix/scripts/package.scm:513 guix/scripts/gc.scm:60
#: 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:144
#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
msgid ""
"\n"
"  -V, --version          display version information and exit"


@@ 235,8 229,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
msgstr ""

#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:744 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:190
#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: opção desconhecida~%"


@@ 285,75 279,74 @@ msgstr "~a: falha ao analisar URI~%"
msgid "~a: download failed~%"
msgstr "~a: falha no download~%"

#: guix/scripts/package.scm:76
#: guix/scripts/package.scm:88
#, scheme-format
msgid "failed to build the empty profile~%"
msgstr "falha ao compilar o perfil vazio~%"

# geração, criação?
#: guix/scripts/package.scm:85
#: guix/scripts/package.scm:97
#, scheme-format
msgid "switching from generation ~a to ~a~%"
msgstr "trocando para geração de ~a para ~a~%"

#: guix/scripts/package.scm:96 guix/scripts/package.scm:852
#: guix/scripts/package.scm:964
#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:985
#, scheme-format
msgid "profile '~a' does not exist~%"
msgstr "perfil \"~a\" não existe~%"

#: guix/scripts/package.scm:100
#: guix/scripts/package.scm:112
#, scheme-format
msgid "nothing to do: already at the empty profile~%"
msgstr "nada a ser feito: já está no perfil vazio~%"

#: guix/scripts/package.scm:185
#: guix/scripts/package.scm:197
#, fuzzy, scheme-format
msgid "The following package would be removed:~%~{~a~%~}~%"
msgstr "O seguinte pacote seria removido:~% ~{~a~%~}~%"

#: guix/scripts/package.scm:190
#: guix/scripts/package.scm:202
#, fuzzy, scheme-format
msgid "The following package will be removed:~%~{~a~%~}~%"
msgstr "O seguinte pacote será removido:~% ~{~a~%~}~%"

#: guix/scripts/package.scm:202
#: guix/scripts/package.scm:214
#, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%"
msgstr "O seguinte pacote seria instalado:~%~{~a~%~}~%"

#: guix/scripts/package.scm:207
#: guix/scripts/package.scm:219
#, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%"
msgstr "O seguinte pacote será instalado:~%~{~a~%~}~%"

#: guix/scripts/package.scm:327
#: guix/scripts/package.scm:339
#, scheme-format
msgid "package `~a' lacks output `~a'~%"
msgstr "pacote \"~a\" carece de mensagem de saída \"~a\"~%"

#: guix/scripts/package.scm:344
#: guix/scripts/package.scm:356
#, scheme-format
msgid "~a: package not found~%"
msgstr "~a: pacote não encontrado~%"

#: guix/scripts/package.scm:379
#: guix/scripts/package.scm:391
#, scheme-format
msgid "looking for the latest release of GNU ~a..."
msgstr "procurando pelo último lançamento do GNU ~a..."

#: guix/scripts/package.scm:383
#: guix/scripts/package.scm:395
#, scheme-format
msgid "~a: note: using ~a but ~a is available upstream~%"
msgstr "~a: nota: usando ~a, mas ~a está disponível no upstream~%"

#: guix/scripts/package.scm:455
#: guix/scripts/package.scm:467
#, scheme-format
msgid "The following environment variable definitions may be needed:~%"
msgstr ""
"As seguintes definições de variável de ambiente podem ser necessárias:~%"
msgstr "As seguintes definições de variável de ambiente podem ser necessárias:~%"

#: guix/scripts/package.scm:471
#: guix/scripts/package.scm:483
msgid ""
"Usage: guix package [OPTION]... PACKAGES...\n"
"Install, remove, or upgrade PACKAGES in a single transaction.\n"


@@ 361,7 354,7 @@ msgstr ""
"Uso: guix package [OPÇÃO]... PACOTES...\n"
"Instala, remove ou atualiza PACOTES em uma única transação.\n"

#: guix/scripts/package.scm:473
#: guix/scripts/package.scm:485
msgid ""
"\n"
"  -i, --install=PACKAGE  install PACKAGE"


@@ 369,7 362,7 @@ msgstr ""
"\n"
"  -i, --install=PACOTE   instala PACOTE"

#: guix/scripts/package.scm:475
#: guix/scripts/package.scm:487
msgid ""
"\n"
"  -e, --install-from-expression=EXP\n"


@@ 379,7 372,7 @@ msgstr ""
"  -e, --install-from-expression=EXP\n"
"                         instala o pacote que EXPR corresponder"

#: guix/scripts/package.scm:478
#: guix/scripts/package.scm:490
msgid ""
"\n"
"  -r, --remove=PACKAGE   remove PACKAGE"


@@ 387,17 380,16 @@ msgstr ""
"\n"
"  -r, --remove=PACOTE    remove PACOTE"

#: guix/scripts/package.scm:480
#: guix/scripts/package.scm:492
msgid ""
"\n"
"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
msgstr ""
"\n"
"  -u, --upgrade[=REGEXP] atualiza todos os pacotes instalados "
"correspondendo\n"
"  -u, --upgrade[=REGEXP] atualiza todos os pacotes instalados correspondendo\n"
"                         à REGEXP"

#: guix/scripts/package.scm:482
#: guix/scripts/package.scm:494
msgid ""
"\n"
"      --roll-back        roll back to the previous generation"


@@ 405,7 397,7 @@ msgstr ""
"\n"
"      --roll-back        Reverte para a geração anterior"

#: guix/scripts/package.scm:484
#: guix/scripts/package.scm:496
msgid ""
"\n"
"      --search-paths     display needed environment variable definitions"


@@ 413,7 405,7 @@ msgstr ""
"\n"
"      --search-paths     exibe definições necessárias de variável de ambiente"

#: guix/scripts/package.scm:486
#: guix/scripts/package.scm:498
msgid ""
"\n"
"  -l, --list-generations[=PATTERN]\n"


@@ 423,7 415,7 @@ msgstr ""
"  -I, --list-generations[=PADRÃO]\n"
"                         lista criações correspondendo ao PADRÃO"

#: guix/scripts/package.scm:489
#: guix/scripts/package.scm:501
#, fuzzy
msgid ""
"\n"


@@ 434,7 426,7 @@ msgstr ""
"  -I, --list-generations[=PADRÃO]\n"
"                         lista criações correspondendo ao PADRÃO"

#: guix/scripts/package.scm:492
#: guix/scripts/package.scm:504
msgid ""
"\n"
"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"


@@ 442,7 434,7 @@ msgstr ""
"\n"
"  -p, --profile=PERFIL   usa PERFIL em vez do perfil padrão do usuário"

#: guix/scripts/package.scm:495
#: guix/scripts/package.scm:507
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the profile"


@@ 450,7 442,7 @@ msgstr ""
"\n"
"      --bootstrap        usa a inicialização do Guile para compilar o perfil"

#: guix/scripts/package.scm:497 guix/scripts/pull.scm:75
#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
msgid ""
"\n"
"      --verbose          produce verbose output"


@@ 458,7 450,7 @@ msgstr ""
"\n"
"      --verbose          produz uma saída mais detalhada"

#: guix/scripts/package.scm:500
#: guix/scripts/package.scm:512
msgid ""
"\n"
"  -s, --search=REGEXP    search in synopsis and description using REGEXP"


@@ 466,7 458,7 @@ msgstr ""
"\n"
"  -s, --search=REGEXP    pesquisa na sinopse e descrição usando REGEXP"

#: guix/scripts/package.scm:502
#: guix/scripts/package.scm:514
msgid ""
"\n"
"  -I, --list-installed[=REGEXP]\n"


@@ 476,7 468,7 @@ msgstr ""
"  -I, --list-installed[=REGEXP]\n"
"                         lista pacotes instalados correspondentes a REGEXP"

#: guix/scripts/package.scm:505
#: guix/scripts/package.scm:517
msgid ""
"\n"
"  -A, --list-available[=REGEXP]\n"


@@ 486,62 478,71 @@ msgstr ""
"  -A, --list-available[=REGEXP]\n"
"                         lista pacotes disponíveis correspondentes a REGEXP"

#: guix/scripts/package.scm:748
#: guix/scripts/package.scm:520
#, fuzzy
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=PACOTE   instala PACOTE"

#: guix/scripts/package.scm:767
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr "~A: argumento estranho~%"

#: guix/scripts/package.scm:763
#: guix/scripts/package.scm:782
#, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr "Tente \"info '(guix) Invoking guix package'\" para mais informações.~%"

#: guix/scripts/package.scm:785
#: guix/scripts/package.scm:804
#, scheme-format
msgid "error: while creating directory `~a': ~a~%"
msgstr "erro: ao criar diretório \"~a\": ~a~%"

#: guix/scripts/package.scm:789
#: guix/scripts/package.scm:808
#, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr "Por favor, crie o diretório \"~a\", com você sendo o proprietário.~%"

#: guix/scripts/package.scm:796
#: guix/scripts/package.scm:815
#, scheme-format
msgid "error: directory `~a' is not owned by you~%"
msgstr "erro: diretório \"~a\" não tem você como proprietário~%"

#: guix/scripts/package.scm:799
#: guix/scripts/package.scm:818
#, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "Por favor, altere o proprietário d \"~a\" para o usuário ~s.~%"

#: guix/scripts/package.scm:822
#: guix/scripts/package.scm:843
#, fuzzy, scheme-format
msgid "deleting ~a~%"
msgstr "Criação ~a\t~a~%"

#: guix/scripts/package.scm:875 guix/scripts/package.scm:980
#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "sintaxe inválida: ~a~%"

#: guix/scripts/package.scm:904
#: guix/scripts/package.scm:925
#, scheme-format
msgid "nothing to be done~%"
msgstr "nada para ser feito~%"

#: guix/scripts/package.scm:927
#: guix/scripts/package.scm:948
#, scheme-format
msgid "~a package in profile~%"
msgstr "pacote ~a no perfil~%"

#: guix/scripts/package.scm:942
#: guix/scripts/package.scm:963
#, fuzzy, scheme-format
msgid "Generation ~a\t~a"
msgstr "Criação ~a\t~a~%"

#: guix/scripts/package.scm:949
#: guix/scripts/package.scm:970
#, scheme-format
msgid "~a\t(current)~%"
msgstr ""


@@ 675,8 676,7 @@ msgid ""
"      --bootstrap        use the bootstrap Guile to build the new Guix"
msgstr ""
"\n"
"      --bootstrap        usa a inicialização do Guile para compilar o novo "
"Guix"
"      --bootstrap        usa a inicialização do Guile para compilar o novo Guix"

#: guix/scripts/pull.scm:117
#, scheme-format


@@ 763,7 763,7 @@ msgstr ""

#: guix/scripts/substitute-binary.scm:338
#, scheme-format
msgid "narinfo for '~a' lacks a signature~%"
msgid "substitute at '~a' lacks a signature~%"
msgstr ""

#: guix/scripts/substitute-binary.scm:526


@@ 774,9 774,7 @@ msgstr "Baixando, por favor aguarde...~%"
#: guix/scripts/substitute-binary.scm:528
#, scheme-format
msgid "(Please consider upgrading Guile to get proper progress report.)~%"
msgstr ""
"(Por favor, considere atualizar o Guile para obter o relatório adequado do "
"progresso.)~%"
msgstr "(Por favor, considere atualizar o Guile para obter o relatório adequado do progresso.)~%"

#: guix/scripts/substitute-binary.scm:545
#, scheme-format


@@ 789,8 787,7 @@ msgid ""
"Internal tool to substitute a pre-built binary to a local build.\n"
msgstr ""
"Uso: guix substitute-binary [OPÇÃO]...\n"
"Ferramenta interna para substituir um binário pré-compilado para uma "
"compilação local.\n"
"Ferramenta interna para substituir um binário pré-compilado para uma compilação local.\n"

#: guix/scripts/substitute-binary.scm:556
msgid ""


@@ 799,8 796,7 @@ msgid ""
"                         store file names passed on the standard input"
msgstr ""
"\n"
"      --query            relata a disponibilidade de substitutos para os "
"nomes\n"
"      --query            relata a disponibilidade de substitutos para os nomes\n"
"                         de arquivos de armazenamento passados na entrada\n"
"                         padrão"



@@ 813,22 809,19 @@ msgid ""
msgstr ""
"\n"
"      --substitute ARQUIVO-ARMAZENAMENTO DESTINO\n"
"                         baixa ARQUIVO-ARMAZENAMENTO e armazena-o como um "
"Nar\n"
"                         baixa ARQUIVO-ARMAZENAMENTO e armazena-o como um Nar\n"
"                         no arquivo DESTINO"

#: guix/scripts/substitute-binary.scm:599
msgid ""
"ACL for archive imports seems to be uninitialized, substitutes may be "
"unavailable\n"
#: guix/scripts/substitute-binary.scm:604
msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
msgstr ""

#: guix/scripts/substitute-binary.scm:619
#: guix/scripts/substitute-binary.scm:625
#, scheme-format
msgid "failed to look up host '~a' (~a), substituter disabled~%"
msgstr ""

#: guix/scripts/substitute-binary.scm:726
#: guix/scripts/substitute-binary.scm:732
#, scheme-format
msgid "~a: unrecognized options~%"
msgstr "~a: opções desconhecidas~%"


@@ 865,93 858,112 @@ msgstr ""
msgid "wrong arguments"
msgstr "número errado de argumentos~%"

#: guix/scripts/system.scm:67
#: guix/scripts/system.scm:74
#, fuzzy, scheme-format
msgid "failed to open operating system file '~a': ~a~%"
msgstr "falha ao conectar em \"~a\": ~a~%"

#: guix/scripts/system.scm:70
#: guix/scripts/system.scm:78 guix/ui.scm:238
#, fuzzy, scheme-format
msgid "~a: ~a~%"
msgstr "~a~%"

#: guix/scripts/system.scm:81
#, fuzzy, scheme-format
msgid "failed to load machine file '~a': ~s~%"
msgid "failed to load operating system file '~a': ~s~%"
msgstr "falha ao conectar em \"~a\": ~a~%"

#: guix/scripts/system.scm:86
#: guix/scripts/system.scm:116
#, fuzzy, scheme-format
msgid "failed to register '~a' under '~a'~%"
msgstr "falha ao criar raiz de GC \"~a\": ~a~%"

#: guix/scripts/system.scm:102
#: guix/scripts/system.scm:144
#, scheme-format
msgid "initializing the current root file system~%"
msgstr ""

#: guix/scripts/system.scm:113
#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#, fuzzy, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr "falha ao instalar local: ~a~%"

#: guix/scripts/system.scm:121
#: guix/scripts/system.scm:197
#, scheme-format
msgid "activating system...~%"
msgstr ""

#: guix/scripts/system.scm:236
#, fuzzy, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "opção desconhecida: ~a~%"

#: guix/scripts/system.scm:323
#, fuzzy, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr "falha ao conectar em \"~a\": ~a~%"

#: guix/scripts/system.scm:339
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"
msgstr ""

#: guix/scripts/system.scm:124
#: guix/scripts/system.scm:342
msgid "The valid values for ACTION are:\n"
msgstr ""

#: guix/scripts/system.scm:125
#: guix/scripts/system.scm:343
msgid "  - 'reconfigure', switch to a new operating system configuration\n"
msgstr ""

#: guix/scripts/system.scm:345
msgid "  - 'build', build the operating system without installing anything\n"
msgstr ""

#: guix/scripts/system.scm:127
#: guix/scripts/system.scm:347
msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
msgstr ""

#: guix/scripts/system.scm:129
#: guix/scripts/system.scm:349
msgid "  - 'vm-image', build a freestanding virtual machine image\n"
msgstr ""

#: guix/scripts/system.scm:131
#: guix/scripts/system.scm:351
msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr ""

#: guix/scripts/system.scm:133
#: guix/scripts/system.scm:353
msgid "  - 'init', initialize a root file system to run GNU.\n"
msgstr ""

#: guix/scripts/system.scm:137
#: guix/scripts/system.scm:357
msgid ""
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
msgstr ""

#: guix/scripts/system.scm:139
#: guix/scripts/system.scm:359
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"
msgstr ""

#: guix/scripts/system.scm:198
#: guix/scripts/system.scm:422
#, fuzzy, scheme-format
msgid "~a: unknown action~%"
msgstr "~A: pacote desconhecido~%"

#: guix/scripts/system.scm:215
#: guix/scripts/system.scm:439
#, fuzzy, scheme-format
msgid "wrong number of arguments for action '~a'~%"
msgstr "número errado de argumentos~%"

#: guix/scripts/system.scm:234
#: guix/scripts/system.scm:459
#, scheme-format
msgid "no configuration file specified~%"
msgstr ""

#: guix/scripts/system.scm:272
#, fuzzy, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr "falha ao conectar em \"~a\": ~a~%"

#: guix/gnu-maintenance.scm:373
#, scheme-format
msgid "signature verification failed for `~a'~%"


@@ 980,8 992,7 @@ msgstr "falha ao instalar local: ~a~%"
#: guix/ui.scm:150
msgid ""
"Copyright (C) 2014 the Guix authors\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
"html>\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""


@@ 1035,9 1046,7 @@ msgstr "~a:~a:~a: pacote \"~a\" tem uma entrada inválida: ~s~%"
#: guix/ui.scm:219
#, scheme-format
msgid "~a: ~a: build system `~a' does not support cross builds~%"
msgstr ""
"~a: ~a: sistema de compilação de \"~a\" não tem suporte a compilações "
"cruzadas~%"
msgstr "~a: ~a: sistema de compilação de \"~a\" não tem suporte a compilações cruzadas~%"

#: guix/ui.scm:224
#, scheme-format


@@ 1049,70 1058,65 @@ msgstr "falha ao conectar em \"~a\": ~a~%"
msgid "build failed: ~a~%"
msgstr "compilação falhou: ~a~%"

#: guix/ui.scm:238
#, fuzzy, scheme-format
msgid "~a: ~a~%"
msgstr "~a~%"

#: guix/ui.scm:255
#: guix/ui.scm:257
#, scheme-format
msgid "failed to read expression ~s: ~s~%"
msgstr "falha ao ler a expressão ~s: ~s~%"

#: guix/ui.scm:261
#: guix/ui.scm:263
#, scheme-format
msgid "failed to evaluate expression `~a': ~s~%"
msgstr "falha ao avaliar a expressão \"~a\": ~s~%"

#: guix/ui.scm:270
#: guix/ui.scm:272
#, fuzzy, scheme-format
msgid "expression ~s does not evaluate to a package~%"
msgstr "expressão \"~s\" não corresponde a um pacote~%"

#: guix/ui.scm:317
#: guix/ui.scm:319
#, scheme-format
msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
msgstr "~:[A seguinte derivação será compilada:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:322
#: guix/ui.scm:324
#, scheme-format
msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[O seguinte arquivo será baixado:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:328
#: guix/ui.scm:330
#, scheme-format
msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
msgstr "~:[A seguinte derivação será compilada:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:333
#: guix/ui.scm:335
#, scheme-format
msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[O seguinte arquivo será baixado:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:350
#: guix/ui.scm:352
msgid "<unknown location>"
msgstr "<local desconhecido>"

#: guix/ui.scm:378
#: guix/ui.scm:380
#, scheme-format
msgid "failed to create configuration directory `~a': ~a~%"
msgstr "falha ao criar o diretório de compilação \"~a\": ~a~%"

#: guix/ui.scm:459 guix/ui.scm:473
#: guix/ui.scm:475 guix/ui.scm:489
msgid "unknown"
msgstr "desconhecido"

#: guix/ui.scm:582
#: guix/ui.scm:598
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "argumento inválido: ~a~%"

#: guix/ui.scm:587
#: guix/ui.scm:603
#, scheme-format
msgid "Try `guix --help' for more information.~%"
msgstr "Tente \"guix --help\" para mais informações.~%"

#: guix/ui.scm:617
#: guix/ui.scm:633
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"


@@ 1120,21 1124,21 @@ msgstr ""
"Uso: guix COMANDO ARGUMENTOS...\n"
"Executa COMANDO com ARGUMENTOS.\n"

#: guix/ui.scm:620
#: guix/ui.scm:636
msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "COMANDO deve ser um dos subcomandos listados abaixo:\n"

#: guix/ui.scm:640
#: guix/ui.scm:656
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: comando não encontrado~%"

#: guix/ui.scm:658
#: guix/ui.scm:674
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: faltando um nome de comando~%"

#: guix/ui.scm:666
#: guix/ui.scm:682
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: opção \"~a\" desconhecida~%"


@@ 1237,3 1241,7 @@ msgstr ""
#: guix/nar.scm:487
msgid "invalid inter-file archive mark"
msgstr ""

#, fuzzy
#~ msgid "failed to load machine file '~a': ~s~%"
#~ msgstr "falha ao conectar em \"~a\": ~a~%"

M po/guix/sr.po => po/guix/sr.po +271 -204
@@ 6,7 6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix-0.6-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-04-05 12:37+0200\n"
"POT-Creation-Date: 2014-07-25 00:55+0200\n"
"PO-Revision-Date: 2014-06-19 08:51+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"


@@ 14,41 14,39 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: gnu/packages.scm:95
#: gnu/packages.scm:102
#, scheme-format
msgid "cannot access `~a': ~a~%"
msgstr "не могу да приступим „~a“: ~a~%"

#: guix/scripts/build.scm:54 guix/scripts/package.scm:337
#: guix/scripts/build.scm:53 guix/scripts/package.scm:337
#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
#, scheme-format
msgid "ambiguous package specification `~a'~%"
msgstr "нејасна одредница пакета „~a“~%"

#: guix/scripts/build.scm:54 guix/scripts/package.scm:339
#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
#, scheme-format
msgid "choosing ~a from ~a~%"
msgstr "бирам ~a из ~a~%"

#: guix/scripts/build.scm:60
#: guix/scripts/build.scm:61
#, scheme-format
msgid "~A: package not found for version ~a~%"
msgstr "~A: нисам пронашао пакет за издање ~a~%"

#: guix/scripts/build.scm:62
#: guix/scripts/build.scm:63
#, scheme-format
msgid "~A: unknown package~%"
msgstr "~A: непознат пакет~%"

#: guix/scripts/build.scm:85
#: guix/scripts/build.scm:86
#, scheme-format
msgid "failed to create GC root `~a': ~a~%"
msgstr "нисам успео да направим ГЦ корен „~a“: ~a~%"

#: guix/scripts/build.scm:122
#: guix/scripts/build.scm:123
msgid ""
"\n"
"  -K, --keep-failed      keep build tree of failed builds"


@@ 56,7 54,7 @@ msgstr ""
"\n"
"  -K, --keep-failed      задржава стабло изградње неуспелих изградњи"

#: guix/scripts/build.scm:124
#: guix/scripts/build.scm:125
msgid ""
"\n"
"  -n, --dry-run          do not build the derivations"


@@ 64,7 62,7 @@ msgstr ""
"\n"
"  -n, --dry-run          не изграђује изведенице"

#: guix/scripts/build.scm:126
#: guix/scripts/build.scm:127
msgid ""
"\n"
"      --fallback         fall back to building when the substituter fails"


@@ 72,25 70,23 @@ msgstr ""
"\n"
"      --fallback         враћа се на изградњу када заменик не успе"

#: guix/scripts/build.scm:128
#: guix/scripts/build.scm:129
msgid ""
"\n"
"      --no-substitutes   build instead of resorting to pre-built substitutes"
msgstr ""
"\n"
"      --no-substitutes   изграђује уместо да поново ређа заменике "
"предизградње"
"      --no-substitutes   изграђује уместо да поново ређа заменике предизградње"

#: guix/scripts/build.scm:130
#: guix/scripts/build.scm:131
msgid ""
"\n"
"      --no-build-hook    do not attempt to offload builds via the build hook"
msgstr ""
"\n"
"      --no-build-hook    не покушава да растерети изградњу путем предворја "
"изградње"
"      --no-build-hook    не покушава да растерети изградњу путем предворја изградње"

#: guix/scripts/build.scm:132
#: guix/scripts/build.scm:133
msgid ""
"\n"
"      --max-silent-time=SECONDS\n"


@@ 100,7 96,7 @@ msgstr ""
"      --max-silent-time=СЕКУНДЕ\n"
"                         означава изградњу неупелом након СЕКУНДЕ мировања"

#: guix/scripts/build.scm:135
#: guix/scripts/build.scm:136
msgid ""
"\n"
"      --timeout=SECONDS  mark the build as failed after SECONDS of activity"


@@ 109,7 105,7 @@ msgstr ""
"      --timeout=СЕКУНДЕ\n"
"                         означава изградњу неуспелом након СЕКУНДЕ рада"

#: guix/scripts/build.scm:137
#: guix/scripts/build.scm:138
msgid ""
"\n"
"      --verbosity=LEVEL  use the given verbosity LEVEL"


@@ 117,21 113,20 @@ msgstr ""
"\n"
"      --verbosity=НИВО  користи дати НИВО опширности"

#: guix/scripts/build.scm:139
#: guix/scripts/build.scm:140
msgid ""
"\n"
"  -c, --cores=N          allow the use of up to N CPU cores for the build"
msgstr ""
"\n"
"  -c, --cores=N          омогућава коришћење до N језгра процесора за "
"изградњу"
"  -c, --cores=N          омогућава коришћење до N језгра процесора за изградњу"

#: guix/scripts/build.scm:204
#: guix/scripts/build.scm:206
#, scheme-format
msgid "~a: not a number~%"
msgstr "~a: није број~%"

#: guix/scripts/build.scm:220
#: guix/scripts/build.scm:223
msgid ""
"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"


@@ 139,7 134,7 @@ msgstr ""
"Употреба: guix build [ОПЦИЈА]... ПАКЕТ-ИЛИ-ИЗВЕДНИЦА...\n"
"Изграђује дати ПАКЕТ-ИЛИ-ИЗВЕДНИЦУ и исписује њихове путање излаза.\n"

#: guix/scripts/build.scm:222
#: guix/scripts/build.scm:225
msgid ""
"\n"
"  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"


@@ 147,7 142,7 @@ msgstr ""
"\n"
"  -e, --expression=ИЗРАЗ  изграђује процене ИЗРАЗА пакета или изведенице на"

#: guix/scripts/build.scm:224
#: guix/scripts/build.scm:227
msgid ""
"\n"
"  -S, --source           build the packages' source derivations"


@@ 155,7 150,7 @@ msgstr ""
"\n"
"  -S, --source           изграђује изведенице извора пакета"

#: guix/scripts/build.scm:226
#: guix/scripts/build.scm:229
msgid ""
"\n"
"  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""


@@ 163,7 158,7 @@ msgstr ""
"\n"
"  -s, --system=СИСТЕМ    покушава да изгради за СИСТЕМ--e.g., „i686-linux“"

#: guix/scripts/build.scm:228
#: guix/scripts/build.scm:231
msgid ""
"\n"
"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""


@@ 171,7 166,7 @@ msgstr ""
"\n"
"      --target=ТРОЈКА   унакрсно изграђује за ТРОЈКУ--e.g., „armel-linux-gnu“"

#: guix/scripts/build.scm:230
#: guix/scripts/build.scm:233
msgid ""
"\n"
"      --with-source=SOURCE\n"


@@ 181,7 176,7 @@ msgstr ""
"      --with-source=ИЗВОР\n"
"                         користи ИЗВОР приликом изградње одговарајућег пакета"

#: guix/scripts/build.scm:233
#: guix/scripts/build.scm:236
msgid ""
"\n"
"  -d, --derivations      return the derivation paths of the given packages"


@@ 189,18 184,17 @@ msgstr ""
"\n"
"  -d, --derivations      исписује путање изведенице датог пакета"

#: guix/scripts/build.scm:235
#: guix/scripts/build.scm:238
msgid ""
"\n"
"  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
"                         as a garbage collector root"
msgstr ""
"\n"
"  -r, --root=ДАТОТЕКА       чини ДАТОТЕКУ симболичком везом ка резултату, и "
"бележи је\n"
"  -r, --root=ДАТОТЕКА       чини ДАТОТЕКУ симболичком везом ка резултату, и бележи је\n"
"                         као корен скупљача ђубра"

#: guix/scripts/build.scm:238
#: guix/scripts/build.scm:241
msgid ""
"\n"
"      --log-file         return the log file names for the given derivations"


@@ 208,10 202,10 @@ msgstr ""
"\n"
"      --log-file         исписује називе датотеке дневника за дате изведенице"

#: guix/scripts/build.scm:243 guix/scripts/download.scm:53
#: guix/scripts/package.scm:511 guix/scripts/gc.scm:58
#: 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:77
#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
msgid ""
"\n"
"  -h, --help             display this help and exit"


@@ 219,10 213,10 @@ msgstr ""
"\n"
"  -h, --help                  приказује ову помоћ и излази"

#: guix/scripts/build.scm:245 guix/scripts/download.scm:55
#: guix/scripts/package.scm:513 guix/scripts/gc.scm:60
#: 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:79
#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
msgid ""
"\n"
"  -V, --version          display version information and exit"


@@ 230,19 224,19 @@ msgstr ""
"\n"
"  -V, --version              приказује податке о издању и излази"

#: guix/scripts/build.scm:360
#: guix/scripts/build.scm:368
#, scheme-format
msgid "sources do not match any package:~{ ~a~}~%"
msgstr "извори не одговарају ниједном пакету:~{ ~a~}~%"

#: guix/scripts/build.scm:389 guix/scripts/download.scm:96
#: guix/scripts/package.scm:744 guix/scripts/gc.scm:152
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:116
#: 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
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: непозната опција~%"

#: guix/scripts/build.scm:417
#: guix/scripts/build.scm:425
#, scheme-format
msgid "no build log for '~a'~%"
msgstr "нема дневника изградње за „~a“~%"


@@ 286,73 280,73 @@ msgstr "~a: нисам успео да обрадим путању~%"
msgid "~a: download failed~%"
msgstr "~a: преузимање није успело~%"

#: guix/scripts/package.scm:76
#: guix/scripts/package.scm:88
#, scheme-format
msgid "failed to build the empty profile~%"
msgstr "нисам успео да изградим празан профил~%"

#: guix/scripts/package.scm:85
#: guix/scripts/package.scm:97
#, scheme-format
msgid "switching from generation ~a to ~a~%"
msgstr "пребацујем се са генерације ~a на ~a~%"

#: guix/scripts/package.scm:96 guix/scripts/package.scm:852
#: guix/scripts/package.scm:964
#: 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“ не постоји~%"

#: guix/scripts/package.scm:100
#: guix/scripts/package.scm:112
#, scheme-format
msgid "nothing to do: already at the empty profile~%"
msgstr "ништа за урадити: већ сам у празном профилу~%"

#: guix/scripts/package.scm:185
#: guix/scripts/package.scm:197
#, scheme-format
msgid "The following package would be removed:~%~{~a~%~}~%"
msgstr "Следећи пакети би требали бити уклоњени:~%~{~a~%~}~%"

#: guix/scripts/package.scm:190
#: guix/scripts/package.scm:202
#, scheme-format
msgid "The following package will be removed:~%~{~a~%~}~%"
msgstr "Следећи пакети ће бити уклоњени:~%~{~a~%~}~%"

#: guix/scripts/package.scm:202
#: guix/scripts/package.scm:214
#, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%"
msgstr "Следећи пакети би требали бити инсталирани:~%~{~a~%~}~%"

#: guix/scripts/package.scm:207
#: guix/scripts/package.scm:219
#, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%"
msgstr "Следећи пакети ће бити инсталирани:~%~{~a~%~}~%"

#: guix/scripts/package.scm:327
#: guix/scripts/package.scm:339
#, scheme-format
msgid "package `~a' lacks output `~a'~%"
msgstr "пакету „~a“ недостаје излаз „~a“~%"

#: guix/scripts/package.scm:344
#: guix/scripts/package.scm:356
#, scheme-format
msgid "~a: package not found~%"
msgstr "~a: нисам пронашао пакет~%"

#: guix/scripts/package.scm:379
#: guix/scripts/package.scm:391
#, scheme-format
msgid "looking for the latest release of GNU ~a..."
msgstr "тражим последње издање Гнуа ~a..."

#: guix/scripts/package.scm:383
#: guix/scripts/package.scm:395
#, scheme-format
msgid "~a: note: using ~a but ~a is available upstream~%"
msgstr "~a: напомена: користим ~a али ~a је доступно узводно~%"

#: guix/scripts/package.scm:455
#: guix/scripts/package.scm:467
#, scheme-format
msgid "The following environment variable definitions may be needed:~%"
msgstr "Следеће одреднице променљиве окружења могу бити потребне:~%"

#: guix/scripts/package.scm:471
#: guix/scripts/package.scm:483
msgid ""
"Usage: guix package [OPTION]... PACKAGES...\n"
"Install, remove, or upgrade PACKAGES in a single transaction.\n"


@@ 360,7 354,7 @@ msgstr ""
"Употреба: guix package [ОПЦИЈА]... ПАКЕТИ...\n"
"Инсталирајте, уклоните, или доградите ПАКЕТЕ у једном прелазу.\n"

#: guix/scripts/package.scm:473
#: guix/scripts/package.scm:485
msgid ""
"\n"
"  -i, --install=PACKAGE  install PACKAGE"


@@ 368,7 362,7 @@ msgstr ""
"\n"
"  -i, --install=ПАКЕТ  инсталира ПАКЕТ"

#: guix/scripts/package.scm:475
#: guix/scripts/package.scm:487
msgid ""
"\n"
"  -e, --install-from-expression=EXP\n"


@@ 378,7 372,7 @@ msgstr ""
"  -e, --install-from-expression=ИЗР\n"
"                         инсталира процене ИЗР пакета у"

#: guix/scripts/package.scm:478
#: guix/scripts/package.scm:490
msgid ""
"\n"
"  -r, --remove=PACKAGE   remove PACKAGE"


@@ 386,16 380,15 @@ msgstr ""
"\n"
"  -r, --remove=ПАКЕТ   уклања ПАКЕТ"

#: guix/scripts/package.scm:480
#: guix/scripts/package.scm:492
msgid ""
"\n"
"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
msgstr ""
"\n"
"  -u, --upgrade[=РЕГИЗР] дограђује све инсталиране пакете који одговарају "
"РЕГИЗРАЗУ"
"  -u, --upgrade[=РЕГИЗР] дограђује све инсталиране пакете који одговарају РЕГИЗРАЗУ"

#: guix/scripts/package.scm:482
#: guix/scripts/package.scm:494
msgid ""
"\n"
"      --roll-back        roll back to the previous generation"


@@ 403,7 396,7 @@ msgstr ""
"\n"
"      --roll-back        враћа се на претходну генерацију"

#: guix/scripts/package.scm:484
#: guix/scripts/package.scm:496
msgid ""
"\n"
"      --search-paths     display needed environment variable definitions"


@@ 411,7 404,7 @@ msgstr ""
"\n"
"      --search-paths     приказује потребне одреднице променљиве окружења"

#: guix/scripts/package.scm:486
#: guix/scripts/package.scm:498
msgid ""
"\n"
"  -l, --list-generations[=PATTERN]\n"


@@ 421,7 414,7 @@ msgstr ""
"  -l, --list-generations[=ШАБЛОН]\n"
"                         исписује генерације које одговарају ШАБЛОНУ"

#: guix/scripts/package.scm:489
#: guix/scripts/package.scm:501
msgid ""
"\n"
"  -d, --delete-generations[=PATTERN]\n"


@@ 431,7 424,7 @@ msgstr ""
"  -d, --delete-generations[=ШАБЛОН]\n"
"                         брише генерације које одговарају ШАБЛОНУ"

#: guix/scripts/package.scm:492
#: guix/scripts/package.scm:504
msgid ""
"\n"
"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"


@@ 439,7 432,7 @@ msgstr ""
"\n"
"  -p, --profile=ПРОФИЛ   користи ПРОФИЛ уместо корисничког подразумеваног"

#: guix/scripts/package.scm:495
#: guix/scripts/package.scm:507
msgid ""
"\n"
"      --bootstrap        use the bootstrap Guile to build the profile"


@@ 447,7 440,7 @@ msgstr ""
"\n"
"      --bootstrap        користи Гуиле почетног учитавања да изгради профил"

#: guix/scripts/package.scm:497 guix/scripts/pull.scm:75
#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
msgid ""
"\n"
"      --verbose          produce verbose output"


@@ 455,7 448,7 @@ msgstr ""
"\n"
"      --verbose          ствара опширан излаз"

#: guix/scripts/package.scm:500
#: guix/scripts/package.scm:512
msgid ""
"\n"
"  -s, --search=REGEXP    search in synopsis and description using REGEXP"


@@ 463,7 456,7 @@ msgstr ""
"\n"
"  -s, --search=РЕГИЗР    тражи у скици и опису користећи РЕГИЗР"

#: guix/scripts/package.scm:502
#: guix/scripts/package.scm:514
msgid ""
"\n"
"  -I, --list-installed[=REGEXP]\n"


@@ 471,10 464,9 @@ msgid ""
msgstr ""
"\n"
"  -I, --list-installed[=РЕГИЗР]\n"
"                         исписује инсталиране пакете који одговарају "
"РЕГИЗРАЗУ"
"                         исписује инсталиране пакете који одговарају РЕГИЗРАЗУ"

#: guix/scripts/package.scm:505
#: guix/scripts/package.scm:517
msgid ""
"\n"
"  -A, --list-available[=REGEXP]\n"


@@ 484,62 476,71 @@ msgstr ""
"  -A, --list-available[=РЕГИЗР]\n"
"                         исписује доступне пакете који одговарају РЕГИЗРАЗУ"

#: guix/scripts/package.scm:748
#: guix/scripts/package.scm:520
#, fuzzy
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=ПАКЕТ  инсталира ПАКЕТ"

#: guix/scripts/package.scm:767
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr "~A: страни аргумент~%"

#: guix/scripts/package.scm:763
#: guix/scripts/package.scm:782
#, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr "Покушајте „info '(guix) Invoking guix package'“ за више података.~%"

#: guix/scripts/package.scm:785
#: guix/scripts/package.scm:804
#, scheme-format
msgid "error: while creating directory `~a': ~a~%"
msgstr "грешка: приликом стварања директоријума „~a“: ~a~%"

#: guix/scripts/package.scm:789
#: guix/scripts/package.scm:808
#, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr "Направите директоријум „~a“, у вашем власништву.~%"

#: guix/scripts/package.scm:796
#: guix/scripts/package.scm:815
#, scheme-format
msgid "error: directory `~a' is not owned by you~%"
msgstr "грешка: директоријум „~a“ није у вашем власништву~%"

#: guix/scripts/package.scm:799
#: guix/scripts/package.scm:818
#, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "Поставите као власника ~s над „~a“.~%"

#: guix/scripts/package.scm:822
#: guix/scripts/package.scm:843
#, scheme-format
msgid "deleting ~a~%"
msgstr "бришем ~a~%"

#: guix/scripts/package.scm:875 guix/scripts/package.scm:980
#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "неисправна синтакса: ~a~%"

#: guix/scripts/package.scm:904
#: guix/scripts/package.scm:925
#, scheme-format
msgid "nothing to be done~%"
msgstr "ништа неће бити урађено~%"

#: guix/scripts/package.scm:927
#: guix/scripts/package.scm:948
#, scheme-format
msgid "~a package in profile~%"
msgstr "~a пакет у профилу~%"

#: guix/scripts/package.scm:942
#: guix/scripts/package.scm:963
#, scheme-format
msgid "Generation ~a\t~a"
msgstr "Генерација ~a\t~a"

#: guix/scripts/package.scm:949
#: guix/scripts/package.scm:970
#, scheme-format
msgid "~a\t(current)~%"
msgstr "~a\t(текуће)~%"


@@ 610,17 611,7 @@ msgstr ""
"\n"
"      --referrers        исписује убрајаче ПУТАЊА"

#: guix/scripts/gc.scm:92
#, scheme-format
msgid "unknown unit: ~a~%"
msgstr "непозната јединица: ~a~%"

#: guix/scripts/gc.scm:93
#, scheme-format
msgid "invalid number: ~a~%"
msgstr "неисправан број: ~a~%"

#: guix/scripts/gc.scm:114
#: guix/scripts/gc.scm:84
#, scheme-format
msgid "invalid amount of storage: ~a~%"
msgstr "неисправан износ складишта: ~a~%"


@@ 652,7 643,7 @@ msgstr ""
msgid "unrecognized option: ~a~%"
msgstr "непозната опција: ~a~%"

#: guix/scripts/hash.scm:134 guix/ui.scm:193
#: guix/scripts/hash.scm:134 guix/ui.scm:233
#, scheme-format
msgid "~a~%"
msgstr "~a~%"


@@ 684,8 675,7 @@ msgid ""
"      --bootstrap        use the bootstrap Guile to build the new Guix"
msgstr ""
"\n"
"      --bootstrap        користи Гуиле почетног учитавања да изгради нови "
"Гуикс"
"      --bootstrap        користи Гуиле почетног учитавања да изгради нови Гуикс"

#: guix/scripts/pull.scm:117
#, scheme-format


@@ 771,8 761,8 @@ msgid "signature on '~a' is corrupt~%"
msgstr "потпис на „~a“ је оштећен~%"

#: guix/scripts/substitute-binary.scm:338
#, scheme-format
msgid "narinfo for '~a' lacks a signature~%"
#, fuzzy, scheme-format
msgid "substitute at '~a' lacks a signature~%"
msgstr "нарподацима за „~a“ недостаје потпис~%"

#: guix/scripts/substitute-binary.scm:526


@@ 783,8 773,7 @@ msgstr "Преузима, молим сачекајте...~%"
#: guix/scripts/substitute-binary.scm:528
#, scheme-format
msgid "(Please consider upgrading Guile to get proper progress report.)~%"
msgstr ""
"(Размотрите надоградњу Гуила да добијете извештај о његовом напредовању.)~%"
msgstr "(Размотрите надоградњу Гуила да добијете извештај о његовом напредовању.)~%"

#: guix/scripts/substitute-binary.scm:545
#, scheme-format


@@ 806,8 795,7 @@ msgid ""
"                         store file names passed on the standard input"
msgstr ""
"\n"
"      --query            извештава о доступности заменика за називе "
"датотека\n"
"      --query            извештава о доступности заменика за називе датотека\n"
"                         складишта прослеђених на стандардном улазу"

#: guix/scripts/substitute-binary.scm:559


@@ 819,23 807,19 @@ msgid ""
msgstr ""
"\n"
"      --substitute ОДРЕДИШТЕ СКЛАДИШНЕ-ДАТОТЕКЕ\n"
"                         преузима СКЛАДИШНУ-ДАТОТЕКУ и смешта је као Нар "
"удатотеци\n"
"                         преузима СКЛАДИШНУ-ДАТОТЕКУ и смешта је као Нар удатотеци\n"
"                         ОДРЕДИШТЕ"

#: guix/scripts/substitute-binary.scm:599
msgid ""
"ACL for archive imports seems to be uninitialized, substitutes may be "
"unavailable\n"
msgstr ""
"АЦЛ за увоз архиве изгледа да је неупотребљив, замене могу бити недоступне\n"
#: guix/scripts/substitute-binary.scm:604
msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
msgstr "АЦЛ за увоз архиве изгледа да је неупотребљив, замене могу бити недоступне\n"

#: guix/scripts/substitute-binary.scm:619
#: guix/scripts/substitute-binary.scm:625
#, scheme-format
msgid "failed to look up host '~a' (~a), substituter disabled~%"
msgstr "нисам успео да потражим домаћина „~a“ (~a), замењивач је искључен~%"

#: guix/scripts/substitute-binary.scm:726
#: guix/scripts/substitute-binary.scm:732
#, scheme-format
msgid "~a: unrecognized options~%"
msgstr "~a: непозната опција~%"


@@ 860,7 844,7 @@ msgstr "грешка: неовлашћени јавни кључ: ~a~%"
msgid "error: corrupt signature data: ~a~%"
msgstr "грешка: оштећени подаци потписа: ~a~%"

#: guix/scripts/authenticate.scm:110
#: guix/scripts/authenticate.scm:126
msgid ""
"Usage: guix authenticate OPTION...\n"
"Sign or verify the signature on the given file.  This tool is meant to\n"


@@ 870,21 854,56 @@ msgstr ""
"Потпишите или проверите потпис на датој датотеци.  Овај алат је замишљен\n"
"за унутрашњу употребу гуих-демоном.\n"

#: guix/scripts/authenticate.scm:116
#: guix/scripts/authenticate.scm:132
msgid "wrong arguments"
msgstr "погрешни аргуменати"

#: guix/scripts/system.scm:59
#: guix/scripts/system.scm:74
#, scheme-format
msgid "failed to open operating system file '~a': ~a~%"
msgstr "нисам успео да отворим датотеку оперативног система „~a“: ~a~%"

#: guix/scripts/system.scm:62
#: guix/scripts/system.scm:78 guix/ui.scm:238
#, scheme-format
msgid "failed to load machine file '~a': ~s~%"
msgstr "нисам успео да учитам датотеку машине „~a“: ~s~%"
msgid "~a: ~a~%"
msgstr "~a: ~a~%"

#: guix/scripts/system.scm:81
#, fuzzy, scheme-format
msgid "failed to load operating system file '~a': ~s~%"
msgstr "нисам успео да отворим датотеку оперативног система „~a“: ~a~%"

#: guix/scripts/system.scm:116
#, fuzzy, scheme-format
msgid "failed to register '~a' under '~a'~%"
msgstr "нисам успео да направим ГЦ корен „~a“: ~a~%"

#: guix/scripts/system.scm:144
#, scheme-format
msgid "initializing the current root file system~%"
msgstr ""

#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#, fuzzy, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr "нисам успео да инсталирам локалитет: ~a~%"

#: guix/scripts/system.scm:197
#, scheme-format
msgid "activating system...~%"
msgstr ""

#: guix/scripts/system.scm:236
#, fuzzy, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "непозната опција: ~a~%"

#: guix/scripts/system.scm:323
#, fuzzy, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr "нисам успео да отворим датотеку оперативног система „~a“: ~a~%"

#: guix/scripts/system.scm:71
#: guix/scripts/system.scm:339
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"


@@ 892,69 911,99 @@ msgstr ""
"Употреба: guix system [ОПЦИЈА] РАДЊА ДАТОТЕКА\n"
"Изграђује оперативни систем објављен у ДАТОТЕЦИ у складу са РАДЊОМ.\n"

#: guix/scripts/system.scm:73
#: guix/scripts/system.scm:342
msgid "The valid values for ACTION are:\n"
msgstr ""

#: guix/scripts/system.scm:343
msgid "  - 'reconfigure', switch to a new operating system configuration\n"
msgstr ""

#: guix/scripts/system.scm:345
msgid "  - 'build', build the operating system without installing anything\n"
msgstr ""

#: guix/scripts/system.scm:347
msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
msgstr ""

#: guix/scripts/system.scm:349
msgid "  - 'vm-image', build a freestanding virtual machine image\n"
msgstr ""

#: guix/scripts/system.scm:351
msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr ""

#: guix/scripts/system.scm:353
msgid "  - 'init', initialize a root file system to run GNU.\n"
msgstr ""

#: guix/scripts/system.scm:357
msgid ""
"Currently the only valid value for ACTION is 'vm', which builds\n"
"a virtual machine of the given operating system.\n"
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
msgstr ""
"Тренутно једина исправна вредност за РАДЊУ је „vm“, која гради\n"
"виртуелну машину датог оперативног система.\n"

#: guix/scripts/system.scm:121
#, scheme-format
msgid "~a: extraneous argument~%"
msgstr "~a: страни аргумент~%"
#: guix/scripts/system.scm:359
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"
msgstr ""

#: guix/scripts/system.scm:126
#: guix/scripts/system.scm:422
#, scheme-format
msgid "~a: unknown action~%"
msgstr "~a: непозната радња~%"

#: guix/scripts/system.scm:135
#: guix/scripts/system.scm:439
#, fuzzy, scheme-format
msgid "wrong number of arguments for action '~a'~%"
msgstr "погрешан број аргумената~%"

#: guix/scripts/system.scm:459
#, scheme-format
msgid "no configuration file specified~%"
msgstr "није наведена датотека подешавања~%"

#: guix/gnu-maintenance.scm:364
#: guix/gnu-maintenance.scm:373
#, scheme-format
msgid "signature verification failed for `~a'~%"
msgstr "није успела провера потписа за „~a“~%"

#: guix/gnu-maintenance.scm:366
#: guix/gnu-maintenance.scm:375
#, scheme-format
msgid "(could be because the public key is not in your keyring)~%"
msgstr "(може бити зато што јавни кључ није у вашем привеску)~%"

#: guix/gnu-maintenance.scm:441
#: guix/gnu-maintenance.scm:450
#, scheme-format
msgid "~a: could not locate source file"
msgstr "~a: не могу да пронађем изворну датотеку"

#: guix/gnu-maintenance.scm:446
#: guix/gnu-maintenance.scm:455
#, scheme-format
msgid "~a: ~a: no `version' field in source; skipping~%"
msgstr "~a: ~a: нема поља „version“ у извору; прескачем~%"

#: guix/ui.scm:123
#: guix/ui.scm:131
#, scheme-format
msgid "failed to install locale: ~a~%"
msgstr "нисам успео да инсталирам локалитет: ~a~%"

#: guix/ui.scm:142
#: guix/ui.scm:150
msgid ""
"Copyright (C) 2014 the Guix authors\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
"html>\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
"This is free software: you are free to change and redistribute it.\n"
"There is NO WARRANTY, to the extent permitted by law.\n"
msgstr ""
"Ауторска права (C) 2014 аутори Гуикса\n"
"Лиценца ОЈЛв3+: ГНУ ОЈЛ издање 3 или касније <http://gnu.org/licenses/gpl."
"html>\n"
"Лиценца ОЈЛв3+: ГНУ ОЈЛ издање 3 или касније <http://gnu.org/licenses/gpl.html>\n"
"Ово је слободан софтвер: слободни сте да га мењате и расподељујете.\n"
"Не постоји НИКАКВА ГАРАНЦИЈА, у оквирима дозвољеним законом.\n"

#: guix/ui.scm:150
#: guix/ui.scm:158
#, scheme-format
msgid ""
"\n"


@@ 963,7 1012,7 @@ msgstr ""
"\n"
"Грешке пријавите на: ~a."

#: guix/ui.scm:152
#: guix/ui.scm:160
#, scheme-format
msgid ""
"\n"


@@ 972,7 1021,7 @@ msgstr ""
"\n"
"~a матична страница: <~a>"

#: guix/ui.scm:154
#: guix/ui.scm:162
msgid ""
"\n"
"General help using GNU software: <http://www.gnu.org/gethelp/>"


@@ 980,95 1029,100 @@ msgstr ""
"\n"
"Општа помоћ користећи ГНУ софтвер: <http://www.gnu.org/gethelp/>"

#: guix/ui.scm:161
#: guix/ui.scm:169
#, scheme-format
msgid "~a: invalid number~%"
msgstr "~a: неисправан број~%"

#: guix/ui.scm:172
#: guix/ui.scm:186
#, scheme-format
msgid "invalid number: ~a~%"
msgstr "неисправан број: ~a~%"

#: guix/ui.scm:201
#, scheme-format
msgid "unknown unit: ~a~%"
msgstr "непозната јединица: ~a~%"

#: guix/ui.scm:212
#, scheme-format
msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
msgstr "~a:~a:~a: пакет „~a“ садржи неисправан улаз: ~s~%"

#: guix/ui.scm:179
#: guix/ui.scm:219
#, scheme-format
msgid "~a: ~a: build system `~a' does not support cross builds~%"
msgstr "~a: ~a: систем изградње „~a“ не садржи унакрсне изградње~%"

#: guix/ui.scm:184
#: guix/ui.scm:224
#, scheme-format
msgid "failed to connect to `~a': ~a~%"
msgstr "нисам успео да се повежем на „~a“: ~a~%"

#: guix/ui.scm:189
#: guix/ui.scm:229
#, scheme-format
msgid "build failed: ~a~%"
msgstr "изградња није успела: ~a~%"

#: guix/ui.scm:198
#, scheme-format
msgid "~a: ~a~%"
msgstr "~a: ~a~%"

#: guix/ui.scm:207
#: guix/ui.scm:257
#, scheme-format
msgid "failed to read expression ~s: ~s~%"
msgstr "нисам успео да прочитам израз ~s: ~s~%"

#: guix/ui.scm:213
#: guix/ui.scm:263
#, scheme-format
msgid "failed to evaluate expression `~a': ~s~%"
msgstr "нисам успео да проценим израз „~a“: ~s~%"

#: guix/ui.scm:222
#: guix/ui.scm:272
#, scheme-format
msgid "expression ~s does not evaluate to a package~%"
msgstr "израз „~s“ се не процењује на пакет~%"

#: guix/ui.scm:268
#: guix/ui.scm:319
#, scheme-format
msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
msgstr "~:[Следећа изводница би требала бити изграђена:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:273
#: guix/ui.scm:324
#, scheme-format
msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[Следећа датотека би требала бити преузета:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:279
#: guix/ui.scm:330
#, scheme-format
msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
msgstr "~:[Следећа изводница ће бити изграђена:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:284
#: guix/ui.scm:335
#, scheme-format
msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
msgstr "~:[Следећа датотека ће бити преузета:~%~{   ~a~%~}~;~]"

#: guix/ui.scm:301
#: guix/ui.scm:352
msgid "<unknown location>"
msgstr "<непознато место>"

#: guix/ui.scm:329
#: guix/ui.scm:380
#, scheme-format
msgid "failed to create configuration directory `~a': ~a~%"
msgstr "нисам успео да направим директоријум подешавања „~a“: ~a~%"

#: guix/ui.scm:410 guix/ui.scm:424
#: guix/ui.scm:475 guix/ui.scm:489
msgid "unknown"
msgstr "непознато"

#: guix/ui.scm:533
#: guix/ui.scm:598
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "неисправан аргумент: ~a~%"

#: guix/ui.scm:538
#: guix/ui.scm:603
#, scheme-format
msgid "Try `guix --help' for more information.~%"
msgstr "Пробајте „guix --help“ за више података.~%"

#: guix/ui.scm:568
#: guix/ui.scm:633
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"


@@ 1076,118 1130,131 @@ msgstr ""
"Употреба: guix НАРЕДБА АРГУМЕНТИ...\n"
"Покрените НАРЕДБУ са АРГУМЕНТИМА.\n"

#: guix/ui.scm:571
#: guix/ui.scm:636
msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "НАРЕДБА мора бити једна од подкоманди наведених испод:\n"

#: guix/ui.scm:591
#: guix/ui.scm:656
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: нисам пронашао наредбу~%"

#: guix/ui.scm:609
#: guix/ui.scm:674
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: недостаје назив наредбе~%"

#: guix/ui.scm:617
#: guix/ui.scm:682
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: непозната опција „~a“~%"

#: guix/http-client.scm:205
#: guix/http-client.scm:217
#, scheme-format
msgid "using Guile ~a, which does not support ~s encoding~%"
msgstr "користим Гуиле ~a, који не подржава ~s кодирање~%"

#: guix/http-client.scm:208
#: guix/http-client.scm:220
#, scheme-format
msgid "download failed; use a newer Guile~%"
msgstr "преузимање није успело; користите новији Гуиле~%"

#: guix/http-client.scm:220
#: guix/http-client.scm:232
#, scheme-format
msgid "following redirection to `~a'...~%"
msgstr "пратим преусмеравање на „~a“...~%"

#: guix/http-client.scm:229
#: guix/http-client.scm:241
msgid "download failed"
msgstr "преузимање није успело"

#: guix/nar.scm:133
#: guix/nar.scm:134
msgid "unexpected executable file marker"
msgstr "неочекивани означавач извршне датотеке"

#: guix/nar.scm:140
#: guix/nar.scm:141
msgid "unsupported nar file type"
msgstr "неподржана врста нар датотеке"

#: guix/nar.scm:203
#: guix/nar.scm:209
msgid "unsupported file type"
msgstr "неподржана врста датотеке"

#: guix/nar.scm:213
#: guix/nar.scm:219
msgid "invalid nar signature"
msgstr "неисправан нар потпис"

#: guix/nar.scm:224
#: guix/nar.scm:230
msgid "invalid nar end-of-file marker"
msgstr "неисправан нар означавач краја датотеке"

#: guix/nar.scm:238
#: guix/nar.scm:244
msgid "invalid symlink tokens"
msgstr "неисправна обележја симболичке везе"

#: guix/nar.scm:257
#: guix/nar.scm:263
msgid "unexpected directory entry termination"
msgstr "неочекивано окончање уноса директоријума"

#: guix/nar.scm:266
#: guix/nar.scm:272
msgid "unexpected directory inter-entry marker"
msgstr "неочекивани означавач унутрашњег уноса директоријума "

#: guix/nar.scm:271
#: guix/nar.scm:277
msgid "unsupported nar entry type"
msgstr "неподржана врста нар уноса"

#: guix/nar.scm:381
#: guix/nar.scm:376
msgid "signature is not a valid s-expression"
msgstr "потпис није исправан с-израз"

#: guix/nar.scm:390
#: guix/nar.scm:385
msgid "invalid signature"
msgstr "неисправан потпис"

#: guix/nar.scm:394
#: guix/nar.scm:389
msgid "invalid hash"
msgstr "неисправан хеш"

#: guix/nar.scm:402
#: guix/nar.scm:397
msgid "unauthorized public key"
msgstr "неовлашћени јавни кључ"

#: guix/nar.scm:407
#: guix/nar.scm:402
msgid "corrupt signature data"
msgstr "оштећени подаци потписа"

#: guix/nar.scm:424
#: guix/nar.scm:422
msgid "corrupt file set archive"
msgstr "оштећена датотека скупа архиве"

#: guix/nar.scm:434
#: guix/nar.scm:432
#, scheme-format
msgid "importing file or directory '~a'...~%"
msgstr "увозим датотеку или директоријум „~a“...~%"

#: guix/nar.scm:443
#: guix/nar.scm:441
#, scheme-format
msgid "found valid signature for '~a'~%"
msgstr "нађох исправан потпис за „~a“~%"

#: guix/nar.scm:452
#: guix/nar.scm:448
msgid "imported file lacks a signature"
msgstr "увезеној датотеци недостаје потпис"

#: guix/nar.scm:459
#: guix/nar.scm:487
msgid "invalid inter-file archive mark"
msgstr "неисправан знак архиве унутрашње датотеке"

#~ msgid "failed to load machine file '~a': ~s~%"
#~ msgstr "нисам успео да учитам датотеку машине „~a“: ~s~%"

#~ msgid ""
#~ "Currently the only valid value for ACTION is 'vm', which builds\n"
#~ "a virtual machine of the given operating system.\n"
#~ msgstr ""
#~ "Тренутно једина исправна вредност за РАДЊУ је „vm“, која гради\n"
#~ "виртуелну машину датог оперативног система.\n"

#~ msgid "~a: extraneous argument~%"
#~ msgstr "~a: страни аргумент~%"

M po/guix/vi.po => po/guix/vi.po +58 -49
@@ 8,7 8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-07-13 17:06+0200\n"
"POT-Creation-Date: 2014-07-25 00:55+0200\n"
"PO-Revision-Date: 2014-07-14 08:38+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"


@@ 20,7 20,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.5.5\n"

#: gnu/packages.scm:95
#: gnu/packages.scm:102
#, scheme-format
msgid "cannot access `~a': ~a~%"
msgstr "không thể truy cập `~a': ~a~%"


@@ 206,9 206,9 @@ msgstr ""
"      --log-file         trả về tên của tập-tin nhật ký cho dẫn xuất đã cho"

#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
#: guix/scripts/package.scm:523 guix/scripts/gc.scm:58
#: 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:334
#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
msgid ""
"\n"
"  -h, --help             display this help and exit"


@@ 217,9 217,9 @@ msgstr ""
"  -h, --help             hiển thị trợ giúp này rồi thoát"

#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
#: guix/scripts/package.scm:525 guix/scripts/gc.scm:60
#: 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:336
#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
msgid ""
"\n"
"  -V, --version          display version information and exit"


@@ 233,8 233,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
msgstr "mã nguồn không khớp bất kỳ gói nào:~{ ~a~}~%"

#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386
#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format
msgid "~A: unrecognized option~%"
msgstr "~A: tùy chọn không được chấp nhận~%"


@@ 293,8 293,8 @@ msgstr "gặp lỗi khi xây dựng hồ sơ trống rỗng~%"
msgid "switching from generation ~a to ~a~%"
msgstr "chuyển từ thế hệ ~a sang ~a~%"

#: guix/scripts/package.scm:108 guix/scripts/package.scm:866
#: guix/scripts/package.scm:978
#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:985
#, scheme-format
msgid "profile '~a' does not exist~%"
msgstr "hồ sơ `~a' không tồn tại~%"


@@ 480,62 480,71 @@ msgstr ""
"  -A, --list-available[=BIỂU-THỨC-CHÍNH-QUY]\n"
"                         kiệt kê các gói khớp BTCQ"

#: guix/scripts/package.scm:760
#: guix/scripts/package.scm:520
#, fuzzy
msgid ""
"\n"
"  --show=PACKAGE         show details about PACKAGE"
msgstr ""
"\n"
"  -i, --install=GÓI      cài đặt GÓI"

#: guix/scripts/package.scm:767
#, scheme-format
msgid "~A: extraneous argument~%"
msgstr "~A: đối số ngoại lai~%"

#: guix/scripts/package.scm:775
#: guix/scripts/package.scm:782
#, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr "Thử chạy lệnh \"info '(guix) Invoking guix package'\" để có thêm thông tin.~%"

#: guix/scripts/package.scm:797
#: guix/scripts/package.scm:804
#, scheme-format
msgid "error: while creating directory `~a': ~a~%"
msgstr "lỗi: trong khi tạo thư mục `~a': ~a~%"

#: guix/scripts/package.scm:801
#: guix/scripts/package.scm:808
#, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr "Hãy tạo thư mục `~a', với bạn là chủ sở hữu.~%"

#: guix/scripts/package.scm:808
#: guix/scripts/package.scm:815
#, scheme-format
msgid "error: directory `~a' is not owned by you~%"
msgstr "lỗi: thư mục `~a' không được sở hữu bởi bạn~%"

#: guix/scripts/package.scm:811
#: guix/scripts/package.scm:818
#, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "Vui lòng đổi chủ sở hữu của `~a' thành ~s.~%"

#: guix/scripts/package.scm:836
#: guix/scripts/package.scm:843
#, scheme-format
msgid "deleting ~a~%"
msgstr "đang xóa ~a~%"

#: guix/scripts/package.scm:889 guix/scripts/package.scm:994
#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#, scheme-format
msgid "invalid syntax: ~a~%"
msgstr "cú pháp không hợp lệ: ~a~%"

#: guix/scripts/package.scm:918
#: guix/scripts/package.scm:925
#, scheme-format
msgid "nothing to be done~%"
msgstr "không có gì cần làm~%"

#: guix/scripts/package.scm:941
#: guix/scripts/package.scm:948
#, scheme-format
msgid "~a package in profile~%"
msgstr "~a gói trong hồ sơ~%"

#: guix/scripts/package.scm:956
#: guix/scripts/package.scm:963
#, scheme-format
msgid "Generation ~a\t~a"
msgstr "Tạo ~a\t~a"

#: guix/scripts/package.scm:963
#: guix/scripts/package.scm:970
#, scheme-format
msgid "~a\t(current)~%"
msgstr "~a\t(hiện tại)~%"


@@ 868,37 877,37 @@ msgstr "~a: ~a~%"
msgid "failed to load operating system file '~a': ~s~%"
msgstr "gặp lỗi khi tải tập tin hệ điều hành `~a': ~s~%"

#: guix/scripts/system.scm:111
#: guix/scripts/system.scm:116
#, scheme-format
msgid "failed to register '~a' under '~a'~%"
msgstr "gặp lỗi khi đăng ký `~a' dưới ~a~%"

#: guix/scripts/system.scm:127
#: guix/scripts/system.scm:144
#, scheme-format
msgid "initializing the current root file system~%"
msgstr "đang khởi tạo hệ thống tập tin gốc hiện tại~%"

#: guix/scripts/system.scm:151 guix/scripts/system.scm:291
#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#, scheme-format
msgid "failed to install GRUB on device '~a'~%"
msgstr "gặp lỗi khi cài đặt GRUB trên thiết bị `~a'~%"

#: guix/scripts/system.scm:176
#: guix/scripts/system.scm:197
#, scheme-format
msgid "activating system...~%"
msgstr "đang kích hoạt hệ thống...~%"

#: guix/scripts/system.scm:211
#: guix/scripts/system.scm:236
#, scheme-format
msgid "unrecognized boot parameters for '~a'~%"
msgstr "tham số khởi động không được thừa nhận cho `~a'~%"

#: guix/scripts/system.scm:295
#: guix/scripts/system.scm:323
#, scheme-format
msgid "initializing operating system under '~a'...~%"
msgstr "đang khởi tạo hệ điều hành dưới '~a'...~%"

#: guix/scripts/system.scm:311
#: guix/scripts/system.scm:339
msgid ""
"Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n"


@@ 906,35 915,35 @@ msgstr ""
"Cách dùng: guix system [TÙY-CHỌN] THAO-TÁC TẬP-TIN\n"
"Xây dựng hệ điều hành khai báo trong TẬP-TIN tuân theo THAO-TÁC.\n"

#: guix/scripts/system.scm:314
#: guix/scripts/system.scm:342
msgid "The valid values for ACTION are:\n"
msgstr "Các giá trị hợp lệ cho THAO TÁC là:\n"

#: guix/scripts/system.scm:315
#: guix/scripts/system.scm:343
msgid "  - 'reconfigure', switch to a new operating system configuration\n"
msgstr "  - 'reconfigure', chuyển thành cấu hình hệ điều hành mới\n"

#: guix/scripts/system.scm:317
#: guix/scripts/system.scm:345
msgid "  - 'build', build the operating system without installing anything\n"
msgstr "  - 'build', xây dựng hệ điều hành mà không cài gì\n"

#: guix/scripts/system.scm:319
#: guix/scripts/system.scm:347
msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
msgstr "  - 'vm', xây dựng một ảnh máy ảo kiểu mà có thể chia sẻ trên kho máy\n"

#: guix/scripts/system.scm:321
#: guix/scripts/system.scm:349
msgid "  - 'vm-image', build a freestanding virtual machine image\n"
msgstr "  - 'vm-image', xây dựng một ảnh máy ảo đứng tự do\n"

#: guix/scripts/system.scm:323
#: guix/scripts/system.scm:351
msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr "  - 'disk-image', xây dựng ảnh đĩa, phù hợp để dùng cho đĩa USB\n"

#: guix/scripts/system.scm:325
#: guix/scripts/system.scm:353
msgid "  - 'init', initialize a root file system to run GNU.\n"
msgstr "  - 'init', khởi tạo một hệ thống tập tin gốc để chạy GNU.\n"

#: guix/scripts/system.scm:329
#: guix/scripts/system.scm:357
msgid ""
"\n"
"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"


@@ 942,7 951,7 @@ msgstr ""
"\n"
"      --image-size=CỠ    cho 'vm-image', sản sinh ảnh theo CỠ này"

#: guix/scripts/system.scm:331
#: guix/scripts/system.scm:359
msgid ""
"\n"
"      --no-grub          for 'init', do not install GRUB"


@@ 950,17 959,17 @@ msgstr ""
"\n"
"      --no-grub          dành cho 'init', đừng cài GRUB"

#: guix/scripts/system.scm:394
#: guix/scripts/system.scm:422
#, scheme-format
msgid "~a: unknown action~%"
msgstr "~a: không hiểu thao tác~%"

#: guix/scripts/system.scm:411
#: guix/scripts/system.scm:439
#, scheme-format
msgid "wrong number of arguments for action '~a'~%"
msgstr "sai số lượng đối số cho thao tác '~a'~%"

#: guix/scripts/system.scm:431
#: guix/scripts/system.scm:459
#, scheme-format
msgid "no configuration file specified~%"
msgstr "chưa ghi rõ tập tin nhập cấu hình~%"


@@ 1107,21 1116,21 @@ msgstr "<không hiểu vị trí>"
msgid "failed to create configuration directory `~a': ~a~%"
msgstr "gặp lỗi khi tạo thư mục cấu hình `~a': ~a~%"

#: guix/ui.scm:461 guix/ui.scm:475
#: guix/ui.scm:475 guix/ui.scm:489
msgid "unknown"
msgstr "không hiểu"

#: guix/ui.scm:584
#: guix/ui.scm:598
#, scheme-format
msgid "invalid argument: ~a~%"
msgstr "đối số không hợp lệ: ~a~%"

#: guix/ui.scm:589
#: guix/ui.scm:603
#, scheme-format
msgid "Try `guix --help' for more information.~%"
msgstr "Chạy lệnh `guix --help' để biết thêm thông tin.~%"

#: guix/ui.scm:619
#: guix/ui.scm:633
msgid ""
"Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n"


@@ 1129,21 1138,21 @@ msgstr ""
"Cách dùng: guix LỆNH ĐỐI_SỐ...\n"
"Chạy LỆNH với các ĐỐI SỐ.\n"

#: guix/ui.scm:622
#: guix/ui.scm:636
msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "LỆNH phải là một trong số những câu lệnh con được liệt kê dưới đây:\n"

#: guix/ui.scm:642
#: guix/ui.scm:656
#, scheme-format
msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: không tìm thấy lệnh~%"

#: guix/ui.scm:660
#: guix/ui.scm:674
#, scheme-format
msgid "guix: missing command name~%"
msgstr "guix: thiếu tên lệnh~%"

#: guix/ui.scm:668
#: guix/ui.scm:682
#, scheme-format
msgid "guix: unrecognized option '~a'~%"
msgstr "guix: tùy chọn không được thừa nhận `~a'~%"

M po/packages/de.po => po/packages/de.po +1 -1
@@ 7,7 7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix-packages 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-06-25 22:55+0200\n"
"POT-Creation-Date: 2014-07-14 11:59+0200\n"
"PO-Revision-Date: 2014-07-13 20:23+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"

M po/packages/eo.po => po/packages/eo.po +1 -1
@@ 7,7 7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix-packages 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-06-25 22:55+0200\n"
"POT-Creation-Date: 2014-07-14 11:59+0200\n"
"PO-Revision-Date: 2014-07-14 11:28-0300\n"
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"

M po/packages/pt_BR.po => po/packages/pt_BR.po +1 -1
@@ 8,7 8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix 0.4-pre2\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-06-25 22:55+0200\n"
"POT-Creation-Date: 2014-07-14 11:59+0200\n"
"PO-Revision-Date: 2013-09-28 21:29-0300\n"
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"

M po/packages/sr.po => po/packages/sr.po +1 -1
@@ 6,7 6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix-0.6-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-06-25 22:55+0200\n"
"POT-Creation-Date: 2014-07-14 11:59+0200\n"
"PO-Revision-Date: 2014-06-19 08:51+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"

M po/packages/vi.po => po/packages/vi.po +1 -1
@@ 7,7 7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: guix 0.5-pre2\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2014-06-25 22:55+0200\n"
"POT-Creation-Date: 2014-07-14 11:59+0200\n"
"PO-Revision-Date: 2013-12-04 07:48+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"

M tests/gexp.scm => tests/gexp.scm +1 -1
@@ 224,7 224,7 @@
      (return (string=? system (derivation-system drv))))))

(define shebang
  (string-append (derivation->output-path guile-for-build)
  (string-append "#!" (derivation->output-path guile-for-build)
                 "/bin/guile --no-auto-compile"))

;; If we're going to hit the silly shebang limit (128 chars on Linux-based

M tests/guix-package.sh => tests/guix-package.sh +16 -7
@@ 79,13 79,6 @@ then

    test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"

    # Search.
    LC_MESSAGES=C
    export LC_MESSAGES
    test "`guix package -s "An example GNU package" | grep ^name:`" = \
        "name: hello"
    test -z "`guix package -s "n0t4r341p4ck4g3"`"

    # List generations.
    test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
        = "  guile-bootstrap"


@@ 176,6 169,22 @@ then false; else true; fi
# Check whether `--list-available' returns something sensible.
guix package -p "$profile" -A 'gui.*e' | grep guile

# Check whether `--show' returns something sensible.
guix package --show=guile | grep "^name: guile"

# Ensure `--show' doesn't fail for packages with non-package inputs.
guix package --show=texlive

# Search.
LC_MESSAGES=C
export LC_MESSAGES
test "`guix package -s "An example GNU package" | grep ^name:`" = \
    "name: hello"
test -z "`guix package -s "n0t4r341p4ck4g3"`"

# Make sure `--search' can display all the packages.
guix package --search="" > /dev/null

# There's no generation older than 12 months, so the following command should
# have no effect.
generation="`readlink_base "$profile"`"

M tests/guix-register.sh => tests/guix-register.sh +1 -1
@@ 86,7 86,7 @@ guix-register -p "$new_store" \
# Now make sure this is recognized as valid.

ls -R "$new_store"
for state_dir in "$new_store$localstatedir/guix" "$new_store/chbouib"
for state_dir in "$localstatedir/guix" "/chbouib"
do
    NIX_STORE_DIR="$new_store_dir"
    NIX_STATE_DIR="$new_store$state_dir"

M tests/monads.scm => tests/monads.scm +10 -0
@@ 108,6 108,16 @@
                      guile)))
    #:guile-for-build (package-derivation %store %bootstrap-guile)))

(test-assert "interned-file"
  (run-with-store %store
    (mlet* %store-monad ((file -> (search-path %load-path "guix.scm"))
                         (a       (interned-file file))
                         (b       (interned-file file "b")))
      (return (equal? (call-with-input-file file get-string-all)
                      (call-with-input-file a get-string-all)
                      (call-with-input-file b get-string-all))))
    #:guile-for-build (package-derivation %store %bootstrap-guile)))

(define derivation-expression
  (@@ (guix monads) derivation-expression))


M tests/profiles.scm => tests/profiles.scm +29 -2
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 18,11 18,25 @@

(define-module (test-profiles)
  #:use-module (guix profiles)
  #:use-module (guix store)
  #:use-module (guix monads)
  #:use-module (guix packages)
  #:use-module (guix derivations)
  #:use-module (gnu packages bootstrap)
  #:use-module (ice-9 match)
  #:use-module (srfi srfi-64))

;; Test the (guix profile) module.

(define %store
  (open-connection))

(define guile-for-build
  (package-derivation %store %bootstrap-guile))

;; Make it the default.
(%guile-for-build guile-for-build)


;; Example manifest entries.



@@ 30,7 44,7 @@
  (manifest-entry
    (name "guile")
    (version "2.0.9")
    (path "/gnu/store/...")
    (item "/gnu/store/...")
    (output "out")))

(define guile-2.0.9:debug


@@ 87,6 101,19 @@
            (null? (manifest-entries m3))
            (null? (manifest-entries m4)))))))

(test-assert "profile-derivation"
  (run-with-store %store
    (mlet* %store-monad
        ((entry ->   (package->manifest-entry %bootstrap-guile))
         (guile      (package->derivation %bootstrap-guile))
         (drv        (profile-derivation (manifest (list entry))))
         (profile -> (derivation->output-path drv))
         (bindir ->  (string-append profile "/bin"))
         (_          (built-derivations (list drv))))
      (return (and (file-exists? (string-append bindir "/guile"))
                   (string=? (dirname (readlink bindir))
                             (derivation->output-path guile)))))))

(test-end "profiles")



M tests/utils.scm => tests/utils.scm +34 -1
@@ 1,5 1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 25,7 26,8 @@
  #:use-module (srfi srfi-64)
  #:use-module (rnrs bytevectors)
  #:use-module (rnrs io ports)
  #:use-module (ice-9 match))
  #:use-module (ice-9 match)
  #:use-module (ice-9 vlist))

(define temp-file
  (string-append "t-utils-" (number->string (getpid))))


@@ 118,6 120,37 @@
               '(0 1 2 3)))
    list))

(let* ((tree (alist->vhash
              '((0 2 3) (1 3 4) (2) (3 5 6) (4 6) (5) (6))
              hashq))
       (add-one (lambda (_ r) (1+ r)))
       (tree-lookup (lambda (n) (cdr (vhash-assq n tree)))))
  (test-equal "fold-tree, single root"
    5 (fold-tree add-one 0 tree-lookup '(0)))
  (test-equal "fold-tree, two roots"
    7 (fold-tree add-one 0 tree-lookup '(0 1)))
  (test-equal "fold-tree, sum"
    16 (fold-tree + 0 tree-lookup '(0)))
  (test-equal "fold-tree, internal"
    18 (fold-tree + 0 tree-lookup '(3 4)))
  (test-equal "fold-tree, cons"
    '(1 3 4 5 6)
    (sort (fold-tree cons '() tree-lookup '(1)) <))
  (test-equal "fold-tree, overlapping paths"
    '(1 3 4 5 6)
    (sort (fold-tree cons '() tree-lookup '(1 4)) <))
  (test-equal "fold-tree, cons, two roots"
    '(0 2 3 4 5 6)
    (sort (fold-tree cons '() tree-lookup '(0 4)) <))
  (test-equal "fold-tree-leaves, single root"
    2 (fold-tree-leaves add-one 0 tree-lookup '(1)))
  (test-equal "fold-tree-leaves, single root, sum"
    11 (fold-tree-leaves + 0 tree-lookup '(1)))
  (test-equal "fold-tree-leaves, two roots"
    3 (fold-tree-leaves add-one 0 tree-lookup '(0 1)))
  (test-equal "fold-tree-leaves, two roots, sum"
    13 (fold-tree-leaves + 0 tree-lookup '(0 1))))

(test-assert "filtered-port, file"
  (let* ((file  (search-path %load-path "guix.scm"))
         (input (open-file file "r0b")))