~ruther/guix-local

441cfb420ab7979443cc2752b714738151c9c4e6 — Ludovic Courtès 11 years ago b07901c
search-paths: 'evaluate-search-paths' now returns spec/value pairs.

* guix/search-paths.scm (evaluate-search-paths): Return
  specification/value pairs instead of variable/value pairs.
* guix/scripts/package.scm (search-path-environment-variables): Adjust
  accordingly.  Pass #:separator to 'environment-variable-definition'.
2 files changed, 11 insertions(+), 6 deletions(-)

M guix/scripts/package.scm
M guix/search-paths.scm
M guix/scripts/package.scm => guix/scripts/package.scm +6 -2
@@ 383,8 383,12 @@ current settings and report only settings not already effective."
  (let ((search-paths (delete-duplicates
                       (append-map manifest-entry-search-paths entries))))
    (filter-map (match-lambda
                  ((variable . value)
                   (environment-variable-definition variable value)))
                  ((spec . value)
                   (let ((variable (search-path-specification-variable spec))
                         (sep      (search-path-specification-separator spec)))
                     ;; TODO: Offer the choice between exact/prefix/suffix.
                     (environment-variable-definition variable value
                                                      #:separator sep))))
                (evaluate-search-paths search-paths profile getenv))))

(define (display-search-paths entries profile)

M guix/search-paths.scm => guix/search-paths.scm +5 -4
@@ 117,12 117,13 @@ like `string-tokenize', but SEPARATOR is a string."
(define* (evaluate-search-paths search-paths directory
                                #:optional (getenv (const #f)))
  "Evaluate SEARCH-PATHS, a list of search-path specifications, for DIRECTORY,
and return a list of variable/value pairs.  Use GETENV to determine the
and return a list of specification/value pairs.  Use GETENV to determine the
current settings and report only settings not already effective."
  (define search-path-definition
    (match-lambda
      (($ <search-path-specification> variable files separator
                                      type pattern)
      ((and spec
            ($ <search-path-specification> variable files separator
                                           type pattern))
       (let* ((values (or (and=> (getenv variable)
                                 (cut string-tokenize* <> separator))
                          '()))


@@ 141,7 142,7 @@ current settings and report only settings not already effective."
                                            #:pattern pattern))))
         (if (every (cut member <> values) path)
             #f                         ;VARIABLE is already set appropriately
             (cons variable (string-join path separator)))))))
             (cons spec (string-join path separator)))))))

  (filter-map search-path-definition search-paths))