summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-06-07 23:15:00 +0200
committerLudovic Courtès <ludo@gnu.org>2012-06-07 23:15:00 +0200
commitde4c3f26cbf25149265f779b5af08c79de47859c (patch)
treee89e4f66ede27773734b3a772e10df839753ea79 /tests
parent087602b687e28483923643b89490c2fd3b4d908b (diff)
downloadguix-de4c3f26cbf25149265f779b5af08c79de47859c.tar.gz
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.
Diffstat (limited to 'tests')
-rw-r--r--tests/derivations.scm31
1 files changed, 29 insertions, 2 deletions
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 64bc678828..f2a3bb2d55 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -20,6 +20,7 @@
 (define-module (test-derivations)
   #:use-module (guix derivations)
   #:use-module (guix store)
+  #:use-module (guix utils)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-64)
@@ -40,7 +41,7 @@
     (and (equal? b1 b2)
          (equal? d1 d2))))
 
-(test-skip (if %store 0 2))
+(test-skip (if %store 0 3))
 
 (test-assert "derivation with no inputs"
   (let ((builder (add-text-to-store %store "my-builder.sh"
@@ -52,7 +53,7 @@
 (test-assert "build derivation with 1 source"
   (let*-values (((builder)
                  (add-text-to-store %store "my-builder.sh"
-                                    "#!/bin/sh\necho hello, world > \"$out\"\n"
+                                    "echo hello, world > \"$out\"\n"
                                     '()))
                 ((drv-path drv)
                  (derivation %store "foo" "x86_64-linux"
@@ -67,6 +68,32 @@
            (string=? (call-with-input-file path read-line)
                      "hello, world")))))
 
+
+(define %coreutils
+  (false-if-exception (nixpkgs-derivation "coreutils")))
+
+(test-skip (if %coreutils 0 1))
+
+(test-assert "build derivation with coreutils"
+  (let* ((builder
+          (add-text-to-store %store "build-with-coreutils.sh"
+                             "echo $PATH ; mkdir --version ; mkdir $out ; touch $out/good"
+                             '()))
+         (drv-path
+          (derivation %store "foo" "x86_64-linux"
+                      "/bin/sh" `(,builder)
+                      `(("PATH" .
+                         ,(string-append
+                           (derivation-path->output-path %coreutils)
+                           "/bin")))
+                      `((,builder)
+                        (,%coreutils))))
+         (succeeded?
+          (build-derivations %store (list drv-path))))
+    (and succeeded?
+         (let ((p (derivation-path->output-path drv-path)))
+           (file-exists? (string-append p "/good"))))))
+
 (test-end)