Commit Graph

128 Commits

Author SHA1 Message Date
Ludovic Courtès 4c1eddf766 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.
2012-09-01 11:33:20 +02:00
Ludovic Courtès d44bc84b15 Unset `LD_LIBRARY_PATH' in `build-expression->derivation'.
* guix/derivations.scm (build-expression->derivation)[prolog]: Unset
  `LD_LIBRARY_PATH'.
2012-07-07 22:38:08 +02:00
Ludovic Courtès d66ac374e9 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.
2012-07-02 01:35:39 +02:00
Ludovic Courtès 561eaf7144 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.
2012-07-02 01:35:39 +02:00
Ludovic Courtès 4b1786aa2c 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.
2012-07-02 01:35:39 +02:00
Ludovic Courtès 9a20830e57 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.
2012-07-01 00:37:03 +02:00
Ludovic Courtès d26ad5e45b derivation: Remove duplicate inputs.
* guix/derivations.scm (derivation): Remove duplicates from INPUT.
2012-06-29 00:27:32 +02:00
Ludovic Courtès 0d56a551bf build-expression->derivation: Move module forms at the top-level.
* guix/derivations.scm (build-expression->derivation)[module-form?]: New
  procedure.
  [prologue]: Add any form of EXP that matches MODULE-FORM?.
  [builder]: Remove any MODULE-FORM? from EXP.
2012-06-17 16:43:40 +02:00
Ludovic Courtès db393b333f build-expression->derivation: Have the build fail when EXP returns #f.
* guix/derivations.scm (build-expression->derivation)[builder]: Pass the
  result of EXP to `exit'.

