distro: GCC: Upgrade to 4.7.2.
* distro/base.scm (gcc-4.7): Upgrade to 4.7.2.
distro: Add an `ld' wrapper, to pass missing `-rpath' flags.
* distro/ld-wrapper.scm: New file.
* Makefile.am (MODULES): Add it.
* distro/base.scm (ld-wrapper-boot3): New variable.
(%boot3-inputs): Add LD-WRAPPER-BOOT3.
(bash-final, guile-final, ld-wrapper): New final.
(%final-inputs): Use BASH-FINAL; add LD-WRAPPER.
(gcc-4.7): Remove the `-rpath' trick from the `lib' spec string.
distro: gcc: Patch `lib' spec to add `-rpath' for each `-L'.
* distro/base.scm (gcc-4.7): Patch `LIB_SPEC' to add `-rpath' for each
`-L'. Spec string suggested by Marc Glisse <marc.glisse@inria.fr>.
(libtool): Add `libtool-skip-tests.patch'.
* distro/patches/libtool-skip-tests.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
Add (guix ftp) and companion modules.
* guix/ftp-client.scm, guix/ftp.scm, guix/build/ftp.scm: New files.
* Makefile.am (MODULES): Add them.
* distro/base.scm (libffi): Use `ftp-fetch'.
distro: Use our own Perl during bootstrap.
* distro/base.scm (linux-headers-boot0): Use PERL with %BOOT0-INPUTS
instead of calling out to `nixpkgs-derivation*'.
distro: gcc: Add a RUNPATH on libc.
* distro/base.scm (gcc-4.7): Remove unnecessary "libc" input.
Add `-rpath LIBC/lib' to `LIB_SPEC'.
distro: Add Perl.
* distro/base.scm (perl): New variable.
* distro/patches/perl-no-sys-dirs.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
distro: Bootstrap via a cross-toolchain.
This allows the final toolchain to be completely independent of
%BOOTSTRAP-INPUTS.
* distro/base.scm (glibc-dynamic-linker): New procedure.
(gcc-4.7): Remove #:path-exclusions argument. Check whether LIBC is
#f before using it.
(glibc): Remove "libc_cv_as_needed" hack. Patch `Makeconfig' to
remove `-lgcc_s'.
(nix-system->gnu-triplet, boot-triplet): New variables.
(binutils-boot0): Turn into a cross-Binutils targeting (boot-triplet
SYSTEM).
(gcc-boot0): Likewise. Add configure options to make a smaller
build. Remove "binutils-source" from the input, and use
BINUTILS-BOOT0 instead.
(glibc-final): Cross-build using GCC-BOOT0 and BINUTILS-BOOT0.
(gcc-boot0-wrapped): New variable.
(%boot2-inputs): Use it.
(m4-boot2, gmp-boot2, mpfr-boot2, mpc-boot2): Remove.
(binutils-final): New variable.
(gcc-final): Turn into a joint build with GMP/MPFR/MPC. Use
BINUTILS-FINAL.
(%boot3-inputs): Adjust accordingly.
(%boot4-inputs): Remove.
(%final-inputs): Use %BOOT3-INPUTS.
Add (guix build-system trivial).
* guix/build-system/trivial.scm: New file.
* Makefile.am (MODULES): Add it.
* tests/packages.scm ("trivial"): New test.
* guix/packages.scm (package-derivation): Allow SOURCE to be #f.
distro: Reduce the bootstrap set.
* distro/base.scm (%bootstrap-inputs): Remove `gnumake', `diffutils',
and `findutils'.
(gnu-make-boot0, diffutils-boot0, findutils-boot0, %boot0-inputs): New
variables.
(binutils-boot0, gcc-boot0, linux-headers-boot0, %boot1-inputs):
Replace %BOOTSTRAP-INPUTS by %BOOT0-INPUTS.
(final-inputs): Remove now unneeded call to
`source-properties->location'.
build-system/gnu: Fix `#:path-exclusions' handling.
* guix/build/gnu-build-system.scm (set-paths)[relevant-input-directories]:
New procedure. Use it. This fixes #:path-exclusions handling.
utils: Make `set-path-environment-variable' verbose.
* guix/build/utils.scm (set-path-environment-variable): Print ENV-VAR
and its value.
distro: Bootstrap with a joint GCC/Binutils/GMP/MPFR/MPC build.
* distro/base.scm (%bootstrap-inputs): Remove GMP, MPFR, and MPC.
(substitute-keyword-arguments): New macro.
(gcc-boot0): Add dependency on the Binutils, GMP, MPFR, and MPC
tarballs. Add a `unpack-binutils&co' phase to unpack them and symlink
them so they get built, and to patch errors in `configure'.
(glibc-final): Use `substitute-keyword-arguments' instead of a loop.
(gcc-final): Inherit from GCC-4.7 instead of GCC-BOOT0.
distro: gcc: Avoid retention of reference to `sed'.
* distro/base.scm (gcc-4.7)[pre-configure]: Patch fixincl.x.
distro: glibc: Assume a recent Linux kernel.
* distro/base.scm (glibc): Pass "--enable-kernel=2.6.30".
packages: Accept <origin> as package inputs.
* guix/packages.scm (package-derivation): Accept use of an <origin> as
an input.
build-system/gnu: Relax location handling in `package-with-explicit-inputs'.
* guix/build-system/gnu.scm (package-with-explicit-inputs): Convert LOC
when it is a source-property list.
distro: mpc: Upgrade to 1.0.
* distro/base.scm (mpc): Upgrade to 1.0.
packages: Add `package-full-name'.
* guix/packages.scm (package-full-name): New procedure.
(package-derivation): Use it.
guix-build: Add `--derivations'.
* guix-build.in (show-help): Add `--derivations'.
(%options): Likewise.
(guix-build): Handle it.