Merge branch 'master' into core-updates

Conflicts:
	gnu/packages/make-bootstrap.scm
This commit is contained in:
Ludovic Courtès 2013-06-20 23:51:00 +02:00
commit d501fad11c
32 changed files with 1343 additions and 533 deletions

View File

@ -24,6 +24,8 @@ nodist_noinst_SCRIPTS = \
pre-inst-env \ pre-inst-env \
test-env test-env
include gnu-system.am
MODULES = \ MODULES = \
guix/scripts/build.scm \ guix/scripts/build.scm \
guix/scripts/download.scm \ guix/scripts/download.scm \
@ -66,150 +68,7 @@ MODULES = \
guix/packages.scm \ guix/packages.scm \
guix/snix.scm \ guix/snix.scm \
guix.scm \ guix.scm \
gnu/packages.scm \ $(GNU_SYSTEM_MODULES)
gnu/packages/acl.scm \
gnu/packages/algebra.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
gnu/packages/autotools.scm \
gnu/packages/avahi.scm \
gnu/packages/base.scm \
gnu/packages/bash.scm \
gnu/packages/bdb.scm \
gnu/packages/bdw-gc.scm \
gnu/packages/bison.scm \
gnu/packages/bootstrap.scm \
gnu/packages/cdrom.scm \
gnu/packages/cflow.scm \
gnu/packages/check.scm \
gnu/packages/cmake.scm \
gnu/packages/compression.scm \
gnu/packages/cpio.scm \
gnu/packages/cppi.scm \
gnu/packages/cross-base.scm \
gnu/packages/cryptsetup.scm \
gnu/packages/curl.scm \
gnu/packages/cyrus-sasl.scm \
gnu/packages/dejagnu.scm \
gnu/packages/ddrescue.scm \
gnu/packages/dwm.scm \
gnu/packages/ed.scm \
gnu/packages/emacs.scm \
gnu/packages/fdisk.scm \
gnu/packages/file.scm \
gnu/packages/flex.scm \
gnu/packages/fontutils.scm \
gnu/packages/freeipmi.scm \
gnu/packages/gawk.scm \
gnu/packages/gcal.scm \
gnu/packages/gcc.scm \
gnu/packages/gdb.scm \
gnu/packages/gdbm.scm \
gnu/packages/gettext.scm \
gnu/packages/ghostscript.scm \
gnu/packages/glib.scm \
gnu/packages/global.scm \
gnu/packages/gnupg.scm \
gnu/packages/gnutls.scm \
gnu/packages/gperf.scm \
gnu/packages/gprolog.scm \
gnu/packages/groff.scm \
gnu/packages/grub.scm \
gnu/packages/grue-hunter.scm \
gnu/packages/gsasl.scm \
gnu/packages/gtk.scm \
gnu/packages/guile.scm \
gnu/packages/gv.scm \
gnu/packages/help2man.scm \
gnu/packages/hugs.scm \
gnu/packages/icu4c.scm \
gnu/packages/idutils.scm \
gnu/packages/indent.scm \
gnu/packages/irssi.scm \
gnu/packages/ld-wrapper.scm \
gnu/packages/less.scm \
gnu/packages/lesstif.scm \
gnu/packages/libapr.scm \
gnu/packages/libdaemon.scm \
gnu/packages/libevent.scm \
gnu/packages/libffi.scm \
gnu/packages/libidn.scm \
gnu/packages/libjpeg.scm \
gnu/packages/libphidget.scm \
gnu/packages/libpng.scm \
gnu/packages/libsigsegv.scm \
gnu/packages/libtiff.scm \
gnu/packages/libunistring.scm \
gnu/packages/libusb.scm \
gnu/packages/libunwind.scm \
gnu/packages/linux.scm \
gnu/packages/linux-initrd.scm \
gnu/packages/lout.scm \
gnu/packages/lsh.scm \
gnu/packages/lsof.scm \
gnu/packages/lua.scm \
gnu/packages/lvm.scm \
gnu/packages/m4.scm \
gnu/packages/mailutils.scm \
gnu/packages/make-bootstrap.scm \
gnu/packages/mit-krb5.scm \
gnu/packages/mp3.scm \
gnu/packages/multiprecision.scm \
gnu/packages/mysql.scm \
gnu/packages/nano.scm \
gnu/packages/ncurses.scm \
gnu/packages/netpbm.scm \
gnu/packages/nettle.scm \
gnu/packages/ocaml.scm \
gnu/packages/oggvorbis.scm \
gnu/packages/openldap.scm \
gnu/packages/openssl.scm \
gnu/packages/parted.scm \
gnu/packages/patchelf.scm \
gnu/packages/pcre.scm \
gnu/packages/pdf.scm \
gnu/packages/perl.scm \
gnu/packages/pkg-config.scm \
gnu/packages/plotutils.scm \
gnu/packages/popt.scm \
gnu/packages/pth.scm \
gnu/packages/python.scm \
gnu/packages/qemu.scm \
gnu/packages/ratpoison.scm \
gnu/packages/readline.scm \
gnu/packages/recutils.scm \
gnu/packages/rsync.scm \
gnu/packages/samba.scm \
gnu/packages/scheme.scm \
gnu/packages/screen.scm \
gnu/packages/shishi.scm \
gnu/packages/smalltalk.scm \
gnu/packages/sqlite.scm \
gnu/packages/ssh.scm \
gnu/packages/subversion.scm \
gnu/packages/system.scm \
gnu/packages/tcl.scm \
gnu/packages/tcsh.scm \
gnu/packages/texinfo.scm \
gnu/packages/texlive.scm \
gnu/packages/time.scm \
gnu/packages/tmux.scm \
gnu/packages/tor.scm \
gnu/packages/unrtf.scm \
gnu/packages/version-control.scm \
gnu/packages/vim.scm \
gnu/packages/vpn.scm \
gnu/packages/w3m.scm \
gnu/packages/wdiff.scm \
gnu/packages/wget.scm \
gnu/packages/which.scm \
gnu/packages/wordnet.scm \
gnu/packages/xlockmore.scm \
gnu/packages/xml.scm \
gnu/packages/xorg.scm \
gnu/packages/zile.scm \
gnu/packages/zip.scm \
gnu/system/vm.scm
# Because of the autoload hack in (guix build download), we must build it # Because of the autoload hack in (guix build download), we must build it
# first to avoid errors on systems where (gnutls) is unavailable. # first to avoid errors on systems where (gnutls) is unavailable.
@ -219,99 +78,6 @@ GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go
nobase_dist_guilemodule_DATA = $(MODULES) nobase_dist_guilemodule_DATA = $(MODULES)
patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \
gnu/packages/patches/automake-skip-amhello-tests.patch \
gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \
gnu/packages/patches/emacs-configure-sh.patch \
gnu/packages/patches/findutils-absolute-paths.patch \
gnu/packages/patches/flac-fix-memcmp-not-declared.patch \
gnu/packages/patches/flex-bison-tests.patch \
gnu/packages/patches/gawk-shell.patch \
gnu/packages/patches/gcc-cross-environment-variables.patch \
gnu/packages/patches/gettext-gets-undeclared.patch \
gnu/packages/patches/glib-tests-desktop.patch \
gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-prlimit.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \
gnu/packages/patches/grub-gets-undeclared.patch \
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
gnu/packages/patches/guile-default-utf8.patch \
gnu/packages/patches/guile-linux-syscalls.patch \
gnu/packages/patches/guile-relocatable.patch \
gnu/packages/patches/libapr-skip-getservbyname-test.patch \
gnu/packages/patches/libevent-dns-tests.patch \
gnu/packages/patches/libtool-skip-tests.patch \
gnu/packages/patches/lsh-guile-compat.patch \
gnu/packages/patches/lsh-no-root-login.patch \
gnu/packages/patches/lsh-pam-service-name.patch \
gnu/packages/patches/m4-gets-undeclared.patch \
gnu/packages/patches/m4-readlink-EINVAL.patch \
gnu/packages/patches/m4-s_isdir.patch \
gnu/packages/patches/make-impure-dirs.patch \
gnu/packages/patches/mcron-install.patch \
gnu/packages/patches/perl-no-sys-dirs.patch \
gnu/packages/patches/python-fix-dbm.patch \
gnu/packages/patches/procps-make-3.82.patch \
gnu/packages/patches/qemu-multiple-smb-shares.patch \
gnu/packages/patches/readline-link-ncurses.patch \
gnu/packages/patches/scheme48-tests.patch \
gnu/packages/patches/tar-gets-undeclared.patch \
gnu/packages/patches/tcsh-fix-autotest.patch \
gnu/packages/patches/teckit-cstdio.patch \
gnu/packages/patches/vpnc-script.patch \
gnu/packages/patches/w3m-fix-compile.patch \
gnu/packages/patches/xpdf-constchar.patch
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
dist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/bash \
gnu/packages/bootstrap/x86_64-linux/mkdir \
gnu/packages/bootstrap/x86_64-linux/tar \
gnu/packages/bootstrap/x86_64-linux/xz
dist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/bash \
gnu/packages/bootstrap/i686-linux/mkdir \
gnu/packages/bootstrap/i686-linux/tar \
gnu/packages/bootstrap/i686-linux/xz
# Big bootstrap binaries are not included in the tarball. Instead, they
# are downloaded.
nodist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
nodist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
# Those files must remain executable, so they remain executable once
# imported into the store.
install-data-hook:
chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
DISTCLEANFILES = \
$(nodist_bootstrap_x86_64_linux_DATA) \
$(nodist_bootstrap_i686_linux_DATA)
# Method to download a file from an external source.
DOWNLOAD_FILE = \
GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH" \
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
"$(top_srcdir)/build-aux/download.scm"
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "bc43210dcd146d242bef4d354b0aeac12c4ef3118c07502d17ffa8d49e15aa2c"
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "f9a7c6f4c556eaafa2a69bcf07d4ffbb6682ea831d4c9da9ba095aca3ccd217c"
nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm nobase_nodist_guilemodule_DATA = $(GOBJECTS) guix/config.scm
@ -361,7 +127,7 @@ EXTRA_DIST = \
ROADMAP \ ROADMAP \
TODO \ TODO \
.dir-locals.el \ .dir-locals.el \
hydra.scm \ build-aux/hydra/gnu-system.scm \
build-aux/download.scm \ build-aux/download.scm \
build-aux/sync-synopses.scm \ build-aux/sync-synopses.scm \
srfi/srfi-64.scm \ srfi/srfi-64.scm \

11
NEWS
View File

@ -32,6 +32,10 @@ See the manual for details.
This option instructs to fall back to local builds when the substituter fails This option instructs to fall back to local builds when the substituter fails
to download a substitute. to download a substitute.
*** New --requisites option for “guix gc”
See the manual for details.
** Bugs fixed ** Bugs fixed
*** “guix --help” now works when using Guile 2.0.5 *** “guix --help” now works when using Guile 2.0.5
*** Binary substituter multi-threading and pipe issues fixed *** Binary substituter multi-threading and pipe issues fixed
@ -41,6 +45,13 @@ See commits 0332386 and 101d9f3 for details.
*** Binary substituter gracefully handles lack of network connectivity *** Binary substituter gracefully handles lack of network connectivity
*** Daemon properly handles rebuilds of multiple-output derivations
Previously it would fail when rebuilding a multiple-output derivation when
some (but not all) of its outputs were already present. See
http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00038.html and
https://github.com/NixOS/nix/issues/122 .
* Changes in 0.2 (since 0.1) * Changes in 0.2 (since 0.1)
** Package management ** Package management

18
TODO
View File

