~ruther/guix-local

af7f9e5f13106ccfd6c9144e40dff5071672b195 — Ludovic Courtès 13 years ago 26b969d
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.
2 files changed, 9 insertions(+), 4 deletions(-)

M guix/derivations.scm
M tests/derivations.scm
M guix/derivations.scm => guix/derivations.scm +6 -3
@@ 308,19 308,22 @@ known in advance, such as a file download."

  (define (env-vars-with-empty-outputs)
    ;; 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
                   ((name . val)
                    (if (member name outputs)
                        (cons name "")
                        (cons name val))))
                  env-vars)))
      (fold-right (lambda (output-name env-vars)
      (sort (fold (lambda (output-name env-vars)
                    (if (assoc output-name env-vars)
                        env-vars
                        (append env-vars `((,output-name . "")))))
                  e
                  outputs)))
                  outputs)
            (lambda (e1 e2)
              (string<? (car e1) (car e2))))))

  (let* ((outputs    (map (lambda (name)
                            ;; Return outputs with an empty path.

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