distro: tar: Allow builds with glibc 2.16+.
* distro/patches/tar-gets-undeclared.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
* distro/base.scm (tar): Apply. `tar-gets-undeclared.patch'.
packages: Add a printer for <package>.
* guix/packages.scm (<package>): Add record printer.
Optimize `write-derivation' and `derivation-path->output-path'.
* guix/derivations.scm (write-derivation): Explicitly use
`simple-format'.
(derivation-path->output-path): Memoize.
Optimize `store-path?'.
* guix/store.scm (store-path?): Check with `string-prefix?' instead of a
regexp.
build-system/gnu: Really apply patches.
* guix/build/gnu-build-system.scm (patch): Use `--input FILE', not just
`FILE'.
utils: Change `substitute*' to allow iteration over several matches.
* guix/build/utils.scm (substitute): Do not pass the OUT to PROC; use
`list-matches' instead of `regexp-exec' and pass a list of matches to
PROC. Expect PROC to return a string, and output that. Fold over
RX+PROC in order. Use `(read-line p 'concat)' to include the trailing
delimiter in LINE.
(substitute*): Produce code to iterate over the matches, and return a
string, which includes anything from the original line that's in
between matches.
* distro/base.scm (gcc-4.7, glibc): Adjust accordingly: remove use
of (ice-9 regex) and `regexp-substitute/global'; return a string.
distro: m4: Add patch to allow builds with glibc 2.16+.
* distro/base.scm (m4): Use `m4-gets-undeclared.patch'.
* distro/patches/m4-gets-undeclared.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
Add a `guile-for-build' parameter to `build-expression->derivation'.
* guix/derivations.scm (%guile-for-build): Use `nixpkgs-derivation*'
instead of `nixpkgs-derivation'.
(build-expression->derivation): New `guile-for-build' keyword
parameter. Use it.
Add an `env-vars' keyword parameter to `build-expression->derivation'.
* guix/derivations.scm (build-expression->derivation): New `env-vars'
keyword parameter; default to '(). Use it.
build-system/gnu: Add `path-exclusions' parameter.
* guix/build/gnu-build-system.scm (set-paths): Add new `path-exclusions'
parameter; honor it.
* guix/build-system/gnu.scm (gnu-build): New `path-exclusions' keyword
parameter; pass it to BUILDER.
* distro/base.scm (gcc-4.7): Exclude "libc" from $LIBRARY_PATH.
distro: gcc: Allow `libstdc++' to be found.
* distro/base.scm (gcc-4.7): Add `-rpath' arguments to `LIB_SPEC' to
allow `libstdc++' to be found by users.
distro: gcc: Pass #:strip-binaries?.
* distro/base.scm (gcc-4.7): Pass #:strip-binaries?.
build-system/gnu: Honor the `patch-shebangs?' and `strip-binaries?' parameters.
* guix/build/gnu-build-system.scm (patch-shebangs): Honor
PATCH-SHEBANGS?.
(strip): Honor STRIP-BINARIES?. Display a message from `strip-dir'.
guix-build: Fix the "unrecognized option" error message.
* guix-build.in (guix-build): Show the option name when an unrecognized
option is passed.
build-system/gnu: Add a `strip' phase.
* guix/build/gnu-build-system.scm (strip): New procedure.
(%standard-phases): Add it.
* guix/build-system/gnu.scm (gnu-build): New `strip-binaries?',
`strip-flags', and `strip-directories' keyword parameters. Pass them
to BUILDER.
build-system/gnu: Always invoke `configure' with a relative path.
* guix/build/gnu-build-system.scm (configure): Change SRCDIR to always
be a relative path.
distro: gcc: Do not store configure flags in the resulting binaries.
* distro/base.scm (gcc-4.7): Add a `post-configure' phase to clear
`TOPLEVEL_CONFIGURE_ARGUMENTS' in the top-level `Makefile'.
define-record-type*: Add the `inherit' syntactic constructor keyword.
* guix/utils.scm (define-record-type*)[make-syntactic-constructor]: New
`type' parameter. Add the `inherit' keyword and corresponding support
code.
* tests/utils.scm ("define-record-type* & inherit", "define-record-type*
& inherit & letrec* behavior"): New tests.
distro: Add missing Binutils patch.
* distro/patches/binutils-ld-new-dtags.patch: New file.
* Makefile.am (dist_patch_DATA): Add it.
distro: Add the GNU C Library.
* distro/base.scm (glibc): New variable.