@ -41,8 +41,10 @@ Like scripts/build-remote.pl in Nix.
* user interface * user interface
** Add a package.el (Emacs) back-end ** Add a package.el (Emacs) back-end
Unfortunately package.el is monolithic, so most likely wed have to package.el is quite monolithic, but we may be able to reuse/extend
write a new one based on it, as opposed to actually using it. package-menu-mode or at least tabulated-list-mode.
** add guile-ncurses interface
* extend <origin> * extend <origin>
** add OpenPGP signatures: ** add OpenPGP signatures:
@ -82,6 +84,11 @@ create a new dir.
("i3" ,p3))) ("i3" ,p3)))
#+END_SRC #+END_SRC
* add make-sha256-port binding for gcry_md_write & co.
This should make `derivation-hash' faster.
* synchronize package descriptions with GSRC and/or the [[http://directory.fsf.org][FSD]] * synchronize package descriptions with GSRC and/or the [[http://directory.fsf.org][FSD]]
Meta-data for GNU packages, including descriptions and synopses, can be Meta-data for GNU packages, including descriptions and synopses, can be
@ -89,11 +96,8 @@ dumped from the FSD:
http://directory.fsf.org/wiki?title=GNU/Export&action=purge . http://directory.fsf.org/wiki?title=GNU/Export&action=purge .
We could periodically synchronize with that. We could periodically synchronize with that.
* support cross-compilation See http://lists.gnu.org/archive/html/bug-guix/2013-04/msg00120.html for info
on how to synchronize with GSRC's descriptions.
Implement package-cross-derivation, and add the corresponding code in
gnu-build-system. Then, actually bootstrap a cross-compilation
environmente.g., a cross-GNU environment.
* add a guildhall build system * add a guildhall build system

View File

@ -31,7 +31,7 @@
(and=> (assoc-ref (current-source-location) 'filename) (and=> (assoc-ref (current-source-location) 'filename)
(lambda (file) (lambda (file)
(let ((dir (dirname file))) (let ((dir (string-append (dirname file) "/../..")))
(format (current-error-port) "prepending ~s to the load path~%" (format (current-error-port) "prepending ~s to the load path~%"
dir) dir)
(set! %load-path (cons dir %load-path)))))) (set! %load-path (cons dir %load-path))))))

View File

@ -722,6 +722,13 @@ In addition, the references among existing store files can be queried:
List the references (respectively, the referrers) of store files given List the references (respectively, the referrers) of store files given
as arguments. as arguments.
@item --requisites
@itemx -R
List the requisites of the store files passed as arguments. Requisites
include the store files themselves, their references, and the references
of these, recursively. In other words, the returned list is the
@dfn{transitive closure} of the store files.
@end table @end table

263
gnu-system.am Normal file
View File

@ -0,0 +1,263 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
#
# 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/>.
# Definitions for the GNU System: package modules, patches, bootstrap
# binaries.
GNU_SYSTEM_MODULES = \
gnu/packages.scm \
gnu/packages/acl.scm \
gnu/packages/algebra.scm \
gnu/packages/aspell.scm \
gnu/packages/attr.scm \
gnu/packages/autotools.scm \
gnu/packages/avahi.scm \
gnu/packages/base.scm \
gnu/packages/bash.scm \
gnu/packages/bdb.scm \
gnu/packages/bdw-gc.scm \
gnu/packages/bison.scm \
gnu/packages/bootstrap.scm \
gnu/packages/cdrom.scm \
gnu/packages/cflow.scm \
gnu/packages/check.scm \
gnu/packages/cmake.scm \
gnu/packages/compression.scm \
gnu/packages/cpio.scm \
gnu/packages/cppi.scm \
gnu/packages/cross-base.scm \
gnu/packages/cryptsetup.scm \
gnu/packages/curl.scm \
gnu/packages/cyrus-sasl.scm \
gnu/packages/dejagnu.scm \
gnu/packages/ddrescue.scm \
gnu/packages/dwm.scm \
gnu/packages/ed.scm \
gnu/packages/emacs.scm \
gnu/packages/fdisk.scm \
gnu/packages/file.scm \
gnu/packages/flex.scm \
gnu/packages/fontutils.scm \
gnu/packages/freeipmi.scm \
gnu/packages/gawk.scm \
gnu/packages/gcal.scm \
gnu/packages/gcc.scm \
gnu/packages/gd.scm \
gnu/packages/gdb.scm \
gnu/packages/gdbm.scm \
gnu/packages/gettext.scm \
gnu/packages/ghostscript.scm \
gnu/packages/glib.scm \
gnu/packages/global.scm \
gnu/packages/gnupg.scm \
gnu/packages/gnutls.scm \
gnu/packages/gperf.scm \
gnu/packages/gprolog.scm \
gnu/packages/graphviz.scm \
gnu/packages/groff.scm \
gnu/packages/grub.scm \
gnu/packages/grue-hunter.scm \
gnu/packages/gsasl.scm \
gnu/packages/gtk.scm \
gnu/packages/guile.scm \
gnu/packages/gv.scm \
gnu/packages/help2man.scm \
gnu/packages/hugs.scm \
gnu/packages/icu4c.scm \
gnu/packages/idutils.scm \
gnu/packages/imagemagick.scm \
gnu/packages/indent.scm \
gnu/packages/irssi.scm \
gnu/packages/ld-wrapper.scm \
gnu/packages/less.scm \
gnu/packages/lesstif.scm \
gnu/packages/libapr.scm \
gnu/packages/libdaemon.scm \
gnu/packages/libevent.scm \
gnu/packages/libffi.scm \
gnu/packages/libidn.scm \
gnu/packages/libjpeg.scm \
gnu/packages/libphidget.scm \
gnu/packages/libpng.scm \
gnu/packages/libsigsegv.scm \
gnu/packages/libtiff.scm \
gnu/packages/libunistring.scm \
gnu/packages/libusb.scm \
gnu/packages/libunwind.scm \
gnu/packages/linux.scm \
gnu/packages/linux-initrd.scm \
gnu/packages/lout.scm \
gnu/packages/lsh.scm \
gnu/packages/lsof.scm \
gnu/packages/lua.scm \
gnu/packages/lvm.scm \
gnu/packages/m4.scm \
gnu/packages/mailutils.scm \
gnu/packages/make-bootstrap.scm \
gnu/packages/mit-krb5.scm \
gnu/packages/mp3.scm \
gnu/packages/multiprecision.scm \
gnu/packages/mysql.scm \
gnu/packages/nano.scm \
gnu/packages/ncurses.scm \
gnu/packages/netpbm.scm \
gnu/packages/nettle.scm \
gnu/packages/ocaml.scm \
gnu/packages/oggvorbis.scm \
gnu/packages/openldap.scm \
gnu/packages/openssl.scm \
gnu/packages/parted.scm \
gnu/packages/patchelf.scm \
gnu/packages/pcre.scm \
gnu/packages/pdf.scm \
gnu/packages/perl.scm \
gnu/packages/pkg-config.scm \
gnu/packages/plotutils.scm \
gnu/packages/popt.scm \
gnu/packages/pth.scm \
gnu/packages/python.scm \
gnu/packages/qemu.scm \
gnu/packages/ratpoison.scm \
gnu/packages/readline.scm \
gnu/packages/recutils.scm \
gnu/packages/rsync.scm \
gnu/packages/samba.scm \
gnu/packages/scheme.scm \
gnu/packages/screen.scm \
gnu/packages/shishi.scm \
gnu/packages/smalltalk.scm \
gnu/packages/sqlite.scm \
gnu/packages/ssh.scm \
gnu/packages/system.scm \
gnu/packages/tcl.scm \
gnu/packages/tcsh.scm \
gnu/packages/texinfo.scm \
gnu/packages/texlive.scm \
gnu/packages/time.scm \
gnu/packages/tmux.scm \
gnu/packages/tor.scm \
gnu/packages/unrtf.scm \
gnu/packages/version-control.scm \
gnu/packages/vim.scm \
gnu/packages/vpn.scm \
gnu/packages/w3m.scm \
gnu/packages/wdiff.scm \
gnu/packages/wget.scm \
gnu/packages/which.scm \
gnu/packages/wordnet.scm \
gnu/packages/xlockmore.scm \
gnu/packages/xml.scm \
gnu/packages/xorg.scm \
gnu/packages/zile.scm \
gnu/packages/zip.scm \
gnu/system/vm.scm
patchdir = $(guilemoduledir)/gnu/packages/patches
dist_patch_DATA = \
gnu/packages/patches/automake-skip-amhello-tests.patch \
gnu/packages/patches/bigloo-gc-shebangs.patch \
gnu/packages/patches/binutils-ld-new-dtags.patch \
gnu/packages/patches/cmake-fix-tests.patch \
gnu/packages/patches/cpio-gets-undeclared.patch \
gnu/packages/patches/diffutils-gets-undeclared.patch \
gnu/packages/patches/emacs-configure-sh.patch \
gnu/packages/patches/findutils-absolute-paths.patch \
gnu/packages/patches/flac-fix-memcmp-not-declared.patch \
gnu/packages/patches/flex-bison-tests.patch \
gnu/packages/patches/gawk-shell.patch \
gnu/packages/patches/gcc-cross-environment-variables.patch \
gnu/packages/patches/gettext-gets-undeclared.patch \
gnu/packages/patches/glib-tests-desktop.patch \
gnu/packages/patches/glib-tests-homedir.patch \
gnu/packages/patches/glib-tests-prlimit.patch \
gnu/packages/patches/glibc-bootstrap-system.patch \
gnu/packages/patches/glibc-no-ld-so-cache.patch \
gnu/packages/patches/grub-gets-undeclared.patch \
gnu/packages/patches/guile-1.8-cpp-4.5.patch \
gnu/packages/patches/guile-default-utf8.patch \
gnu/packages/patches/guile-linux-syscalls.patch \
gnu/packages/patches/guile-relocatable.patch \
gnu/packages/patches/libapr-skip-getservbyname-test.patch \
gnu/packages/patches/libevent-dns-tests.patch \
gnu/packages/patches/libtool-skip-tests.patch \
gnu/packages/patches/lsh-guile-compat.patch \
gnu/packages/patches/lsh-no-root-login.patch \
gnu/packages/patches/lsh-pam-service-name.patch \
gnu/packages/patches/m4-gets-undeclared.patch \
gnu/packages/patches/m4-readlink-EINVAL.patch \
gnu/packages/patches/m4-s_isdir.patch \
gnu/packages/patches/make-impure-dirs.patch \
gnu/packages/patches/mcron-install.patch \
gnu/packages/patches/perl-no-sys-dirs.patch \
gnu/packages/patches/python-fix-dbm.patch \
gnu/packages/patches/procps-make-3.82.patch \
gnu/packages/patches/qemu-multiple-smb-shares.patch \
gnu/packages/patches/readline-link-ncurses.patch \
gnu/packages/patches/scheme48-tests.patch \
gnu/packages/patches/tar-gets-undeclared.patch \
gnu/packages/patches/tcsh-fix-autotest.patch \
gnu/packages/patches/teckit-cstdio.patch \
gnu/packages/patches/vpnc-script.patch \
gnu/packages/patches/w3m-fix-compile.patch \
gnu/packages/patches/xpdf-constchar.patch
bootstrapdir = $(guilemoduledir)/gnu/packages/bootstrap
bootstrap_x86_64_linuxdir = $(bootstrapdir)/x86_64-linux
bootstrap_i686_linuxdir = $(bootstrapdir)/i686-linux
dist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/bash \
gnu/packages/bootstrap/x86_64-linux/mkdir \
gnu/packages/bootstrap/x86_64-linux/tar \
gnu/packages/bootstrap/x86_64-linux/xz
dist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/bash \
gnu/packages/bootstrap/i686-linux/mkdir \
gnu/packages/bootstrap/i686-linux/tar \
gnu/packages/bootstrap/i686-linux/xz
# Big bootstrap binaries are not included in the tarball. Instead, they
# are downloaded.
nodist_bootstrap_x86_64_linux_DATA = \
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz
nodist_bootstrap_i686_linux_DATA = \
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz
# Those files must remain executable, so they remain executable once
# imported into the store.
install-data-hook:
chmod +x $(DESTDIR)$(bootstrapdir)/*/{bash,mkdir,tar,xz}
DISTCLEANFILES = \
$(nodist_bootstrap_x86_64_linux_DATA) \
$(nodist_bootstrap_i686_linux_DATA)
# Method to download a file from an external source.
DOWNLOAD_FILE = \
GUILE_LOAD_COMPILED_PATH="$(top_builddir):$$GUILE_LOAD_COMPILED_PATH" \
$(GUILE) --no-auto-compile -L "$(top_builddir)" -L "$(top_srcdir)" \
"$(top_srcdir)/build-aux/download.scm"
gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "bc43210dcd146d242bef4d354b0aeac12c4ef3118c07502d17ffa8d49e15aa2c"
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz:
$(MKDIR_P) `dirname "$@"`
$(DOWNLOAD_FILE) "$@" "f9a7c6f4c556eaafa2a69bcf07d4ffbb6682ea831d4c9da9ba095aca3ccd217c"

View File

@ -45,7 +45,11 @@
(system* "./dist/configure" (system* "./dist/configure"
(string-append "--prefix=" out) (string-append "--prefix=" out)
(string-append "CONFIG_SHELL=" (which "bash")) (string-append "CONFIG_SHELL=" (which "bash"))
(string-append "SHELL=" (which "bash")))))) (string-append "SHELL=" (which "bash"))
;; The compatibility mode is needed by some packages,
;; notably iproute2.
"--enable-compat185"))))
%standard-phases))) %standard-phases)))
(synopsis "db, the Berkeley database") (synopsis "db, the Berkeley database")
(description (description

68
gnu/packages/gd.scm Normal file
View File

@ -0,0 +1,68 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages gd)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (gnu packages libpng)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages compression)
#:use-module ((guix licenses) #:select (bsd-style)))
(define-public gd
(package
(name "gd")
;; Note: With libgd.org now pointing to bitbucket.org, genuine old
;; tarballs are no longer available. Notably, versions 2.0.34 and .35 are
;; missing.
(version "2.0.33")
(source (origin
(method url-fetch)
(uri "https://bitbucket.org/libgd/gd-libgd/get/GD_2_0_33.tar.gz")
(sha256
(base32
"0yrbx8mj9pykyzm0zl1q86xlkdvkajcsf5jmg688vhw9yc5wmbbw"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-after
'unpack 'chdir
(lambda _
(chdir "src"))
%standard-phases)))
(inputs
`(("freetype" ,freetype)
("libpng" ,libpng)
("zlib" ,zlib)))
(propagated-inputs
`(("fontconfig" ,fontconfig)
("libjpeg" ,libjpeg)))
(home-page "http://www.libgd.org/")
(synopsis "Library for the dynamic creation of images by programmers")
(description
"GD is a library for the dynamic creation of images by programmers. GD
is written in C, and \"wrappers\" are available for Perl, PHP and other
languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among other
formats. GD is commonly used to generate charts, graphics, thumbnails, and
most anything else, on the fly. While not restricted to use on the web, the
most common applications of GD involve website development.")
(license (bsd-style "file://COPYING"
"See COPYING file in the distribution."))))

View File

@ -214,3 +214,23 @@ Ghostscript. It currently includes the 35 standard PostScript fonts.")
(license license:gpl2) (license license:gpl2)
(home-page "http://sourceforge.net/projects/gs-fonts/"))) (home-page "http://sourceforge.net/projects/gs-fonts/")))
(define-public libspectre
(package
(name "libspectre")
(version "0.2.7")
(source (origin
(method url-fetch)
(uri (string-append "http://libspectre.freedesktop.org/releases/libspectre-"
version ".tar.gz"))
(sha256 (base32
"1v63lqc6bhhxwkpa43qmz8phqs8ci4dhzizyy16d3vkb20m846z8"))))
(build-system gnu-build-system)
(inputs `(("ghostscript" ,ghostscript)
("pkg-config" ,pkg-config)))
(synopsis "postscript rendering library")
(description
"libspectre is a small library for rendering Postscript documents.
It provides a convenient easy to use API for handling and rendering
Postscript documents.")
(license license:gpl2+)
(home-page "http://www.freedesktop.org/wiki/Software/libspectre")))

