build-system/gnu: Write debug files to the "debug" sub-derivation, if any. * guix/build/gnu-build-system.scm (strip): Add `objcopy-command' keyword parameter. [debug-output, debug-file-extension]: New variables. [debug-file, make-debug-file, add-debug-link]: New procedures. [strip-dir]: Use them.
utils: Re-export `alist-cons' and `alist-delete'. * guix/build/utils.scm: Re-export `alist-cons' and `alist-delete'.
gnu: gcc: Use `gcc-configure-flags-for-triplet' when cross-compiling GCC. * gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): Move to... * gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): ... here. New procedure. (gcc-4.7): Use it when (%current-target-system) is true.
build: Add "mips64el-linux-gnuabi64" as a cross build target. * build-aux/hydra/gnu-system.scm (%packages-to-cross-build): Add %bootstrap-tarballs. (%cross-targets): Add "mips64el-linux-gnuabi64".
gnu: cross-base: Add support for `mips64el-linux-gnu-gnuabi64' (N64 ABI). * gnu/packages/cross-base.scm (gcc-configure-flags-for-triplet): New procedure. (cross-gcc): Use it. (xgcc-mips64el): Use *-gnuabi64 instead of the N32 ABI.
gnu: make-bootstrap: Fix cross compilation of binutils-static. * gnu/packages/make-bootstrap.scm (%binutils-static): Inherit configure flags from BINUTILS.
gnu: make-bootstrap: Have %gcc-static actually static when cross building. * gnu/packages/make-bootstrap.scm (%gcc-static): Pass `-static' through `LDFLAGS' when cross-compiling.
gnu: gcc: Allow cross-compilation of GCC itself. * gnu/packages/gcc.scm (gcc-4.7): Define `CC_FOR_TARGET', `AR_FOR_TARGET', etc. when cross-compiling.
gnu: cross-base: Make `glibc-dynamic-linker' do the right thing. * gnu/packages/bootstrap.scm (glibc-dynamic-linker): Determine SYSTEM based on (%current-target-system) when it's true. * gnu/packages/cross-base.scm (cross-gcc): Directly call (package-arguments gcc-4.7) from the body of `arguments'.
gnu: cross-base: Build Binutils with `--with-sysroot=/'. * gnu/packages/cross-base.scm (cross-binutils): Use `--with-sysroot=/'.
build: Build the bootstrap tarballs on Hydra. * build-aux/hydra/gnu-system.scm (%packages-to-cross-build): Uncomment the bootstrap tarball packages.
gnu: make-bootstrap: Allow cross-compilation of the bootstrap tarballs. * gnu/packages/make-bootstrap.scm (package-with-relocatable-glibc): Turn `inputs' into a thunk. Add `native-inputs', and pass it to `package-with-explicit-inputs'. (%static-inputs): Add %BASH-STATIC as an input to gawk when cross building. (%glibc-stripped): When cross compiling, use (glibc-for-bootstrap (cross-libc)) as the basis. (%gcc-static): Base on GCC-4.7, not GCC-FINAL. (tarball-package): TAR and XZ are native inputs. Choose the tarball file name based on (%current-target-system) too.
build-system/gnu: `package-with-explicit-inputs' skips non-GBS packages. * guix/build-system/gnu.scm (package-with-explicit-inputs)[rewritten-input]: Leave P unchanged if its build system is not GNU-BUILD-SYSTEM.
gnu: cross-base: Make the cross tools native inputs. * gnu/packages/cross-base.scm (cross-gcc): Change `inputs' to `native-inputs', and set `inputs' to the empty list. (cross-libc): Likewise.
build-system/gnu: Augment `package-with-explicit-inputs' for cross builds. * guix/build-system/gnu.scm (package-with-explicit-inputs): Add `native-inputs' keyword parameter. Allow INPUTS and NATIVE-INPUTS to be thunks.
build-system/trivial: Don't bind `%target' in the builder. * guix/build-system/trivial.scm (trivial-cross-build): Don't bind `%target' here since this causes problem when BUILDER contains (use-modules ...) clauses, and can be achieved differently anyway.
gnu: gawk: Allow cross-compilation. * gnu/packages/gawk.scm (gawk)[arguments]: Annihilate the `check-for-shared-lib-support' target when cross-compiling.
build-system/gnu: Disable test suite when cross building. * guix/build-system/gnu.scm (gnu-cross-build): Change #:tests? to default to #f.
gnu: libffi: Upgrade to 3.0.13. * gnu/packages/libffi.scm (libffi): Upgrade to 3.0.13.
utils: `set-path-environment-variable' calls `unsetenv' for empty values. * guix/build/utils.scm (set-path-environment-variable): When VALUE is the empty string, call `unsetenv' instead of `setenv'. * gnu/packages/guile.scm (guile-2.0)[arguments]: Remove `unsetenv' trick.