aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--NEWS115
-rw-r--r--THANKS1
-rw-r--r--build-aux/hydra/demo-os.scm14
-rw-r--r--configure.ac4
-rw-r--r--daemon.am2
-rw-r--r--doc.am11
-rw-r--r--doc/guix.texi191
-rw-r--r--gnu-system.am2
-rw-r--r--gnu/packages.scm66
-rw-r--r--gnu/packages/admin.scm65
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/boost.scm68
-rw-r--r--gnu/packages/cdrom.scm19
-rw-r--r--gnu/packages/gcc.scm4
-rw-r--r--gnu/packages/gimp.scm1
-rw-r--r--gnu/packages/gnome.scm3
-rw-r--r--gnu/packages/libftdi.scm48
-rw-r--r--gnu/packages/linux.scm13
-rw-r--r--gnu/packages/mail.scm1
-rw-r--r--gnu/packages/nano.scm4
-rw-r--r--gnu/packages/package-management.scm16
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/module-init-tools-moduledir.patch42
-rw-r--r--gnu/packages/texlive.scm5
-rw-r--r--gnu/packages/video.scm1
-rw-r--r--gnu/services/avahi.scm3
-rw-r--r--gnu/services/base.scm35
-rw-r--r--gnu/services/dbus.scm3
-rw-r--r--gnu/services/dmd.scm1
-rw-r--r--gnu/services/networking.scm3
-rw-r--r--gnu/services/xorg.scm20
-rw-r--r--gnu/system.scm9
-rw-r--r--gnu/system/file-systems.scm60
-rw-r--r--gnu/system/install.scm106
-rw-r--r--gnu/system/os-config.tmpl31
-rw-r--r--gnu/system/shadow.scm44
-rw-r--r--guix/build-system/gnu.scm3
-rw-r--r--guix/build/activation.scm9
-rw-r--r--guix/build/linux-initrd.scm40
-rw-r--r--guix/monads.scm13
-rw-r--r--guix/packages.scm14
-rw-r--r--guix/profiles.scm132
-rw-r--r--guix/scripts/package.scm138
-rw-r--r--guix/scripts/refresh.scm86
-rw-r--r--guix/scripts/system.scm45
-rw-r--r--guix/ui.scm14
-rw-r--r--guix/utils.scm33
-rw-r--r--po/guix/LINGUAS1
-rw-r--r--po/guix/de.po107
-rw-r--r--po/guix/eo.po109
-rw-r--r--po/guix/hu.po1277
-rw-r--r--po/guix/pt_BR.po278
-rw-r--r--po/guix/sr.po475
-rw-r--r--po/guix/vi.po107
-rw-r--r--po/packages/de.po2
-rw-r--r--po/packages/eo.po2
-rw-r--r--po/packages/pt_BR.po2
-rw-r--r--po/packages/sr.po2
-rw-r--r--po/packages/vi.po2
-rw-r--r--tests/gexp.scm2
-rw-r--r--tests/guix-package.sh23
-rw-r--r--tests/guix-register.sh2
-rw-r--r--tests/monads.scm10
-rw-r--r--tests/profiles.scm31
-rw-r--r--tests/utils.scm35
66 files changed, 3150 insertions, 864 deletions
diff --git a/Makefile.am b/Makefile.am
index 41e0e67120..ed11bcc7ac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -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
diff --git a/NEWS b/NEWS
index 2001ec12fe..76a06a7573 100644
--- a/NEWS
+++ b/NEWS
@@ -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
diff --git a/THANKS b/THANKS
index cb3c32c2ac..4070eea3d1 100644
--- a/THANKS
+++ b/THANKS
@@ -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>
diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm
index 89b67aabe3..9164500d70 100644
--- a/build-aux/hydra/demo-os.scm
+++ b/build-aux/hydra/demo-os.scm
@@ -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")
diff --git a/configure.ac b/configure.ac
index eb038db253..71b3ddacaa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.68)
-AC_INIT([GNU Guix], [0.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])
diff --git a/daemon.am b/daemon.am
index b0a6d48873..fb662b1b14 100644
--- a/daemon.am
+++ b/daemon.am
@@ -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
diff --git a/doc.am b/doc.am
index 6cbc35a8cc..67cd739fae 100644
--- a/doc.am
+++ b/doc.am
@@ -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
diff --git a/doc/guix.texi b/doc/guix.texi
index 5bee540460..b0f4e1ad81 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -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
diff --git a/gnu-system.am b/gnu-system.am
index 0423d1400c..6e1e8afec0 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -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 \
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 8365a00051..77d9d3ee82 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -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))))
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 8b7a2c0303..4a88fdd76a 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -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+)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 9ed978536d..8c12eb604e 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -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)
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 73b377e384..a77f1393d9 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -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")
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index e520312164..518cfc3c2b 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -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
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index c927e6e49c..aed2e8925e 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -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."
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 9db543199c..399c99bcdf 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -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")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 893c3e8a6b..f684d24627 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -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")
diff --git a/gnu/packages/libftdi.scm b/gnu/packages/libftdi.scm
new file mode 100644
index 0000000000..6e8100ce29
--- /dev/null
+++ b/gnu/packages/libftdi.scm
@@ -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+)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 09d123a08d..3ffe2a4cdd 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -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
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index d9c847d4ce..7bdd81b4c8 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -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
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 73053513d5..1bb6fea889 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -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)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index cf808970ce..66e71df284 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -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))))))
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index cf160d07b6..a4755e043d 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -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/")
diff --git a/gnu/packages/patches/module-init-tools-moduledir.patch b/gnu/packages/patches/module-init-tools-moduledir.patch
index 68d7988f53..08f03d1cc4 100644
--- a/gnu/packages/patches/module-init-tools-moduledir.patch
+++ b/gnu/packages/patches/module-init-tools-moduledir.patch
@@ -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
diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm
index b136c99979..57a250cba2 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/texlive.scm
@@ -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
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 075113ca9d..8850543c1d 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -193,7 +193,6 @@
"--disable-armv6t2"
"--disable-vfp"
"--disable-neon"
- "--disable-vis"
"--disable-mips32r2"
"--disable-mipsdspr1"
"--disable-mipsdspr2"
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm
index e8da6be5f5..48a2c75927 100644
--- a/gnu/services/avahi.scm
+++ b/gnu/services/avahi.scm
@@ -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")
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 55ee5c4b08..e1d247e8d3 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -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"))
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 6076317ee5..5da7f14605 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -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")
diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm
index 74adb27885..dfda2708f5 100644
--- a/gnu/services/dmd.scm
+++ b/gnu/services/dmd.scm
@@ -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)))
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 502b0d85f1..6a7d194659 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -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")
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 7ca0d3f7db..a34129a8ed 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -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
diff --git a/gnu/system.scm b/gnu/system.scm
index 20942ec7f0..68f9438693 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -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
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 7852a6ab26..48c4fc7e77 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -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
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 18fd587ead..567934e4c1 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -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")
diff --git a/gnu/system/os-config.tmpl b/gnu/system/os-config.tmpl
new file mode 100644
index 0000000000..ad58606f67
--- /dev/null
+++ b/gnu/system/os-config.tmpl
@@ -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")))))
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index ae6eac9a5b..5d638398d1 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -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
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 4fa1d1683d..b2b184db34 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -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
diff --git a/guix/build/activation.scm b/guix/build/activation.scm
index 9464d2157d..b04b017881 100644
--- a/guix/build/activation.scm
+++ b/guix/build/activation.scm
@@ -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.
diff --git a/guix/build/linux-initrd.scm b/guix/build/linux-initrd.scm
index abf86f6a77..662f7967e3 100644
--- a/guix/build/linux-initrd.scm
+++ b/guix/build/linux-initrd.scm
@@ -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)
diff --git a/guix/monads.scm b/guix/monads.scm
index c2c6f1a03d..4af2b704ab 100644
--- a/guix/monads.scm
+++ b/guix/monads.scm
@@ -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"))
diff --git a/guix/packages.scm b/guix/packages.scm
index 985a573fd3..1939373f35 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -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
diff --git a/guix/profiles.scm b/guix/profiles.scm
index c1fa8272ba..5e69e012f9 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -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."
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 1c3209f905..31da773a53 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -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))
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index af7beb748b..a91ea69b1f 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -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))))))
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 66ad9192c1..4f1869af38 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -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)))
diff --git a/guix/ui.scm b/guix/ui.scm
index 7338b82401..9112d55daf 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -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")))
diff --git a/guix/utils.scm b/guix/utils.scm
index 700a191d71..b61ff2477d 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -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.
diff --git a/po/guix/LINGUAS b/po/guix/LINGUAS
index 74504b6f07..6ba2fe22cc 100644
--- a/po/guix/LINGUAS
+++ b/po/guix/LINGUAS
@@ -4,6 +4,7 @@ de
en@boldquot
en@quot
eo
+hu
pt_BR
sr
vi
diff --git a/po/guix/de.po b/po/guix/de.po
index 4b24391c5b..185cb0d9e7 100644
--- a/po/guix/de.po
+++ b/po/guix/de.po
@@ -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«~%"
diff --git a/po/guix/eo.po b/po/guix/eo.po
index ec64cc8ef1..cffc546dc1 100644
--- a/po/guix/eo.po
+++ b/po/guix/eo.po
@@ -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'~%"
diff --git a/po/guix/hu.po b/po/guix/hu.po
new file mode 100644
index 0000000000..33b42f71dc
--- /dev/null
+++ b/po/guix/hu.po
@@ -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ő"
diff --git a/po/guix/pt_BR.po b/po/guix/pt_BR.po
index 5b41026db6..664cf249ad 100644
--- a/po/guix/pt_BR.po
+++ b/po/guix/pt_BR.po
@@ -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~%"
diff --git a/po/guix/sr.po b/po/guix/sr.po
index c1b10cea73..28bdc170ae 100644
--- a/po/guix/sr.po
+++ b/po/guix/sr.po
@@ -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: страни аргумент~%"
diff --git a/po/guix/vi.po b/po/guix/vi.po
index 260032c9db..9bd407f2a2 100644
--- a/po/guix/vi.po
+++ b/po/guix/vi.po
@@ -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'~%"
diff --git a/po/packages/de.po b/po/packages/de.po
index 01542d4597..32e38705c2 100644
--- a/po/packages/de.po
+++ b/po/packages/de.po
@@ -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"
diff --git a/po/packages/eo.po b/po/packages/eo.po
index 44212fee62..2e48d61064 100644
--- a/po/packages/eo.po
+++ b/po/packages/eo.po
@@ -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"
diff --git a/po/packages/pt_BR.po b/po/packages/pt_BR.po
index 8c56c982ab..47d8fc2fe0 100644
--- a/po/packages/pt_BR.po
+++ b/po/packages/pt_BR.po
@@ -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"
diff --git a/po/packages/sr.po b/po/packages/sr.po
index 2fc7f43181..c49787a5b6 100644
--- a/po/packages/sr.po
+++ b/po/packages/sr.po
@@ -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"
diff --git a/po/packages/vi.po b/po/packages/vi.po
index 6c8f74f179..cc55fd591a 100644
--- a/po/packages/vi.po
+++ b/po/packages/vi.po
@@ -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"
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 6d4885e44e..bdea4b8563 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -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
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 4d75955411..ce123105bf 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -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"`"
diff --git a/tests/guix-register.sh b/tests/guix-register.sh
index e258ec1244..3f261d7bef 100644
--- a/tests/guix-register.sh
+++ b/tests/guix-register.sh
@@ -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"
diff --git a/tests/monads.scm b/tests/monads.scm
index ac19d33f93..ea3e4006ab 100644
--- a/tests/monads.scm
+++ b/tests/monads.scm
@@ -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))
diff --git a/tests/profiles.scm b/tests/profiles.scm
index 8ead6e6968..d405f6453e 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -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")
diff --git a/tests/utils.scm b/tests/utils.scm
index 8ad399f75c..611867ca09 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -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")))