aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/derivations.scm43
-rw-r--r--tests/union.scm7
2 files changed, 30 insertions, 20 deletions
diff --git a/tests/derivations.scm b/tests/derivations.scm
index 46bab4e19d..c00f0efc98 100644
--- a/tests/derivations.scm
+++ b/tests/derivations.scm
@@ -1,5 +1,5 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
-;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright (C) 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
@@ -23,6 +23,7 @@
#:use-module (guix utils)
#:use-module (guix base32)
#:use-module ((guix packages) #:select (package-derivation))
+ #:use-module ((distro) #:select (search-bootstrap-binary))
#:use-module (distro packages bootstrap)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
@@ -47,6 +48,11 @@
(let ((drv (package-derivation %store %bootstrap-guile)))
(%guile-for-build drv)))
+(define %bash
+ (let ((bash (search-bootstrap-binary "bash" (%current-system))))
+ (and %store
+ (add-to-store %store "bash" #t #t "sha256" bash))))
+
(define (directory-contents dir)
"Return an alist representing the contents of DIR."
(define prefix-len (string-length dir))
@@ -96,10 +102,11 @@
(test-assert "derivation with no inputs"
(let* ((builder (add-text-to-store %store "my-builder.sh"
- "#!/bin/sh\necho hello, world\n"
+ "echo hello, world\n"
'()))
- (drv-path (derivation %store "foo" (%current-system) builder
- '() '(("HOME" . "/homeless")) '())))
+ (drv-path (derivation %store "foo" (%current-system)
+ %bash `("-e" ,builder)
+ '(("HOME" . "/homeless")) '())))
(and (store-path? drv-path)
(valid-path? %store drv-path))))
@@ -110,7 +117,7 @@
'()))
((drv-path drv)
(derivation %store "foo" (%current-system)
- "/bin/sh" `(,builder)
+ %bash `(,builder)
'(("HOME" . "/homeless")
("zzz" . "Z!")
("AAA" . "A!"))
@@ -132,7 +139,7 @@
(input (search-path %load-path "ice-9/boot-9.scm"))
(drv-path (derivation %store "derivation-with-input-file"
(%current-system)
- "/bin/sh" `(,builder)
+ %bash `(,builder)
`(("in"
;; Cheat to pass the actual file
;; name to the builder.
@@ -152,7 +159,7 @@
"echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(drv-path (derivation %store "fixed" (%current-system)
- "/bin/sh" `(,builder)
+ %bash `(,builder)
'()
`((,builder)) ; optional
#:hash hash #:hash-algo 'sha256))
@@ -170,11 +177,11 @@
"echo hey; echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(drv-path1 (derivation %store "fixed" (%current-system)
- "/bin/sh" `(,builder1)
+ %bash `(,builder1)
'() `()
#:hash hash #:hash-algo 'sha256))
(drv-path2 (derivation %store "fixed" (%current-system)
- "/bin/sh" `(,builder2)
+ %bash `(,builder2)
'() `()
#:hash hash #:hash-algo 'sha256))
(succeeded? (build-derivations %store
@@ -193,11 +200,11 @@
"echo hey; echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(fixed1 (derivation %store "fixed" (%current-system)
- "/bin/sh" `(,builder1)
+ %bash `(,builder1)
'() `()
#:hash hash #:hash-algo 'sha256))
(fixed2 (derivation %store "fixed" (%current-system)
- "/bin/sh" `(,builder2)
+ %bash `(,builder2)
'() `()
#:hash hash #:hash-algo 'sha256))
(fixed-out (derivation-path->output-path fixed1))
@@ -206,11 +213,11 @@
;; Use Bash hackery to avoid Coreutils.
"echo $in ; (read -u 3 c; echo $c) 3< $in > $out" '()))
(final1 (derivation %store "final" (%current-system)
- "/bin/sh" `(,builder3)
+ %bash `(,builder3)
`(("in" . ,fixed-out))
`((,builder3) (,fixed1))))
(final2 (derivation %store "final" (%current-system)
- "/bin/sh" `(,builder3)
+ %bash `(,builder3)
`(("in" . ,fixed-out))
`((,builder3) (,fixed2))))
(succeeded? (build-derivations %store
@@ -224,7 +231,7 @@
"echo one > $out ; echo two > $second"
'()))
(drv-path (derivation %store "fixed" (%current-system)
- "/bin/sh" `(,builder)
+ %bash `(,builder)
'(("HOME" . "/homeless")
("zzz" . "Z!")
("AAA" . "A!"))
@@ -244,7 +251,7 @@
"echo one > $out ; echo two > $AAA"
'()))
(drv-path (derivation %store "fixed" (%current-system)
- "/bin/sh" `(,builder)
+ %bash `(,builder)
'()
`((,builder))
#:outputs '("out" "AAA")))
@@ -262,7 +269,7 @@
"echo one > $out ; echo two > $two"
'()))
(mdrv (derivation %store "multiple-output" (%current-system)
- "/bin/sh" `(,builder1)
+ %bash `(,builder1)
'()
`((,builder1))
#:outputs '("out" "two")))
@@ -273,7 +280,7 @@
'()))
(udrv (derivation %store "multiple-output-user"
(%current-system)
- "/bin/sh" `(,builder2)
+ %bash `(,builder2)
`(("one" . ,(derivation-path->output-path
mdrv "out"))
("two" . ,(derivation-path->output-path
@@ -303,7 +310,7 @@
'()))
(drv-path
(derivation %store "foo" (%current-system)
- "/bin/sh" `(,builder)
+ %bash `(,builder)
`(("PATH" .
,(string-append
(derivation-path->output-path %coreutils)
diff --git a/tests/union.scm b/tests/union.scm
index c839855ef4..b2242a834b 100644
--- a/tests/union.scm
+++ b/tests/union.scm
@@ -1,5 +1,5 @@
;;; Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
-;;; Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright (C) 2012, 2013 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of Guix.
;;;
@@ -26,6 +26,7 @@
#:use-module ((guix build utils)
#:select (with-directory-excursion directory-exists?))
#:use-module (distro packages bootstrap)
+ #:use-module (srfi srfi-1)
#:use-module (srfi srfi-64)
#:use-module (ice-9 match))
@@ -74,7 +75,9 @@
(let* ((inputs (map (match-lambda
((name package)
`(,name ,(package-derivation %store package))))
- %bootstrap-inputs))
+ (delete-duplicates %bootstrap-inputs
+ (lambda (i1 i2)
+ (eq? (second i1) (second i2))))))
(builder `(begin
(use-modules (guix build union))
(union-build (assoc-ref %outputs "out")