Make `define-record-type*' error messages more informative.
* guix/utils.scm (define-record-type*): In case of missing or extra
field initializers, raise a descriptive `syntax-error'.
distro: libsigsegv: Use multiple outputs.
* distro/base.scm (libsigsegv)[outputs]: New field
(gawk)[arguments]: Clear.
[inputs]: Add the "lib" output of LIBSIGSEGV.
guix-build: Display multiple outputs when needed.
* guix-build.in (guix-build): Display multiple outputs when there's more
than one.
derivation: Coalesce multiple occurrences of the same input.
* guix/derivations.scm (write-derivation)[coalesce-duplicate-inputs]:
New procedure.
Use it to process INPUTS.
* tests/derivations.scm ("user of multiple-output derivation"): New
test.
build: Don't auto-compile tests.
* Makefile.am (TESTS_ENVIRONMENT): Add `--no-auto-compile'.
gnu-build-system: Fix "libdir" and "includedir" for multiple-output drvs.
* guix/build/gnu-build-system.scm (configure): Change `--libdir' and
`--includedir' to LIBDIR + "/lib" and INCLUDEDIR + "/include",
respectively.
Upgrade Nix worker protocol.
We were already relying on the new version in `set-build-options', so
this patch fixes that.
* guix/store.scm (%protocol-version): Increase.
(open-connection)[reserve-space?]: New argument. Pass it to the
server when it's recent enough.
derivation: Move sorting code to `write-derivation'.
* guix/derivations.scm (write-derivation): Sorte OUTPUTS, INPUTS,
SOURCES, and ENV-VARS alphabetically.
(derivation-hash): Leave INPUTS, SOURCES, and OUTPUTS unsorted.
(derivation)[env-vars-with-empty-outputs]: Leave ENV-VARS unsorted.
build: Use `AM_GNU_GETTEXT_VERSION'.
* configure.ac: Add `AM_GNU_GETTEXT_VERSION'. Suggested by
Antono Vasiljev.
Fix `derivation-hash' for outputs not sorted alphabetically.
* guix/derivations.scm (derivation-hash): Reorder OUTPUTS.
* tests/derivations.scm ("multiple-output derivation, non-alphabetic
order"): New test.
Add `propagated-inputs' and `properties' to <package>.
* guix/packages.scm (<package>)[propagated-inputs, properties]: New
fields.
(package-derivation): Update `match' clause.
Update list of dependencies.
* README: Require libgcrypt or libchop.
build: Build (guix utils) first.
* Makefile.am (MODULES): Move `guix/utils.scm' first.
build: Capitalize the package name.
* configure.ac: Use "Guix", not "guix", as the package name.
Add `guix-build'.
* guix-build.in: New file.
* configure.ac: Emit `guix-build'. Add `commands-exec'.
* Makefile.am (bin_SCRIPTS): New variable.
* po/POTFILES.in: Add `guix-build.in'.
Add `derivation-prerequisites' and `derivation-prerequisites-to-build'.
* guix/derivations.scm (derivation-prerequisites,
derivation-prerequisites-to-build): New procedures.
* tests/derivations.scm ("build-expression->derivation and
derivation-prerequisites", "build-expression->derivation and
derivation-prerequisites-to-build"): New tests.
Add the `valid-path?' RPC.
* guix/store.scm (valid-path?): New procedure.
* tests/builders.scm ("http-fetch", "gnu-build"): Use it.
* tests/derivations.scm ("add-to-store, flat", "add-to-store,
recursive", "derivation with no inputs", "build derivation with 1
source", "build derivation with coreutils",
"build-expression->derivation with expression returning #f"):
Likewise.
Add missing `set-build-options' parameters.
* guix/store.scm (set-build-options)[build-cores, use-substitutes?]: New
keyword parameters.
[send]: Change to expect a type, and use `write-arg'.
Send settings for BUILD-CORES and USE-SUBSTITUTES? when the server
supports it.
Add (distro) with a package searching facility.
* Makefile.am (MODULES): Add `distro.scm'.
* distro.scm: New file.
* po/POTFILES.in: Add it.
* tests/packages.scm ("find-packages-by-name", "find-packages-by-name
with version"): New tests.
Add a libgcrypt-based implementation of `sha256'.
* guix/utils.scm (sha256): Add a libgcrypt-based implementation using
the FFI.