* tests/derivations.scm ("build-expression->derivation with expression
  returning #f"): New test.
2012-06-16 16:46:29 +02:00
Ludovic Courtès 2acb2cb6d0 Change `build-expression->derivation' to support sub-derivation inputs.
* guix/derivations.scm (build-expression->derivation): Change to expect
  INPUTS to have the form (NAME DRV-PATH SUB-DRV) or (NAME DRV-PATH),
  instead of (NAME . DRV-PATH).  Update callers accordingly.

* guix/gnu-build-system.scm, tests/builders.scm, tests/derivations.scm:
  Update accordingly.
2012-06-13 17:21:27 +02:00
Ludovic Courtès c36db98c8e Add supporting tools for the GNU Build System.
* guix/derivations.scm (build-expression->derivation): Add all of INPUTS
  as inputs to the final derivation.

* guix/build/gnu-build-system.scm, guix/build/utils.scm,
  guix/gnu-build-system.scm: New files.

* tests/builders.scm ("gnu-build"): New test.
2012-06-13 17:03:34 +02:00
Ludovic Courtès bcdd83ec69 Fix the order of the derivation's sources in `derivation-hash'.
* guix/derivations.scm (derivation-hash): Sort SOURCES alphabetically as
  well.
2012-06-13 16:45:54 +02:00
Ludovic Courtès 224f7ad6a3 Fix `imported-files' for files with a common prefix.
* guix/derivations.scm (imported-files)[builder]: For TAIL, check
  whether it exists before (mkdir TAIL).

* tests/derivations.scm ("imported-files"): Add file with a common
  prefix.
2012-06-12 23:30:00 +02:00
Ludovic Courtès 3eb982377e Augment `build-expression->derivation' with #:modules; add `http-fetch'.
* guix/derivations.scm (imported-modules): New procedure.
  (build-expression->derivation): New keyword argument `modules'.
  Use `imported-modules' when MODULES is non-empty, and pass it with
  `-L' to GUILE.

* guix/build/http.scm, guix/http.scm, tests/builders.scm: New files.
2012-06-12 00:18:14 +02:00
Ludovic Courtès 99634e3ff4 Add `imported-files'.
* guix/derivations.scm (imported-files): New procedure.
  (build-expression->derivation): Correctly handle inputs that are
  sources and not derivation paths.

* tests/derivations.scm ("imported-files"): New test.
2012-06-11 23:12:55 +02:00
Ludovic Courtès 9bc07f4df0 Add multiple-output support to `build-expression->derivation'.
* guix/derivations.scm (build-expression->derivation): Add `outputs'
  keyword parameter; pass it to `derivation'.  Define `%outputs' in the
  prologue.

* tests/derivations.scm ("build-expression->derivation with two
  outputs"): New test.
2012-06-09 23:16:55 +02:00
Ludovic Courtès af7f9e5f13 Sort environment variables alphabetically in `derivation'.
* guix/derivations.scm (derivation)[env-vars-with-empty-outputs]: Sort
  the result alphabetically.

* tests/derivations.scm ("build derivation with 1 source"): Add
  environment variables.
2012-06-09 21:50:30 +02:00
Ludovic Courtès 26b969dee0 Add support for fixed-output derivations in `build-expression->derivation'.
* guix/derivations.scm (build-expression->derivation): Pass HASH and
  HASH-ALGO to `derivation'.

* tests/derivations.scm ("build-expression->derivation for fixed-output
  derivation"): New test.
2012-06-09 18:52:16 +02:00
Ludovic Courtès 749c656755 Add support for fixed-output derivations.
* guix/derivations.scm (read-derivation)[outputs->alist]: For
  fixed-outputs, convert HASH with `base16-string->bytevector'.
  (write-derivation): Likewise, convert HASH-ALGO to a string and HASH
  to a base16 string.
  (derivation-hash): Expect HASH to be a bytevector, not a string;
  convert HASH with `bytevector->base16-string'.

* tests/derivations.scm ("fixed-output derivation"): New test.
2012-06-09 18:49:19 +02:00
Ludovic Courtès d9085c23c4 Add `build-expression->derivation'.
* guix/derivations.scm (%guile-for-build): New parameter.
  (build-expression->derivation): New procedure.

* tests/derivations.scm ("build-expression->derivation without inputs",
  "build-expression->derivation with one input"): New tests.
2012-06-08 21:31:01 +02:00
Ludovic Courtès de4c3f26cb Allow derivations with input derivations.
* guix/derivations.scm (derivation-path->output-path): New procedure.
  (derivation-hash): Call `memoize'.  In the fixed-output case, convert
  HASH-ALGO to a string.  In the other case, sort inputs in the
  alphabetical order of their hex hash.  For inputs with no sub-drvs,
  add "out" as the sub-drv.

* guix/utils.scm (%nixpkgs-directory): New parameter.
  (nixpkgs-derivation, memoize): New procedures.

* tests/derivations.scm ("build derivation with 1 source"): Remove
  useless shebang.
  (%coreutils): New variable.
  ("build derivation with coreutils"): New test.
2012-06-07 23:15:00 +02:00
Ludovic Courtès 087602b687 Fix the order of environment variables in `derivation'.
* guix/derivations.scm (derivation)[env-vars-with-empty-outputs]:
  Prepend new environment variables (as expected by Nix), and add them
  to E.
2012-06-07 01:51:24 +02:00
Ludovic Courtès fb3eec8301 Test the `build-derivations' operation.
* guix/derivations.scm (derivation): Return DRV as a second value.
* tests/derivations.scm ("build derivation with 1 source"): New test.
2012-06-05 00:04:07 +02:00
Ludovic Courtès 26bbbb9520 First stab at the `derivation' primitive.
* guix/store.scm (%store-prefix): New parameter.
  (store-path?, derivation-path?): New procedures.

* guix/derivations.scm (write-derivation): Pass SOURCES through
  `object->string'.
  (compressed-hash, store-path, output-path, derivation): New
  procedures.

* tests/derivations.scm (%store): New global variable.
  ("derivation with no inputs"): New test.
2012-06-03 23:32:06 +02:00
Ludovic Courtès d0a92b7531 Move `sha256' to (guix utils).
* guix/derivations.scm (sha256): Move to...
* guix/utils.scm (sha256): ... here.
2012-06-03 20:26:45 +02:00
Ludovic Courtès 69f90f5c81 Use libchop for cryptographic hashes and related.
* guix/derivations.scm (sha256): Rewrite using libchop's
  `bytevector-hash'.
  (derivation-hash): Add docstring.
2012-06-01 23:30:14 +02:00
Ludovic Courtès 341c6fdd82 Add unit test for derivation parsing and output.
* guix/derivations.scm: Export `read-derivation' and `write-derivation'.

* srfi/srfi-64.scm, srfi/srfi-64.upstream.scm: New files, from libchop.
* tests/derivations.scm, tests/test.drv: New files.
2012-04-19 23:09:55 +02:00
Ludovic Courtès 77d3cf087d Split (guix) in (guix store) and (guix derivations).
* guix.scm: Move contents to other files.  Just aggregate these.
* guix/derivations.scm, guix/store.scm: New files.
2012-04-18 23:34:12 +02:00