tests: Adjust to not rely on /bin/sh.

* tests/derivations.scm (%bash): New variable.
  Replace occurrences of "/bin/sh" by %BASH.
* tests/union.scm ("union-build"): Delete duplicates from
  %BOOTSTRAP-INPUTS.
This commit is contained in:
Ludovic Courtès 2013-01-02 01:04:37 +01:00
parent 52b8e5fc30
commit 97d3998e7a
2 changed files with 30 additions and 20 deletions

View File

@ -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)

View File

@ -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")