Merge branch 'master' into core-updates

This commit is contained in:
Mark H Weaver 2014-07-27 20:15:50 -04:00
commit 33690ffde5
66 changed files with 3147 additions and 861 deletions

View File

@ -253,6 +253,7 @@ guix_install_go_files = install-nobase_nodist_guilemoduleDATA
$(guix_install_go_files): install-nobase_dist_guilemoduleDATA $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
SUBDIRS = po/guix po/packages SUBDIRS = po/guix po/packages
BUILT_SOURCES =
include doc.am include doc.am

115
NEWS
View File

@ -10,6 +10,121 @@ Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
Please send Guix bug reports to bug-guix@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) * Changes in 0.6 (since 0.5)
** Package management ** Package management
*** Default store directory changed to /gnu/store *** Default store directory changed to /gnu/store

1
THANKS
View File

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

View File

@ -44,13 +44,13 @@
(file-systems (file-systems
;; We provide a dummy file system for /, but that's OK because the VM build ;; We provide a dummy file system for /, but that's OK because the VM build
;; code will automatically declare the / file system for us. ;; code will automatically declare the / file system for us.
(list (file-system (cons* (file-system
(mount-point "/") (mount-point "/")
(device "dummy") (device "dummy")
(type "dummy")) (type "dummy"))
;; %fuse-control-file-system ; needs fuse.ko ;; %fuse-control-file-system ; needs fuse.ko
;; %binary-format-file-system ; needs binfmt.ko ;; %binary-format-file-system ; needs binfmt.ko
)) %base-file-systems))
(users (list (user-account (users (list (user-account
(name "guest") (name "guest")

View File

@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.68) 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/]) [http://www.gnu.org/software/guix/])
AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_AUX_DIR([build-aux])
@ -16,7 +16,7 @@ dnl For the C++ code. This must be used early.
AC_USE_SYSTEM_EXTENSIONS AC_USE_SYSTEM_EXTENSIONS
AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.18.3]) AM_GNU_GETTEXT_VERSION([0.18.1])
guilemoduledir="${datarootdir}/guile/site/2.0" guilemoduledir="${datarootdir}/guile/site/2.0"
AC_SUBST([guilemoduledir]) AC_SUBST([guilemoduledir])

View File

@ -20,7 +20,7 @@
# Integration of the `guix-daemon' code taken from upstream Nix. # 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) CLEANFILES += $(BUILT_SOURCES)
noinst_LIBRARIES = libformat.a libutil.a libstore.a noinst_LIBRARIES = libformat.a libutil.a libstore.a

11
doc.am
View File

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU # 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> # Copyright © 2013 Andreas Enge <andreas@enge.fr>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
@ -24,6 +24,15 @@ EXTRA_DIST += \
doc/images/bootstrap-graph.eps \ doc/images/bootstrap-graph.eps \
doc/images/bootstrap-graph.pdf 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 infoimagedir = $(infodir)/images
dist_infoimage_DATA = doc/images/bootstrap-graph.png dist_infoimage_DATA = doc/images/bootstrap-graph.png

View File

@ -29,6 +29,8 @@ Documentation License''.
Managing packages with Guix. Managing packages with Guix.
* guix build: (guix)Invoking guix build * guix build: (guix)Invoking guix build
Building packages with Guix. Building packages with Guix.
* guix system: (guix)Invoking guix system
Managing the operating system configuration.
@end direntry @end direntry
@titlepage @titlepage
@ -67,7 +69,7 @@ package management tool written for the GNU system.
* Acknowledgments:: Thanks! * Acknowledgments:: Thanks!
* GNU Free Documentation License:: The license of this manual. * GNU Free Documentation License:: The license of this manual.
* Concept Index:: Concepts. * Concept Index:: Concepts.
* Function Index:: Functions. * Programming Index:: Data types, functions, and variables.
@end menu @end menu
@c ********************************************************************* @c *********************************************************************
@ -129,7 +131,7 @@ ready to use it.
Note that this section is concerned with the installation of the package 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, manager, which can be done on top of a running GNU/Linux system. If,
instead, you want to install the complete GNU operating system, 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 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 is not covered here. Please see the files @file{README} and
@ -844,6 +846,30 @@ name: gmp
@dots{} @dots{}
@end example @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}] @item --list-installed[=@var{regexp}]
@itemx -I [@var{regexp}] @itemx -I [@var{regexp}]
List the currently installed packages in the specified profile, with the 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 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 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 ``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 Once upon a time, @code{gexp->derivation} did not exist and constructing
derivations with build code written in Scheme was achieved with 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. preventing them from being garbage-collected during its lifetime.
@end deffn @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}] @ @deffn {Monadic Procedure} package-file @var{package} [@var{file}] @
[#:system (%current-system)] [#:output "out"] Return as a monadic [#:system (%current-system)] [#:output "out"] Return as a monadic
value in the absolute file name of @var{file} within the @var{output} 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 @code{idutils} packages. The @code{--select} option would have no
effect in this case. 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: The following options can be used to customize GnuPG operation:
@table @code @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 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 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 @ifinfo
@c This paragraph is for people reading this from tty2 of the @c This paragraph is for people reading this from tty2 of the
@c installation image. @c installation image.
You're reading this documentation with an Info reader. For details on 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 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. @kbd{l} afterwards to come back here.
@end ifinfo @end ifinfo
@ -2658,7 +2734,7 @@ GNOME and KDE.
@item @item
Support for encrypted disks, the Logical Volume Manager (LVM), and swap Support for encrypted disks, the Logical Volume Manager (LVM), and swap
devices are missing. devices is missing.
@item @item
Few system services are currently supported out-of-the-box 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: copy the image with:
@example @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 @end example
Access to @file{/dev/sdX} usually requires root privileges. 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 Unless this has already been done, you must partition and format the
target partitions. 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 The installation image includes Parted (@pxref{Overview,,, parted, GNU
Parted User Manual}), @command{fdisk}, and e2fsprogs, the suite of tools Parted User Manual}), @command{fdisk}, and e2fsprogs, the suite of tools
to manipulate ext2/ext3/ext4 file systems. 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 @end enumerate
Once that is done, mount the target root partition under @file{/mnt}.
@subsection Proceeding with the Installation @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}. @file{/mnt/etc/config.scm}.
A minimal operating system configuration, with just the bare minimum and 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 @example
(use-modules (gnu)) @include os-config.texi
(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")))))
@end example @end example
@noindent @noindent
For more information on @code{operating-system} declarations, 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 Once that is done, the new system must be initialized (remember that the
target root file system is mounted under @file{/mnt}): target root file system is mounted under @file{/mnt}):
@ -2795,7 +2873,7 @@ guix system init /mnt/etc/config.scm /mnt
@noindent @noindent
This will copy all the necessary files, and install GRUB on This will copy all the necessary files, and install GRUB on
@file{/dev/sdX}, unless you pass the @option{--no-grub} option. For @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. downloads or builds of missing packages, which can take some time.
Once that command has completed---and hopefully succeeded!---you can 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") (locale "fr_FR.UTF-8")
(bootloader (grub-configuration (bootloader (grub-configuration
(device "/dev/sda"))) (device "/dev/sda")))
(file-systems (list (file-system (file-systems (cons (file-system
(device "/dev/sda1") ; or partition label (device "/dev/sda1") ; or partition label
(mount-point "/") (mount-point "/")
(type "ext3")))) (type "ext3"))
%base-file-systems))
(users (list (user-account (users (list (user-account
(name "alice") (name "alice")
(password "") (password "")
@ -2986,7 +3065,9 @@ partitions without having to hard-code their actual device name.
@item @code{flags} (default: @code{'()}) @item @code{flags} (default: @code{'()})
This is a list of symbols denoting mount flags. Recognized flags 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}) @item @code{options} (default: @code{#f})
This is either @code{#f}, or a string denoting mount options. 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 This Boolean indicates whether the file system needs to be checked for
errors before being mounted. 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 table
@end deftp @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 @node User Accounts
@subsection 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 The group identifier (a number). If @code{#f}, a new number is
automatically allocated when the group is created. 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}) @item @code{password} (default: @code{#f})
What, user groups can have a password? Well, apparently yes. Unless What, user groups can have a password? Well, apparently yes. Unless
@code{#f}, this field specifies the group's password. @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. Run @var{udev}, which populates the @file{/dev} directory dynamically.
@end deffn @end deffn
@node Networking Services @node Networking Services
@subsubsection Networking Services @subsubsection Networking Services
@ -4040,8 +4169,10 @@ an inspiration for Guix.
@unnumbered Concept Index @unnumbered Concept Index
@printindex cp @printindex cp
@node Function Index @node Programming Index
@unnumbered Function Index @unnumbered Programming Index
@syncodeindex tp fn
@syncodeindex vr fn
@printindex fn @printindex fn
@bye @bye

View File

@ -139,6 +139,7 @@ GNU_SYSTEM_MODULES = \
gnu/packages/libdaemon.scm \ gnu/packages/libdaemon.scm \
gnu/packages/libevent.scm \ gnu/packages/libevent.scm \
gnu/packages/libffi.scm \ gnu/packages/libffi.scm \
gnu/packages/libftdi.scm \
gnu/packages/libidn.scm \ gnu/packages/libidn.scm \
gnu/packages/libphidget.scm \ gnu/packages/libphidget.scm \
gnu/packages/libsigsegv.scm \ gnu/packages/libsigsegv.scm \
@ -267,6 +268,7 @@ GNU_SYSTEM_MODULES = \
gnu/system/file-systems.scm \ gnu/system/file-systems.scm \
gnu/system/grub.scm \ gnu/system/grub.scm \
gnu/system/install.scm \ gnu/system/install.scm \
gnu/system/os-config.tmpl \
gnu/system/linux.scm \ gnu/system/linux.scm \
gnu/system/linux-initrd.scm \ gnu/system/linux-initrd.scm \
gnu/system/shadow.scm \ gnu/system/shadow.scm \

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -31,10 +32,16 @@
search-bootstrap-binary search-bootstrap-binary
%patch-directory %patch-directory
%bootstrap-binaries-path %bootstrap-binaries-path
fold-packages fold-packages
find-packages-by-name find-packages-by-name
find-best-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: ;;; Commentary:
;;; ;;;
@ -182,3 +189,60 @@ VERSION."
(match (vhash-assoc name (find-newest-available-packages)) (match (vhash-assoc name (find-newest-available-packages))
((_ version pkgs ...) pkgs) ((_ version pkgs ...) pkgs)
(#f '())))) (#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))))

View File

@ -78,16 +78,16 @@ interface and is based on GNU Guile.")
(define-public dfc (define-public dfc
(package (package
(name "dfc") (name "dfc")
(version "3.0.3") (version "3.0.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"http://projects.gw-computing.net/attachments/download/78/dfc-" "http://projects.gw-computing.net/attachments/download/79/dfc-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1b4hfqv23l87cb37fxwzfk2sgspkyxpr3ig2hsd23hr6mm982j7z")))) "0zk1ppx93ijimf4sbgqilxxikpsa2gmpbynknyh41xy7jbdjxp0b"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments '(#:tests? #f)) ; There are no tests. (arguments '(#:tests? #f)) ; There are no tests.
(native-inputs `(("gettext" ,gnu-gettext))) (native-inputs `(("gettext" ,gnu-gettext)))
@ -101,14 +101,14 @@ graphs and can export its output to different formats.")
(define-public htop (define-public htop
(package (package
(name "htop") (name "htop")
(version "1.0.2") (version "1.0.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/htop/" (uri (string-append "http://hisham.hm/htop/releases/"
version "/htop-" version ".tar.gz")) version "/htop-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"18fqrhvnm7h4c3939av8lpiwrwxbyw6hcly0jvq0vkjf0ixnaq7f")))) "0a8qbpsifzjwc4f45xfwm48jhm59g6q5hlib4bf7z13mgy95fp05"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("ncurses" ,ncurses))) `(("ncurses" ,ncurses)))
@ -617,7 +617,7 @@ system administrator.")
(define-public sudo (define-public sudo
(package (package
(name "sudo") (name "sudo")
(version "1.8.10p2") (version "1.8.10p3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -627,10 +627,10 @@ system administrator.")
version ".tar.gz"))) version ".tar.gz")))
(sha256 (sha256
(base32 (base32
"1wbrygz584abmywklq0b4xhqn3s1bjk3rrladslr5nycdpdvhv5s")))) "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '("--with-logpath=/var/log/sudo.log") `(#:configure-flags '("--with-logpath=/var/log/sudo.log")
#:phases (alist-cons-before #:phases (alist-cons-before
'configure 'pre-configure 'configure 'pre-configure
(lambda _ (lambda _
@ -644,7 +644,18 @@ system administrator.")
"") "")
(("^install: (.*)install-sudoers(.*)" _ before after) (("^install: (.*)install-sudoers(.*)" _ before after)
;; Don't try to create /etc/sudoers. ;; 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) %standard-phases)
;; XXX: The 'testsudoers' test series expects user 'root' to exist, but ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
@ -668,7 +679,7 @@ commands and their arguments.")
(define-public wpa-supplicant (define-public wpa-supplicant
(package (package
(name "wpa-supplicant") (name "wpa-supplicant")
(version "2.1") (version "2.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -677,7 +688,7 @@ commands and their arguments.")
".tar.gz")) ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0xxjw7lslvql1ykfbwmbhdrnjsjljf59fbwf837418s97dz2wqwi")))) "1vf8jc4yyksbxf86narvsli3vxfbm8nbnim2mdp66nd6d3yvin70"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (alist-replace '(#: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 "WakeLan broadcasts a properly formatted UDP packet across the local area
network, which causes enabled computers to power on.") network, which causes enabled computers to power on.")
(license gpl2+))) (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+)))

View File

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

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 John Darrington <jmd@gnu.org> ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -46,39 +47,48 @@
("python" ,python-2) ("python" ,python-2)
("tcsh" ,tcsh))) ("tcsh" ,tcsh)))
(arguments (arguments
`(#:phases (let ((build-flags
(alist-replace `("threading=multi" "link=shared"
'configure ;; Boost's 'context' library is not yet supported on mips64, so
(lambda* (#:key outputs #:allow-other-keys) ;; we disable it. The 'coroutine' library depends on 'context',
(let ((out (assoc-ref outputs "out"))) ;; so we disable that too.
(substitute* '("libs/config/configure" ,@(if (equal? "mips64el-linux" (or (%current-target-system)
"libs/spirit/classic/phoenix/test/runtest.sh" (%current-system)))
"tools/build/v2/doc/bjam.qbk" '("--without-context" "--without-coroutine")
"tools/build/v2/engine/execunix.c" '()))))
"tools/build/v2/engine/Jambase" `(#:phases
"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")))
(alist-replace (alist-replace
'check 'configure
(lambda _ #t) (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 (alist-replace
'install 'build
(lambda _ (lambda _
(zero? (system* "./b2" "install" "threading=multi" "link=shared"))) (zero? (system* "./b2" ,@build-flags)))
%standard-phases))))))
(alist-replace
'check
(lambda _ #t)
(alist-replace
'install
(lambda _
(zero? (system* "./b2" "install" ,@build-flags)))
%standard-phases)))))))
(home-page "http://boost.org") (home-page "http://boost.org")
(synopsis "Peer-reviewed portable C++ source libraries") (synopsis "Peer-reviewed portable C++ source libraries")

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -98,14 +98,14 @@ extraction from CDs.")
(define-public xorriso (define-public xorriso
(package (package
(name "xorriso") (name "xorriso")
(version "1.3.6.pl01") (version "1.3.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/xorriso/xorriso-" (uri (string-append "mirror://gnu/xorriso/xorriso-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"07bm20kb4f6q5pbkxhy7w8ggw2gxkrq45cda2kbh6wgphs5z2h7q")))) "0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("acl" ,acl) `(("acl" ,acl)
@ -173,14 +173,14 @@ reconstruction capability.")
(define-public dvdisaster (define-public dvdisaster
(package (package
(name "dvdisaster") (name "dvdisaster")
(version "0.72.4") (version "0.72.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://dvdisaster.net/downloads/dvdisaster-" (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0pm039a78h7m9vvjmmjfkl05ii6qdmfhvbypxjbc7j5w82y66is4")))) "0sqrprc5rh3shnfli25m2wy0i5f83db54iv04s5s7bxf77m7sy79"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("gtk+" ,gtk+-2))) `(("gtk+" ,gtk+-2)))
@ -192,7 +192,14 @@ reconstruction capability.")
`(;; Parallel builds appear to be unsafe, see `(;; Parallel builds appear to be unsafe, see
;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>. ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
#:parallel-build? #f #: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") (home-page "http://dvdisaster.net/en/index.html")
(synopsis "error correcting codes for optical media images") (synopsis "error correcting codes for optical media images")
(description "Optical media (CD,DVD,BD) keep their data only for a (description "Optical media (CD,DVD,BD) keep their data only for a

View File

@ -272,14 +272,14 @@ Go. It also includes runtime support libraries for these languages.")
(define-public gcc-4.9 (define-public gcc-4.9
(package (inherit gcc-4.7) (package (inherit gcc-4.7)
(version "4.9.0") (version "4.9.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/gcc/gcc-" (uri (string-append "mirror://gnu/gcc/gcc-"
version "/gcc-" version ".tar.bz2")) version "/gcc-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0mqjxpw2klskls00lwx1k24pnyzm3whqxg3hk74c3sddgfllgc5r")))))) "0zki3ngi0gsidnmsp88mjl2868cc7cm5wm1vwqw6znja28d7hd6k"))))))
(define (custom-gcc gcc name languages) (define (custom-gcc gcc name languages)
"Return a custom version of GCC that supports LANGUAGES." "Return a custom version of GCC that supports LANGUAGES."

View File

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

View File

@ -449,6 +449,7 @@ some form of information without getting in the user's way.")
("pango" ,pango))) ("pango" ,pango)))
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
("glib:bin" ,glib "bin")
("gobject-introspection" ,gobject-introspection) ("gobject-introspection" ,gobject-introspection)
("intltool" ,intltool))) ("intltool" ,intltool)))
(home-page "https://wiki.gnome.org/Libpeas") (home-page "https://wiki.gnome.org/Libpeas")
@ -1138,6 +1139,7 @@ controls using the Bonobo component framework.")
("libxml2" ,libxml2))) ("libxml2" ,libxml2)))
(native-inputs (native-inputs
`(("intltool" ,intltool) `(("intltool" ,intltool)
("glib" ,glib "bin")
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
(home-page "https://developer.gnome.org/goffice/") (home-page "https://developer.gnome.org/goffice/")
(synopsis "Document-centric objects and utilities") (synopsis "Document-centric objects and utilities")
@ -1187,6 +1189,7 @@ controls using the Bonobo component framework.")
("zlib" ,zlib))) ("zlib" ,zlib)))
(native-inputs (native-inputs
`(("intltool" ,intltool) `(("intltool" ,intltool)
("glib:bin" ,glib "bin")
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
(home-page "http://www.gnumeric.org") (home-page "http://www.gnumeric.org")
(synopsis "Spreadsheet application") (synopsis "Spreadsheet application")

48
gnu/packages/libftdi.scm Normal file
View File

@ -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+)))

View File

@ -1273,7 +1273,18 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.")
("zlib" ,guix:zlib))) ("zlib" ,guix:zlib)))
(arguments (arguments
`(#:tests? #f ; FIXME: Investigate test failures `(#: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/") (home-page "https://www.kernel.org/")
(synopsis "Kernel module tools") (synopsis "Kernel module tools")
(description "kmod is a set of tools to handle common tasks with Linux (description "kmod is a set of tools to handle common tasks with Linux

View File

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

View File

@ -27,7 +27,7 @@
(define-public nano (define-public nano
(package (package
(name "nano") (name "nano")
(version "2.3.4") (version "2.3.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -35,7 +35,7 @@
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1hcqv5yam4pkqx1sviigikzvd7n1pz6lwp7lzpdzagck9fgi4x0p")))) "0d4ml0v9yi37pjs211xs38w9whsj6530wz3kmrvwgh8jigqz6jx7"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("gettext" ,gnu-gettext) `(("gettext" ,gnu-gettext)

View File

@ -34,17 +34,17 @@
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
#:use-module (gnu packages texinfo)) #:use-module (gnu packages texinfo))
(define-public guix-0.6 (define guix-0.7
(package (package
(name "guix") (name "guix")
(version "0.6") (version "0.7")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-" (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"01xw51wizhsk827w4xp79k2b6dxjaviw04r6rbrb85qdxnwg6k9n")))) "05r7bsjgc0a4m7yy433n3c1dlv2yqlf3qpwlhayn9djhpp2q1ssb"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags (list `(#: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.") Nix package manager.")
(license gpl3+))) (license gpl3+)))
(define-public guix (define-public guix guix-0.7)
(define-public guix-devel
;; Development version of Guix. ;; Development version of Guix.
(let ((commit "0ae8c15")) (let ((commit "0ae8c15"))
(package (inherit guix-0.6) (package (inherit guix-0.7)
(version (string-append "0.6." commit)) (version (string-append "0.6." commit))
(source (origin (source (origin
(method git-fetch) (method git-fetch)
@ -124,7 +126,7 @@ Nix package manager.")
(base32 (base32
"1y6mwzwsjdxbfibqypb55dix371rifhfz0bygfr8k868lcdsawic")))) "1y6mwzwsjdxbfibqypb55dix371rifhfz0bygfr8k868lcdsawic"))))
(arguments (arguments
(substitute-keyword-arguments (package-arguments guix-0.6) (substitute-keyword-arguments (package-arguments guix-0.7)
((#:phases phases) ((#:phases phases)
`(alist-cons-before `(alist-cons-before
'configure 'bootstrap 'configure 'bootstrap
@ -160,4 +162,4 @@ Nix package manager.")
("gettext" ,gnu-gettext) ("gettext" ,gnu-gettext)
("texinfo" ,texinfo) ("texinfo" ,texinfo)
("graphviz" ,graphviz) ("graphviz" ,graphviz)
,@(package-native-inputs guix-0.6)))))) ,@(package-native-inputs guix-0.7))))))

View File

@ -27,7 +27,7 @@
(define-public parallel (define-public parallel
(package (package
(name "parallel") (name "parallel")
(version "20140622") (version "20140722")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -35,7 +35,7 @@
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0frlp645yghnwq8x7dk8pdm6id1mqkkh7w48mcbpd04pw225gljq")))) "165vf8hpl47z38aswsll1284l8xa9a8jwx3a3d2rzshm9yzbiq5n"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("perl" ,perl))) (inputs `(("perl" ,perl)))
(home-page "http://www.gnu.org/software/parallel/") (home-page "http://www.gnu.org/software/parallel/")

View File

@ -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 environment variable, rather than looking for modules exclusively in
/lib/modules. /lib/modules.
Patch by David Guibert, from Nixpkgs; adjusted to use 'LINUX_MODULE_DIRECTORY' Original patch by David Guibert, from Nixpkgs; adjusted to use
rather than 'MODULE_DIR' as the variable name. '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
diff --git a/depmod.c b/depmod.c diff --git a/depmod.c b/depmod.c
index a1d2f8c..9362a35 100644 index a1d2f8c..ff579c7 100644
--- a/depmod.c --- a/depmod.c
+++ b/depmod.c +++ b/depmod.c
@@ -48,9 +48,6 @@ @@ -48,9 +48,6 @@
@ -38,26 +32,30 @@ index a1d2f8c..9362a35 100644
} }
+ if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { + if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
+ module_dir = "/lib/modules/"; + module_dir = "/lib/modules";
+ } + }
+ +
while ((line = getline_wrapped(cfile, &linenum)) != NULL) { while ((line = getline_wrapped(cfile, &linenum)) != NULL) {
char *ptr = line; char *ptr = line;
char *cmd, *modname; 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; continue;
} }
nofail_asprintf(&dirname, "%s%s%s/%s", basedir, - nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
- MODULE_DIR, kernelversion, search_path); - MODULE_DIR, kernelversion, search_path);
+ nofail_asprintf(&dirname, "%s%s/%s/%s", basedir,
+ module_dir, kernelversion, search_path); + module_dir, kernelversion, search_path);
len = strlen(dirname); len = strlen(dirname);
*search = add_search(dirname, len, *search); *search = add_search(dirname, len, *search);
free(dirname); 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; 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); - MODULE_DIR, kernelversion, subdir, modname);
+ nofail_asprintf(&pathname, "%s%s/%s/%s/%s.ko", basedir,
+ module_dir, kernelversion, subdir, modname); + module_dir, kernelversion, subdir, modname);
*overrides = add_override(pathname, *overrides); *overrides = add_override(pathname, *overrides);
@ -76,24 +74,26 @@ index a1d2f8c..9362a35 100644
- nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version); - nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version);
+ if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { + 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 (maybe_all) {
if (!doing_stdout && !depfile_out_of_date(dirname)) 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; size_t len;
nofail_asprintf(&dirname, "%s%s%s/updates", basedir, - nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
- MODULE_DIR, version); - MODULE_DIR, version);
+ nofail_asprintf(&dirname, "%s%s/%s/updates", basedir,
+ module_dir, version); + module_dir, version);
len = strlen(dirname); len = strlen(dirname);
search = add_search(dirname, len, search); search = add_search(dirname, len, search);
} }
diff --git a/modinfo.c b/modinfo.c diff --git a/modinfo.c b/modinfo.c
index 1dd8469..67b1041 100644 index 1dd8469..6a1865b 100644
--- a/modinfo.c --- a/modinfo.c
+++ b/modinfo.c +++ b/modinfo.c
@@ -19,9 +19,6 @@ @@ -19,9 +19,6 @@
@ -113,7 +113,7 @@ index 1dd8469..67b1041 100644
+ char *module_dir; + char *module_dir;
+ +
+ if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) { + if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
+ module_dir = "/lib/modules/"; + module_dir = "/lib/modules";
+ } + }
if (strchr(name, '.') || strchr(name, '/')) { if (strchr(name, '.') || strchr(name, '/')) {
@ -131,7 +131,7 @@ index 1dd8469..67b1041 100644
/* Search for it in modules.dep. */ /* Search for it in modules.dep. */
nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep"); nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep");
diff --git a/modprobe.c b/modprobe.c diff --git a/modprobe.c b/modprobe.c
index 5464f45..d9fbf9d 100644 index 5464f45..cb57917 100644
--- a/modprobe.c --- a/modprobe.c
+++ b/modprobe.c +++ b/modprobe.c
@@ -86,10 +86,6 @@ typedef enum @@ -86,10 +86,6 @@ typedef enum

View File

@ -115,6 +115,11 @@
"--with-system-xpdf" "--with-system-xpdf"
"--with-system-zlib" "--with-system-zlib"
"--with-system-zziplib") "--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 #:phases
(alist-cons-after (alist-cons-after
'install 'postinst 'install 'postinst

View File

@ -193,7 +193,6 @@
"--disable-armv6t2" "--disable-armv6t2"
"--disable-vfp" "--disable-vfp"
"--disable-neon" "--disable-neon"
"--disable-vis"
"--disable-mips32r2" "--disable-mips32r2"
"--disable-mipsdspr1" "--disable-mipsdspr1"
"--disable-mipsdspr2" "--disable-mipsdspr2"

View File

@ -96,7 +96,8 @@ sockets."
(mkdir-p "/var/run/avahi-daemon"))) (mkdir-p "/var/run/avahi-daemon")))
(user-groups (list (user-group (user-groups (list (user-group
(name "avahi")))) (name "avahi")
(system? #t))))
(user-accounts (list (user-account (user-accounts (list (user-account
(name "avahi") (name "avahi")
(group "avahi") (group "avahi")

View File

@ -25,10 +25,12 @@
#:use-module (gnu system linux) ; 'pam-service', etc. #:use-module (gnu system linux) ; 'pam-service', etc.
#:use-module (gnu packages admin) #:use-module (gnu packages admin)
#:use-module ((gnu packages linux) #:use-module ((gnu packages linux)
#:select (udev kbd)) #:select (udev kbd e2fsprogs))
#:use-module ((gnu packages base) #:use-module ((gnu packages base)
#:select (glibc-final)) #:select (glibc-final))
#:use-module (gnu packages package-management) #:use-module (gnu packages package-management)
#:use-module ((guix build linux-initrd)
#:select (mount-flags->bit-mask))
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (srfi srfi-1) #: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))))) (respawn? #f)))))
(define* (file-system-service device target type (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 "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 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 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 (with-monad %store-monad
(return (return
(service (service
@ -109,10 +114,22 @@ true, check the file system before mounting it."
(documentation "Check, mount, and unmount the given file system.") (documentation "Check, mount, and unmount the given file system.")
(start #~(lambda args (start #~(lambda args
(let ((device (canonicalize-device-spec #$device '#$title))) (let ((device (canonicalize-device-spec #$device '#$title)))
#$(if check? #$(if create-mount-point?
#~(check-file-system device #$type) #~(mkdir-p #$target)
#~#t) #~#t)
(mount device #$target #$type 0 #$options)) #$(if check?
#~(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
#$(mount-flags->bit-mask flags)
#$options))
#t)) #t))
(stop #~(lambda args (stop #~(lambda args
;; Normally there are no processes left at this point, so ;; Normally there are no processes left at this point, so
@ -455,6 +472,7 @@ passed to @command{guix-daemon}."
(user-accounts accounts) (user-accounts accounts)
(user-groups (list (user-group (user-groups (list (user-group
(name builder-group) (name builder-group)
(system? #t)
;; Use a fixed GID so that we can create the ;; Use a fixed GID so that we can create the
;; store with the right owner. ;; store with the right owner.
@ -466,8 +484,13 @@ passed to @command{guix-daemon}."
(with-monad %store-monad (with-monad %store-monad
(return (service (return (service
(provision '(udev)) (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)) (requirement '(root-file-system))
(documentation "Populate the /dev directory.")
(documentation "Populate the /dev directory, dynamically.")
(start #~(lambda () (start #~(lambda ()
(define udevd (define udevd
(string-append #$udev "/libexec/udev/udevd")) (string-append #$udev "/libexec/udev/udevd"))

View File

@ -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")))) (string-append "--config-file=" #$conf "/system.conf"))))
(stop #~(make-kill-destructor)) (stop #~(make-kill-destructor))
(user-groups (list (user-group (user-groups (list (user-group
(name "messagebus")))) (name "messagebus")
(system? #t))))
(user-accounts (list (user-account (user-accounts (list (user-account
(name "messagebus") (name "messagebus")
(group "messagebus") (group "messagebus")

View File

@ -49,6 +49,7 @@
(use-modules (ice-9 ftw) (use-modules (ice-9 ftw)
(guix build syscalls) (guix build syscalls)
(guix build utils)
((guix build linux-initrd) ((guix build linux-initrd)
#:select (check-file-system canonicalize-device-spec))) #:select (check-file-system canonicalize-device-spec)))

View File

@ -107,7 +107,8 @@ policy) as the @code{tor} unprivileged user."
(stop #~(make-kill-destructor)) (stop #~(make-kill-destructor))
(user-groups (list (user-group (user-groups (list (user-group
(name "tor")))) (name "tor")
(system? #t))))
(user-accounts (list (user-account (user-accounts (list (user-account
(name "tor") (name "tor")
(group "tor") (group "tor")

View File

@ -97,7 +97,12 @@ EndSection
#~(begin #~(begin
(use-modules (ice-9 match)) (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) (match (command-line)
((_ "ratpoison") ((_ "ratpoison")
(execl (string-append #$ratpoison "/bin/ratpoison"))) (execl (string-append #$ratpoison "/bin/ratpoison")))
@ -146,10 +151,15 @@ reboot_cmd " dmd "/sbin/reboot
(provision '(xorg-server)) (provision '(xorg-server))
(requirement '(user-processes host-name udev)) (requirement '(user-processes host-name udev))
(start (start
#~(make-forkexec-constructor #~(lambda ()
(list (string-append #$slim "/bin/slim") "-nodaemon") ;; A stale lock file can prevent SLiM from starting, so remove it
#:environment-variables ;; to be on the safe side.
(list (string-append "SLIM_CFGFILE=" #$slim.cfg)))) (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)) (stop #~(make-kill-destructor))
(respawn? #t) (respawn? #t)
(pam-services (pam-services

View File

@ -181,11 +181,13 @@ as 'needed-for-boot'."
(sequence %store-monad (sequence %store-monad
(map (match-lambda (map (match-lambda
(($ <file-system> device title target type flags opts (($ <file-system> device title target type flags opts
#f check?) #f check? create?)
(file-system-service device target type (file-system-service device target type
#:title title #:title title
#:check? check? #:check? check?
#:options opts))) #:create-mount-point? create?
#:options opts
#:flags flags)))
file-systems))) file-systems)))
(define (essential-services os) (define (essential-services os)
@ -361,7 +363,8 @@ alias ll='ls -l'
'active-groups'." 'active-groups'."
#~(list #$(user-group-name group) #~(list #$(user-group-name group)
#$(user-group-password group) #$(user-group-password group)
#$(user-group-id group))) #$(user-group-id group)
#$(user-group-system? group)))
(define (user-account->gexp account) (define (user-account->gexp account)
"Turn ACCOUNT, a <user-account> object, into a list-valued gexp suitable for "Turn ACCOUNT, a <user-account> object, into a list-valued gexp suitable for

View File

@ -28,9 +28,16 @@
file-system-needed-for-boot? file-system-needed-for-boot?
file-system-flags file-system-flags
file-system-options file-system-options
file-system-check?
file-system-create-mount-point?
%fuse-control-file-system %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: ;;; Commentary:
;;; ;;;
@ -54,7 +61,9 @@
(needed-for-boot? file-system-needed-for-boot? ; Boolean (needed-for-boot? file-system-needed-for-boot? ; Boolean
(default #f)) (default #f))
(check? file-system-check? ; Boolean (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 (define %fuse-control-file-system
;; Control file system for Linux' file systems in user-space (FUSE). ;; Control file system for Linux' file systems in user-space (FUSE).
@ -72,4 +81,51 @@
(type "binfmt_misc") (type "binfmt_misc")
(check? #f))) (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 ;;; file-systems.scm ends here

View File

@ -20,6 +20,7 @@
#:use-module (gnu) #:use-module (gnu)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module ((guix store) #:select (%store-prefix))
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages package-management) #:use-module (gnu packages package-management)
#:use-module (gnu packages disk) #:use-module (gnu packages disk)
@ -42,6 +43,99 @@ manual."
"-f" (string-append #$guix "/share/info/guix.info") "-f" (string-append #$guix "/share/info/guix.info")
"-n" "System Installation"))) "-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) (define (installation-services)
"Return the list services for the installation image." "Return the list services for the installation image."
(let ((motd (text-file "motd" " (let ((motd (text-file "motd" "
@ -71,6 +165,9 @@ You have been warned. Thanks for being so brave.
#:auto-login "guest" #:auto-login "guest"
#:login-program (log-to-info)) #:login-program (log-to-info))
;; Documentation add-on.
(configuration-template-service)
;; A bunch of 'root' ttys. ;; A bunch of 'root' ttys.
(normal-tty "tty3") (normal-tty "tty3")
(normal-tty "tty4") (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. ;; Start udev so that useful device nodes are available.
(udev-service) (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. ;; Install Unicode support and a suitable font.
(console-font-service "tty1") (console-font-service "tty1")
(console-font-service "tty2") (console-font-service "tty2")
@ -117,10 +218,11 @@ Use Alt-F2 for documentation.
(file-systems (file-systems
;; Note: the disk image build code overrides this root file system with ;; Note: the disk image build code overrides this root file system with
;; the appropriate one. ;; the appropriate one.
(list (file-system (cons (file-system
(mount-point "/") (mount-point "/")
(device "gnu-disk-image") (device "gnu-disk-image")
(type "ext4")))) (type "ext4"))
%base-file-systems))
(users (list (user-account (users (list (user-account
(name "guest") (name "guest")

31
gnu/system/os-config.tmpl Normal file
View File

@ -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")))))

View File

@ -20,6 +20,8 @@
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix monads) #:use-module (guix monads)
#:use-module ((gnu system file-systems)
#:select (%tty-gid))
#:use-module ((gnu packages admin) #:use-module ((gnu packages admin)
#:select (shadow)) #:select (shadow))
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
@ -41,6 +43,7 @@
user-group-name user-group-name
user-group-password user-group-password
user-group-id user-group-id
user-group-system?
default-skeletons default-skeletons
skeleton-directory skeleton-directory
@ -73,28 +76,33 @@
user-group? user-group?
(name user-group-name) (name user-group-name)
(password user-group-password (default #f)) (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 (define %base-groups
;; Default set of groups. ;; Default set of groups.
(list (user-group (name "root") (id 0)) (let-syntax ((system-group (syntax-rules ()
(user-group (name "wheel")) ; root-like users ((_ args ...)
(user-group (name "users")) ; normal users (user-group (system? #t) args ...)))))
(user-group (name "nogroup")) ; for daemons etc. (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 ;; The following groups are conventionally used by things like udev to
;; control access to hardware devices. ;; control access to hardware devices.
(user-group (name "tty")) (system-group (name "tty") (id %tty-gid))
(user-group (name "dialout")) (system-group (name "dialout"))
(user-group (name "kmem")) (system-group (name "kmem"))
(user-group (name "video")) (system-group (name "video"))
(user-group (name "audio")) (system-group (name "audio"))
(user-group (name "netdev")) ; used in avahi-dbus.conf (system-group (name "netdev")) ; used in avahi-dbus.conf
(user-group (name "lp")) (system-group (name "lp"))
(user-group (name "disk")) (system-group (name "disk"))
(user-group (name "floppy")) (system-group (name "floppy"))
(user-group (name "cdrom")) (system-group (name "cdrom"))
(user-group (name "tape")))) (system-group (name "tape")))))
(define (default-skeletons) (define (default-skeletons)
"Return the default skeleton files for /etc/skel. These files are copied by "Return the default skeleton files for /etc/skel. These files are copied by

View File

@ -250,6 +250,9 @@ derivations for SYSTEM. Include propagated inputs in the result."
inputs)))) inputs))))
(define standard-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 (memoize
(lambda (system) (lambda (system)
"Return the list of implicit standard inputs used with the GNU Build "Return the list of implicit standard inputs used with the GNU Build

View File

@ -36,13 +36,14 @@
;;; ;;;
;;; Code: ;;; Code:
(define* (add-group name #:key gid password (define* (add-group name #:key gid password system?
(log-port (current-error-port))) (log-port (current-error-port)))
"Add NAME as a user group, with the given numeric GID if specified." "Add NAME as a user group, with the given numeric GID if specified."
;; Use 'groupadd' from the Shadow package. ;; Use 'groupadd' from the Shadow package.
(format log-port "adding group '~a'...~%" name) (format log-port "adding group '~a'...~%" name)
(let ((args `(,@(if gid `("-g" ,(number->string gid)) '()) (let ((args `(,@(if gid `("-g" ,(number->string gid)) '())
,@(if password `("-p" ,password) '()) ,@(if password `("-p" ,password) '())
,@(if system? `("--system") '())
,name))) ,name)))
(zero? (apply system* "groupadd" args)))) (zero? (apply system* "groupadd" args))))
@ -128,9 +129,11 @@ numeric gid or #f."
;; Then create the groups. ;; Then create the groups.
(for-each (match-lambda (for-each (match-lambda
((name password gid) ((name password gid system?)
(unless (false-if-exception (getgrnam name)) (unless (false-if-exception (getgrnam name))
(add-group name #:gid gid #:password password)))) (add-group name
#:gid gid #:password password
#:system? system?))))
groups) groups)
;; Finally create the other user accounts. ;; Finally create the other user accounts.

View File

@ -40,6 +40,7 @@
find-partition-by-label find-partition-by-label
canonicalize-device-spec canonicalize-device-spec
mount-flags->bit-mask
check-file-system check-file-system
mount-file-system mount-file-system
bind-mount 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>. ;; Linux mount flags, from libc's <sys/mount.h>.
(define MS_RDONLY 1) (define MS_RDONLY 1)
(define MS_NOSUID 2)
(define MS_NODEV 4)
(define MS_NOEXEC 8)
(define MS_BIND 4096) (define MS_BIND 4096)
(define MS_MOVE 8192) (define MS_MOVE 8192)
@ -494,6 +498,24 @@ UNIONFS."
fsck code device) fsck code device)
(start-repl))))) (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")) (define* (mount-file-system spec #:key (root "/root"))
"Mount the file system described by SPEC under ROOT. SPEC must have the "Mount the file system described by SPEC under ROOT. SPEC must have the
form: form:
@ -503,15 +525,6 @@ form:
DEVICE, MOUNT-POINT, and TYPE must be strings; OPTIONS can be a string or #f; 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 FLAGS must be a list of symbols. CHECK? is a Boolean indicating whether to
run a file system check." 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 (match spec
((source title mount-point type (flags ...) options check?) ((source title mount-point type (flags ...) options check?)
(let ((source (canonicalize-device-spec source title)) (let ((source (canonicalize-device-spec source title))
@ -519,7 +532,7 @@ run a file system check."
(when check? (when check?
(check-file-system source type)) (check-file-system source type))
(mkdir-p mount-point) (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 (if options
(string->pointer options) (string->pointer options)
%null-pointer)) %null-pointer))
@ -528,7 +541,7 @@ run a file system check."
(mkdir-p (string-append root "/etc")) (mkdir-p (string-append root "/etc"))
(let ((port (open-file (string-append root "/etc/mtab") "a"))) (let ((port (open-file (string-append root "/etc/mtab") "a")))
(format port "~a ~a ~a ~a 0 0~%" (format port "~a ~a ~a ~a 0 0~%"
source mount-point type options) source mount-point type (or options ""))
(close-port port)))))) (close-port port))))))
(define (switch-root root) (define (switch-root root)
@ -670,11 +683,6 @@ to it are lost."
(switch-root "/root") (switch-root "/root")
(format #t "loading '~a'...\n" to-load) (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. ;; TODO: Remove /lib, /share, and /loader.go.
(primitive-load to-load) (primitive-load to-load)

View File

@ -55,6 +55,7 @@
run-with-store run-with-store
text-file text-file
text-file* text-file*
interned-file
package-file package-file
origin->derivation origin->derivation
package->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) (derivation-expression name (builder inputs)
#:inputs 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 (define* (package-file package
#:optional file #:optional file
#:key (system (%current-system)) (output "out")) #:key (system (%current-system)) (output "out"))

View File

@ -75,6 +75,7 @@
package-location package-location
package-field-location package-field-location
package-direct-inputs
package-transitive-inputs package-transitive-inputs
package-transitive-target-inputs package-transitive-target-inputs
package-transitive-native-inputs package-transitive-native-inputs
@ -484,12 +485,17 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
((input rest ...) ((input rest ...)
(loop rest (cons input result)))))) (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) (define (package-transitive-inputs package)
"Return the transitive inputs of PACKAGE---i.e., its direct inputs along "Return the transitive inputs of PACKAGE---i.e., its direct inputs along
with their propagated inputs, recursively." with their propagated inputs, recursively."
(transitive-inputs (append (package-native-inputs package) (transitive-inputs (package-direct-inputs package)))
(package-inputs package)
(package-propagated-inputs package))))
(define (package-transitive-target-inputs package) (define (package-transitive-target-inputs package)
"Return the transitive target inputs of PACKAGE---i.e., its direct inputs "Return the transitive target inputs of PACKAGE---i.e., its direct inputs
@ -521,6 +527,8 @@ recursively."
(define (cache package system thunk) (define (cache package system thunk)
"Memoize the return values of THUNK as the derivation of PACKAGE on "Memoize the return values of THUNK as the derivation of PACKAGE on
SYSTEM." 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))) (let ((vals (call-with-values thunk list)))
;; Use `hashq-set!' instead of `hash-set!' because `hash' returns the ;; 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 ;; same value for all structs (as of Guile 2.0.6), and because pointer

View File

@ -22,6 +22,7 @@
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix gexp)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
@ -39,21 +40,18 @@
manifest-entry-name manifest-entry-name
manifest-entry-version manifest-entry-version
manifest-entry-output manifest-entry-output
manifest-entry-path manifest-entry-item
manifest-entry-dependencies manifest-entry-dependencies
manifest-pattern manifest-pattern
manifest-pattern? manifest-pattern?
read-manifest
write-manifest
manifest-remove manifest-remove
manifest-installed? manifest-installed?
manifest-matching-entries manifest-matching-entries
manifest=?
profile-manifest profile-manifest
package->manifest-entry
profile-derivation profile-derivation
generation-number generation-number
generation-numbers generation-numbers
@ -88,11 +86,9 @@
(version manifest-entry-version) ; string (version manifest-entry-version) ; string
(output manifest-entry-output ; string (output manifest-entry-output ; string
(default "out")) (default "out"))
(path manifest-entry-path) ; store path (item manifest-entry-item) ; package | store path
(dependencies manifest-entry-dependencies ; list of store paths (dependencies manifest-entry-dependencies ; (store path | package)*
(default '())) (default '())))
(inputs manifest-entry-inputs ; list of inputs to build
(default '()))) ; this entry
(define-record-type* <manifest-pattern> manifest-pattern (define-record-type* <manifest-pattern> manifest-pattern
make-manifest-pattern make-manifest-pattern
@ -110,17 +106,36 @@
(call-with-input-file file read-manifest) (call-with-input-file file read-manifest)
(manifest '())))) (manifest '()))))
(define (manifest->sexp manifest) (define* (package->manifest-entry package #:optional output)
"Return a representation of MANIFEST as an sexp." "Return a manifest entry for the OUTPUT of package PACKAGE. When OUTPUT is
(define (entry->sexp entry) 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 (match entry
(($ <manifest-entry> name version path output (deps ...)) (($ <manifest-entry> name version output (? string? path) (deps ...))
(list name version path output 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 (match manifest
(($ <manifest> (entries ...)) (($ <manifest> (entries ...))
`(manifest (version 1) #~(manifest (version 1)
(packages ,(map entry->sexp entries)))))) (packages #$(map entry->gexp entries))))))
(define (sexp->manifest sexp) (define (sexp->manifest sexp)
"Parse SEXP as a manifest." "Parse SEXP as a manifest."
@ -133,7 +148,7 @@
(name name) (name name)
(version version) (version version)
(output output) (output output)
(path path))) (item path)))
name version output path))) name version output path)))
;; Version 1 adds a list of propagated inputs to the ;; Version 1 adds a list of propagated inputs to the
@ -146,7 +161,7 @@
(name name) (name name)
(version version) (version version)
(output output) (output output)
(path path) (item path)
(dependencies deps))) (dependencies deps)))
name version output path deps))) name version output path deps)))
@ -157,10 +172,6 @@
"Return the packages listed in MANIFEST." "Return the packages listed in MANIFEST."
(sexp->manifest (read port))) (sexp->manifest (read port)))
(define (write-manifest manifest port)
"Write MANIFEST to PORT."
(write (manifest->sexp manifest) port))
(define (entry-predicate pattern) (define (entry-predicate pattern)
"Return a procedure that returns #t when passed a manifest entry that "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 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))) (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. ;;; Profiles.
;;; ;;;
(define* (lower-input store input #:optional (system (%current-system))) (define (profile-derivation manifest)
"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)
"Return a derivation that builds a profile (aka. 'user environment') with "Return a derivation that builds a profile (aka. 'user environment') with
the given MANIFEST." 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 (define builder
`(begin #~(begin
(use-modules (ice-9 pretty-print) (use-modules (ice-9 pretty-print)
(guix build union)) (guix build union))
(setvbuf (current-output-port) _IOLBF) (setvbuf (current-output-port) _IOLBF)
(setvbuf (current-error-port) _IOLBF) (setvbuf (current-error-port) _IOLBF)
(let ((output (assoc-ref %outputs "out")) (union-build #$output '#$inputs
(inputs (map cdr %build-inputs))) #:log-port (%make-void-port "w"))
(union-build output inputs (call-with-output-file (string-append #$output "/manifest")
#:log-port (%make-void-port "w")) (lambda (p)
(call-with-output-file (string-append output "/manifest") (pretty-print '#$(manifest->gexp manifest) p)))))
(lambda (p)
(pretty-print ',(manifest->sexp manifest) p))))))
(build-expression->derivation store "profile" builder (gexp->derivation "profile" builder
#:inputs #:modules '((guix build union))
(append-map (match-lambda #:local-build? #t))
(($ <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))
(define (profile-regexp profile) (define (profile-regexp profile)
"Return a regular expression that matches PROFILE's name and number." "Return a regular expression that matches PROFILE's name and number."

View File

@ -24,6 +24,7 @@
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix profiles) #:use-module (guix profiles)
#:use-module (guix monads)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix config) #:use-module (guix config)
#:use-module (guix scripts build) #: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) (define (link-to-empty-profile generation)
"Link GENERATION, a string, to the empty profile." "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"))) (prof (derivation->output-path drv "out")))
(when (not (build-derivations (%store) (list drv))) (when (not (build-derivations (%store) (list drv)))
(leave (_ "failed to build the empty profile~%"))) (leave (_ "failed to build the empty profile~%")))
@ -205,10 +207,14 @@ packages that will/would be installed and removed."
remove)))) remove))))
(_ #f)) (_ #f))
(match install (match install
((($ <manifest-entry> name version output path _) ..1) ((($ <manifest-entry> name version output item _) ..1)
(let ((len (length name)) (let ((len (length name))
(install (map (cut format #f " ~a-~a\t~a\t~a" <> <> <> <>) (install (map (lambda (name version output item)
name version output path))) (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? (if dry-run?
(format (current-error-port) (format (current-error-port)
(N_ "The following package would be installed:~%~{~a~%~}~%" (N_ "The following package would be installed:~%~{~a~%~}~%"
@ -253,17 +259,6 @@ RX."
(package-name p2)))) (package-name p2))))
same-location?)) 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 (define %sigint-prompt
;; The prompt to jump to upon SIGINT. ;; The prompt to jump to upon SIGINT.
(make-prompt-tag "interruptible")) (make-prompt-tag "interruptible"))
@ -517,6 +512,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
(display (_ " (display (_ "
-A, --list-available[=REGEXP] -A, --list-available[=REGEXP]
list available packages matching REGEXP")) list available packages matching REGEXP"))
(display (_ "
--show=PACKAGE show details about PACKAGE"))
(newline) (newline)
(show-build-options-help) (show-build-options-help)
(newline) (newline)
@ -615,6 +612,11 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
(values (cons `(query list-available ,(or arg "")) (values (cons `(query list-available ,(or arg ""))
result) result)
#f))) #f)))
(option '("show") #t #t
(lambda (opt name arg result arg-handler)
(values (cons `(query show ,arg)
result)
#f)))
%standard-build-options)) %standard-build-options))
@ -639,22 +641,11 @@ return the new list of manifest entries."
(delete-duplicates deps same?)) (delete-duplicates deps same?))
(define (package->manifest-entry p output) (define (package->manifest-entry* package output)
;; Return a manifest entry for the OUTPUT of package P. (check-package-freshness package)
(check-package-freshness p)
;; When given a package via `-e', install the first of its ;; When given a package via `-e', install the first of its
;; outputs (XXX). ;; outputs (XXX).
(let* ((output (or output (car (package-outputs p)))) (package->manifest-entry package output))
(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)))))
(define upgrade-regexps (define upgrade-regexps
(filter-map (match-lambda (filter-map (match-lambda
@ -685,7 +676,7 @@ return the new list of manifest entries."
(define to-upgrade (define to-upgrade
(map (match-lambda (map (match-lambda
((package output) ((package output)
(package->manifest-entry package output))) (package->manifest-entry* package output)))
packages-to-upgrade)) packages-to-upgrade))
(define packages-to-install (define packages-to-install
@ -703,7 +694,7 @@ return the new list of manifest entries."
(define to-install (define to-install
(append (map (match-lambda (append (map (match-lambda
((package output) ((package output)
(package->manifest-entry package output))) (package->manifest-entry* package output)))
packages-to-install) packages-to-install)
(filter-map (match-lambda (filter-map (match-lambda
(('install . (? package?)) (('install . (? package?))
@ -716,7 +707,7 @@ return the new list of manifest entries."
(name name) (name name)
(version version) (version version)
(output #f) (output #f)
(path path)))) (item path))))
(_ #f)) (_ #f))
opts))) opts)))
@ -743,6 +734,16 @@ removed from MANIFEST."
(unless (string=? profile %current-profile) (unless (string=? profile %current-profile)
(add-indirect-root store (canonicalize-path 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. ;;; Entry point.
@ -914,36 +915,41 @@ more information.~%"))
(when (equal? profile %current-profile) (when (equal? profile %current-profile)
(ensure-default-profile)) (ensure-default-profile))
(if (manifest=? new manifest) (unless (and (null? install) (null? remove))
(format (current-error-port) (_ "nothing to be done~%")) (let* ((prof-drv (run-with-store (%store)
(let ((prof-drv (profile-derivation (%store) new)) (profile-derivation new)))
(remove (manifest-matching-entries manifest remove))) (prof (derivation->output-path prof-drv))
(show-what-to-remove/install remove install dry-run?) (remove (manifest-matching-entries manifest remove)))
(show-what-to-build (%store) (list prof-drv) (show-what-to-remove/install remove install dry-run?)
#:use-substitutes? (show-what-to-build (%store) (list prof-drv)
(assoc-ref opts 'substitutes?) #:use-substitutes?
#:dry-run? dry-run?) (assoc-ref opts 'substitutes?)
#:dry-run? dry-run?)
(or dry-run? (cond
(let* ((prof (derivation->output-path prof-drv)) (dry-run? #t)
(number (generation-number profile)) ((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, ;; Always use NUMBER + 1 for the new profile,
;; possibly overwriting a "previous future ;; possibly overwriting a "previous future
;; generation". ;; generation".
(name (generation-file-name profile (name (generation-file-name profile
(+ 1 number)))) (+ 1 number))))
(and (build-derivations (%store) (list prof-drv)) (and (build-derivations (%store) (list prof-drv))
(let ((count (length entries))) (let ((count (length entries)))
(switch-symlinks name prof) (switch-symlinks name prof)
(switch-symlinks profile name) (switch-symlinks profile name)
(maybe-register-gc-root (%store) profile) (maybe-register-gc-root (%store) profile)
(format #t (N_ "~a package in profile~%" (format #t (N_ "~a package in profile~%"
"~a packages in profile~%" "~a packages in profile~%"
count) count)
count) count)
(display-search-paths entries (display-search-paths entries
profile))))))))))) profile))))))))))))
(define (process-query opts) (define (process-query opts)
;; Process any query specified by OPTS. Return #t when a query was ;; Process any query specified by OPTS. Return #t when a query was
@ -1042,6 +1048,14 @@ more information.~%"))
(find-packages-by-description regexp))) (find-packages-by-description regexp)))
#t)) #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) (('search-paths)
(let* ((manifest (profile-manifest profile)) (let* ((manifest (profile-manifest profile))
(entries (manifest-entries manifest)) (entries (manifest-entries manifest))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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 © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -29,6 +30,8 @@
#:use-module ((gnu packages base) #:select (%final-inputs)) #:use-module ((gnu packages base) #:select (%final-inputs))
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module (ice-9 vlist)
#:use-module (ice-9 format)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
@ -59,6 +62,9 @@
(x (x
(leave (_ "~a: invalid selection; expected `core' or `non-core'") (leave (_ "~a: invalid selection; expected `core' or `non-core'")
arg))))) arg)))))
(option '(#\l "list-dependent") #f #f
(lambda (opt name arg result)
(alist-cons 'list-dependent? #t result)))
(option '("key-server") #t #f (option '("key-server") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
@ -96,6 +102,9 @@ specified with `--select'.\n"))
(display (_ " (display (_ "
-s, --select=SUBSET select all the packages in SUBSET, one of -s, --select=SUBSET select all the packages in SUBSET, one of
`core' or `non-core'")) `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) (newline)
(display (_ " (display (_ "
--key-server=HOST use HOST as the OpenPGP key server")) --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. ;; XXX: Fails to catch MPFR/MPC, whose *source* is used as input.
(member (package-name package) names)))) (member (package-name package) names))))
(let* ((opts (parse-options)) (let* ((opts (parse-options))
(update? (assoc-ref opts 'update?)) (update? (assoc-ref opts 'update?))
(key-download (assoc-ref opts 'key-download)) (list-dependent? (assoc-ref opts 'list-dependent?))
(key-download (assoc-ref opts 'key-download))
(packages (packages
(match (concatenate (match (concatenate
(filter-map (match-lambda (filter-map (match-lambda
@ -220,26 +230,48 @@ update would trigger a complete rebuild."
(some ; user-specified packages (some ; user-specified packages
some)))) some))))
(with-error-handling (with-error-handling
(if update? (cond
(let ((store (open-connection))) (list-dependent?
(parameterize ((%openpgp-key-server (let* ((rebuilds (map package-full-name
(or (assoc-ref opts 'key-server) (package-covering-dependents packages)))
(%openpgp-key-server))) (total-dependents
(%gpg-command (length (package-transitive-dependents packages))))
(or (assoc-ref opts 'gpg-command) (if (= total-dependents 0)
(%gpg-command)))) (format (current-output-port)
(for-each (N_ "No dependents other than itself: ~{~a~}~%"
(cut update-package store <> #:key-download key-download) "No dependents other than themselves: ~{~a~^ ~}~%"
packages))) (length packages))
(for-each (lambda (package) (map package-full-name packages))
(match (false-if-exception (package-update-path package)) (format (current-output-port)
((new-version . directory) (N_ (N_ "A single dependent package: ~2*~{~a~}~%"
(let ((loc (or (package-field-location package 'version) "Building the following package would ensure ~d \
(package-location package)))) dependent packages are rebuilt; ~*~{~a~^ ~}~%"
(format (current-error-port) total-dependents)
(_ "~a: ~a would be upgraded from ~a to ~a~%") "Building the following ~d packages would ensure ~d \
(location->string loc) dependent packages are rebuilt: ~{~a~^ ~}~%"
(package-name package) (package-version package) (length rebuilds))
new-version))) (length rebuilds) total-dependents rebuilds))))
(_ #f))) (update?
packages))))) (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))))))

View File

@ -95,8 +95,8 @@
(store-lift show-what-to-build)) (store-lift show-what-to-build))
(define* (copy-closure item target (define* (copy-item item target
#:key (log-port (current-error-port))) #:key (log-port (current-error-port)))
"Copy ITEM to the store under root directory TARGET and register it." "Copy ITEM to the store under root directory TARGET and register it."
(mlet* %store-monad ((refs (references* item))) (mlet* %store-monad ((refs (references* item)))
(let ((dest (string-append target item)) (let ((dest (string-append target item))
@ -118,6 +118,18 @@
(return #t)))) (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 (define* (install os-drv target
#:key (log-port (current-output-port)) #:key (log-port (current-output-port))
grub? grub.cfg device) 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))) (mkdir-p (string-append target (%store-prefix)))
;; Copy items to the new store. ;; Copy items to the new store.
(sequence %store-monad (copy-closure to-copy target #:log-port log-port)))))
(map (cut copy-closure <> target #:log-port log-port)
to-copy))))))
(mlet* %store-monad ((os-dir -> (derivation->output-path os-drv)) (mlet* %store-monad ((os-dir -> (derivation->output-path os-drv))
(refs (references* os-dir)) (% (maybe-copy os-dir)))
(lst -> (delete-duplicates (cons os-dir refs)
string=?))
(to-copy (topologically-sorted* lst))
(% (maybe-copy to-copy)))
;; Create a bunch of additional files. ;; Create a bunch of additional files.
(format log-port "populating '~a'...~%" target) (format log-port "populating '~a'...~%" target)
@ -166,6 +172,16 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
;; The system profile. ;; The system profile.
(string-append %state-directory "/profiles/system")) (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 (define* (switch-to-system os
#:optional (profile %system-profile)) #:optional (profile %system-profile))
"Make a new generation of PROFILE pointing to the directory of OS, switch to "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) (switch-symlinks profile generation)
(format #t (_ "activating system...~%")) (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 ...'. ;; TODO: Run 'deco reload ...'.
))) )))
@ -293,7 +313,8 @@ actions."
(mlet %store-monad ((% (switch-to-system os))) (mlet %store-monad ((% (switch-to-system os)))
(when grub? (when grub?
(unless (false-if-exception (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'~%") (leave (_ "failed to install GRUB on device '~a'~%")
device))) device)))
(return #t))) (return #t)))

View File

@ -453,9 +453,23 @@ WIDTH columns."
(fill-paragraph str width (fill-paragraph str width
(string-length "description: "))))) (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. ;; Note: Don't i18n field names so that people can post-process it.
(format port "name: ~a~%" (package-name p)) (format port "name: ~a~%" (package-name p))
(format port "version: ~a~%" (package-version 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~%" (format port "location: ~a~%"
(or (and=> (package-location p) location->string) (or (and=> (package-location p) location->string)
(_ "unknown"))) (_ "unknown")))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -72,6 +73,8 @@
call-with-temporary-output-file call-with-temporary-output-file
with-atomic-file-output with-atomic-file-output
fold2 fold2
fold-tree
fold-tree-leaves
filtered-port filtered-port
compressed-port compressed-port
@ -649,6 +652,36 @@ output port, and PROC's result is returned."
(lambda (result1 result2) (lambda (result1 result2)
(fold2 proc result1 result2 (cdr lst1) (cdr lst2))))))))) (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. ;;; Source location.

View File

@ -4,6 +4,7 @@ de
en@boldquot en@boldquot
en@quot en@quot
eo eo
hu
pt_BR pt_BR
sr sr
vi vi

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix 0.7-pre1\n" "Project-Id-Version: guix 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2014-07-13 20:38+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.5.4\n"
#: gnu/packages.scm:95 #: gnu/packages.scm:102
#, scheme-format #, scheme-format
msgid "cannot access `~a': ~a~%" msgid "cannot access `~a': ~a~%"
msgstr "Zugriff auf »~a« nicht möglich: ~a~%" msgstr "Zugriff auf »~a« nicht möglich: ~a~%"
@ -165,9 +165,9 @@ msgid ""
msgstr "" msgstr ""
#: guix/scripts/build.scm:246 guix/scripts/download.scm:53 #: 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/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 "" msgid ""
"\n" "\n"
" -h, --help display this help and exit" " -h, --help display this help and exit"
@ -176,9 +176,9 @@ msgstr ""
" -h, --help diese Hilfe anzeigen und beenden" " -h, --help diese Hilfe anzeigen und beenden"
#: guix/scripts/build.scm:248 guix/scripts/download.scm:55 #: 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/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 "" msgid ""
"\n" "\n"
" -V, --version display version information and exit" " -V, --version display version information and exit"
@ -192,8 +192,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
msgstr "" msgstr ""
#: guix/scripts/build.scm:397 guix/scripts/download.scm:96 #: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122 #: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386 #: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format #, scheme-format
msgid "~A: unrecognized option~%" msgid "~A: unrecognized option~%"
msgstr "~A: nicht erkannte Option~%" msgstr "~A: nicht erkannte Option~%"
@ -244,8 +244,8 @@ msgstr "Leeres Profil konnte nicht erstellt werden~%"
msgid "switching from generation ~a to ~a~%" msgid "switching from generation ~a to ~a~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:108 guix/scripts/package.scm:866 #: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:978 #: guix/scripts/package.scm:985
#, scheme-format #, scheme-format
msgid "profile '~a' does not exist~%" msgid "profile '~a' does not exist~%"
msgstr "Profil »~a« existiert nicht~%" msgstr "Profil »~a« existiert nicht~%"
@ -399,62 +399,71 @@ msgid ""
" list available packages matching REGEXP" " list available packages matching REGEXP"
msgstr "" 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 #, scheme-format
msgid "~A: extraneous argument~%" msgid "~A: extraneous argument~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:775 #: guix/scripts/package.scm:782
#, scheme-format #, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:797 #: guix/scripts/package.scm:804
#, scheme-format #, scheme-format
msgid "error: while creating directory `~a': ~a~%" msgid "error: while creating directory `~a': ~a~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:801 #: guix/scripts/package.scm:808
#, scheme-format #, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%" msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:808 #: guix/scripts/package.scm:815
#, scheme-format #, scheme-format
msgid "error: directory `~a' is not owned by you~%" msgid "error: directory `~a' is not owned by you~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:811 #: guix/scripts/package.scm:818
#, scheme-format #, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%" msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:836 #: guix/scripts/package.scm:843
#, scheme-format #, scheme-format
msgid "deleting ~a~%" msgid "deleting ~a~%"
msgstr "" msgstr ""
#: guix/scripts/package.scm:889 guix/scripts/package.scm:994 #: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
#, scheme-format #, scheme-format
msgid "invalid syntax: ~a~%" msgid "invalid syntax: ~a~%"
msgstr "Unzulässige Syntax: ~a~%" msgstr "Unzulässige Syntax: ~a~%"
#: guix/scripts/package.scm:918 #: guix/scripts/package.scm:925
#, scheme-format #, scheme-format
msgid "nothing to be done~%" msgid "nothing to be done~%"
msgstr "Nichts zu tun~%" msgstr "Nichts zu tun~%"
#: guix/scripts/package.scm:941 #: guix/scripts/package.scm:948
#, scheme-format #, scheme-format
msgid "~a package in profile~%" msgid "~a package in profile~%"
msgstr "~a-Paket im Profil~%" msgstr "~a-Paket im Profil~%"
#: guix/scripts/package.scm:956 #: guix/scripts/package.scm:963
#, scheme-format #, scheme-format
msgid "Generation ~a\t~a" msgid "Generation ~a\t~a"
msgstr "" msgstr ""
#: guix/scripts/package.scm:963 #: guix/scripts/package.scm:970
#, scheme-format #, scheme-format
msgid "~a\t(current)~%" msgid "~a\t(current)~%"
msgstr "~a\t(aktuell)~%" msgstr "~a\t(aktuell)~%"
@ -747,93 +756,93 @@ msgstr "~a: ~a~%"
msgid "failed to load operating system file '~a': ~s~%" msgid "failed to load operating system file '~a': ~s~%"
msgstr "" msgstr ""
#: guix/scripts/system.scm:111 #: guix/scripts/system.scm:116
#, scheme-format #, scheme-format
msgid "failed to register '~a' under '~a'~%" msgid "failed to register '~a' under '~a'~%"
msgstr "" msgstr ""
#: guix/scripts/system.scm:127 #: guix/scripts/system.scm:144
#, scheme-format #, scheme-format
msgid "initializing the current root file system~%" msgid "initializing the current root file system~%"
msgstr "" msgstr ""
#: guix/scripts/system.scm:151 guix/scripts/system.scm:291 #: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#, scheme-format #, scheme-format
msgid "failed to install GRUB on device '~a'~%" msgid "failed to install GRUB on device '~a'~%"
msgstr "" msgstr ""
#: guix/scripts/system.scm:176 #: guix/scripts/system.scm:197
#, scheme-format #, scheme-format
msgid "activating system...~%" msgid "activating system...~%"
msgstr "System wird aktiviert …~%" msgstr "System wird aktiviert …~%"
#: guix/scripts/system.scm:211 #: guix/scripts/system.scm:236
#, scheme-format #, scheme-format
msgid "unrecognized boot parameters for '~a'~%" msgid "unrecognized boot parameters for '~a'~%"
msgstr "Nicht erkannte Startparameter für »~a«~%" msgstr "Nicht erkannte Startparameter für »~a«~%"
#: guix/scripts/system.scm:295 #: guix/scripts/system.scm:323
#, scheme-format #, scheme-format
msgid "initializing operating system under '~a'...~%" msgid "initializing operating system under '~a'...~%"
msgstr "" msgstr ""
#: guix/scripts/system.scm:311 #: guix/scripts/system.scm:339
msgid "" msgid ""
"Usage: guix system [OPTION] ACTION FILE\n" "Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n" "Build the operating system declared in FILE according to ACTION.\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:314 #: guix/scripts/system.scm:342
msgid "The valid values for ACTION are:\n" msgid "The valid values for ACTION are:\n"
msgstr "Die gültigen Werte für AKTION sind:\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" msgid " - 'reconfigure', switch to a new operating system configuration\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:317 #: guix/scripts/system.scm:345
msgid " - 'build', build the operating system without installing anything\n" msgid " - 'build', build the operating system without installing anything\n"
msgstr "" 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" msgid " - 'vm', build a virtual machine image that shares the host's store\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:321 #: guix/scripts/system.scm:349
msgid " - 'vm-image', build a freestanding virtual machine image\n" msgid " - 'vm-image', build a freestanding virtual machine image\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:323 #: guix/scripts/system.scm:351
msgid " - 'disk-image', build a disk image, suitable for a USB stick\n" msgid " - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:325 #: guix/scripts/system.scm:353
msgid " - 'init', initialize a root file system to run GNU.\n" msgid " - 'init', initialize a root file system to run GNU.\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:329 #: guix/scripts/system.scm:357
msgid "" msgid ""
"\n" "\n"
" --image-size=SIZE for 'vm-image', produce an image of SIZE" " --image-size=SIZE for 'vm-image', produce an image of SIZE"
msgstr "" msgstr ""
#: guix/scripts/system.scm:331 #: guix/scripts/system.scm:359
msgid "" msgid ""
"\n" "\n"
" --no-grub for 'init', do not install GRUB" " --no-grub for 'init', do not install GRUB"
msgstr "" msgstr ""
#: guix/scripts/system.scm:394 #: guix/scripts/system.scm:422
#, scheme-format #, scheme-format
msgid "~a: unknown action~%" msgid "~a: unknown action~%"
msgstr "~a: unbekannte Aktion~%" msgstr "~a: unbekannte Aktion~%"
#: guix/scripts/system.scm:411 #: guix/scripts/system.scm:439
#, scheme-format #, scheme-format
msgid "wrong number of arguments for action '~a'~%" msgid "wrong number of arguments for action '~a'~%"
msgstr "Falsche Anzahl an Argumenten für Aktion »~a«~%" msgstr "Falsche Anzahl an Argumenten für Aktion »~a«~%"
#: guix/scripts/system.scm:431 #: guix/scripts/system.scm:459
#, scheme-format #, scheme-format
msgid "no configuration file specified~%" msgid "no configuration file specified~%"
msgstr "Keine Konfigurationsdatei angegeben~%" msgstr "Keine Konfigurationsdatei angegeben~%"
@ -976,21 +985,21 @@ msgstr "<unbekannter Ort>"
msgid "failed to create configuration directory `~a': ~a~%" msgid "failed to create configuration directory `~a': ~a~%"
msgstr "Konfigurationsverzeichnis »~a« konnte nicht angelegt werden: ~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" msgid "unknown"
msgstr "unbekannt" msgstr "unbekannt"
#: guix/ui.scm:584 #: guix/ui.scm:598
#, scheme-format #, scheme-format
msgid "invalid argument: ~a~%" msgid "invalid argument: ~a~%"
msgstr "Ungültiges Argument: ~a~%" msgstr "Ungültiges Argument: ~a~%"
#: guix/ui.scm:589 #: guix/ui.scm:603
#, scheme-format #, scheme-format
msgid "Try `guix --help' for more information.~%" msgid "Try `guix --help' for more information.~%"
msgstr "Rufen Sie »guix --help« auf, um weitere Informationen zu erhalten.~%" msgstr "Rufen Sie »guix --help« auf, um weitere Informationen zu erhalten.~%"
#: guix/ui.scm:619 #: guix/ui.scm:633
msgid "" msgid ""
"Usage: guix COMMAND ARGS...\n" "Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n" "Run COMMAND with ARGS.\n"
@ -998,21 +1007,21 @@ msgstr ""
"Aufruf: guix BEFEHL ARGUMENTE …\n" "Aufruf: guix BEFEHL ARGUMENTE …\n"
"BEFEHL mit ARGUMENTEN ausführen.\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" msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "BEFEHL muss einer der unten aufgelisteten Unterbefehle sein:\n" msgstr "BEFEHL muss einer der unten aufgelisteten Unterbefehle sein:\n"
#: guix/ui.scm:642 #: guix/ui.scm:656
#, scheme-format #, scheme-format
msgid "guix: ~a: command not found~%" msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: Befehl nicht gefunden~%" msgstr "guix: ~a: Befehl nicht gefunden~%"
#: guix/ui.scm:660 #: guix/ui.scm:674
#, scheme-format #, scheme-format
msgid "guix: missing command name~%" msgid "guix: missing command name~%"
msgstr "guix: Befehlsname fehlt~%" msgstr "guix: Befehlsname fehlt~%"
#: guix/ui.scm:668 #: guix/ui.scm:682
#, scheme-format #, scheme-format
msgid "guix: unrecognized option '~a'~%" msgid "guix: unrecognized option '~a'~%"
msgstr "guix: nicht erkannte Option »~a«~%" msgstr "guix: nicht erkannte Option »~a«~%"

View File

@ -7,17 +7,17 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix 0.7-pre1\n" "Project-Id-Version: guix 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2014-07-14 11:29-0300\n"
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n" "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: Esperanto\n" "Language: eo\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n" "X-Generator: Poedit 1.5.4\n"
#: gnu/packages.scm:95 #: gnu/packages.scm:102
#, scheme-format #, scheme-format
msgid "cannot access `~a': ~a~%" msgid "cannot access `~a': ~a~%"
msgstr "ne eblas atingi '~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" " --log-file liveri la protokol-dosierajn nomojn por la indikitaj derivaĵoj"
#: guix/scripts/build.scm:246 guix/scripts/download.scm:53 #: 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/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 "" msgid ""
"\n" "\n"
" -h, --help display this help and exit" " -h, --help display this help and exit"
@ -214,9 +214,9 @@ msgstr ""
" -h, --help montri ĉi tiun helpon kaj eliri" " -h, --help montri ĉi tiun helpon kaj eliri"
#: guix/scripts/build.scm:248 guix/scripts/download.scm:55 #: 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/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 "" msgid ""
"\n" "\n"
" -V, --version display version information and exit" " -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~}~%" msgstr "fontoj ne kongruas al iu ajn pako:~{ ~a~}~%"
#: guix/scripts/build.scm:397 guix/scripts/download.scm:96 #: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122 #: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386 #: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format #, scheme-format
msgid "~A: unrecognized option~%" msgid "~A: unrecognized option~%"
msgstr "~A: nerekonata modifilo~%" msgstr "~A: nerekonata modifilo~%"
@ -290,8 +290,8 @@ msgstr "fiasko dum konstruo de malplena profilo~%"
msgid "switching from generation ~a to ~a~%" msgid "switching from generation ~a to ~a~%"
msgstr "alterno el generacio ~a al ~a~%" msgstr "alterno el generacio ~a al ~a~%"
#: guix/scripts/package.scm:108 guix/scripts/package.scm:866 #: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:978 #: guix/scripts/package.scm:985
#, scheme-format #, scheme-format
msgid "profile '~a' does not exist~%" msgid "profile '~a' does not exist~%"
msgstr "profilo '~a' ne ekzistas~%" msgstr "profilo '~a' ne ekzistas~%"
@ -476,62 +476,71 @@ msgstr ""
" -A, --list-available[=REGESP]\n" " -A, --list-available[=REGESP]\n"
" listigi disponeblajn pakojn kongruantajn al REGESP" " 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 #, scheme-format
msgid "~A: extraneous argument~%" msgid "~A: extraneous argument~%"
msgstr "~A: fremda argumento~%" msgstr "~A: fremda argumento~%"
#: guix/scripts/package.scm:775 #: guix/scripts/package.scm:782
#, scheme-format #, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%" msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%"
#: guix/scripts/package.scm:797 #: guix/scripts/package.scm:804
#, scheme-format #, scheme-format
msgid "error: while creating directory `~a': ~a~%" msgid "error: while creating directory `~a': ~a~%"
msgstr "eraro: dum kreo de dosierujo '~a': ~a~%" msgstr "eraro: dum kreo de dosierujo '~a': ~a~%"
#: guix/scripts/package.scm:801 #: guix/scripts/package.scm:808
#, scheme-format #, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%" msgid "Please create the `~a' directory, with you as the owner.~%"
msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%" msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%"
#: guix/scripts/package.scm:808 #: guix/scripts/package.scm:815
#, scheme-format #, scheme-format
msgid "error: directory `~a' is not owned by you~%" msgid "error: directory `~a' is not owned by you~%"
msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%" msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%"
#: guix/scripts/package.scm:811 #: guix/scripts/package.scm:818
#, scheme-format #, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%" msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~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 #, scheme-format
msgid "deleting ~a~%" msgid "deleting ~a~%"
msgstr "ni forigas ~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 #, scheme-format
msgid "invalid syntax: ~a~%" msgid "invalid syntax: ~a~%"
msgstr "malvalida sintakso: ~a~%" msgstr "malvalida sintakso: ~a~%"
#: guix/scripts/package.scm:918 #: guix/scripts/package.scm:925
#, scheme-format #, scheme-format
msgid "nothing to be done~%" msgid "nothing to be done~%"
msgstr "nenio por fari~%" msgstr "nenio por fari~%"
#: guix/scripts/package.scm:941 #: guix/scripts/package.scm:948
#, scheme-format #, scheme-format
msgid "~a package in profile~%" msgid "~a package in profile~%"
msgstr "pako ~a en profilo~%" msgstr "pako ~a en profilo~%"
#: guix/scripts/package.scm:956 #: guix/scripts/package.scm:963
#, scheme-format #, scheme-format
msgid "Generation ~a\t~a" msgid "Generation ~a\t~a"
msgstr "Generacio ~a\t~a" msgstr "Generacio ~a\t~a"
#: guix/scripts/package.scm:963 #: guix/scripts/package.scm:970
#, scheme-format #, scheme-format
msgid "~a\t(current)~%" msgid "~a\t(current)~%"
msgstr "~a\t(nuna)~%" msgstr "~a\t(nuna)~%"
@ -864,37 +873,37 @@ msgstr "~a: ~a~%"
msgid "failed to load operating system file '~a': ~s~%" msgid "failed to load operating system file '~a': ~s~%"
msgstr "fiasko dum ŝargo je operaci-sistema dosiero '~a': ~s~%" msgstr "fiasko dum ŝargo je operaci-sistema dosiero '~a': ~s~%"
#: guix/scripts/system.scm:111 #: guix/scripts/system.scm:116
#, scheme-format #, scheme-format
msgid "failed to register '~a' under '~a'~%" msgid "failed to register '~a' under '~a'~%"
msgstr "fiasko dum registro de '~a' sub '~a'~%" msgstr "fiasko dum registro de '~a' sub '~a'~%"
#: guix/scripts/system.scm:127 #: guix/scripts/system.scm:144
#, scheme-format #, scheme-format
msgid "initializing the current root file system~%" msgid "initializing the current root file system~%"
msgstr "ekigado de la nuna radika dosiersistemo~%" 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 #, scheme-format
msgid "failed to install GRUB on device '~a'~%" msgid "failed to install GRUB on device '~a'~%"
msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%" msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%"
#: guix/scripts/system.scm:176 #: guix/scripts/system.scm:197
#, scheme-format #, scheme-format
msgid "activating system...~%" msgid "activating system...~%"
msgstr "ni aktivas la sistemon...~%" msgstr "ni aktivas la sistemon...~%"
#: guix/scripts/system.scm:211 #: guix/scripts/system.scm:236
#, scheme-format #, scheme-format
msgid "unrecognized boot parameters for '~a'~%" msgid "unrecognized boot parameters for '~a'~%"
msgstr "nerekonataj ekŝargaj parametroj por '~a'~%" msgstr "nerekonataj ekŝargaj parametroj por '~a'~%"
#: guix/scripts/system.scm:295 #: guix/scripts/system.scm:323
#, scheme-format #, scheme-format
msgid "initializing operating system under '~a'...~%" msgid "initializing operating system under '~a'...~%"
msgstr "ni ekigas la operaci-sistemon sub '~a'...~%" msgstr "ni ekigas la operaci-sistemon sub '~a'...~%"
#: guix/scripts/system.scm:311 #: guix/scripts/system.scm:339
msgid "" msgid ""
"Usage: guix system [OPTION] ACTION FILE\n" "Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n" "Build the operating system declared in FILE according to ACTION.\n"
@ -902,35 +911,35 @@ msgstr ""
"Uzmaniero: guix system [MODIFILO] AGO DOSIERO\n" "Uzmaniero: guix system [MODIFILO] AGO DOSIERO\n"
"Konstrui la operaci-sistemon deklarita en DOSIERO akorde al AGO.\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" msgid "The valid values for ACTION are:\n"
msgstr "La validaj valoroj por AGO estas:\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" msgid " - 'reconfigure', switch to a new operating system configuration\n"
msgstr " - 'reconfigure', alterni al nova operaci-sistema agordaro\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" msgid " - 'build', build the operating system without installing anything\n"
msgstr " - 'build', konstrui la operaci-sistemon sen instali ion ajn\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" 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" 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" msgid " - 'vm-image', build a freestanding virtual machine image\n"
msgstr " - 'vm-image', konstrui memstaran virtual-maŝinan bildon\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" 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" 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" msgid " - 'init', initialize a root file system to run GNU.\n"
msgstr " - 'init', ekigi radikan dosiersistemon por lanĉi GNU-on.\n" msgstr " - 'init', ekigi radikan dosiersistemon por lanĉi GNU-on.\n"
#: guix/scripts/system.scm:329 #: guix/scripts/system.scm:357
msgid "" msgid ""
"\n" "\n"
" --image-size=SIZE for 'vm-image', produce an image of SIZE" " --image-size=SIZE for 'vm-image', produce an image of SIZE"
@ -938,7 +947,7 @@ msgstr ""
"\n" "\n"
" --image-size=GRANDO por 'vm-image', produkti bildon je GRANDO" " --image-size=GRANDO por 'vm-image', produkti bildon je GRANDO"
#: guix/scripts/system.scm:331 #: guix/scripts/system.scm:359
msgid "" msgid ""
"\n" "\n"
" --no-grub for 'init', do not install GRUB" " --no-grub for 'init', do not install GRUB"
@ -946,17 +955,17 @@ msgstr ""
"\n" "\n"
" --no-grub por 'init', ne instali GRUB" " --no-grub por 'init', ne instali GRUB"
#: guix/scripts/system.scm:394 #: guix/scripts/system.scm:422
#, scheme-format #, scheme-format
msgid "~a: unknown action~%" msgid "~a: unknown action~%"
msgstr "~a: nekonata pako~%" msgstr "~a: nekonata pako~%"
#: guix/scripts/system.scm:411 #: guix/scripts/system.scm:439
#, scheme-format #, scheme-format
msgid "wrong number of arguments for action '~a'~%" msgid "wrong number of arguments for action '~a'~%"
msgstr "malĝusta nombro da argumentoj por la ago '~a'~%" msgstr "malĝusta nombro da argumentoj por la ago '~a'~%"
#: guix/scripts/system.scm:431 #: guix/scripts/system.scm:459
#, scheme-format #, scheme-format
msgid "no configuration file specified~%" msgid "no configuration file specified~%"
msgstr "neniu agorda dosiero estis indikata~%" msgstr "neniu agorda dosiero estis indikata~%"
@ -1103,21 +1112,21 @@ msgstr "<nekonata loko>"
msgid "failed to create configuration directory `~a': ~a~%" msgid "failed to create configuration directory `~a': ~a~%"
msgstr "fiasko dum kreo de agorda dosierujo '~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" msgid "unknown"
msgstr "nekonata" msgstr "nekonata"
#: guix/ui.scm:584 #: guix/ui.scm:598
#, scheme-format #, scheme-format
msgid "invalid argument: ~a~%" msgid "invalid argument: ~a~%"
msgstr "malvalida argumento: ~a~%" msgstr "malvalida argumento: ~a~%"
#: guix/ui.scm:589 #: guix/ui.scm:603
#, scheme-format #, scheme-format
msgid "Try `guix --help' for more information.~%" msgid "Try `guix --help' for more information.~%"
msgstr "Provu 'guix --help' por pli da informo.~%" msgstr "Provu 'guix --help' por pli da informo.~%"
#: guix/ui.scm:619 #: guix/ui.scm:633
msgid "" msgid ""
"Usage: guix COMMAND ARGS...\n" "Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n" "Run COMMAND with ARGS.\n"
@ -1125,21 +1134,21 @@ msgstr ""
"Uzmaniero: guix KOMANDO ARGj...\n" "Uzmaniero: guix KOMANDO ARGj...\n"
"Lanĉas KOMANDOn kun 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" msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n" msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n"
#: guix/ui.scm:642 #: guix/ui.scm:656
#, scheme-format #, scheme-format
msgid "guix: ~a: command not found~%" msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: komando ne trovita~%" msgstr "guix: ~a: komando ne trovita~%"
#: guix/ui.scm:660 #: guix/ui.scm:674
#, scheme-format #, scheme-format
msgid "guix: missing command name~%" msgid "guix: missing command name~%"
msgstr "guix: mankas komanda nomo~%" msgstr "guix: mankas komanda nomo~%"
#: guix/ui.scm:668 #: guix/ui.scm:682
#, scheme-format #, scheme-format
msgid "guix: unrecognized option '~a'~%" msgid "guix: unrecognized option '~a'~%"
msgstr "guix: nerekonata modifilo: '~a'~%" msgstr "guix: nerekonata modifilo: '~a'~%"

1277
po/guix/hu.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -8,11 +8,10 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix 0.4-pre2\n" "Project-Id-Version: guix 0.4-pre2\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2013-09-28 21:29-0300\n"
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n" "Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge." "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
"net>\n"
"Language: pt_BR\n" "Language: pt_BR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -20,17 +19,17 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 1.5.7\n" "X-Generator: Poedit 1.5.7\n"
#: gnu/packages.scm:95 #: gnu/packages.scm:102
#, scheme-format #, scheme-format
msgid "cannot access `~a': ~a~%" msgid "cannot access `~a': ~a~%"
msgstr "não foi possível acessar \"~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 #, scheme-format
msgid "ambiguous package specification `~a'~%" msgid "ambiguous package specification `~a'~%"
msgstr "especificação ambígua de pacote \"~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 #, scheme-format
msgid "choosing ~a from ~a~%" msgid "choosing ~a from ~a~%"
msgstr "escolhendo ~a de ~a~%" msgstr "escolhendo ~a de ~a~%"
@ -97,8 +96,7 @@ msgid ""
msgstr "" msgstr ""
"\n" "\n"
" --max-silent-time=SEGUNDOS\n" " --max-silent-time=SEGUNDOS\n"
" marca compilação como falha após SEGUNDOS de " " marca compilação como falha após SEGUNDOS de silêncio"
"silêncio"
#: guix/scripts/build.scm:136 #: guix/scripts/build.scm:136
#, fuzzy #, fuzzy
@ -108,8 +106,7 @@ msgid ""
msgstr "" msgstr ""
"\n" "\n"
" --max-silent-time=SEGUNDOS\n" " --max-silent-time=SEGUNDOS\n"
" marca compilação como falha após SEGUNDOS de " " marca compilação como falha após SEGUNDOS de silêncio"
"silêncio"
#: guix/scripts/build.scm:138 #: guix/scripts/build.scm:138
msgid "" msgid ""
@ -125,8 +122,7 @@ msgid ""
" -c, --cores=N allow the use of up to N CPU cores for the build" " -c, --cores=N allow the use of up to N CPU cores for the build"
msgstr "" msgstr ""
"\n" "\n"
" -c, --cores=N permite o uso de até N núcleos de CPU para " " -c, --cores=N permite o uso de até N núcleos de CPU para compilação"
"compilação"
#: guix/scripts/build.scm:206 #: guix/scripts/build.scm:206
#, scheme-format #, scheme-format
@ -172,8 +168,7 @@ msgid ""
" --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\"" " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
msgstr "" msgstr ""
"\n" "\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 #: guix/scripts/build.scm:233
msgid "" msgid ""
@ -197,8 +192,7 @@ msgid ""
" as a garbage collector root" " as a garbage collector root"
msgstr "" msgstr ""
"\n" "\n"
" -r, --root=ARQUIVO faz do ARQUIVO um link simbólico para o resultado " " -r, --root=ARQUIVO faz do ARQUIVO um link simbólico para o resultado e\n"
"e\n"
" registra-o, como um coletor de lixo" " registra-o, como um coletor de lixo"
#: guix/scripts/build.scm:241 #: guix/scripts/build.scm:241
@ -208,9 +202,9 @@ msgid ""
msgstr "" msgstr ""
#: guix/scripts/build.scm:246 guix/scripts/download.scm:53 #: 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/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 "" msgid ""
"\n" "\n"
" -h, --help display this help and exit" " -h, --help display this help and exit"
@ -219,9 +213,9 @@ msgstr ""
" -h, --help exibe esta ajuda e sai" " -h, --help exibe esta ajuda e sai"
#: guix/scripts/build.scm:248 guix/scripts/download.scm:55 #: 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/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 "" msgid ""
"\n" "\n"
" -V, --version display version information and exit" " -V, --version display version information and exit"
@ -235,8 +229,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
msgstr "" msgstr ""
#: guix/scripts/build.scm:397 guix/scripts/download.scm:96 #: guix/scripts/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:744 guix/scripts/gc.scm:122 #: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:190 #: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format #, scheme-format
msgid "~A: unrecognized option~%" msgid "~A: unrecognized option~%"
msgstr "~A: opção desconhecida~%" msgstr "~A: opção desconhecida~%"
@ -285,75 +279,74 @@ msgstr "~a: falha ao analisar URI~%"
msgid "~a: download failed~%" msgid "~a: download failed~%"
msgstr "~a: falha no download~%" msgstr "~a: falha no download~%"
#: guix/scripts/package.scm:76 #: guix/scripts/package.scm:88
#, scheme-format #, scheme-format
msgid "failed to build the empty profile~%" msgid "failed to build the empty profile~%"
msgstr "falha ao compilar o perfil vazio~%" msgstr "falha ao compilar o perfil vazio~%"
# geração, criação? # geração, criação?
#: guix/scripts/package.scm:85 #: guix/scripts/package.scm:97
#, scheme-format #, scheme-format
msgid "switching from generation ~a to ~a~%" msgid "switching from generation ~a to ~a~%"
msgstr "trocando para geração de ~a para ~a~%" msgstr "trocando para geração de ~a para ~a~%"
#: guix/scripts/package.scm:96 guix/scripts/package.scm:852 #: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:964 #: guix/scripts/package.scm:985
#, scheme-format #, scheme-format
msgid "profile '~a' does not exist~%" msgid "profile '~a' does not exist~%"
msgstr "perfil \"~a\" não existe~%" msgstr "perfil \"~a\" não existe~%"
#: guix/scripts/package.scm:100 #: guix/scripts/package.scm:112
#, scheme-format #, scheme-format
msgid "nothing to do: already at the empty profile~%" msgid "nothing to do: already at the empty profile~%"
msgstr "nada a ser feito: já está no perfil vazio~%" msgstr "nada a ser feito: já está no perfil vazio~%"
#: guix/scripts/package.scm:185 #: guix/scripts/package.scm:197
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "The following package would be removed:~%~{~a~%~}~%" msgid "The following package would be removed:~%~{~a~%~}~%"
msgstr "O seguinte pacote seria removido:~% ~{~a~%~}~%" msgstr "O seguinte pacote seria removido:~% ~{~a~%~}~%"
#: guix/scripts/package.scm:190 #: guix/scripts/package.scm:202
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "The following package will be removed:~%~{~a~%~}~%" msgid "The following package will be removed:~%~{~a~%~}~%"
msgstr "O seguinte pacote será removido:~% ~{~a~%~}~%" msgstr "O seguinte pacote será removido:~% ~{~a~%~}~%"
#: guix/scripts/package.scm:202 #: guix/scripts/package.scm:214
#, scheme-format #, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%" msgid "The following package would be installed:~%~{~a~%~}~%"
msgstr "O seguinte pacote seria instalado:~%~{~a~%~}~%" msgstr "O seguinte pacote seria instalado:~%~{~a~%~}~%"
#: guix/scripts/package.scm:207 #: guix/scripts/package.scm:219
#, scheme-format #, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%" msgid "The following package will be installed:~%~{~a~%~}~%"
msgstr "O seguinte pacote será instalado:~%~{~a~%~}~%" msgstr "O seguinte pacote será instalado:~%~{~a~%~}~%"
#: guix/scripts/package.scm:327 #: guix/scripts/package.scm:339
#, scheme-format #, scheme-format
msgid "package `~a' lacks output `~a'~%" msgid "package `~a' lacks output `~a'~%"
msgstr "pacote \"~a\" carece de mensagem de saída \"~a\"~%" msgstr "pacote \"~a\" carece de mensagem de saída \"~a\"~%"
#: guix/scripts/package.scm:344 #: guix/scripts/package.scm:356
#, scheme-format #, scheme-format
msgid "~a: package not found~%" msgid "~a: package not found~%"
msgstr "~a: pacote não encontrado~%" msgstr "~a: pacote não encontrado~%"
#: guix/scripts/package.scm:379 #: guix/scripts/package.scm:391
#, scheme-format #, scheme-format
msgid "looking for the latest release of GNU ~a..." msgid "looking for the latest release of GNU ~a..."
msgstr "procurando pelo último lançamento do GNU ~a..." msgstr "procurando pelo último lançamento do GNU ~a..."
#: guix/scripts/package.scm:383 #: guix/scripts/package.scm:395
#, scheme-format #, scheme-format
msgid "~a: note: using ~a but ~a is available upstream~%" msgid "~a: note: using ~a but ~a is available upstream~%"
msgstr "~a: nota: usando ~a, mas ~a está disponível no 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 #, scheme-format
msgid "The following environment variable definitions may be needed:~%" msgid "The following environment variable definitions may be needed:~%"
msgstr "" msgstr "As seguintes definições de variável de ambiente podem ser necessárias:~%"
"As seguintes definições de variável de ambiente podem ser necessárias:~%"
#: guix/scripts/package.scm:471 #: guix/scripts/package.scm:483
msgid "" msgid ""
"Usage: guix package [OPTION]... PACKAGES...\n" "Usage: guix package [OPTION]... PACKAGES...\n"
"Install, remove, or upgrade PACKAGES in a single transaction.\n" "Install, remove, or upgrade PACKAGES in a single transaction.\n"
@ -361,7 +354,7 @@ msgstr ""
"Uso: guix package [OPÇÃO]... PACOTES...\n" "Uso: guix package [OPÇÃO]... PACOTES...\n"
"Instala, remove ou atualiza PACOTES em uma única transação.\n" "Instala, remove ou atualiza PACOTES em uma única transação.\n"
#: guix/scripts/package.scm:473 #: guix/scripts/package.scm:485
msgid "" msgid ""
"\n" "\n"
" -i, --install=PACKAGE install PACKAGE" " -i, --install=PACKAGE install PACKAGE"
@ -369,7 +362,7 @@ msgstr ""
"\n" "\n"
" -i, --install=PACOTE instala PACOTE" " -i, --install=PACOTE instala PACOTE"
#: guix/scripts/package.scm:475 #: guix/scripts/package.scm:487
msgid "" msgid ""
"\n" "\n"
" -e, --install-from-expression=EXP\n" " -e, --install-from-expression=EXP\n"
@ -379,7 +372,7 @@ msgstr ""
" -e, --install-from-expression=EXP\n" " -e, --install-from-expression=EXP\n"
" instala o pacote que EXPR corresponder" " instala o pacote que EXPR corresponder"
#: guix/scripts/package.scm:478 #: guix/scripts/package.scm:490
msgid "" msgid ""
"\n" "\n"
" -r, --remove=PACKAGE remove PACKAGE" " -r, --remove=PACKAGE remove PACKAGE"
@ -387,17 +380,16 @@ msgstr ""
"\n" "\n"
" -r, --remove=PACOTE remove PACOTE" " -r, --remove=PACOTE remove PACOTE"
#: guix/scripts/package.scm:480 #: guix/scripts/package.scm:492
msgid "" msgid ""
"\n" "\n"
" -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP" " -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
msgstr "" msgstr ""
"\n" "\n"
" -u, --upgrade[=REGEXP] atualiza todos os pacotes instalados " " -u, --upgrade[=REGEXP] atualiza todos os pacotes instalados correspondendo\n"
"correspondendo\n"
" à REGEXP" " à REGEXP"
#: guix/scripts/package.scm:482 #: guix/scripts/package.scm:494
msgid "" msgid ""
"\n" "\n"
" --roll-back roll back to the previous generation" " --roll-back roll back to the previous generation"
@ -405,7 +397,7 @@ msgstr ""
"\n" "\n"
" --roll-back Reverte para a geração anterior" " --roll-back Reverte para a geração anterior"
#: guix/scripts/package.scm:484 #: guix/scripts/package.scm:496
msgid "" msgid ""
"\n" "\n"
" --search-paths display needed environment variable definitions" " --search-paths display needed environment variable definitions"
@ -413,7 +405,7 @@ msgstr ""
"\n" "\n"
" --search-paths exibe definições necessárias de variável de ambiente" " --search-paths exibe definições necessárias de variável de ambiente"
#: guix/scripts/package.scm:486 #: guix/scripts/package.scm:498
msgid "" msgid ""
"\n" "\n"
" -l, --list-generations[=PATTERN]\n" " -l, --list-generations[=PATTERN]\n"
@ -423,7 +415,7 @@ msgstr ""
" -I, --list-generations[=PADRÃO]\n" " -I, --list-generations[=PADRÃO]\n"
" lista criações correspondendo ao PADRÃO" " lista criações correspondendo ao PADRÃO"
#: guix/scripts/package.scm:489 #: guix/scripts/package.scm:501
#, fuzzy #, fuzzy
msgid "" msgid ""
"\n" "\n"
@ -434,7 +426,7 @@ msgstr ""
" -I, --list-generations[=PADRÃO]\n" " -I, --list-generations[=PADRÃO]\n"
" lista criações correspondendo ao PADRÃO" " lista criações correspondendo ao PADRÃO"
#: guix/scripts/package.scm:492 #: guix/scripts/package.scm:504
msgid "" msgid ""
"\n" "\n"
" -p, --profile=PROFILE use PROFILE instead of the user's default profile" " -p, --profile=PROFILE use PROFILE instead of the user's default profile"
@ -442,7 +434,7 @@ msgstr ""
"\n" "\n"
" -p, --profile=PERFIL usa PERFIL em vez do perfil padrão do usuário" " -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 "" msgid ""
"\n" "\n"
" --bootstrap use the bootstrap Guile to build the profile" " --bootstrap use the bootstrap Guile to build the profile"
@ -450,7 +442,7 @@ msgstr ""
"\n" "\n"
" --bootstrap usa a inicialização do Guile para compilar o perfil" " --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 "" msgid ""
"\n" "\n"
" --verbose produce verbose output" " --verbose produce verbose output"
@ -458,7 +450,7 @@ msgstr ""
"\n" "\n"
" --verbose produz uma saída mais detalhada" " --verbose produz uma saída mais detalhada"
#: guix/scripts/package.scm:500 #: guix/scripts/package.scm:512
msgid "" msgid ""
"\n" "\n"
" -s, --search=REGEXP search in synopsis and description using REGEXP" " -s, --search=REGEXP search in synopsis and description using REGEXP"
@ -466,7 +458,7 @@ msgstr ""
"\n" "\n"
" -s, --search=REGEXP pesquisa na sinopse e descrição usando REGEXP" " -s, --search=REGEXP pesquisa na sinopse e descrição usando REGEXP"
#: guix/scripts/package.scm:502 #: guix/scripts/package.scm:514
msgid "" msgid ""
"\n" "\n"
" -I, --list-installed[=REGEXP]\n" " -I, --list-installed[=REGEXP]\n"
@ -476,7 +468,7 @@ msgstr ""
" -I, --list-installed[=REGEXP]\n" " -I, --list-installed[=REGEXP]\n"
" lista pacotes instalados correspondentes a REGEXP" " lista pacotes instalados correspondentes a REGEXP"
#: guix/scripts/package.scm:505 #: guix/scripts/package.scm:517
msgid "" msgid ""
"\n" "\n"
" -A, --list-available[=REGEXP]\n" " -A, --list-available[=REGEXP]\n"
@ -486,62 +478,71 @@ msgstr ""
" -A, --list-available[=REGEXP]\n" " -A, --list-available[=REGEXP]\n"
" lista pacotes disponíveis correspondentes a REGEXP" " 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 #, scheme-format
msgid "~A: extraneous argument~%" msgid "~A: extraneous argument~%"
msgstr "~A: argumento estranho~%" msgstr "~A: argumento estranho~%"
#: guix/scripts/package.scm:763 #: guix/scripts/package.scm:782
#, scheme-format #, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
msgstr "Tente \"info '(guix) Invoking guix package'\" para mais informações.~%" msgstr "Tente \"info '(guix) Invoking guix package'\" para mais informações.~%"
#: guix/scripts/package.scm:785 #: guix/scripts/package.scm:804
#, scheme-format #, scheme-format
msgid "error: while creating directory `~a': ~a~%" msgid "error: while creating directory `~a': ~a~%"
msgstr "erro: ao criar diretório \"~a\": ~a~%" msgstr "erro: ao criar diretório \"~a\": ~a~%"
#: guix/scripts/package.scm:789 #: guix/scripts/package.scm:808
#, scheme-format #, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%" 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.~%" 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 #, scheme-format
msgid "error: directory `~a' is not owned by you~%" msgid "error: directory `~a' is not owned by you~%"
msgstr "erro: diretório \"~a\" não tem você como proprietário~%" msgstr "erro: diretório \"~a\" não tem você como proprietário~%"
#: guix/scripts/package.scm:799 #: guix/scripts/package.scm:818
#, scheme-format #, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%" msgid "Please change the owner of `~a' to user ~s.~%"
msgstr "Por favor, altere o proprietário d \"~a\" para o usuário ~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 #, fuzzy, scheme-format
msgid "deleting ~a~%" msgid "deleting ~a~%"
msgstr "Criação ~a\t~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 #, scheme-format
msgid "invalid syntax: ~a~%" msgid "invalid syntax: ~a~%"
msgstr "sintaxe inválida: ~a~%" msgstr "sintaxe inválida: ~a~%"
#: guix/scripts/package.scm:904 #: guix/scripts/package.scm:925
#, scheme-format #, scheme-format
msgid "nothing to be done~%" msgid "nothing to be done~%"
msgstr "nada para ser feito~%" msgstr "nada para ser feito~%"
#: guix/scripts/package.scm:927 #: guix/scripts/package.scm:948
#, scheme-format #, scheme-format
msgid "~a package in profile~%" msgid "~a package in profile~%"
msgstr "pacote ~a no perfil~%" msgstr "pacote ~a no perfil~%"
#: guix/scripts/package.scm:942 #: guix/scripts/package.scm:963
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "Generation ~a\t~a" msgid "Generation ~a\t~a"
msgstr "Criação ~a\t~a~%" msgstr "Criação ~a\t~a~%"
#: guix/scripts/package.scm:949 #: guix/scripts/package.scm:970
#, scheme-format #, scheme-format
msgid "~a\t(current)~%" msgid "~a\t(current)~%"
msgstr "" msgstr ""
@ -675,8 +676,7 @@ msgid ""
" --bootstrap use the bootstrap Guile to build the new Guix" " --bootstrap use the bootstrap Guile to build the new Guix"
msgstr "" msgstr ""
"\n" "\n"
" --bootstrap usa a inicialização do Guile para compilar o novo " " --bootstrap usa a inicialização do Guile para compilar o novo Guix"
"Guix"
#: guix/scripts/pull.scm:117 #: guix/scripts/pull.scm:117
#, scheme-format #, scheme-format
@ -763,7 +763,7 @@ msgstr ""
#: guix/scripts/substitute-binary.scm:338 #: guix/scripts/substitute-binary.scm:338
#, scheme-format #, scheme-format
msgid "narinfo for '~a' lacks a signature~%" msgid "substitute at '~a' lacks a signature~%"
msgstr "" msgstr ""
#: guix/scripts/substitute-binary.scm:526 #: guix/scripts/substitute-binary.scm:526
@ -774,9 +774,7 @@ msgstr "Baixando, por favor aguarde...~%"
#: guix/scripts/substitute-binary.scm:528 #: guix/scripts/substitute-binary.scm:528
#, scheme-format #, scheme-format
msgid "(Please consider upgrading Guile to get proper progress report.)~%" msgid "(Please consider upgrading Guile to get proper progress report.)~%"
msgstr "" msgstr "(Por favor, considere atualizar o Guile para obter o relatório adequado do progresso.)~%"
"(Por favor, considere atualizar o Guile para obter o relatório adequado do "
"progresso.)~%"
#: guix/scripts/substitute-binary.scm:545 #: guix/scripts/substitute-binary.scm:545
#, scheme-format #, scheme-format
@ -789,8 +787,7 @@ msgid ""
"Internal tool to substitute a pre-built binary to a local build.\n" "Internal tool to substitute a pre-built binary to a local build.\n"
msgstr "" msgstr ""
"Uso: guix substitute-binary [OPÇÃO]...\n" "Uso: guix substitute-binary [OPÇÃO]...\n"
"Ferramenta interna para substituir um binário pré-compilado para uma " "Ferramenta interna para substituir um binário pré-compilado para uma compilação local.\n"
"compilação local.\n"
#: guix/scripts/substitute-binary.scm:556 #: guix/scripts/substitute-binary.scm:556
msgid "" msgid ""
@ -799,8 +796,7 @@ msgid ""
" store file names passed on the standard input" " store file names passed on the standard input"
msgstr "" msgstr ""
"\n" "\n"
" --query relata a disponibilidade de substitutos para os " " --query relata a disponibilidade de substitutos para os nomes\n"
"nomes\n"
" de arquivos de armazenamento passados na entrada\n" " de arquivos de armazenamento passados na entrada\n"
" padrão" " padrão"
@ -813,22 +809,19 @@ msgid ""
msgstr "" msgstr ""
"\n" "\n"
" --substitute ARQUIVO-ARMAZENAMENTO DESTINO\n" " --substitute ARQUIVO-ARMAZENAMENTO DESTINO\n"
" baixa ARQUIVO-ARMAZENAMENTO e armazena-o como um " " baixa ARQUIVO-ARMAZENAMENTO e armazena-o como um Nar\n"
"Nar\n"
" no arquivo DESTINO" " no arquivo DESTINO"
#: guix/scripts/substitute-binary.scm:599 #: guix/scripts/substitute-binary.scm:604
msgid "" msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
"ACL for archive imports seems to be uninitialized, substitutes may be "
"unavailable\n"
msgstr "" msgstr ""
#: guix/scripts/substitute-binary.scm:619 #: guix/scripts/substitute-binary.scm:625
#, scheme-format #, scheme-format
msgid "failed to look up host '~a' (~a), substituter disabled~%" msgid "failed to look up host '~a' (~a), substituter disabled~%"
msgstr "" msgstr ""
#: guix/scripts/substitute-binary.scm:726 #: guix/scripts/substitute-binary.scm:732
#, scheme-format #, scheme-format
msgid "~a: unrecognized options~%" msgid "~a: unrecognized options~%"
msgstr "~a: opções desconhecidas~%" msgstr "~a: opções desconhecidas~%"
@ -865,93 +858,112 @@ msgstr ""
msgid "wrong arguments" msgid "wrong arguments"
msgstr "número errado de argumentos~%" msgstr "número errado de argumentos~%"
#: guix/scripts/system.scm:67 #: guix/scripts/system.scm:74
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "failed to open operating system file '~a': ~a~%" msgid "failed to open operating system file '~a': ~a~%"
msgstr "falha ao conectar em \"~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 #, fuzzy, scheme-format
msgid "failed to load machine file '~a': ~s~%" msgid "~a: ~a~%"
msgstr "~a~%"
#: guix/scripts/system.scm:81
#, fuzzy, scheme-format
msgid "failed to load operating system file '~a': ~s~%"
msgstr "falha ao conectar em \"~a\": ~a~%" msgstr "falha ao conectar em \"~a\": ~a~%"
#: guix/scripts/system.scm:86 #: guix/scripts/system.scm:116
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "failed to register '~a' under '~a'~%" msgid "failed to register '~a' under '~a'~%"
msgstr "falha ao criar raiz de GC \"~a\": ~a~%" msgstr "falha ao criar raiz de GC \"~a\": ~a~%"
#: guix/scripts/system.scm:102 #: guix/scripts/system.scm:144
#, scheme-format #, scheme-format
msgid "initializing the current root file system~%" msgid "initializing the current root file system~%"
msgstr "" msgstr ""
#: guix/scripts/system.scm:113 #: guix/scripts/system.scm:162 guix/scripts/system.scm:318
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "failed to install GRUB on device '~a'~%" msgid "failed to install GRUB on device '~a'~%"
msgstr "falha ao instalar local: ~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 "" msgid ""
"Usage: guix system [OPTION] ACTION FILE\n" "Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\n" "Build the operating system declared in FILE according to ACTION.\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:124 #: guix/scripts/system.scm:342
msgid "The valid values for ACTION are:\n" msgid "The valid values for ACTION are:\n"
msgstr "" 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" msgid " - 'build', build the operating system without installing anything\n"
msgstr "" 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" msgid " - 'vm', build a virtual machine image that shares the host's store\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:129 #: guix/scripts/system.scm:349
msgid " - 'vm-image', build a freestanding virtual machine image\n" msgid " - 'vm-image', build a freestanding virtual machine image\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:131 #: guix/scripts/system.scm:351
msgid " - 'disk-image', build a disk image, suitable for a USB stick\n" msgid " - 'disk-image', build a disk image, suitable for a USB stick\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:133 #: guix/scripts/system.scm:353
msgid " - 'init', initialize a root file system to run GNU.\n" msgid " - 'init', initialize a root file system to run GNU.\n"
msgstr "" msgstr ""
#: guix/scripts/system.scm:137 #: guix/scripts/system.scm:357
msgid "" msgid ""
"\n" "\n"
" --image-size=SIZE for 'vm-image', produce an image of SIZE" " --image-size=SIZE for 'vm-image', produce an image of SIZE"
msgstr "" msgstr ""
#: guix/scripts/system.scm:139 #: guix/scripts/system.scm:359
msgid "" msgid ""
"\n" "\n"
" --no-grub for 'init', do not install GRUB" " --no-grub for 'init', do not install GRUB"
msgstr "" msgstr ""
#: guix/scripts/system.scm:198 #: guix/scripts/system.scm:422
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "~a: unknown action~%" msgid "~a: unknown action~%"
msgstr "~A: pacote desconhecido~%" msgstr "~A: pacote desconhecido~%"
#: guix/scripts/system.scm:215 #: guix/scripts/system.scm:439
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "wrong number of arguments for action '~a'~%" msgid "wrong number of arguments for action '~a'~%"
msgstr "número errado de argumentos~%" msgstr "número errado de argumentos~%"
#: guix/scripts/system.scm:234 #: guix/scripts/system.scm:459
#, scheme-format #, scheme-format
msgid "no configuration file specified~%" msgid "no configuration file specified~%"
msgstr "" 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 #: guix/gnu-maintenance.scm:373
#, scheme-format #, scheme-format
msgid "signature verification failed for `~a'~%" msgid "signature verification failed for `~a'~%"
@ -980,8 +992,7 @@ msgstr "falha ao instalar local: ~a~%"
#: guix/ui.scm:150 #: guix/ui.scm:150
msgid "" msgid ""
"Copyright (C) 2014 the Guix authors\n" "Copyright (C) 2014 the Guix authors\n"
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl." "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
"html>\n"
"This is free software: you are free to change and redistribute it.\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" "There is NO WARRANTY, to the extent permitted by law.\n"
msgstr "" msgstr ""
@ -1035,9 +1046,7 @@ msgstr "~a:~a:~a: pacote \"~a\" tem uma entrada inválida: ~s~%"
#: guix/ui.scm:219 #: guix/ui.scm:219
#, scheme-format #, scheme-format
msgid "~a: ~a: build system `~a' does not support cross builds~%" msgid "~a: ~a: build system `~a' does not support cross builds~%"
msgstr "" msgstr "~a: ~a: sistema de compilação de \"~a\" não tem suporte a compilações cruzadas~%"
"~a: ~a: sistema de compilação de \"~a\" não tem suporte a compilações "
"cruzadas~%"
#: guix/ui.scm:224 #: guix/ui.scm:224
#, scheme-format #, scheme-format
@ -1049,70 +1058,65 @@ msgstr "falha ao conectar em \"~a\": ~a~%"
msgid "build failed: ~a~%" msgid "build failed: ~a~%"
msgstr "compilação falhou: ~a~%" msgstr "compilação falhou: ~a~%"
#: guix/ui.scm:238 #: guix/ui.scm:257
#, fuzzy, scheme-format
msgid "~a: ~a~%"
msgstr "~a~%"
#: guix/ui.scm:255
#, scheme-format #, scheme-format
msgid "failed to read expression ~s: ~s~%" msgid "failed to read expression ~s: ~s~%"
msgstr "falha ao ler a expressão ~s: ~s~%" msgstr "falha ao ler a expressão ~s: ~s~%"
#: guix/ui.scm:261 #: guix/ui.scm:263
#, scheme-format #, scheme-format
msgid "failed to evaluate expression `~a': ~s~%" msgid "failed to evaluate expression `~a': ~s~%"
msgstr "falha ao avaliar a expressão \"~a\": ~s~%" msgstr "falha ao avaliar a expressão \"~a\": ~s~%"
#: guix/ui.scm:270 #: guix/ui.scm:272
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "expression ~s does not evaluate to a package~%" msgid "expression ~s does not evaluate to a package~%"
msgstr "expressão \"~s\" não corresponde a um pacote~%" msgstr "expressão \"~s\" não corresponde a um pacote~%"
#: guix/ui.scm:317 #: guix/ui.scm:319
#, scheme-format #, scheme-format
msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]"
msgstr "~:[A seguinte derivação será compilada:~%~{ ~a~%~}~;~]" msgstr "~:[A seguinte derivação será compilada:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:322 #: guix/ui.scm:324
#, scheme-format #, scheme-format
msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]"
msgstr "~:[O seguinte arquivo será baixado:~%~{ ~a~%~}~;~]" msgstr "~:[O seguinte arquivo será baixado:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:328 #: guix/ui.scm:330
#, scheme-format #, scheme-format
msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]"
msgstr "~:[A seguinte derivação será compilada:~%~{ ~a~%~}~;~]" msgstr "~:[A seguinte derivação será compilada:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:333 #: guix/ui.scm:335
#, scheme-format #, scheme-format
msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]"
msgstr "~:[O seguinte arquivo será baixado:~%~{ ~a~%~}~;~]" msgstr "~:[O seguinte arquivo será baixado:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:350 #: guix/ui.scm:352
msgid "<unknown location>" msgid "<unknown location>"
msgstr "<local desconhecido>" msgstr "<local desconhecido>"
#: guix/ui.scm:378 #: guix/ui.scm:380
#, scheme-format #, scheme-format
msgid "failed to create configuration directory `~a': ~a~%" msgid "failed to create configuration directory `~a': ~a~%"
msgstr "falha ao criar o diretório de compilação \"~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" msgid "unknown"
msgstr "desconhecido" msgstr "desconhecido"
#: guix/ui.scm:582 #: guix/ui.scm:598
#, scheme-format #, scheme-format
msgid "invalid argument: ~a~%" msgid "invalid argument: ~a~%"
msgstr "argumento inválido: ~a~%" msgstr "argumento inválido: ~a~%"
#: guix/ui.scm:587 #: guix/ui.scm:603
#, scheme-format #, scheme-format
msgid "Try `guix --help' for more information.~%" msgid "Try `guix --help' for more information.~%"
msgstr "Tente \"guix --help\" para mais informações.~%" msgstr "Tente \"guix --help\" para mais informações.~%"
#: guix/ui.scm:617 #: guix/ui.scm:633
msgid "" msgid ""
"Usage: guix COMMAND ARGS...\n" "Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n" "Run COMMAND with ARGS.\n"
@ -1120,21 +1124,21 @@ msgstr ""
"Uso: guix COMANDO ARGUMENTOS...\n" "Uso: guix COMANDO ARGUMENTOS...\n"
"Executa COMANDO com 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" msgid "COMMAND must be one of the sub-commands listed below:\n"
msgstr "COMANDO deve ser um dos subcomandos listados abaixo:\n" msgstr "COMANDO deve ser um dos subcomandos listados abaixo:\n"
#: guix/ui.scm:640 #: guix/ui.scm:656
#, scheme-format #, scheme-format
msgid "guix: ~a: command not found~%" msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: comando não encontrado~%" msgstr "guix: ~a: comando não encontrado~%"
#: guix/ui.scm:658 #: guix/ui.scm:674
#, scheme-format #, scheme-format
msgid "guix: missing command name~%" msgid "guix: missing command name~%"
msgstr "guix: faltando um nome de comando~%" msgstr "guix: faltando um nome de comando~%"
#: guix/ui.scm:666 #: guix/ui.scm:682
#, scheme-format #, scheme-format
msgid "guix: unrecognized option '~a'~%" msgid "guix: unrecognized option '~a'~%"
msgstr "guix: opção \"~a\" desconhecida~%" msgstr "guix: opção \"~a\" desconhecida~%"
@ -1237,3 +1241,7 @@ msgstr ""
#: guix/nar.scm:487 #: guix/nar.scm:487
msgid "invalid inter-file archive mark" msgid "invalid inter-file archive mark"
msgstr "" msgstr ""
#, fuzzy
#~ msgid "failed to load machine file '~a': ~s~%"
#~ msgstr "falha ao conectar em \"~a\": ~a~%"

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix 0.7-pre1\n" "Project-Id-Version: guix 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2014-07-14 08:38+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@ -20,7 +20,7 @@ msgstr ""
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
"X-Generator: Poedit 1.5.5\n" "X-Generator: Poedit 1.5.5\n"
#: gnu/packages.scm:95 #: gnu/packages.scm:102
#, scheme-format #, scheme-format
msgid "cannot access `~a': ~a~%" msgid "cannot access `~a': ~a~%"
msgstr "không thể truy cập `~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" " --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/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/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 "" msgid ""
"\n" "\n"
" -h, --help display this help and exit" " -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" " -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/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/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 "" msgid ""
"\n" "\n"
" -V, --version display version information and exit" " -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~}~%" 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/build.scm:397 guix/scripts/download.scm:96
#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122 #: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386 #: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
#, scheme-format #, scheme-format
msgid "~A: unrecognized option~%" msgid "~A: unrecognized option~%"
msgstr "~A: tùy chọn không được chấp nhận~%" 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~%" msgid "switching from generation ~a to ~a~%"
msgstr "chuyển từ thế hệ ~a sang ~a~%" msgstr "chuyển từ thế hệ ~a sang ~a~%"
#: guix/scripts/package.scm:108 guix/scripts/package.scm:866 #: guix/scripts/package.scm:108 guix/scripts/package.scm:873
#: guix/scripts/package.scm:978 #: guix/scripts/package.scm:985
#, scheme-format #, scheme-format
msgid "profile '~a' does not exist~%" msgid "profile '~a' does not exist~%"
msgstr "hồ sơ `~a' không tồn tại~%" 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" " -A, --list-available[=BIỂU-THỨC-CHÍNH-QUY]\n"
" kiệt kê các gói khớp BTCQ" " 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 #, scheme-format
msgid "~A: extraneous argument~%" msgid "~A: extraneous argument~%"
msgstr "~A: đối số ngoại lai~%" msgstr "~A: đối số ngoại lai~%"
#: guix/scripts/package.scm:775 #: guix/scripts/package.scm:782
#, scheme-format #, scheme-format
msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%" 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.~%" 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 #, scheme-format
msgid "error: while creating directory `~a': ~a~%" msgid "error: while creating directory `~a': ~a~%"
msgstr "lỗi: trong khi tạo thư mục `~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 #, scheme-format
msgid "Please create the `~a' directory, with you as the owner.~%" 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.~%" 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 #, scheme-format
msgid "error: directory `~a' is not owned by you~%" 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~%" 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 #, scheme-format
msgid "Please change the owner of `~a' to user ~s.~%" 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.~%" 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 #, scheme-format
msgid "deleting ~a~%" msgid "deleting ~a~%"
msgstr "đang xóa ~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 #, scheme-format
msgid "invalid syntax: ~a~%" msgid "invalid syntax: ~a~%"
msgstr "cú pháp không hợp lệ: ~a~%" msgstr "cú pháp không hợp lệ: ~a~%"
#: guix/scripts/package.scm:918 #: guix/scripts/package.scm:925
#, scheme-format #, scheme-format
msgid "nothing to be done~%" msgid "nothing to be done~%"
msgstr "không có gì cần làm~%" msgstr "không có gì cần làm~%"
#: guix/scripts/package.scm:941 #: guix/scripts/package.scm:948
#, scheme-format #, scheme-format
msgid "~a package in profile~%" msgid "~a package in profile~%"
msgstr "~a gói trong hồ sơ~%" msgstr "~a gói trong hồ sơ~%"
#: guix/scripts/package.scm:956 #: guix/scripts/package.scm:963
#, scheme-format #, scheme-format
msgid "Generation ~a\t~a" msgid "Generation ~a\t~a"
msgstr "Tạo ~a\t~a" msgstr "Tạo ~a\t~a"
#: guix/scripts/package.scm:963 #: guix/scripts/package.scm:970
#, scheme-format #, scheme-format
msgid "~a\t(current)~%" msgid "~a\t(current)~%"
msgstr "~a\t(hiện tại)~%" msgstr "~a\t(hiện tại)~%"
@ -868,37 +877,37 @@ msgstr "~a: ~a~%"
msgid "failed to load operating system file '~a': ~s~%" 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~%" 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 #, scheme-format
msgid "failed to register '~a' under '~a'~%" msgid "failed to register '~a' under '~a'~%"
msgstr "gặp lỗi khi đăng ký `~a' dưới ~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 #, scheme-format
msgid "initializing the current root file system~%" 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~%" 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 #, scheme-format
msgid "failed to install GRUB on device '~a'~%" msgid "failed to install GRUB on device '~a'~%"
msgstr "gặp lỗi khi cài đặt GRUB trên thiết bị `~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 #, scheme-format
msgid "activating system...~%" msgid "activating system...~%"
msgstr "đang kích hoạt hệ thống...~%" msgstr "đang kích hoạt hệ thống...~%"
#: guix/scripts/system.scm:211 #: guix/scripts/system.scm:236
#, scheme-format #, scheme-format
msgid "unrecognized boot parameters for '~a'~%" msgid "unrecognized boot parameters for '~a'~%"
msgstr "tham số khởi động không được thừa nhận cho `~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 #, scheme-format
msgid "initializing operating system under '~a'...~%" msgid "initializing operating system under '~a'...~%"
msgstr "đang khởi tạo hệ điều hành dưới '~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 "" msgid ""
"Usage: guix system [OPTION] ACTION FILE\n" "Usage: guix system [OPTION] ACTION FILE\n"
"Build the operating system declared in FILE according to ACTION.\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" "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" "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" msgid "The valid values for ACTION are:\n"
msgstr "Các giá trị hợp lệ cho THAO TÁC là:\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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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 "" msgid ""
"\n" "\n"
" --image-size=SIZE for 'vm-image', produce an image of SIZE" " --image-size=SIZE for 'vm-image', produce an image of SIZE"
@ -942,7 +951,7 @@ msgstr ""
"\n" "\n"
" --image-size=CỠ cho 'vm-image', sản sinh ảnh theo CỠ này" " --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 "" msgid ""
"\n" "\n"
" --no-grub for 'init', do not install GRUB" " --no-grub for 'init', do not install GRUB"
@ -950,17 +959,17 @@ msgstr ""
"\n" "\n"
" --no-grub dành cho 'init', đừng cài GRUB" " --no-grub dành cho 'init', đừng cài GRUB"
#: guix/scripts/system.scm:394 #: guix/scripts/system.scm:422
#, scheme-format #, scheme-format
msgid "~a: unknown action~%" msgid "~a: unknown action~%"
msgstr "~a: không hiểu thao tác~%" msgstr "~a: không hiểu thao tác~%"
#: guix/scripts/system.scm:411 #: guix/scripts/system.scm:439
#, scheme-format #, scheme-format
msgid "wrong number of arguments for action '~a'~%" msgid "wrong number of arguments for action '~a'~%"
msgstr "sai số lượng đối số cho thao tác '~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 #, scheme-format
msgid "no configuration file specified~%" msgid "no configuration file specified~%"
msgstr "chưa ghi rõ tập tin nhập cấu hình~%" 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~%" 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~%" 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" msgid "unknown"
msgstr "không hiểu" msgstr "không hiểu"
#: guix/ui.scm:584 #: guix/ui.scm:598
#, scheme-format #, scheme-format
msgid "invalid argument: ~a~%" msgid "invalid argument: ~a~%"
msgstr "đối số không hợp lệ: ~a~%" msgstr "đối số không hợp lệ: ~a~%"
#: guix/ui.scm:589 #: guix/ui.scm:603
#, scheme-format #, scheme-format
msgid "Try `guix --help' for more information.~%" msgid "Try `guix --help' for more information.~%"
msgstr "Chạy lệnh `guix --help' để biết thêm thông tin.~%" msgstr "Chạy lệnh `guix --help' để biết thêm thông tin.~%"
#: guix/ui.scm:619 #: guix/ui.scm:633
msgid "" msgid ""
"Usage: guix COMMAND ARGS...\n" "Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n" "Run COMMAND with ARGS.\n"
@ -1129,21 +1138,21 @@ msgstr ""
"Cách dùng: guix LỆNH ĐỐI_SỐ...\n" "Cách dùng: guix LỆNH ĐỐI_SỐ...\n"
"Chạy LỆNH với các ĐỐ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" 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" 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 #, scheme-format
msgid "guix: ~a: command not found~%" msgid "guix: ~a: command not found~%"
msgstr "guix: ~a: không tìm thấy lệnh~%" msgstr "guix: ~a: không tìm thấy lệnh~%"
#: guix/ui.scm:660 #: guix/ui.scm:674
#, scheme-format #, scheme-format
msgid "guix: missing command name~%" msgid "guix: missing command name~%"
msgstr "guix: thiếu tên lệnh~%" msgstr "guix: thiếu tên lệnh~%"
#: guix/ui.scm:668 #: guix/ui.scm:682
#, scheme-format #, scheme-format
msgid "guix: unrecognized option '~a'~%" msgid "guix: unrecognized option '~a'~%"
msgstr "guix: tùy chọn không được thừa nhận `~a'~%" msgstr "guix: tùy chọn không được thừa nhận `~a'~%"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix-packages 0.7-pre1\n" "Project-Id-Version: guix-packages 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2014-07-13 20:23+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n" "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix-packages 0.7-pre1\n" "Project-Id-Version: guix-packages 0.7-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2014-07-14 11:28-0300\n"
"Last-Translator: Felipe Castro <fefcas@gmail.com>\n" "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix 0.4-pre2\n" "Project-Id-Version: guix 0.4-pre2\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2013-09-28 21:29-0300\n"
"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\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"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix-0.6-pre1\n" "Project-Id-Version: guix-0.6-pre1\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2014-06-19 08:51+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n" "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n" "Language-Team: Serbian <(nothing)>\n"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix 0.5-pre2\n" "Project-Id-Version: guix 0.5-pre2\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\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" "PO-Revision-Date: 2013-12-04 07:48+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"

View File

@ -224,7 +224,7 @@
(return (string=? system (derivation-system drv)))))) (return (string=? system (derivation-system drv))))))
(define shebang (define shebang
(string-append (derivation->output-path guile-for-build) (string-append "#!" (derivation->output-path guile-for-build)
"/bin/guile --no-auto-compile")) "/bin/guile --no-auto-compile"))
;; If we're going to hit the silly shebang limit (128 chars on Linux-based ;; If we're going to hit the silly shebang limit (128 chars on Linux-based

View File

@ -79,13 +79,6 @@ then
test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap" 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. # List generations.
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
= " guile-bootstrap" = " guile-bootstrap"
@ -176,6 +169,22 @@ then false; else true; fi
# Check whether `--list-available' returns something sensible. # Check whether `--list-available' returns something sensible.
guix package -p "$profile" -A 'gui.*e' | grep guile 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 # There's no generation older than 12 months, so the following command should
# have no effect. # have no effect.
generation="`readlink_base "$profile"`" generation="`readlink_base "$profile"`"

View File

@ -86,7 +86,7 @@ guix-register -p "$new_store" \
# Now make sure this is recognized as valid. # Now make sure this is recognized as valid.
ls -R "$new_store" ls -R "$new_store"
for state_dir in "$new_store$localstatedir/guix" "$new_store/chbouib" for state_dir in "$localstatedir/guix" "/chbouib"
do do
NIX_STORE_DIR="$new_store_dir" NIX_STORE_DIR="$new_store_dir"
NIX_STATE_DIR="$new_store$state_dir" NIX_STATE_DIR="$new_store$state_dir"

View File

@ -108,6 +108,16 @@
guile))) guile)))
#:guile-for-build (package-derivation %store %bootstrap-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 (define derivation-expression
(@@ (guix monads) derivation-expression)) (@@ (guix monads) derivation-expression))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -18,11 +18,25 @@
(define-module (test-profiles) (define-module (test-profiles)
#:use-module (guix 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 (ice-9 match)
#:use-module (srfi srfi-64)) #:use-module (srfi srfi-64))
;; Test the (guix profile) module. ;; 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. ;; Example manifest entries.
@ -30,7 +44,7 @@
(manifest-entry (manifest-entry
(name "guile") (name "guile")
(version "2.0.9") (version "2.0.9")
(path "/gnu/store/...") (item "/gnu/store/...")
(output "out"))) (output "out")))
(define guile-2.0.9:debug (define guile-2.0.9:debug
@ -87,6 +101,19 @@
(null? (manifest-entries m3)) (null? (manifest-entries m3))
(null? (manifest-entries m4))))))) (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") (test-end "profiles")

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -25,7 +26,8 @@
#:use-module (srfi srfi-64) #:use-module (srfi srfi-64)
#:use-module (rnrs bytevectors) #:use-module (rnrs bytevectors)
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:use-module (ice-9 match)) #:use-module (ice-9 match)
#:use-module (ice-9 vlist))
(define temp-file (define temp-file
(string-append "t-utils-" (number->string (getpid)))) (string-append "t-utils-" (number->string (getpid))))
@ -118,6 +120,37 @@
'(0 1 2 3))) '(0 1 2 3)))
list)) 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" (test-assert "filtered-port, file"
(let* ((file (search-path %load-path "guix.scm")) (let* ((file (search-path %load-path "guix.scm"))
(input (open-file file "r0b"))) (input (open-file file "r0b")))