packages: Accept <origin> as package inputs.
* guix/packages.scm (package-derivation): Accept use of an <origin> as
an input.
packages: Add `package-full-name'.
* guix/packages.scm (package-full-name): New procedure.
(package-derivation): Use it.
Move <location> to (guix utils).
* guix/packages.scm (<location>, location): Move to...
* guix/utils.scm: ... here.
packages: Add `package-transitive-propagated-inputs'.
* guix/packages.scm (transitive-inputs): New procedure.
(package-transitive-inputs): Rewrite in terms of `transitive-inputs'.
(package-transitive-propagated-inputs): New procedure.
packages: Cache the result of `package-derivation'.
* guix/packages.scm (%derivation-cache): New variable.
(cache, cached-derivation): New procedures.
(package-derivation): Use them.
packages: Add a printer for <package>.
* guix/packages.scm (<package>): Add record printer.
packages: Raise an error condition upon invalid input.
* guix/packages.scm (&package-error, &package-input-error): New
condition types.
(package-derivation): Raise a `&package-input-error' when no match is
made.
packages: Add all non-derivation paths to the store.
* guix/packages.scm (package-derivation): Add all non-derivation paths
to the store.
packages: Allow store paths as inputs.
* guix/packages.scm (package-derivation): Allow non-derivation store
paths as inputs.
Add `package-transitive-inputs'; use it to honor propagated inputs.
* guix/packages.scm (package-transitive-inputs): New procedure.
(package-derivation): Use it to compute INPUTS.
* tests/packages.scm (dummy-package): New macro.
("package-transitive-inputs"): New test.
packages: Allow inputs that are local files.
* guix/packages.scm (package-derivation): Add to the store inputs that
are local files.
packages: Add a `self-native-input?' field.
* guix/packages.scm (<package>)[self-native-input?]: New field.
(package-derivation): Update/fix pattern.
Rename <package-source> to <origin>; use the `letrec*' behavior in packages.
* guix/packages.scm (<package-source>): Rename to...
(<origin>): ... this. Update users.
* distro/base.scm (libsigsegv, gawk, hello): Adjust to renaming; refer
to VERSION to build the URL.
Add a `base32' macro, for convenience.
* guix/packages.scm (base32): New macro.
* distro/base.scm (libsigsegv, gawk, hello): Use it.
packages: Allow the `arguments' field to be a procedure.
* guix/packages.scm (package-derivation): When ARGS is a procedure, call
(ARGS SYSTEM).
* distro/base.scm (gawk)[arguments]: Turn into a procedure, to disable
tests on Cygwin.
Add `propagated-inputs' and `properties' to <package>.
* guix/packages.scm (<package>)[propagated-inputs, properties]: New
fields.
(package-derivation): Update `match' clause.
distro: Add libsigsegv and GNU Awk.
* guix/packages.scm (<package>)[arguments]: Default to '().
* distro/base.scm (libsigsegv, gawk): New packages.
(hello): Use GAWK instead of (nixpkgs-derivation "gawk").
packages: Add a `home-page' field.
* guix/packages.scm (<package>)[home-page]: New field.
* distro/base.scm (hello)[home-page]: Initialize.
Track the source location of packages.
* guix/packages.scm (<location>): New record type.
(location, source-properties->location): New procedures.
(<package>)[location]: New field.
* tests/packages.scm ("GNU Hello"): Test `package-location'.
Add a declarative packaging layer.
* Makefile.am (MODULES): Add `guix/packages.scm' and `distro/base.scm'.
(TESTS): Add `tests/packages.scm'.
(EXTRA_DIST): New variable.
* guix/packages.scm, distro/base.scm, tests/packages.scm: New files.
* guix/http.scm (http-fetch): Make `name' an optional argument, to match
the expectations of `package-source-derivation'.