124
gnu/packages/graphviz.scm Normal file
View File

@ -0,0 +1,124 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages graphviz)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gtk)
#:use-module (gnu packages xml)
#:use-module (gnu packages glib)
#:use-module (gnu packages bison)
#:use-module (gnu packages libpng)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages autotools)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages compression)
#:use-module (gnu packages gd)
#:use-module ((guix licenses) #:select (lgpl2.0+ epl1.0)))
(define-public graphviz
(package
(name "graphviz")
(version "2.28.0")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-"
version
".tar.gz"))
(sha256
(base32
"0xpwg99cd8sp0c6r8klsmc66h1pday64kmnr4v6f9jkqqmrpkank"))))
(build-system gnu-build-system)
(arguments
;; FIXME: rtest/rtest.sh is a ksh script (!). Add ksh as an input.
'(#:tests? #f
#:phases (alist-cons-before
'build 'pre-build
(lambda _
;; Work around bogus makefile when using an external
;; libltdl. Failing to do so, one hits this error:
;; "No rule to make target `-lltdl', needed by `libgvc.la'."
(substitute* "lib/gvc/Makefile"
(("am__append_5 *=.*")
"am_append_5 =\n")))
%standard-phases)))
(inputs
`(("libXrender" ,libxrender)
("libX11" ,libx11)
("gts" ,gts)
("gd" ,gd) ; FIXME: Our GD is too old
("pango" ,pango)
("fontconfig" ,fontconfig)
("freetype" ,freetype)
("libltdl" ,libtool)
("bison" ,bison)
("libXaw" ,libxaw)
("expat" ,expat)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("pkg-config" ,pkg-config)))
(home-page "http://www.graphviz.org/")
(synopsis "Graph visualization software")
(description
"Graphviz is a graph visualization tool suite. Graph visualization is a
way of representing structural information as diagrams of abstract graphs and
networks. It has important applications in networking, bioinformatics,
software engineering, database and web design, machine learning, and in visual
interfaces for other technical domains.")
(license epl1.0)))
(define-public gts
(package
(name "gts")
(version "0.7.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gts/gts-"
version ".tar.gz"))
(sha256
(base32
"07mqx09jxh8cv9753y2d2jsv7wp8vjmrd7zcfpbrddz3wc9kx705"))))
(build-system gnu-build-system)
(arguments
'(#:phases (alist-cons-before
'check 'pre-check
(lambda _
(chmod "test/boolean/test.sh" #o777))
%standard-phases)
;; Some data files used by the test suite are missing.
;; See <http://sourceforge.net/p/gts/bugs/41/>.
#:tests? #f))
(inputs
`(("pkg-config" ,pkg-config)))
(propagated-inputs
;; The gts.pc file has glib-2.0 as required.
`(("glib" ,glib)))
(home-page "http://gts.sourceforge.net/")
;; Note: Despite the name, this is not official GNU software.
(synopsis "Triangulated Surface Library")
(description
"Library intended to provide a set of useful functions to deal with
3D surfaces meshed with interconnected triangles.")
(license lgpl2.0+)))

View File

@ -22,8 +22,16 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages pkg-config)) #:use-module (gnu packages icu4c)
#:use-module (gnu packages libpng)
#:use-module (gnu packages pdf)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages xorg))
(define-public atk (define-public atk
(package (package
@ -46,3 +54,102 @@ by other toolkits and applications. Using the ATK interfaces, accessibility
tools have full access to view and control running applications.") tools have full access to view and control running applications.")
(license license:lgpl2.0+) (license license:lgpl2.0+)
(home-page "https://developer.gnome.org/atk/"))) (home-page "https://developer.gnome.org/atk/")))
(define-public cairo
(package
(name "cairo")
(version "1.12.14")
(source (origin
(method url-fetch)
(uri (string-append "http://cairographics.org/releases/cairo-"
version ".tar.xz"))
(sha256
(base32
"04xcykglff58ygs0dkrmmnqljmpjwp2qgwcz8sijqkdpz7ix3l4n"))))
(build-system gnu-build-system)
(propagated-inputs
`(("fontconfig" ,fontconfig)
("freetype" ,freetype)
("glib" ,glib)
("libpng" ,libpng)
("libx11" ,libx11)
("libxext" ,libxext)
("libxrender" ,libxrender)
("pixman" ,pixman)))
(inputs
`(("ghostscript" ,ghostscript)
("libspectre" ,libspectre)
("pkg-config" ,pkg-config)
("poppler" ,poppler)
("python" ,python)
("xextproto" ,xextproto)
("zlib" ,zlib)))
(arguments
`(#:tests? #f)) ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html
(synopsis "2D graphics library")
(description
"Cairo is a 2D graphics library with support for multiple output devices.
Currently supported output targets include the X Window System (via both
Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file
output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
Cairo is designed to produce consistent output on all output media while
taking advantage of display hardware acceleration when available
eg. through the X Render Extension).
The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling cubic
Bézier splines, transforming and compositing translucent images, and
antialiased text rendering. All drawing operations can be transformed by any
affine transformation (scale, rotation, shear, etc.)")
(license license:lgpl2.1) ; or Mozilla Public License 1.1
(home-page "http://cairographics.org/")))
(define-public harfbuzz
(package
(name "harfbuzz")
(version "0.9.18")
(source (origin
(method url-fetch)
(uri (string-append "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-"
version ".tar.bz2"))
(sha256
(base32
"026rlwspf1zn5akds9fwibpqpn47kmlnmqm5fi0cp4k4dnygpw7y"))))
(build-system gnu-build-system)
(inputs
`(("cairo" ,cairo)
("icu4c" ,icu4c)
("pkg-config" ,pkg-config)
("python" ,python)))
(synopsis "opentype text shaping engine")
(description
"HarfBuzz is an OpenType text shaping engine.")
(license (license:x11-style "file://COPYING"
"See 'COPYING' in the distribution."))
(home-page "http://www.freedesktop.org/wiki/Software/HarfBuzz/")))
(define-public pango
(package
(name "pango")
(version "1.34.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/pango/1.34/pango-"
version ".tar.xz"))
(sha256
(base32
"0k7662qix7zzh7mf6ikdj594n8jpbfm25z8swz64zbm86kgk1shs"))))
(build-system gnu-build-system)
(inputs
`(("cairo" ,cairo)
("harfbuzz" ,harfbuzz)
("pkg-config" ,pkg-config)
("zlib" ,zlib)))
(synopsis "GNOME text and font handling library")
(description
"Pango is the core text and font handling library used in GNOME
applications. It has extensive support for the different writing systems
used throughout the world.")
(license license:lgpl2.0+)
(home-page "https://developer.gnome.org/pango/")))

View File

@ -0,0 +1,92 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages imagemagick)
#:use-module (guix packages)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module ((guix licenses) #:select (fsf-free))
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages compression)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xml)
#:use-module (gnu packages gtk)
#:use-module (gnu packages libpng)
#:use-module (gnu packages libtiff)
#:use-module (gnu packages libjpeg)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages pkg-config))
(define-public imagemagick
(package
(name "imagemagick")
(version "6.8.6-0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
"1qmwpnq2mcxjnp0rjyb2g7v87lhmll19imx3iys6kplh8amrmqnv"))))
(build-system gnu-build-system)
(arguments
`(#:phases (alist-cons-before
'build 'pre-build
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "Makefile"
;; Clear the `LIBRARY_PATH' setting, which otherwise
;; interferes with our own use.
(("^LIBRARY_PATH[[:blank:]]*=.*$")
"")
;; Since the Makefile overrides $docdir, modify it to
;; refer to what we want.
(("^DOCUMENTATION_PATH[[:blank:]]*=.*$")
(let ((doc (assoc-ref outputs "doc")))
(string-append "DOCUMENTATION_PATH = "
doc "/share/doc/"
,name "-" ,version "\n")))))
%standard-phases)))
;; TODO: Add Jasper, LCMS, etc.
(inputs `(("graphviz" ,graphviz)
("ghostscript" ,ghostscript)
("libx11" ,libx11)
("zlib" ,zlib)
("libxml2" ,libxml2)
("libtiff" ,libtiff)
("libpng" ,libpng)
("libjpeg" ,libjpeg-8)
("pango" ,pango)
("freetype" ,freetype)
("bzip2" ,bzip2)
("xz" ,xz)
("pkg-config" ,pkg-config)))
(outputs '("out"
"doc")) ; 26 MiB of HTML documentation
(home-page "http://www.imagemagick.org/")
(synopsis "Create, edit, compose, or convert bitmap images")
(description
"ImageMagick® is a software suite to create, edit, compose, or convert
bitmap images. It can read and write images in a variety of formats (over 100)
including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG,
and TIFF. Use ImageMagick to resize, flip, mirror, rotate, distort, shear and
transform images, adjust image colors, apply various special effects, or draw
text, lines, polygons, ellipses and Bézier curves.")
(license (fsf-free "http://www.imagemagick.org/script/license.php"))))

View File

@ -37,7 +37,10 @@
(sha256 (base32 (sha256 (base32
"0m3vz3gig7s63zanq5b1dgb5ph12qm0cylw4g4fbxlsq3f74hn8l")))) "0m3vz3gig7s63zanq5b1dgb5ph12qm0cylw4g4fbxlsq3f74hn8l"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("zlib" ,zlib)))
;; libpng.la says "-lz", so propagate it.
(propagated-inputs `(("zlib" ,zlib)))
(synopsis "Libpng, a library for handling PNG files") (synopsis "Libpng, a library for handling PNG files")
(description (description
"Libpng is the official PNG (Portable Network Graphics) reference "Libpng is the official PNG (Portable Network Graphics) reference

View File

@ -23,8 +23,10 @@
#:use-module ((gnu packages compression) #:use-module ((gnu packages compression)
#:renamer (symbol-prefix-proc 'guix:)) #:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages bison)
#:use-module (gnu packages libusb) #:use-module (gnu packages libusb)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages bdb)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (guix packages) #:use-module (guix packages)
@ -78,12 +80,18 @@
(arguments (arguments
`(#:modules ((guix build gnu-build-system) `(#:modules ((guix build gnu-build-system)
(guix build utils) (guix build utils)
(srfi srfi-1)) (srfi srfi-1)
,@(if (%current-target-system)
'((guix build gnu-cross-build))
'()))
#:phases (alist-replace #:phases (alist-replace
'build ,(build-phase (%current-system)) 'build ,(build-phase (%current-system))
(alist-replace (alist-replace
'install ,install-phase 'install ,install-phase
(alist-delete 'configure %standard-phases))) (alist-delete 'configure
,(if (%current-target-system)
'%standard-cross-phases
'%standard-phases))))
#:tests? #f)) #:tests? #f))
(synopsis "GNU Linux-Libre kernel headers") (synopsis "GNU Linux-Libre kernel headers")
(description "Headers of the Linux-Libre kernel.") (description "Headers of the Linux-Libre kernel.")
@ -449,3 +457,88 @@ trace of all the system calls made by a another process/program.")
"The Advanced Linux Sound Architecture (ALSA) provides audio and "The Advanced Linux Sound Architecture (ALSA) provides audio and
MIDI functionality to the Linux-based operating system.") MIDI functionality to the Linux-based operating system.")
(license lgpl2.1+))) (license lgpl2.1+)))
(define-public iptables
(package
(name "iptables")
(version "1.4.16.2")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.netfilter.org/projects/iptables/files/iptables-"
version ".tar.bz2"))
(sha256
(base32
"0vkg5lzkn4l3i1sm6v3x96zzvnv9g7mi0qgj6279ld383mzcws24"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f)) ; no test suite
(home-page "http://www.netfilter.org/projects/iptables/index.html")
(synopsis "Program to configure the Linux IP packet filtering rules")
(description
"iptables is the userspace command line program used to configure the
Linux 2.4.x and later IPv4 packet filtering ruleset. It is targeted towards
system administrators. Since Network Address Translation is also configured
from the packet filter ruleset, iptables is used for this, too. The iptables
package also includes ip6tables. ip6tables is used for configuring the IPv6
packet filter.")
(license gpl2+)))
(define-public iproute
(package
(name "iproute2")
(version "3.8.0")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://kernel.org/linux/utils/net/iproute2/iproute2-"
version ".tar.xz"))
(sha256
(base32
"0kqy30wz2krbg4y7750hjq5218hgy2vj9pm5qzkn1bqskxs4b4ap"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite
#:make-flags (let ((out (assoc-ref %outputs "out")))
(list "DESTDIR="
(string-append "LIBDIR=" out "/lib")
(string-append "SBINDIR=" out "/sbin")
(string-append "CONFDIR=" out "/etc")
(string-append "DOCDIR=" out "/share/doc/"
,name "-" ,version)
(string-append "MANDIR=" out "/share/man")))
#:phases (alist-cons-before
'install 'pre-install
(lambda _
;; Don't attempt to create /var/lib/arpd.
(substitute* "Makefile"
(("^.*ARPDDIR.*$") "")))
%standard-phases)))
(inputs
`(("iptables" ,iptables)
("db4" ,bdb)
("pkg-config" ,pkg-config)
("flex" ,flex)
("bison" ,bison)))
(home-page
"http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2")
(synopsis
"A collection of utilities for controlling TCP/IP networking and traffic control in Linux")
(description
"Iproute2 is a collection of utilities for controlling TCP/IP
networking and traffic with the Linux kernel.
Most network configuration manuals still refer to ifconfig and route as the
primary network configuration tools, but ifconfig is known to behave
inadequately in modern network environments. They should be deprecated, but
most distros still include them. Most network configuration systems make use
of ifconfig and thus provide a limited feature set. The /etc/net project aims
to support most modern network technologies, as it doesn't use ifconfig and
allows a system administrator to make use of all iproute2 features, including
traffic control.
iproute2 is usually shipped in a package called iproute or iproute2 and
consists of several tools, of which the most important are ip and tc. ip
controls IPv4 and IPv6 configuration and tc stands for traffic control. Both
tools print detailed usage messages and are accompanied by a set of
manpages.")
(license gpl2+)))

View File

@ -49,12 +49,12 @@
;;; ;;;
;;; Code: ;;; Code:
(define %glibc-for-bootstrap (define* (glibc-for-bootstrap #:optional (base glibc-final))
;; A libc whose `system' and `popen' functions looks for `sh' in $PATH, "Return a libc deriving from BASE whose `system' and `popen' functions looks
;; without nscd, and with static NSS modules. for `sh' in $PATH, and without nscd, and with static NSS modules."
(package (inherit glibc-final) (package (inherit base)
(arguments (arguments
(substitute-keyword-arguments (package-arguments glibc-final) (substitute-keyword-arguments (package-arguments base)
((#:patches patches) ((#:patches patches)
`(cons (assoc-ref %build-inputs "patch/system") ,patches)) `(cons (assoc-ref %build-inputs "patch/system") ,patches))
((#:configure-flags flags) ((#:configure-flags flags)
@ -65,18 +65,24 @@
,flags)))) ,flags))))
(inputs (inputs
`(("patch/system" ,(search-patch "glibc-bootstrap-system.patch")) `(("patch/system" ,(search-patch "glibc-bootstrap-system.patch"))
,@(package-inputs glibc-final))))) ,@(package-inputs base)))))
(define %standard-inputs-with-relocatable-glibc (define (package-with-relocatable-glibc p)
;; Standard inputs with the above libc and corresponding GCC. "Return a variant of P that uses the libc as defined by
`(("libc", %glibc-for-bootstrap) `glibc-for-bootstrap'."
(define inputs
`(("libc", (glibc-for-bootstrap))
("gcc" ,(package-with-explicit-inputs ("gcc" ,(package-with-explicit-inputs
gcc-4.7 gcc-4.7
`(("libc",%glibc-for-bootstrap) `(("libc",(glibc-for-bootstrap))
,@(alist-delete "libc" %final-inputs)) ,@(alist-delete "libc" %final-inputs))
(current-source-location))) (current-source-location)))
,@(fold alist-delete %final-inputs '("libc" "gcc")))) ,@(fold alist-delete %final-inputs '("libc" "gcc"))))
(package-with-explicit-inputs p inputs
(current-source-location)))
(define %bash-static (define %bash-static
(static-package bash-light)) (static-package bash-light))
@ -93,8 +99,12 @@
#:tests? #f ; signal-related Gnulib tests fail #:tests? #f ; signal-related Gnulib tests fail
,@(package-arguments coreutils))) ,@(package-arguments coreutils)))
;; Remove optional dependencies such as GMP. ;; Remove optional dependencies such as GMP. Keep Perl
(inputs `(,(assoc "perl" (package-inputs coreutils)))))) ;; except if it's missing (which is the case when
;; cross-compiling).
(inputs (match (assoc "perl" (package-inputs coreutils))
(#f '())
(x (list x))))))
(bzip2 (package (inherit bzip2) (bzip2 (package (inherit bzip2)
(arguments (arguments
(substitute-keyword-arguments (package-arguments bzip2) (substitute-keyword-arguments (package-arguments bzip2)
@ -131,11 +141,8 @@
(("-export-dynamic") ""))) (("-export-dynamic") "")))
,phases))))) ,phases)))))
(inputs `(("patch/sh" ,(search-patch "gawk-shell.patch")))))) (inputs `(("patch/sh" ,(search-patch "gawk-shell.patch"))))))
(finalize (lambda (p) (finalize (compose static-package
(static-package (package-with-explicit-inputs package-with-relocatable-glibc)))
p
%standard-inputs-with-relocatable-glibc)
(current-source-location)))))
`(,@(map (match-lambda `(,@(map (match-lambda
((name package) ((name package)
(list name (finalize package)))) (list name (finalize package))))
@ -280,7 +287,7 @@
;; GNU libc's essential shared libraries, dynamic linker, and headers, ;; GNU libc's essential shared libraries, dynamic linker, and headers,
;; with all references to store directories stripped. As a result, ;; with all references to store directories stripped. As a result,
;; libc.so is unusable and need to be patched for proper relocation. ;; libc.so is unusable and need to be patched for proper relocation.
(let ((glibc %glibc-for-bootstrap)) (let ((glibc (glibc-for-bootstrap)))
(package (inherit glibc) (package (inherit glibc)
(name "glibc-stripped") (name "glibc-stripped")
(build-system trivial-build-system) (build-system trivial-build-system)
@ -331,7 +338,7 @@
(define %gcc-static (define %gcc-static
;; A statically-linked GCC, with stripped-down functionality. ;; A statically-linked GCC, with stripped-down functionality.
(package-with-explicit-inputs (package-with-relocatable-glibc
(package (inherit gcc-final) (package (inherit gcc-final)
(name "gcc-static") (name "gcc-static")
(arguments (arguments
@ -361,8 +368,7 @@
("mpfr-source" ,(package-source mpfr)) ("mpfr-source" ,(package-source mpfr))
("mpc-source" ,(package-source mpc)) ("mpc-source" ,(package-source mpc))
("binutils" ,binutils-final) ("binutils" ,binutils-final)
,@(package-inputs gcc-4.7)))) ,@(package-inputs gcc-4.7))))))
%standard-inputs-with-relocatable-glibc))
(define %gcc-stripped (define %gcc-stripped
;; The subset of GCC files needed for bootstrap. ;; The subset of GCC files needed for bootstrap.
@ -450,9 +456,7 @@
;; There are uses of `dynamic-link' in ;; There are uses of `dynamic-link' in
;; {foreign,coverage}.test that don't fly here. ;; {foreign,coverage}.test that don't fly here.
#:tests? #f))))) #:tests? #f)))))
(package-with-explicit-inputs (static-package guile) (package-with-relocatable-glibc (static-package guile))))
%standard-inputs-with-relocatable-glibc
(current-source-location))))
(define %guile-static-stripped (define %guile-static-stripped
;; A stripped static Guile binary, for use during bootstrap. ;; A stripped static Guile binary, for use during bootstrap.

View File

@ -24,7 +24,10 @@
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:export (pkg-config)) #:export (pkg-config))
(define %pkg-config ;; This is the "primitive" pkg-config package. People should use `pkg-config'
;; (see below) rather than `%pkg-config', but we export `%pkg-config' so that
;; `fold-packages' finds it.
(define-public %pkg-config
(package (package
(name "pkg-config") (name "pkg-config")
(version "0.27.1") (version "0.27.1")

View File

@ -31,6 +31,10 @@
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages avahi) #:use-module (gnu packages avahi)
#:use-module (gnu packages libphidget) #:use-module (gnu packages libphidget)
#:use-module (gnu packages glib)
#:use-module (gnu packages libffi)
#:use-module (gnu packages libjpeg)
#:use-module ((gnu packages gtk) #:select (cairo pango))
#:use-module (ice-9 match)) #:use-module (ice-9 match))
(define-public mit-scheme (define-public mit-scheme
@ -319,3 +323,72 @@ implementation techniques and as an expository tool.")
;; Most files are BSD-3; see COPYING for the few exceptions. ;; Most files are BSD-3; see COPYING for the few exceptions.
(license bsd-3))) (license bsd-3)))
(define-public racket
(package
(name "racket")
(version "5.3.4")
(source (origin
(method url-fetch)
(uri (list (string-append "http://download.racket-lang.org/installers/"
version "/racket/racket-" version
"-src-unix.tgz")
(string-append
"http://mirror.informatik.uni-tuebingen.de/mirror/racket/"
version "/racket/racket-" version "-src-unix.tgz")))
(sha256
;; XXX: Used to be 1xhnx3yd74zrvn6sfcqmk57kxj51cwvm660dwiaxr1qxnm5lq0v7.
(base32 "0yrdmpdvzf092869y6zjjjxl6j2kypgiv7qrfkv7lj8w01pbh7sd"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(let* ((gui-libs
(lambda (inputs)
;; FIXME: Add GTK+ and GDK for DrRacket.
(let ((glib (string-append (assoc-ref inputs "glib") "/lib"))
(cairo (string-append (assoc-ref inputs "cairo") "/lib"))
(pango (string-append (assoc-ref inputs "pango") "/lib"))
(libjpeg (string-append (assoc-ref inputs "libjpeg") "/lib")))
(list glib cairo pango libjpeg)))))
(alist-cons-before
'configure 'pre-configure
(lambda* (#:key inputs #:allow-other-keys)
(chdir "src")
;; The GUI libs are dynamically opened through the FFI, so they
;; must be in the loader's search path.
(setenv "LD_LIBRARY_PATH" (string-join (gui-libs inputs) ":")))
(alist-cons-after
'unpack 'patch-/bin/sh
(lambda _
(substitute* "collects/racket/system.rkt"
(("/bin/sh") (which "sh"))))
(alist-cons-after
'install 'wrap-programs
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(define (wrap prog)
(wrap-program prog
`("LD_LIBRARY_PATH" ":" prefix
,(gui-libs inputs))))
(with-directory-excursion (string-append out "/bin")
(for-each wrap
(list "gracket" "drracket" "slideshow" "mred"))
#t)))
%standard-phases))))
#:tests? #f ; XXX: how to run them?
))
(inputs `(("libffi" ,libffi)
("glib" ,glib) ; for DrRacket
("cairo" ,cairo)
("pango" ,pango)
("libjpeg" ,libjpeg-8)))
(home-page "http://racket-lang.org")
(synopsis "Implementation of Scheme and related languages")
(description
"Racket is an implementation of the Scheme programming language (R5RS and
R6RS) and related languages, such as Typed Racket. It features a compiler and
a virtual machine with just-in-time native compilation, as well as a large set
of libraries.")
(license lgpl2.0+)))

View File

@ -1,58 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Cyril Roelandt <tipecaml@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 subversion)
#:use-module ((guix licenses) #:select (asl2.0))
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages libapr)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages sqlite))
(define-public subversion
(package
(name "subversion")
(version "1.7.8")
(source (origin
(method url-fetch)
(uri (string-append "https://archive.apache.org/dist/subversion/subversion-"
version ".tar.bz2"))
(sha256
(base32
"11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
(build-system gnu-build-system)
(inputs
`(("libapr" ,libapr)
("libaprutil" ,libaprutil)
("perl" ,perl)
("python" ,python)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(home-page "http://subversion.apache.org/")
(synopsis "Subversion, a revision control system")
(description
"Subversion exists to be universally recognized and adopted as an
open-source, centralized version control system characterized by its
reliability as a safe haven for valuable data; the simplicity of its model and
usage; and its ability to support the needs of a wide variety of users and
projects, from individuals to large-scale enterprise operations.")
(license asl2.0)))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -17,7 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages version-control) (define-module (gnu packages version-control)
#:use-module ((guix licenses) #:select (gpl1+ gpl2+ gpl3+)) #:use-module ((guix licenses) #:select (asl2.0 gpl1+ gpl2+ gpl3+))
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
@ -25,7 +26,11 @@
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module ((gnu packages gettext) #:use-module ((gnu packages gettext)
#:renamer (symbol-prefix-proc 'guix:)) #:renamer (symbol-prefix-proc 'guix:))
#:use-module (gnu packages libapr)
#:use-module (gnu packages nano) #:use-module (gnu packages nano)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages compression)) #:use-module (gnu packages compression))
(define-public bazaar (define-public bazaar
@ -56,6 +61,35 @@ organize their workspace in whichever way they want. It is possible to work
from a command line or use a GUI application.") from a command line or use a GUI application.")
(license gpl2+))) (license gpl2+)))
(define-public subversion
(package
(name "subversion")
(version "1.7.8")
(source (origin
(method url-fetch)
(uri (string-append "https://archive.apache.org/dist/subversion/subversion-"
version ".tar.bz2"))
(sha256
(base32
"11inl9n1riahfnbk1fax0dysm2swakzhzhpmm2zvga6fikcx90zw"))))
(build-system gnu-build-system)
(inputs
`(("libapr" ,libapr)
("libaprutil" ,libaprutil)
("perl" ,perl)
("python" ,python)
("sqlite" ,sqlite)
("zlib" ,zlib)))
(home-page "http://subversion.apache.org/")
(synopsis "Subversion, a revision control system")
(description
"Subversion exists to be universally recognized and adopted as an
open-source, centralized version control system characterized by its
reliability as a safe haven for valuable data; the simplicity of its model and
usage; and its ability to support the needs of a wide variety of users and
projects, from individuals to large-scale enterprise operations.")
(license asl2.0)))
(define-public rcs (define-public rcs
(package (package
(name "rcs") (name "rcs")

View File

@ -54,7 +54,7 @@ ignored."
search-paths native-search-paths) search-paths native-search-paths)
"Like `trivial-build', but in a cross-compilation context." "Like `trivial-build', but in a cross-compilation context."
(build-expression->derivation store name system (build-expression->derivation store name system
`(begin (define %target ,target) ,builder) `(let ((%target ,target)) ,builder)
(append native-inputs inputs) (append native-inputs inputs)
#:outputs outputs #:outputs outputs
#:modules modules #:modules modules

View File

@ -28,7 +28,9 @@
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 format) #:use-module (ice-9 format)
#:export (url-fetch)) #:export (url-fetch
progress-proc
uri-abbreviation))
;;; Commentary: ;;; Commentary:
;;; ;;;

View File

@ -469,8 +469,9 @@ in SIZE bytes."
(drv (make-derivation outputs inputs sources (drv (make-derivation outputs inputs sources
system builder args env-vars))) system builder args env-vars)))
(sha256 (sha256
(with-fluids ((%default-port-encoding "UTF-8"))
(string->utf8 (call-with-output-string (string->utf8 (call-with-output-string
(cut write-derivation drv <>)))))))))) (cut write-derivation drv <>)))))))))))
(define (store-path type hash name) ; makeStorePath (define (store-path type hash name) ; makeStorePath
"Return the store path for NAME/HASH/TYPE." "Return the store path for NAME/HASH/TYPE."

View File

@ -148,7 +148,14 @@
"ftp://ftp.osuosl.org/pub/CPAN/" "ftp://ftp.osuosl.org/pub/CPAN/"
"ftp://ftp.nara.wide.ad.jp/pub/CPAN/" "ftp://ftp.nara.wide.ad.jp/pub/CPAN/"
"http://mirrors.163.com/cpan/" "http://mirrors.163.com/cpan/"
"ftp://cpan.mirror.ac.za/")))) "ftp://cpan.mirror.ac.za/")
(imagemagick ; from http://www.imagemagick.org/script/download.php
"http://mirror.checkdomain.de/imagemagick/"
"ftp://gd.tuwien.ac.at/pub/graphics/ImageMagick/"
"http://www.imagemagick.org/download"
"ftp://mirror.searchdaimon.com/ImageMagick"
"http://mirror.is.co.za/pub/imagemagick/"
"ftp://mirror.aarnet.edu.au/pub/imagemagick/"))))
(define (gnutls-derivation store system) (define (gnutls-derivation store system)
"Return the GnuTLS derivation for SYSTEM." "Return the GnuTLS derivation for SYSTEM."

View File

@ -50,6 +50,8 @@ Invoke the garbage collector.\n"))
(newline) (newline)
(display (_ " (display (_ "
--references list the references of PATHS")) --references list the references of PATHS"))
(display (_ "
-R, --requisites list the requisites of PATHS"))
(display (_ " (display (_ "
--referrers list the referrers of PATHS")) --referrers list the referrers of PATHS"))
(newline) (newline)
@ -128,6 +130,10 @@ interpreted."
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'action 'list-references (alist-cons 'action 'list-references
(alist-delete 'action result)))) (alist-delete 'action result))))
(option '(#\R "requisites") #f #f
(lambda (opt name arg result)
(alist-cons 'action 'list-requisites
(alist-delete 'action result))))
(option '("referrers") #f #f (option '("referrers") #f #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'action 'list-referrers (alist-cons 'action 'list-referrers
@ -189,6 +195,8 @@ interpreted."
(delete-paths store paths)) (delete-paths store paths))
((list-references) ((list-references)
(list-relatives references)) (list-relatives references))
((list-requisites)
(list-relatives requisites))
((list-referrers) ((list-referrers)
(list-relatives referrers)) (list-relatives referrers))
((list-dead) ((list-dead)

View File

@ -846,9 +846,13 @@ more information.~%"))
(current-error-port) (current-error-port)
(%make-void-port "w")))) (%make-void-port "w"))))
(build-derivations (%store) (list prof-drv))) (build-derivations (%store) (list prof-drv)))
(begin (let ((count (length packages)))
(switch-symlinks name prof) (switch-symlinks name prof)
(switch-symlinks profile name) (switch-symlinks profile name)
(format #t (N_ "~a package in profile~%"
"~a packages in profile~%"
count)
count)
(display-search-paths packages (display-search-paths packages
profile)))))))))) profile))))))))))

