guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/05: guix package: Move profile cleaning out of 'search-path-environme


From: Ludovic Courtès
Subject: 03/05: guix package: Move profile cleaning out of 'search-path-environment-variables'.
Date: Sun, 03 May 2015 22:24:29 +0000

civodul pushed a commit to branch master
in repository guix.

commit 3badccaa7368fd2acc640b48c1dd3c1c2ae32500
Author: Ludovic Courtès <address@hidden>
Date:   Sun May 3 22:33:27 2015 +0200

    guix package: Move profile cleaning out of 
'search-path-environment-variables'.
    
    * guix/scripts/package.scm (user-friendly-profile): New procedure.
      (search-path-environment-variables): Remove 'profile' local variable.
      (display-search-paths): Explicitly call 'user-friendly-profile' for
      the argument to 'search-path-environment-variables'.
      (guix-package)[process-query]: Likewise.
---
 guix/scripts/package.scm |   80 +++++++++++++++++++++++----------------------
 1 files changed, 41 insertions(+), 39 deletions(-)

diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index fca70f5..d9bad7b 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -89,6 +89,15 @@ return PROFILE unchanged.  The goal is to treat '-p 
~/.guix-profile' as if
       %current-profile
       profile))
 
+(define (user-friendly-profile profile)
+  "Return either ~/.guix-profile if that's what PROFILE refers to, directly or
+indirectly, or PROFILE."
+  (if (and %user-profile-directory
+           (false-if-exception
+            (string=? (readlink %user-profile-directory) profile)))
+      %user-profile-directory
+      profile))
+
 (define (link-to-empty-profile store generation)
   "Link GENERATION, a string, to the empty profile."
   (let* ((drv  (run-with-store store
@@ -375,49 +384,41 @@ an output path different than CURRENT-PATH."
   "Return environment variable definitions that may be needed for the use of
 ENTRIES, a list of manifest entries, in PROFILE.  Use GETENV to determine the
 current settings and report only settings not already effective."
-
-  ;; Prefer ~/.guix-profile to the real profile directory name.
-  (let ((profile (if (and %user-profile-directory
-                          (false-if-exception
-                           (string=? (readlink %user-profile-directory)
-                                     profile)))
-                     %user-profile-directory
-                     profile)))
-
-    (define search-path-definition
-      (match-lambda
-       (($ <search-path-specification> variable files separator
-                                       type pattern)
-        (let* ((values (or (and=> (getenv variable)
-                                  (cut string-tokenize* <> separator))
-                           '()))
-               ;; Add a trailing slash to force symlinks to be treated as
-               ;; directories when 'find-files' traverses them.
-               (files  (if pattern
-                           (map (cut string-append <> "/") files)
-                           files))
-
-               ;; XXX: Silence 'find-files' when it stumbles upon non-existent
-               ;; directories (see
-               ;; 
<http://lists.gnu.org/archive/html/guix-devel/2015-01/msg00269.html>.)
-               (path   (with-null-error-port
-                        (search-path-as-list files (list profile)
-                                             #:type type
-                                             #:pattern pattern))))
-          (if (every (cut member <> values) path)
-              #f
-              (format #f "export ~a=\"~a\""
-                      variable
-                      (string-join path separator)))))))
-
-    (let ((search-paths (delete-duplicates
-                         (append-map manifest-entry-search-paths entries))))
-      (filter-map search-path-definition search-paths))))
+  (define search-path-definition
+    (match-lambda
+      (($ <search-path-specification> variable files separator
+                                      type pattern)
+       (let* ((values (or (and=> (getenv variable)
+                                 (cut string-tokenize* <> separator))
+                          '()))
+              ;; Add a trailing slash to force symlinks to be treated as
+              ;; directories when 'find-files' traverses them.
+              (files  (if pattern
+                          (map (cut string-append <> "/") files)
+                          files))
+
+              ;; XXX: Silence 'find-files' when it stumbles upon non-existent
+              ;; directories (see
+              ;; 
<http://lists.gnu.org/archive/html/guix-devel/2015-01/msg00269.html>.)
+              (path   (with-null-error-port
+                       (search-path-as-list files (list profile)
+                                            #:type type
+                                            #:pattern pattern))))
+         (if (every (cut member <> values) path)
+             #f
+             (format #f "export ~a=\"~a\""
+                     variable
+                     (string-join path separator)))))))
+
+  (let ((search-paths (delete-duplicates
+                       (append-map manifest-entry-search-paths entries))))
+    (filter-map search-path-definition search-paths)))
 
 (define (display-search-paths entries profile)
   "Display the search path environment variables that may need to be set for
 ENTRIES, a list of manifest entries, in the context of PROFILE."
-  (let ((settings (search-path-environment-variables entries profile)))
+  (let* ((profile  (user-friendly-profile profile))
+         (settings (search-path-environment-variables entries profile)))
     (unless (null? settings)
       (format #t (_ "The following environment variable definitions may be 
needed:~%"))
       (format #t "~{   ~a~%~}" settings))))
@@ -999,6 +1000,7 @@ more information.~%"))
         (('search-paths)
          (let* ((manifest (profile-manifest profile))
                 (entries  (manifest-entries manifest))
+                (profile  (user-friendly-profile profile))
                 (settings (search-path-environment-variables entries profile
                                                              (const #f))))
            (format #t "~{~a~%~}" settings)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]