Merge branch 'core-updates'
Conflicts:
gnu/packages/bootstrap.scm
packages: Convert source derivations to monadic style.
* guix/packages.scm (origin->derivation): Take body from
'package-source-derivation', and change it to monadic style. Expect
METHOD to a monadic procedure.
(package-source-derivation): Define in terms of 'origin->derivation'.
* guix/download.scm (url-fetch): Remove 'store' argument. Remove
'guile-for-build' variable. Turn into a monadic procedure.
* guix/git-download.scm (git-fetch): Likewise.
* guix/svn-download.scm (svn-fetch): Likewise.
* tests/builders.scm (url-fetch*): New procedure.
Change tests to call 'url-fetch*' instead of 'url-fetch'.
* tests/packages.scm ("package-source-derivation, snippet"): Remove
'store' parameter of 'fetch' and change it to use 'interned-file'
instead of 'add-to-store'.
* gnu/packages/bootstrap.scm (bootstrap-origin)[boot]: Remove 'store'
parameter.
gnu: Add bootstrap binaries for 'armhf-linux'.
* gnu/packages/bootstrap/armhf-linux/bash,
gnu/packages/bootstrap/armhf-linux/mkdir,
gnu/packages/bootstrap/armhf-linux/tar,
gnu/packages/bootstrap/armhf-linux/xz: New files.
* gnu-system.am (bootstrap_armhf_linuxdir, dist_bootstrap_armhf_linux_DATA)
(nodist_bootstrap_armhf_linux_DATA): New variables.
(DISTCLEANFILES): Add $(nodist_bootstrap_armhf_linux_DATA).
(gnu/packages/bootstrap/armhf-linux/guile-2.0.11.tar.xz): New target.
* build-aux/download.scm (file-name->uri): Use newer date in URI for
armhf-linux.
* gnu/packages/bootstrap.scm (raw-build): Use "guile-2.0.11.tar.xz" on
armhf-linux.
(glibc-dynamic-linker, %bootstrap-coreutils&co, %bootstrap-binutils)
(%bootstrap-glibc, %bootstrap-gcc): Add armhf-linux cases.
* m4/guix.m4 (GUIX_SYSTEM_TYPE): Add armhf case.
(GUIX_ASSERT_SUPPORTED_SYSTEM): Add armhf-linux to list of
supported systems.
* doc/guix.texi (GNU Distribution): Add armhf-linux to the list of
supported systems.
gnu: Add toolchain support for 'armhf-linux'.
Based on preliminary work by John Darrington <john@darrington.wattle.id.au>.
* gnu/packages/cross-base.scm (xgcc-armhf): New variable.
* gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): Add armhf case.
(gcc-4.7)[pre-configure]: Add gcc/config/*/linux-eabi.h to the list
of files in which to patch GLIBC_DYNAMIC_LINKER.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add armhf case.
* guix/utils.scm (gnu-triplet->nix-system, nix-system->gnu-triplet):
Add armhf cases.
gnu: bootstrap: Fix egrep and fgrep after unpacking bootstrap binaries.
* gnu/packages/bootstrap.scm (%bootstrap-coreutils&co): Add #:snippet argument
to 'package-from-tarball' that calls 'patch-shebang' on egrep and fgrep
after unpacking. Test 'fgrep' instead of 'true'.
gnu: bootstrap: Add support for snippets to 'package-from-tarball'.
* gnu/packages/bootstrap.scm (package-from-tarball): Add new keyword
argument #:snippet.
packages: Add 'file-type' field to 'search-path-specification'.
Fixes <http://bugs.gnu.org/18033>.
* guix/packages.scm (<search-path-specification>): Rename 'directories'
field to 'files'. Add 'file-type'.
(search-path-specification->sexp): Honor 'file-type'.
* gnu/packages/autotools.scm, gnu/packages/bootstrap.scm,
gnu/packages/cross-base.scm, gnu/packages/games.scm,
gnu/packages/gcc.scm, gnu/packages/glib.scm,
gnu/packages/guile.scm, gnu/packages/man.scm,
gnu/packages/perl.scm, gnu/packages/pkg-config.scm,
gnu/packages/python.scm, gnu/packages/ruby.scm,
gnu/packages/xfce.scm: Change 'directories' to 'files'.
* tests/packages.scm ("search paths"): Change 'directories' field to
'files'.
* guix/scripts/environment.scm (for-each-search-path): Likewise.
gnu: Add AVR-Libc.
* gnu/packages/avr.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add avr.scm.
* gnu/packages/cross-base.scm (xgcc-avr): New variable.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add case for
"avr".
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
packages: Implement grafts.
Thanks to Mark H. Weaver <mhw@netris.org> for insightful discussions
and suggestions.
* guix/packages.scm (<package>)[graft]: New field.
(patch-and-repack): Invoke 'package-derivation' with #:graft? #f.
(package-source-derivation): Likewise. Do not use (%guile-for-build)
in call to 'patch-and-repack', and we could end up using a grafted
Guile.
(expand-input): Likewise, also for 'package-cross-derivation' call.
(package->bag): Add #:graft? parameter. Honor it. Use 'strip-append'
instead of 'package-full-name'.
(input-graft, input-cross-graft, bag-grafts, package-grafts): New
procedures.
(package-derivation, package-cross-derivation): Add #:graft? parameter
and honor it.
* gnu/packages/bootstrap.scm (package-with-bootstrap-guile): Add
recursive call on 'graft'.
* guix/build-system/gnu.scm (package-with-explicit-inputs,
package-with-extra-configure-variable, static-package): Likewise.
(gnu-build): Use the ungrafted Guile to avoid full rebuilds.
(gnu-cross-build): Likewise.
* guix/build-system/cmake.scm (cmake-build): Likewise.
* guix/build-system/glib-or-gtk.scm (glib-or-gtk-build): Likewise.
* guix/build-system/perl.scm (perl-build): Likewise.
* guix/build-system/python.scm (python-build): Likewise.
* guix/build-system/ruby.scm (ruby-build): Likewise.
* guix/build-system/trivial.scm (guile-for-build): Likewise.
* tests/packages.scm ("package-derivation, direct graft",
"package-cross-derivation, direct graft", "package-grafts,
indirect grafts", "package-grafts, indirect grafts, cross",
"package-grafts, indirect grafts, propagated inputs",
"package-derivation, indirect grafts"): New tests.
("bag->derivation", "bag->derivation, cross-compilation"): Wrap in
'parameterize'.
* doc/guix.texi (Security Updates): New node.
(Invoking guix build): Document --no-graft.
gnu: Add Xtensa bare-bones cross-compiler.
* gnu/packages/cross-base.scm (xgcc-xtensa): New variable.
* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add case for
"xtensa-elf".
build-system: Bags record their system and target.
* guix/build-system.scm (<bag>)[system, target]: New fields.
(make-bag): Add #:system parameter and pass it to LOWER.
* gnu/packages/bootstrap.scm (make-raw-bag): Initialize 'system' field.
* guix/build-system/cmake.scm (lower): Likewise.
* guix/build-system/perl.scm (lower): Likewise.
* guix/build-system/python.scm (lower): Likewise.
* guix/build-system/ruby.scm (lower): Likewise.
* guix/build-system/trivial.scm (lower): Likewise.
* guix/build-system/gnu.scm (lower): Initialize 'system' and 'target'
fields.
* guix/packages.scm (bag->derivation, bag->cross-derivation): New
procedures.
(package-derivation, package-cross-derivation): Use 'bag->derivation'.
* tests/packages.scm ("search paths"): Initialize 'system' and 'target'
fields.
("package->bag", "package->bag, cross-compilation", "bag->derivation",
"bag->derivation, cross-compilation"): New tests.
build-system: Introduce "bags" as an intermediate representation.
* guix/build-system.scm (<build-system>)[build, cross-build]: Remove.
[lower]: New field.
(<bag>): New record type.
(make-bag): New procedure.
* guix/packages.scm (bag-transitive-inputs, bag-transitive-build-inputs,
bag-transitive-host-inputs, bag-transitive-target-inputs,
package->bag): New procedures.
(package-derivation): Use it; use the bag, apply its build procedure,
etc.
(package-cross-derivation): Likewise.
* gnu/packages/bootstrap.scm (raw-build, make-raw-bag): New procedure.
(%bootstrap-guile): Use them.
* guix/build-system/trivial.scm (lower): New procedure.
(trivial-build, trivial-cross-build): Remove 'source' parameter. Pass
INPUTS as is.
(trivial-build-system): Adjust accordingly.
* guix/build-system/gnu.scm (%store, inputs-search-paths,
standard-search-paths, expand-inputs, standard-inputs): Remove.
(gnu-lower): New procedure.
(gnu-build): Remove 'source' and #:implicit-inputs? parameters.
Remove 'implicit-inputs' and 'implicit-search-paths' variables. Get
the source from INPUT-DRVS.
(gnu-cross-build): Likewise.
(standard-cross-packages): Remove call to 'standard-packages'.
(standard-cross-inputs, standard-cross-search-paths): Remove.
(gnu-build-system): Remove 'build' and 'cross-build'; add 'lower'.
* guix/build-system/cmake.scm (lower): New procedure.
(cmake-build): Remove 'source' and #:cmake parameters. Use INPUTS and
SEARCH-PATHS as is. Get the source from INPUTS.
* guix/build-system/perl.scm: Likewise.
* guix/build-system/python.scm: Likewise.
* guix/build-system/ruby.scm: Likewise.
* gnu/packages/cross-base.scm (cross-gcc): Change "cross-linux-headers"
to "linux-headers".
(cross-libc)[xlinux-headers]: Pass #:implicit-cross-inputs? #f.
Likewise. In 'propagated-inputs', change "cross-linux-headers" to
"linux-headers".
* guix/git-download.scm (git-fetch): Use 'standard-packages' instead of
'standard-inputs'.
* tests/builders.scm ("gnu-build-system"): Remove use of
'build-system-builder'.
("gnu-build"): Remove 'source' and #:implicit-inputs? arguments to
'gnu-build'.
* tests/packages.scm ("search paths"): Adjust to new build system API.
("package-cross-derivation, no cross builder"): Likewise.
* doc/guix.texi (Build Systems): Add paragraph on bags.
Merge branch 'bash-cve-2014-6271'
gnu: bootstrap: Correctly handle patches that are origins.
* gnu/packages/bootstrap.scm (bootstrap-origin): Rewrite the patches of
SOURCES that are also origins.
Merge branch 'core-updates'
Conflicts:
gnu/packages/gnunet.scm
gnu: Switch to GCC 4.8 as the default compiler.
* build-aux/download.scm (file-name->uri): Update URL to /20131110.
* gnu-system.am (nodist_bootstrap_x86_64_linux_DATA,
nodist_bootstrap_i686_linux_DATA): Change base name to
'guile-2.0.9.tar.xz'.
(gnu/packages/bootstrap/x86_64-linux/guile-2.0.9.tar.xz,
gnu/packages/bootstrap/i686-linux/guile-2.0.9.tar.xz): New targets.
(gnu/packages/bootstrap/x86_64-linux/guile-2.0.7.tar.xz,
gnu/packages/bootstrap/i686-linux/guile-2.0.7.tar.xz): Remove.
(gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz): Update
hash.
* gnu/packages/base.scm (gcc-boot0): Base upon GCC-4.8. Enable C++, and
add a few --disable flags. Remove MPFR workaround.
(cross-gcc-wrapper): Base upon GCC-4.8. Wrap both 'gcc' and 'g++'.
(libstdc++): New variable.
(gcc-final): Add it as an input; pass corresponding -I and -L flags.
* gnu/packages/bootstrap.scm (%bootstrap-guile): Always use
"guile-2.0.9.tar.xz.
(%bootstrap-coreutils&co): Update hashes.
(%bootstrap-binutils): Update URL and hashes.
(%bootstrap-glibc): Likewise.
(%bootstrap-gcc): Likewise.
* gnu/packages/gcc.scm (gcc-4.7): Add LDFLAGS.
Add --disable-libstdcxx-pch.
Modify the GNU_USER*_SPEC macros from gnu-user*.h instead of the raw
_SPEC macros.
gnu: add bootstrap support for mips64el-linux using the MIPS N32 ABI.
* .gitignore: Add entry for bootstrap/mips64el-linux/guile-2.0.9.tar.xz.
* gnu-system.am (bootstrap_mips64el_linuxdir,
dist_bootstrap_mips64el_linux_DATA, nodist_bootstrap_mips64el_linux_DATA):
New variables.
(DISTCLEANFILES): Add $(nodist_bootstrap_mips64el_linux_DATA).
(gnu/packages/bootstrap/mips64el-linux/guile-2.0.9.tar.xz): New target.
* build-aux/download.scm (file-name->uri): Adapt to the newer mips64el-linux
bootstrap tarballs.
* gnu/packages/bootstrap.scm (%bootstrap-guile, %bootstrap-coreutils&co,
%bootstrap-binutils, %bootstrap-glibc, %bootstrap-gcc): Adapt to the newer
mips64el-linux bootstrap tarballs.
* gnu/packages/bootstrap/mips64el-linux/bash:
* gnu/packages/bootstrap/mips64el-linux/mkdir:
* gnu/packages/bootstrap/mips64el-linux/tar:
* gnu/packages/bootstrap/mips64el-linux/xz: New files.
Merge branch 'master' into core-updates
Remove weirdnesses caused by 'letrec*' behavior of record field initializers.
* gnu/packages/bootstrap.scm (package-from-tarball): Remove '*' from
parameter names. Adjust accordingly.
* gnu/packages/linux-initrd.scm (expression->initrd): Use 'name'
directly, removing the 'name*' alias.
* gnu/packages/linux.scm (linux-libre-headers, linux-libre): Rename
'version*' to 'version'.
gnu: bootstrap: Use the bootstrap tools for <origin> patching.
* gnu/packages/bootstrap.scm (bootstrap-origin): Override the
'patch-guile' and 'patch-inputs' fields of SOURCE.