From now own, (guix packages) depends on (guix gexps); it was the other
way around now. This means that (guix packages) code can use gexps.
* guix/gexp.scm (origin-compiler, package-compiler): Remove.
(default-guile-derivation): New procedure.
(gexp->derivation): Use it instead of 'default-guile' +
'package->derivation'.
* guix/packages.scm (default-guile-derivation): New procedure.
(package-compiler, origin-compiler): New variables.
* doc/guix.texi (G-Expressions): Mention extensibility.
* guix/gexp.scm (<gexp-compiler>): New record type.
(%gexp-compilers): New variable.
(register-compiler!, lookup-compiler): New procedures.
(define-gexp-compiler): New macro.
(origin-compiler, package-compiler): New compilers.
(lower-inputs): Remove clauses for 'origin?' and 'package?'. Add
clause with 'lookup-compiler' instead.
(lower-references): Likewise.
(gexp-inputs)[add-reference-inputs]: Likewise.
(gexp->sexp)[reference->sexp]: Likewise.
* guix/gexp.scm (gexp-inputs)[add-reference-inputs]: Remove clause for
inputs of the form (PACKAGE OUTPUT).
(gexp->sexp)[reference->sexp]: Likewise.
* tests/gexp.scm ("input list splicing"): Change 'list' to 'gexp-input'
for glibc:debug.
("text-file*"): Likewise for %bootstrap-guile:out.
("input list splicing + gexp-input + ungexp-native-splicing"): Remove,
now redundant.
* guix/profiles.scm (package->manifest-entry): Use 'gexp-input' instead
of two-element lists to denote specific package outputs.
(manifest-inputs): Likewise.
(profile-derivation)[info-dir]: Likewise.
* guix/gexp.scm (<gexp-input>)[gexp-input]: Rename to...
[%gexp-input]: ... this. Adjust callers accordingly.
(gexp-input): New procedure.
(gexp-inputs)[add-reference-inputs]: When the input is a list, check
whether each item is already 'gexp-input?' and to not rewrap those.
(gexp-outputs)[add-reference-output]: Likewise.
(gexp->sexp): Likewise.
* tests/gexp.scm ("input list splicing + gexp-input +
ungexp-native-splicing"): New test.
* guix/gexp.scm (<gexp-input>): New record type.
(gexp-inputs)[add-reference-inputs]: Adjust clauses to expect
<gexp-input> objects.
(gexp-outputs)[add-reference-output]: Likewise.
(gexp->sexp)[reference->sexp]: Likewise.
(canonicalize-reference): Remove.
(gexp)[escape->ref]: Use 'gexp-input' for all the references.
Remove use of 'canonicalize-reference'.
* gnu/packages/texlive.scm (texlive-bin, texlive-texmf): New variables.
The first one contains the binaries; the second one the texmf tree.
(texlive): Drop output "data". Create the output "out" as the union
of the suitable subdirectories of texlive-bin and texlive-texmf, and
wrap the binaries, setting TEXMFCNF to the value corresponding to
texlive-texmf.