View File

@ -24,12 +24,15 @@
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix nar) #:use-module (guix nar)
#:use-module ((guix build utils) #:select (mkdir-p)) #:use-module ((guix build utils) #:select (mkdir-p))
#:use-module ((guix build download)
#:select (progress-proc uri-abbreviation))
#:use-module (ice-9 rdelim) #:use-module (ice-9 rdelim)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 threads) #:use-module (ice-9 threads)
#:use-module (ice-9 format) #:use-module (ice-9 format)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
#:use-module (ice-9 binary-ports)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9) #:use-module (srfi srfi-9)
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)
@ -117,7 +120,38 @@ pairs."
(else (else
(error "unmatched line" line))))) (error "unmatched line" line)))))
(define* (fetch uri #:key (buffered? #t)) (define %fetch-timeout
;; Number of seconds after which networking is considered "slow".
3)
(define-syntax-rule (with-timeout duration handler body ...)
"Run BODY; when DURATION seconds have expired, call HANDLER, and run BODY
again."
(begin
(sigaction SIGALRM
(lambda (signum)
(sigaction SIGALRM SIG_DFL)
handler))
(alarm duration)
(call-with-values
(lambda ()
(let try ()
(catch 'system-error
(lambda ()
body ...)
(lambda args
;; The SIGALRM triggers EINTR. When that happens, try again.
;; Note: SA_RESTART cannot be used because of
;; <http://bugs.gnu.org/14640>.
(if (= EINTR (system-error-errno args))
(try)
(apply throw args))))))
(lambda result
(alarm 0)
(sigaction SIGALRM SIG_DFL)
(apply values result)))))
(define* (fetch uri #:key (buffered? #t) (timeout? #t))
"Return a binary input port to URI and the number of bytes it's expected to "Return a binary input port to URI and the number of bytes it's expected to
provide." provide."
(case (uri-scheme uri) (case (uri-scheme uri)
@ -127,7 +161,21 @@ provide."
(setvbuf port _IONBF)) (setvbuf port _IONBF))
(values port (stat:size (stat port))))) (values port (stat:size (stat port)))))
((http) ((http)
(http-fetch uri #:text? #f #:buffered? buffered?)))) ;; On Guile 2.0.5, `http-fetch' fetches the whole thing at once. So
;; honor TIMEOUT? to disable the timeout when fetching a nar.
;;
;; Test this with:
;; sudo tc qdisc add dev eth0 root netem delay 1500ms
;; and then cancel with:
;; sudo tc qdisc del dev eth0 root
(with-timeout (if (or timeout? (version>? (version) "2.0.5"))
%fetch-timeout
0)
(begin
(warning (_ "while fetching ~a: server is unresponsive~%")
(uri->string uri))
(warning (_ "try `--no-substitutes' if the problem persists~%")))
(http-fetch uri #:text? #f #:buffered? buffered?)))))
(define-record-type <cache> (define-record-type <cache>
(%make-cache url store-directory wants-mass-query?) (%make-cache url store-directory wants-mass-query?)
@ -353,7 +401,8 @@ indefinitely."
(cute write (time-second now) <>)))) (cute write (time-second now) <>))))
(define (decompressed-port compression input) (define (decompressed-port compression input)
"Return an input port where INPUT is decompressed according to COMPRESSION." "Return an input port where INPUT is decompressed according to COMPRESSION,
along with a list of PIDs to wait for."
(match compression (match compression
("none" (values input '())) ("none" (values input '()))
("bzip2" (filtered-port `(,%bzip2 "-dc") input)) ("bzip2" (filtered-port `(,%bzip2 "-dc") input))
@ -361,6 +410,24 @@ indefinitely."
("gzip" (filtered-port `(,%gzip "-dc") input)) ("gzip" (filtered-port `(,%gzip "-dc") input))
(else (error "unsupported compression scheme" compression)))) (else (error "unsupported compression scheme" compression))))
(define (progress-report-port report-progress port)
"Return a port that calls REPORT-PROGRESS every time something is read from
PORT. REPORT-PROGRESS is a two-argument procedure such as that returned by
`progress-proc'."
(define total 0)
(define (read! bv start count)
(let ((n (match (get-bytevector-n! port bv start count)
((? eof-object?) 0)
(x x))))
(set! total (+ total n))
(report-progress total (const n))
;; XXX: We're not in control, so we always return anyway.
n))
(make-custom-binary-input-port "progress-port-proc"
read! #f #f
(cut close-port port)))
(define %cache-url (define %cache-url
(or (getenv "GUIX_BINARY_SUBSTITUTE_URL") (or (getenv "GUIX_BINARY_SUBSTITUTE_URL")
"http://hydra.gnu.org")) "http://hydra.gnu.org"))
@ -442,19 +509,25 @@ indefinitely."
;; Tell the daemon what the expected hash of the Nar itself is. ;; Tell the daemon what the expected hash of the Nar itself is.
(format #t "~a~%" (narinfo-hash narinfo)) (format #t "~a~%" (narinfo-hash narinfo))
(format (current-error-port) "downloading `~a' from `~a'...~%"
store-path (uri->string uri))
(let*-values (((raw download-size) (let*-values (((raw download-size)
(fetch uri #:buffered? #f)) ;; Note that Hydra currently generates Nars on the fly
;; and doesn't specify a Content-Length, so
;; DOWNLOAD-SIZE is #f in practice.
(fetch uri #:buffered? #f #:timeout? #f))
((progress)
(let* ((comp (narinfo-compression narinfo))
(dl-size (or download-size
(and (equal? comp "none")
(narinfo-size narinfo))))
(progress (progress-proc (uri-abbreviation uri)
dl-size
(current-error-port))))
(progress-report-port progress raw)))
((input pids) ((input pids)
(decompressed-port (narinfo-compression narinfo) (decompressed-port (narinfo-compression narinfo)
raw))) progress)))
;; Note that Hydra currently generates Nars on the fly and doesn't
;; specify a Content-Length, so DOWNLOAD-SIZE is #f in practice.
(format (current-error-port)
(_ "downloading `~a' from `~a'~:[~*~; (~,1f KiB)~]...~%")
store-path (uri->string uri)
download-size
(and=> download-size (cut / <> 1024.0)))
;; Unpack the Nar at INPUT into DESTINATION. ;; Unpack the Nar at INPUT into DESTINATION.
(restore-file input destination) (restore-file input destination)
(every (compose zero? cdr waitpid) pids)))) (every (compose zero? cdr waitpid) pids))))
@ -464,6 +537,7 @@ indefinitely."
;;; Local Variable: ;;; Local Variable:
;;; eval: (put 'with-atomic-file-output 'scheme-indent-function 1) ;;; eval: (put 'with-atomic-file-output 'scheme-indent-function 1)
;;; eval: (put 'with-timeout 'scheme-indent-function 1)
;;; End: ;;; End:
;;; substitute-binary.scm ends here ;;; substitute-binary.scm ends here

View File

@ -31,6 +31,7 @@
#:use-module (srfi srfi-39) #:use-module (srfi srfi-39)
#: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)
#:export (%daemon-socket-file #:export (%daemon-socket-file
nix-server? nix-server?
@ -70,6 +71,7 @@
substitutable-path-info substitutable-path-info
references references
requisites
referrers referrers
valid-derivers valid-derivers
query-derivation-outputs query-derivation-outputs
@ -493,6 +495,30 @@ file name. Return #t on success."
"Return the list of references of PATH." "Return the list of references of PATH."
store-path-list)) store-path-list))
(define* (fold-path store proc seed path
#:optional (relatives (cut references store <>)))
"Call PROC for each of the RELATIVES of PATH, exactly once, and return the
result formed from the successive calls to PROC, the first of which is passed
SEED."
(let loop ((paths (list path))
(result seed)
(seen vlist-null))
(match paths
((path rest ...)
(if (vhash-assoc path seen)
(loop rest result seen)
(let ((seen (vhash-cons path #t seen))
(rest (append rest (relatives path)))
(result (proc path result)))
(loop rest result seen))))
(()
result))))
(define (requisites store path)
"Return the requisites of PATH, including PATH---i.e., its closure (all its
references, recursively)."
(fold-path store cons '() path))
(define referrers (define referrers
(operation (query-referrers (store-path path)) (operation (query-referrers (store-path path))
"Return the list of path that refer to PATH." "Return the list of path that refer to PATH."

@ -1 +1 @@
Subproject commit 3a0cc43ac89ae8f778764c9f5e27b361e4986913 Subproject commit 1b6ee8f4c7e74f75e1f49b43cf22be7730b30649

View File

@ -1,6 +1,6 @@
#!/bin/sh #!/bin/sh
# GNU Guix --- Functional package management for GNU # GNU Guix --- Functional package management for GNU
# Copyright © 2012 Ludovic Courtès <ludo@gnu.org> # Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -61,6 +61,9 @@ do
fi fi
done done
# This file should be generated by our build system so remove it.
rm -fv "$top_srcdir/nix/libstore/schema.sql.hh"
cp -v "$top_srcdir/nix-upstream/COPYING" "$top_srcdir/nix" cp -v "$top_srcdir/nix-upstream/COPYING" "$top_srcdir/nix"
cp -v "$top_srcdir/nix-upstream/AUTHORS" "$top_srcdir/nix" cp -v "$top_srcdir/nix-upstream/AUTHORS" "$top_srcdir/nix"

View File

@ -10,6 +10,7 @@ guix/scripts/package.scm
guix/scripts/gc.scm guix/scripts/gc.scm
guix/scripts/hash.scm guix/scripts/hash.scm
guix/scripts/pull.scm guix/scripts/pull.scm
guix/scripts/substitute-binary.scm
guix/gnu-maintenance.scm guix/gnu-maintenance.scm
guix/ui.scm guix/ui.scm
guix/web.scm guix/web.scm

274
po/eo.po
View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: guix 0.2-pre5\n" "Project-Id-Version: guix 0.2-pre5\n"
"Report-Msgid-Bugs-To: ludo@gnu.org\n" "Report-Msgid-Bugs-To: ludo@gnu.org\n"
"POT-Creation-Date: 2013-05-24 00:09+0200\n" "POT-Creation-Date: 2013-06-19 23:14+0200\n"
"PO-Revision-Date: 2013-05-22 16:24-0300\n" "PO-Revision-Date: 2013-05-22 16:24-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"
@ -47,7 +47,7 @@ msgstr ""
msgid "Stream editor" msgid "Stream editor"
msgstr "Flu-redaktilo" msgstr "Flu-redaktilo"
#: gnu/packages/base.scm:115 #: gnu/packages/base.scm:117
msgid "" msgid ""
"Sed (stream editor) isn't really a true text editor or text processor.\n" "Sed (stream editor) isn't really a true text editor or text processor.\n"
"Instead, it is used to filter text, i.e., it takes text input and performs\n" "Instead, it is used to filter text, i.e., it takes text input and performs\n"
@ -63,11 +63,11 @@ msgstr ""
"aŭ\n" "aŭ\n"
"por anstataŭigi multoblajn aperojn de ĉeno interne de dosiero." "por anstataŭigi multoblajn aperojn de ĉeno interne de dosiero."
#: gnu/packages/base.scm:138 #: gnu/packages/base.scm:140
msgid "Managing tar archives" msgid "Managing tar archives"
msgstr "Administrado de arĥivoj tar" msgstr "Administrado de arĥivoj tar"
#: gnu/packages/base.scm:140 #: gnu/packages/base.scm:142
msgid "" msgid ""
"The Tar program provides the ability to create tar archives, as well as\n" "The Tar program provides the ability to create tar archives, as well as\n"
"various other kinds of manipulation. For example, you can use Tar on\n" "various other kinds of manipulation. For example, you can use Tar on\n"
@ -82,11 +82,11 @@ msgid ""
"files (as archives)." "files (as archives)."
msgstr "" msgstr ""
#: gnu/packages/base.scm:171 #: gnu/packages/base.scm:173
msgid "Apply differences to originals, with optional backups" msgid "Apply differences to originals, with optional backups"
msgstr "Apliki malsamojn al originaloj, kun nedevigaj savkopioj" msgstr "Apliki malsamojn al originaloj, kun nedevigaj savkopioj"
#: gnu/packages/base.scm:173 #: gnu/packages/base.scm:175
msgid "" msgid ""
"GNU Patch takes a patch file containing a difference listing produced by\n" "GNU Patch takes a patch file containing a difference listing produced by\n"
"the diff program and applies those differences to one or more original " "the diff program and applies those differences to one or more original "
@ -94,11 +94,11 @@ msgid ""
"producing patched versions." "producing patched versions."
msgstr "" msgstr ""
#: gnu/packages/base.scm:191 #: gnu/packages/base.scm:193
msgid "Comparing and merging files" msgid "Comparing and merging files"
msgstr "Komparo kaj kunmikso de dosieroj" msgstr "Komparo kaj kunmikso de dosieroj"
#: gnu/packages/base.scm:193 #: gnu/packages/base.scm:195
msgid "" msgid ""
"GNU Diffutils is a package of several programs related to finding\n" "GNU Diffutils is a package of several programs related to finding\n"
"differences between files.\n" "differences between files.\n"
@ -131,11 +131,11 @@ msgid ""
"You can use the sdiff command to merge two files interactively." "You can use the sdiff command to merge two files interactively."
msgstr "" msgstr ""
#: gnu/packages/base.scm:244 #: gnu/packages/base.scm:246
msgid "Operating on files matching given criteria" msgid "Operating on files matching given criteria"
msgstr "Operacio sur dosieroj kongruantaj al indikia kriterio" msgstr "Operacio sur dosieroj kongruantaj al indikia kriterio"
#: gnu/packages/base.scm:246 #: gnu/packages/base.scm:248
msgid "" msgid ""
"The GNU Find Utilities are the basic directory searching utilities of\n" "The GNU Find Utilities are the basic directory searching utilities of\n"
"the GNU operating system. These programs are typically used in conjunction\n" "the GNU operating system. These programs are typically used in conjunction\n"
@ -151,22 +151,22 @@ msgid ""
" * xargs - build and execute command lines from standard input.\n" " * xargs - build and execute command lines from standard input.\n"
msgstr "" msgstr ""
#: gnu/packages/base.scm:291 #: gnu/packages/base.scm:299
msgid "Core GNU utilities (file, text, shell)" msgid "Core GNU utilities (file, text, shell)"
msgstr "Nukleaj utilaĵoj GNU (file, text, shell)" msgstr "Nukleaj utilaĵoj GNU (file, text, shell)"
#: gnu/packages/base.scm:293 #: gnu/packages/base.scm:301
msgid "" msgid ""
"The GNU Core Utilities are the basic file, shell and text manipulation\n" "The GNU Core Utilities are the basic file, shell and text manipulation\n"
"utilities of the GNU operating system. These are the core utilities which\n" "utilities of the GNU operating system. These are the core utilities which\n"
"are expected to exist on every operating system." "are expected to exist on every operating system."
msgstr "" msgstr ""
#: gnu/packages/base.scm:325 #: gnu/packages/base.scm:333
msgid "Remake files automatically" msgid "Remake files automatically"
msgstr "Reprocezi dosierojn aŭtomate" msgstr "Reprocezi dosierojn aŭtomate"
#: gnu/packages/base.scm:327 #: gnu/packages/base.scm:335
msgid "" msgid ""
"Make is a tool which controls the generation of executables and other\n" "Make is a tool which controls the generation of executables and other\n"
"non-source files of a program from the program's source files.\n" "non-source files of a program from the program's source files.\n"
@ -179,22 +179,22 @@ msgid ""
"that it is possible to use Make to build and install the program." "that it is possible to use Make to build and install the program."
msgstr "" msgstr ""
#: gnu/packages/base.scm:371 #: gnu/packages/base.scm:379
msgid "Binary utilities: bfd gas gprof ld" msgid "Binary utilities: bfd gas gprof ld"
msgstr "Duumaj utilaĵoj: bfd gas gprof ld" msgstr "Duumaj utilaĵoj: bfd gas gprof ld"
#: gnu/packages/base.scm:373 #: gnu/packages/base.scm:381
msgid "" msgid ""
"The GNU Binutils are a collection of binary tools. The main ones are\n" "The GNU Binutils are a collection of binary tools. The main ones are\n"
"`ld' (the GNU linker) and `as' (the GNU assembler). They also include the\n" "`ld' (the GNU linker) and `as' (the GNU assembler). They also include the\n"
"BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc." "BFD (Binary File Descriptor) library, `gprof', `nm', `strip', etc."
msgstr "" msgstr ""
#: gnu/packages/base.scm:492 #: gnu/packages/base.scm:500
msgid "The GNU C Library" msgid "The GNU C Library"
msgstr "La Biblioteko GNU C" msgstr "La Biblioteko GNU C"
#: gnu/packages/base.scm:494 #: gnu/packages/base.scm:502
msgid "" msgid ""
"Any Unix-like operating system needs a C library: the library which\n" "Any Unix-like operating system needs a C library: the library which\n"
"defines the \"system calls\" and other basic facilities such as open, " "defines the \"system calls\" and other basic facilities such as open, "
@ -206,11 +206,11 @@ msgid ""
"with the Linux kernel." "with the Linux kernel."
msgstr "" msgstr ""
#: gnu/packages/base.scm:563 #: gnu/packages/base.scm:571
msgid "Database of current and historical time zones" msgid "Database of current and historical time zones"
msgstr "" msgstr ""
#: gnu/packages/base.scm:564 #: gnu/packages/base.scm:572
msgid "" msgid ""
"The Time Zone Database (often called tz or zoneinfo)\n" "The Time Zone Database (often called tz or zoneinfo)\n"
"contains code and data that represent the history of local time for many\n" "contains code and data that represent the history of local time for many\n"
@ -220,11 +220,11 @@ msgid ""
"and daylight-saving rules." "and daylight-saving rules."
msgstr "" msgstr ""
#: gnu/packages/base.scm:978 #: gnu/packages/base.scm:986
msgid "The linker wrapper" msgid "The linker wrapper"
msgstr "La ligila ĉirkaŭanto" msgstr "La ligila ĉirkaŭanto"
#: gnu/packages/base.scm:980 #: gnu/packages/base.scm:988
msgid "" msgid ""
"The linker wrapper (or `ld-wrapper') wraps the linker to add any\n" "The linker wrapper (or `ld-wrapper') wraps the linker to add any\n"
"missing `-rpath' flags, and to detect any misuse of libraries outside of " "missing `-rpath' flags, and to detect any misuse of libraries outside of "
@ -232,18 +232,18 @@ msgid ""
"store." "store."
msgstr "" msgstr ""
#: gnu/packages/guile.scm:96 gnu/packages/guile.scm:153 #: gnu/packages/guile.scm:97 gnu/packages/guile.scm:177
msgid "Scheme implementation intended especially for extensions" msgid "Scheme implementation intended especially for extensions"
msgstr "Realigo de Scheme celata speciale por aldonoj" msgstr "Realigo de Scheme celata speciale por aldonoj"
#: gnu/packages/guile.scm:98 #: gnu/packages/guile.scm:99
msgid "" msgid ""
"GNU Guile 1.8 is an interpreter for the Scheme programming language,\n" "GNU Guile 1.8 is an interpreter for the Scheme programming language,\n"
"packaged as a library that can be embedded into programs to make them\n" "packaged as a library that can be embedded into programs to make them\n"
"extensible. It supports many SRFIs." "extensible. It supports many SRFIs."
msgstr "" msgstr ""
#: gnu/packages/guile.scm:155 #: gnu/packages/guile.scm:179
msgid "" msgid ""
"GNU Guile is an implementation of the Scheme programming language, with\n" "GNU Guile is an implementation of the Scheme programming language, with\n"
"support for many SRFIs, packaged for use in a wide variety of environments.\n" "support for many SRFIs, packaged for use in a wide variety of environments.\n"
@ -253,14 +253,14 @@ msgid ""
"call interface, and powerful string processing." "call interface, and powerful string processing."
msgstr "" msgstr ""
#: gnu/packages/guile.scm:199 #: gnu/packages/guile.scm:223
#, fuzzy #, fuzzy
msgid "Framework for building readers for GNU Guile" msgid "Framework for building readers for GNU Guile"
msgstr "" msgstr ""
"Guile-Reader, simpla framo por konstrui legilojn por\n" "Guile-Reader, simpla framo por konstrui legilojn por\n"
"GNU Guile" "GNU Guile"
#: gnu/packages/guile.scm:201 #: gnu/packages/guile.scm:225
msgid "" msgid ""
"Guile-Reader is a simple framework for building readers for GNU Guile.\n" "Guile-Reader is a simple framework for building readers for GNU Guile.\n"
"\n" "\n"
@ -276,11 +276,11 @@ msgid ""
"many readers as needed)." "many readers as needed)."
msgstr "" msgstr ""
#: gnu/packages/guile.scm:253 #: gnu/packages/guile.scm:277
msgid "Guile bindings to ncurses" msgid "Guile bindings to ncurses"
msgstr "Bindoj de Guile por ncurses" msgstr "Bindoj de Guile por ncurses"
#: gnu/packages/guile.scm:255 #: gnu/packages/guile.scm:279
msgid "" msgid ""
"GNU Guile-Ncurses is a library for the Guile Scheme interpreter that\n" "GNU Guile-Ncurses is a library for the Guile Scheme interpreter that\n"
"provides functions for creating text user interfaces. The text user " "provides functions for creating text user interfaces. The text user "
@ -289,11 +289,11 @@ msgid ""
"menu." "menu."
msgstr "" msgstr ""
#: gnu/packages/guile.scm:279 #: gnu/packages/guile.scm:303
msgid "Run jobs at scheduled times" msgid "Run jobs at scheduled times"
msgstr "Lanĉi taskoj je antaŭplanitaj horoj" msgstr "Lanĉi taskoj je antaŭplanitaj horoj"
#: gnu/packages/guile.scm:281 #: gnu/packages/guile.scm:305
msgid "" msgid ""
"The GNU package mcron (Mellor's cron) is a 100% compatible replacement\n" "The GNU package mcron (Mellor's cron) is a 100% compatible replacement\n"
"for Vixie cron. It is written in pure Guile, and allows configuration " "for Vixie cron. It is written in pure Guile, and allows configuration "
@ -342,87 +342,99 @@ msgid ""
"records, each record containing an arbitrary number of named fields." "records, each record containing an arbitrary number of named fields."
msgstr "" msgstr ""
#: guix/scripts/build.scm:49 #: guix/scripts/build.scm:51
#, scheme-format #, scheme-format
msgid "package `~a' has no source~%" msgid "package `~a' has no source~%"
msgstr "pako '~a' havas neniun fonton~%" msgstr "pako '~a' havas neniun fonton~%"
#: guix/scripts/build.scm:66 #: guix/scripts/build.scm:68
msgid "" msgid ""
"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n" "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n" "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
msgstr "" msgstr ""
#: guix/scripts/build.scm:68 #: guix/scripts/build.scm:70
msgid "" msgid ""
"\n" "\n"
" -e, --expression=EXPR build the package EXPR evaluates to" " -e, --expression=EXPR build the package EXPR evaluates to"
msgstr "" msgstr ""
#: guix/scripts/build.scm:70 #: guix/scripts/build.scm:72
msgid "" msgid ""
"\n" "\n"
" -S, --source build the packages' source derivations" " -S, --source build the packages' source derivations"
msgstr "" msgstr ""
#: guix/scripts/build.scm:72 #: guix/scripts/build.scm:74
msgid "" msgid ""
"\n" "\n"
" -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\"" " -s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\""
msgstr "" msgstr ""
#: guix/scripts/build.scm:74
msgid ""
"\n"
" -d, --derivations return the derivation paths of the given packages"
msgstr ""
#: guix/scripts/build.scm:76 #: guix/scripts/build.scm:76
msgid "" msgid ""
"\n" "\n"
" -K, --keep-failed keep build tree of failed builds" " --target=TRIPLET cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
msgstr "" msgstr ""
#: guix/scripts/build.scm:78 #: guix/scripts/build.scm:78
msgid "" msgid ""
"\n" "\n"
" -d, --derivations return the derivation paths of the given packages"
msgstr ""
#: guix/scripts/build.scm:80
msgid ""
"\n"
" -K, --keep-failed keep build tree of failed builds"
msgstr ""
#: guix/scripts/build.scm:82
msgid ""
"\n"
" -n, --dry-run do not build the derivations" " -n, --dry-run do not build the derivations"
msgstr "" msgstr ""
#: guix/scripts/build.scm:80 guix/scripts/package.scm:440 #: guix/scripts/build.scm:84 guix/scripts/package.scm:440
msgid ""
"\n"
" --fallback fall back to building when the substituter fails"
msgstr ""
#: guix/scripts/build.scm:86 guix/scripts/package.scm:442
msgid "" msgid ""
"\n" "\n"
" --no-substitutes build instead of resorting to pre-built substitutes" " --no-substitutes build instead of resorting to pre-built substitutes"
msgstr "" msgstr ""
#: guix/scripts/build.scm:82 guix/scripts/package.scm:442 #: guix/scripts/build.scm:88 guix/scripts/package.scm:444
msgid "" msgid ""
"\n" "\n"
" --max-silent-time=SECONDS\n" " --max-silent-time=SECONDS\n"
" mark the build as failed after SECONDS of silence" " mark the build as failed after SECONDS of silence"
msgstr "" msgstr ""
#: guix/scripts/build.scm:85 #: guix/scripts/build.scm:91
msgid "" msgid ""
"\n" "\n"
" -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 ""
#: guix/scripts/build.scm:87 #: guix/scripts/build.scm:93
msgid "" msgid ""
"\n" "\n"
" -r, --root=FILE make FILE a symlink to the result, and register it\n" " -r, --root=FILE make FILE a symlink to the result, and register it\n"
" as a garbage collector root" " as a garbage collector root"
msgstr "" msgstr ""
#: guix/scripts/build.scm:90 #: guix/scripts/build.scm:96
msgid "" msgid ""
"\n" "\n"
" --verbosity=LEVEL use the given verbosity LEVEL" " --verbosity=LEVEL use the given verbosity LEVEL"
msgstr "" msgstr ""
#: guix/scripts/build.scm:93 guix/scripts/download.scm:52 #: guix/scripts/build.scm:99 guix/scripts/download.scm:52
#: guix/scripts/package.scm:459 guix/scripts/gc.scm:56 #: guix/scripts/package.scm:461 guix/scripts/gc.scm:58
#: guix/scripts/hash.scm:50 guix/scripts/pull.scm:149 #: guix/scripts/hash.scm:50 guix/scripts/pull.scm:149
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -430,8 +442,8 @@ msgid ""
" -h, --help display this help and exit" " -h, --help display this help and exit"
msgstr " --help montri ĉi tiun helpon kaj eliri\n" msgstr " --help montri ĉi tiun helpon kaj eliri\n"
#: guix/scripts/build.scm:95 guix/scripts/download.scm:54 #: guix/scripts/build.scm:101 guix/scripts/download.scm:54
#: guix/scripts/package.scm:461 guix/scripts/gc.scm:58 #: guix/scripts/package.scm:463 guix/scripts/gc.scm:60
#: guix/scripts/hash.scm:52 guix/scripts/pull.scm:151 #: guix/scripts/hash.scm:52 guix/scripts/pull.scm:151
#, fuzzy #, fuzzy
msgid "" msgid ""
@ -439,39 +451,39 @@ msgid ""
" -V, --version display version information and exit" " -V, --version display version information and exit"
msgstr "elmontri eldonan informon kaj eliri\n" msgstr "elmontri eldonan informon kaj eliri\n"
#: guix/scripts/build.scm:131 #: guix/scripts/build.scm:141
#, scheme-format #, scheme-format
msgid "~a: not a number~%" msgid "~a: not a number~%"
msgstr "~a: ne estas numero~%" msgstr "~a: ne estas numero~%"
#: guix/scripts/build.scm:162 guix/scripts/download.scm:95 #: guix/scripts/build.scm:176 guix/scripts/download.scm:95
#: guix/scripts/package.scm:539 guix/scripts/gc.scm:146 #: guix/scripts/package.scm:545 guix/scripts/gc.scm:152
#: guix/scripts/pull.scm:178 #: guix/scripts/pull.scm:178
#, scheme-format #, scheme-format
msgid "~A: unrecognized option~%" msgid "~A: unrecognized option~%"
msgstr "~A: nerekonata modifilo~%" msgstr "~A: nerekonata modifilo~%"
#: guix/scripts/build.scm:188 #: guix/scripts/build.scm:202
#, scheme-format #, scheme-format
msgid "failed to create GC root `~a': ~a~%" msgid "failed to create GC root `~a': ~a~%"
msgstr "fiasko dum kreo de radiko GC '~a': ~a~%" msgstr "fiasko dum kreo de radiko GC '~a': ~a~%"
#: guix/scripts/build.scm:212 guix/scripts/package.scm:585 #: guix/scripts/build.scm:226 guix/scripts/package.scm:591
#, scheme-format #, scheme-format
msgid "ambiguous package specification `~a'~%" msgid "ambiguous package specification `~a'~%"
msgstr "plursenca pak-specifigo '~a'~%" msgstr "plursenca pak-specifigo '~a'~%"
#: guix/scripts/build.scm:213 guix/scripts/package.scm:587 #: guix/scripts/build.scm:227 guix/scripts/package.scm:593
#, scheme-format #, scheme-format
msgid "choosing ~a from ~a~%" msgid "choosing ~a from ~a~%"
msgstr "ni elektas ~a el ~a~%" msgstr "ni elektas ~a el ~a~%"
#: guix/scripts/build.scm:219 #: guix/scripts/build.scm:233
#, scheme-format #, scheme-format
msgid "~A: package not found for version ~a~%" msgid "~A: package not found for version ~a~%"
msgstr "~A: pako ne trovita por versio ~a~%" msgstr "~A: pako ne trovita por versio ~a~%"
#: guix/scripts/build.scm:221 #: guix/scripts/build.scm:235
#, scheme-format #, scheme-format
msgid "~A: unknown package~%" msgid "~A: unknown package~%"
msgstr "~A: nekonata pako~%" msgstr "~A: nekonata pako~%"
@ -598,104 +610,109 @@ msgid ""
" -n, --dry-run show what would be done without actually doing it" " -n, --dry-run show what would be done without actually doing it"
msgstr "" msgstr ""
#: guix/scripts/package.scm:445 #: guix/scripts/package.scm:447
msgid "" msgid ""
"\n" "\n"
" --bootstrap use the bootstrap Guile to build the profile" " --bootstrap use the bootstrap Guile to build the profile"
msgstr "" msgstr ""
#: guix/scripts/package.scm:447 guix/scripts/pull.scm:144 #: guix/scripts/package.scm:449 guix/scripts/pull.scm:144
#, fuzzy #, fuzzy
msgid "" msgid ""
"\n" "\n"
" --verbose produce verbose output" " --verbose produce verbose output"
msgstr "produkti detalplenan eligon" msgstr "produkti detalplenan eligon"
#: guix/scripts/package.scm:450 #: guix/scripts/package.scm:452
msgid "" msgid ""
"\n" "\n"
" -s, --search=REGEXP search in synopsis and description using REGEXP" " -s, --search=REGEXP search in synopsis and description using REGEXP"
msgstr "" msgstr ""
#: guix/scripts/package.scm:452 #: guix/scripts/package.scm:454
msgid "" msgid ""
"\n" "\n"
" -I, --list-installed[=REGEXP]\n" " -I, --list-installed[=REGEXP]\n"
" list installed packages matching REGEXP" " list installed packages matching REGEXP"
msgstr "" msgstr ""
#: guix/scripts/package.scm:455 #: guix/scripts/package.scm:457
msgid "" msgid ""
"\n" "\n"
" -A, --list-available[=REGEXP]\n" " -A, --list-available[=REGEXP]\n"
" list available packages matching REGEXP" " list available packages matching REGEXP"
msgstr "" msgstr ""
#: guix/scripts/package.scm:541 #: guix/scripts/package.scm:547
#, scheme-format #, scheme-format
msgid "~A: extraneous argument~%" msgid "~A: extraneous argument~%"
msgstr "~A: fremda argumento~%" msgstr "~A: fremda argumento~%"
#: guix/scripts/package.scm:569 #: guix/scripts/package.scm:575
#, scheme-format #, scheme-format
msgid "package `~a' lacks output `~a'~%" msgid "package `~a' lacks output `~a'~%"
msgstr "pako '~a' malhavas eligon '~a'~%" msgstr "pako '~a' malhavas eligon '~a'~%"
#: guix/scripts/package.scm:593 #: guix/scripts/package.scm:599
#, scheme-format #, scheme-format
msgid "~a: package not found~%" msgid "~a: package not found~%"
msgstr "~a: pako ne trovita~%" msgstr "~a: pako ne trovita~%"
#: guix/scripts/package.scm:616 #: guix/scripts/package.scm:622
#, 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:638 #: guix/scripts/package.scm:644
#, 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:642 #: guix/scripts/package.scm:648
#, 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:649 #: guix/scripts/package.scm:655
#, 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:652 #: guix/scripts/package.scm:658
#, 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:704 #: guix/scripts/package.scm:710
#, scheme-format #, scheme-format
msgid "The following package would be removed:~% ~{~a~%~}~%" msgid "The following package would be removed:~% ~{~a~%~}~%"
msgstr "La jena pako devos esti forigata:~% ~{~a~%~}~%" msgstr "La jena pako devos esti forigata:~% ~{~a~%~}~%"
#: guix/scripts/package.scm:709 #: guix/scripts/package.scm:715
#, scheme-format #, scheme-format
msgid "The following package will be removed:~% ~{~a~%~}~%" msgid "The following package will be removed:~% ~{~a~%~}~%"
msgstr "La jena pako estos forigata:~% ~{~a~%~}~%" msgstr "La jena pako estos forigata:~% ~{~a~%~}~%"
#: guix/scripts/package.scm:721 #: guix/scripts/package.scm:727
#, scheme-format #, scheme-format
msgid "The following package would be installed:~%~{~a~%~}~%" msgid "The following package would be installed:~%~{~a~%~}~%"
msgstr "La jena pako estus instalata:~% ~{~a~%~}~%" msgstr "La jena pako estus instalata:~% ~{~a~%~}~%"
#: guix/scripts/package.scm:726 #: guix/scripts/package.scm:732
#, scheme-format #, scheme-format
msgid "The following package will be installed:~%~{~a~%~}~%" msgid "The following package will be installed:~%~{~a~%~}~%"
msgstr "La jena pako estos instalata:~% ~{~a~%~}~%" msgstr "La jena pako estos instalata:~% ~{~a~%~}~%"
#: guix/scripts/package.scm:835 #: guix/scripts/package.scm:841
#, 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:852
#, fuzzy, scheme-format
msgid "~a packages in profile~%"
msgstr "~a: pako ne trovita~%"
#: guix/scripts/gc.scm:39 #: guix/scripts/gc.scm:39
msgid "" msgid ""
"Usage: guix gc [OPTION]... PATHS...\n" "Usage: guix gc [OPTION]... PATHS...\n"
@ -736,20 +753,26 @@ msgstr ""
#: guix/scripts/gc.scm:53 #: guix/scripts/gc.scm:53
msgid "" msgid ""
"\n" "\n"
" -R, --requisites list the requisites of PATHS"
msgstr ""
#: guix/scripts/gc.scm:55
msgid ""
"\n"
" --referrers list the referrers of PATHS" " --referrers list the referrers of PATHS"
msgstr "" msgstr ""
#: guix/scripts/gc.scm:90 #: guix/scripts/gc.scm:92
#, scheme-format #, scheme-format
msgid "unknown unit: ~a~%" msgid "unknown unit: ~a~%"
msgstr "nekonata unuo: ~a~%" msgstr "nekonata unuo: ~a~%"
#: guix/scripts/gc.scm:91 #: guix/scripts/gc.scm:93
#, scheme-format #, scheme-format
msgid "invalid number: ~a~%" msgid "invalid number: ~a~%"
msgstr "nevalida numero: ~a~%" msgstr "nevalida numero: ~a~%"
#: guix/scripts/gc.scm:112 #: guix/scripts/gc.scm:114
#, scheme-format #, scheme-format
msgid "invalid amount of storage: ~a~%" msgid "invalid amount of storage: ~a~%"
msgstr "nevalida kvanto da konserv-spaco: ~a~%" msgstr "nevalida kvanto da konserv-spaco: ~a~%"
@ -813,32 +836,52 @@ msgstr "fiasko dum ĝisdatigo de Guix, kontrolu la konstru-protokolon~%"
msgid "Guix already up to date\n" msgid "Guix already up to date\n"
msgstr "Guix jam estas ĝisdata\n" msgstr "Guix jam estas ĝisdata\n"
#: guix/gnu-maintenance.scm:357 #: guix/scripts/substitute-binary.scm:172
#, scheme-format
msgid "while fetching ~a: server is unresponsive~%"
msgstr ""
#: guix/scripts/substitute-binary.scm:174
#, scheme-format
msgid "try `--no-substitutes' if the problem persists~%"
msgstr ""
#: guix/scripts/substitute-binary.scm:423
#, scheme-format
msgid "host name lookup error: ~a~%"
msgstr ""
#: guix/scripts/substitute-binary.scm:498
#, scheme-format
msgid "downloading `~a' from `~a'~:[~*~; (~,1f KiB)~]...~%"
msgstr ""
#: guix/gnu-maintenance.scm:360
#, scheme-format #, scheme-format
msgid "signature verification failed for `~a'~%" msgid "signature verification failed for `~a'~%"
msgstr "subskriba kontrolo fiaskis por '~a'~%" msgstr "subskriba kontrolo fiaskis por '~a'~%"
#: guix/gnu-maintenance.scm:359 #: guix/gnu-maintenance.scm:362
#, scheme-format #, scheme-format
msgid "(could be because the public key is not in your keyring)~%" msgid "(could be because the public key is not in your keyring)~%"
msgstr "(eble ĉar la publika ŝlosilo ne estas en via ŝlosilringo)~%" msgstr "(eble ĉar la publika ŝlosilo ne estas en via ŝlosilringo)~%"
#: guix/gnu-maintenance.scm:431 #: guix/gnu-maintenance.scm:437
#, scheme-format #, scheme-format
msgid "~a: could not locate source file" msgid "~a: could not locate source file"
msgstr "~a: ne eblis trovi fontan dosieron " msgstr "~a: ne eblis trovi fontan dosieron "
#: guix/gnu-maintenance.scm:436 #: guix/gnu-maintenance.scm:442
#, scheme-format #, scheme-format
msgid "~a: ~a: no `version' field in source; skipping~%" msgid "~a: ~a: no `version' field in source; skipping~%"
msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%" msgstr "~a: ~a: neniu kampo 'version' en la fonto; ni saltas~%"
#: guix/ui.scm:113 #: guix/ui.scm:116
#, scheme-format #, scheme-format
msgid "failed to install locale: ~a~%" msgid "failed to install locale: ~a~%"
msgstr "fiasko dum instalo de lokaĵaro: ~a~%" msgstr "fiasko dum instalo de lokaĵaro: ~a~%"
#: guix/ui.scm:130 #: guix/ui.scm:133
#, scheme-format #, scheme-format
msgid "" msgid ""
"\n" "\n"
@ -847,7 +890,7 @@ msgstr ""
"\n" "\n"
"Raportu program-misojn al: ~a." "Raportu program-misojn al: ~a."
#: guix/ui.scm:132 #: guix/ui.scm:135
#, scheme-format #, scheme-format
msgid "" msgid ""
"\n" "\n"
@ -856,7 +899,7 @@ msgstr ""
"\n" "\n"
"hejm-paĝo de ~a: <~a>" "hejm-paĝo de ~a: <~a>"
#: guix/ui.scm:134 #: guix/ui.scm:137
msgid "" msgid ""
"\n" "\n"
"General help using GNU software: <http://www.gnu.org/gethelp/>" "General help using GNU software: <http://www.gnu.org/gethelp/>"
@ -864,121 +907,126 @@ msgstr ""
"\n" "\n"
"Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>" "Ĝenerala helpo por uzi programaron de GNU: <http://www.gnu.org/gethelp/>"
#: guix/ui.scm:141 #: guix/ui.scm:144
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "~a: invalid number~%" msgid "~a: invalid number~%"
msgstr "nevalida numero: ~a~%" msgstr "nevalida numero: ~a~%"
#: guix/ui.scm:152 #: guix/ui.scm:155
#, scheme-format #, scheme-format
msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%" msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%" msgstr "~a:~a:~a: pako '~a' havas malvalidan enigon: ~s~%"
#: guix/ui.scm:156 #: guix/ui.scm:162
#, scheme-format
msgid "~a: ~a: build system `~a' does not support cross builds~%"
msgstr ""
#: guix/ui.scm:167
#, scheme-format #, scheme-format
msgid "failed to connect to `~a': ~a~%" msgid "failed to connect to `~a': ~a~%"
msgstr "fiasko dum konekto al '~a': ~a~%" msgstr "fiasko dum konekto al '~a': ~a~%"
#: guix/ui.scm:161 #: guix/ui.scm:172
#, scheme-format #, scheme-format
msgid "build failed: ~a~%" msgid "build failed: ~a~%"
msgstr "konstruo fiakis: ~a~%" msgstr "konstruo fiakis: ~a~%"
#: guix/ui.scm:172 #: guix/ui.scm:183
#, scheme-format #, scheme-format
msgid "failed to read expression ~s: ~s~%" msgid "failed to read expression ~s: ~s~%"
msgstr "fiasko dum lego de esprimo ~s: ~s~%" msgstr "fiasko dum lego de esprimo ~s: ~s~%"
#: guix/ui.scm:178 #: guix/ui.scm:189
#, scheme-format #, scheme-format
msgid "failed to evaluate expression `~a': ~s~%" msgid "failed to evaluate expression `~a': ~s~%"
msgstr "fiasko dum analizo de esprimo '~a': ~a~%" msgstr "fiasko dum analizo de esprimo '~a': ~a~%"
#: guix/ui.scm:182 #: guix/ui.scm:193
#, scheme-format #, scheme-format
msgid "expression `~s' does not evaluate to a package~%" msgid "expression `~s' does not evaluate to a package~%"
msgstr "la esprimo '~s' ne rezultas pakon~%" msgstr "la esprimo '~s' ne rezultas pakon~%"
#: guix/ui.scm:224 #: guix/ui.scm:235
#, scheme-format #, scheme-format
msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]" msgid "~:[The following derivation would be built:~%~{ ~a~%~}~;~]"
msgstr "~:[La jena derivo povus esti konstruata:~%~{ ~a~%~}~;~]" msgstr "~:[La jena derivo povus esti konstruata:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:229 #: guix/ui.scm:240
#, scheme-format #, scheme-format
msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]" msgid "~:[The following file would be downloaded:~%~{ ~a~%~}~;~]"
msgstr "~:[La jena derivo povus esti elŝutata:~%~{ ~a~%~}~;~]" msgstr "~:[La jena derivo povus esti elŝutata:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:235 #: guix/ui.scm:246
#, scheme-format #, scheme-format
msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]" msgid "~:[The following derivation will be built:~%~{ ~a~%~}~;~]"
msgstr "~:[La jena derivo estos esti konstruata:~%~{ ~a~%~}~;~]" msgstr "~:[La jena derivo estos esti konstruata:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:240 #: guix/ui.scm:251
#, scheme-format #, scheme-format
msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]" msgid "~:[The following file will be downloaded:~%~{ ~a~%~}~;~]"
msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]" msgstr "~:[La jena derivo estos esti elŝutata:~%~{ ~a~%~}~;~]"
#: guix/ui.scm:257 #: guix/ui.scm:268
msgid "<unknown location>" msgid "<unknown location>"
msgstr "<nekonata loko>" msgstr "<nekonata loko>"
#: guix/ui.scm:285 #: guix/ui.scm:296
#, scheme-format #, scheme-format
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:361 guix/ui.scm:371 #: guix/ui.scm:372 guix/ui.scm:382
msgid "unknown" msgid "unknown"
msgstr "nekonata" msgstr "nekonata"
#: guix/ui.scm:391 #: guix/ui.scm:402
#, scheme-format #, scheme-format
msgid "invalid argument: ~a~%" msgid "invalid argument: ~a~%"
msgstr "malvalida argumento: ~a~%" msgstr "malvalida argumento: ~a~%"
#: guix/ui.scm:396 #: guix/ui.scm:407
#, scheme-format #, scheme-format
msgid "Try `guix --help' for more information.~%" msgid "Try `guix --help' for more information.~%"
msgstr "" msgstr ""
#: guix/ui.scm:423 #: guix/ui.scm:434
#, fuzzy #, fuzzy
msgid "" msgid ""
"Usage: guix COMMAND ARGS...\n" "Usage: guix COMMAND ARGS...\n"
"Run COMMAND with ARGS.\n" "Run COMMAND with ARGS.\n"
msgstr "Uzmaniero: guix KOMANDO ARGj...~%" msgstr "Uzmaniero: guix KOMANDO ARGj...~%"
#: guix/ui.scm:426 #: guix/ui.scm:437
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 "" msgstr ""
#: guix/ui.scm:445 #: guix/ui.scm:456
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "guix: ~a: command not found~%" msgid "guix: ~a: command not found~%"
msgstr "~a: pako ne trovita~%" msgstr "~a: pako ne trovita~%"
#: guix/ui.scm:463 #: guix/ui.scm:474
#, scheme-format #, scheme-format
msgid "guix: missing command name~%" msgid "guix: missing command name~%"
msgstr "" msgstr ""
#: guix/ui.scm:471 #: guix/ui.scm:482
#, fuzzy, scheme-format #, fuzzy, scheme-format
msgid "guix: unrecognized option '~a'~%" msgid "guix: unrecognized option '~a'~%"
msgstr "nerekonata modifilo: ~a~%" msgstr "nerekonata modifilo: ~a~%"
#: guix/web.scm:181 #: guix/web.scm:180
#, scheme-format #, scheme-format
msgid "using Guile ~a, which does not support ~s encoding~%" msgid "using Guile ~a, which does not support ~s encoding~%"
msgstr "ni uzas Guile ~a, kiu ne subtenas enkodigon ~s~%" msgstr "ni uzas Guile ~a, kiu ne subtenas enkodigon ~s~%"
#: guix/web.scm:184 #: guix/web.scm:183
#, scheme-format #, scheme-format
msgid "download failed; use a newer Guile~%" msgid "download failed; use a newer Guile~%"
msgstr "elŝuto fiaskis; uzu pli novan Guile~%" msgstr "elŝuto fiaskis; uzu pli novan Guile~%"
#: guix/web.scm:196 #: guix/web.scm:195
#, scheme-format #, scheme-format
msgid "following redirection to `~a'...~%" msgid "following redirection to `~a'...~%"
msgstr "" msgstr ""

View File

@ -106,6 +106,24 @@
(null? (references %store t1)) (null? (references %store t1))
(null? (referrers %store t2))))) (null? (referrers %store t2)))))
(test-assert "requisites"
(let* ((t1 (add-text-to-store %store "random1"
(random-text) '()))
(t2 (add-text-to-store %store "random2"
(random-text) (list t1)))
(t3 (add-text-to-store %store "random3"
(random-text) (list t2)))
(t4 (add-text-to-store %store "random4"
(random-text) (list t1 t3))))
(define (same? x y)
(and (= (length x) (length y))
(lset= equal? x y)))
(and (same? (requisites %store t1) (list t1))
(same? (requisites %store t2) (list t1 t2))
(same? (requisites %store t3) (list t1 t2 t3))
(same? (requisites %store t4) (list t1 t2 t3 t4)))))
(test-assert "derivers" (test-assert "derivers"
(let* ((b (add-text-to-store %store "build" "echo $foo > $out" '())) (let* ((b (add-text-to-store %store "build" "echo $foo > $out" '()))
(s (add-to-store %store "bash" #t "sha256" (s (add-to-store %store "bash" #t "sha256"