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.
This commit is contained in:
Ludovic Courtès 2012-06-09 21:50:30 +02:00
parent 26b969dee0
commit af7f9e5f13
2 changed files with 9 additions and 4 deletions

View File

@ -308,19 +308,22 @@ known in advance, such as a file download."
(define (env-vars-with-empty-outputs) (define (env-vars-with-empty-outputs)
;; Return a variant of ENV-VARS where each OUTPUTS is associated with an ;; Return a variant of ENV-VARS where each OUTPUTS is associated with an
;; empty string, even outputs that do not appear in ENV-VARS. ;; empty string, even outputs that do not appear in ENV-VARS. Note: the
;; result is sorted alphabetically, as with C++ `std::map'.
(let ((e (map (match-lambda (let ((e (map (match-lambda
((name . val) ((name . val)
(if (member name outputs) (if (member name outputs)
(cons name "") (cons name "")
(cons name val)))) (cons name val))))
env-vars))) env-vars)))
(fold-right (lambda (output-name env-vars) (sort (fold (lambda (output-name env-vars)
(if (assoc output-name env-vars) (if (assoc output-name env-vars)
env-vars env-vars
(append env-vars `((,output-name . ""))))) (append env-vars `((,output-name . "")))))
e e
outputs))) outputs)
(lambda (e1 e2)
(string<? (car e1) (car e2))))))
(let* ((outputs (map (lambda (name) (let* ((outputs (map (lambda (name)
;; Return outputs with an empty path. ;; Return outputs with an empty path.

View File

@ -59,7 +59,9 @@
((drv-path drv) ((drv-path drv)
(derivation %store "foo" "x86_64-linux" (derivation %store "foo" "x86_64-linux"
"/bin/sh" `(,builder) "/bin/sh" `(,builder)
'(("HOME" . "/homeless")) '(("HOME" . "/homeless")
("zzz" . "Z!")
("AAA" . "A!"))
`((,builder)))) `((,builder))))
((succeeded?) ((succeeded?)
(build-derivations %store (list drv-path)))) (build-derivations %store (list drv-path))))