summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-05-09 22:58:23 +0200
committerLudovic Courtès <ludo@gnu.org>2013-05-10 00:36:00 +0200
commita81bc5312ba26893c07f9aa432e4cc14e4ceefab (patch)
treeebec80bc6b4f4c7a5f8c29f5fb58c3895ef28e4b
parent9c7dd33a48858b7cb3cc81a99ef84048d7584cdf (diff)
downloadguix-a81bc5312ba26893c07f9aa432e4cc14e4ceefab.tar.gz
package: Use ~/.guix-profile as the default for --search-paths.
* guix/scripts/package.scm (search-path-environment-variables): Prefer
  %USER-ENVIRONMENT-DIRECTORY when it points to PROFILE.
  (display-search-paths): Use 3 spaces for indentation.
-rw-r--r--guix/scripts/package.scm74
1 files changed, 41 insertions, 33 deletions
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index c691315253..4018a34ed7 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -336,38 +336,46 @@ but ~a is available upstream~%")
 PACKAGES in PROFILE.  Use GETENV to determine the current settings and report
 only settings not already effective."
 
-  ;; The search path info is not stored in the manifest.  Thus, we infer the
-  ;; search paths from same-named packages found in the distro.
-
-  (define package-in-manifest->package
-    (match-lambda
-     ((name version _ ...)
-      (match (append (find-packages-by-name name version)
-                     (find-packages-by-name name))
-        ((p _ ...) p)
-        (_ #f)))))
-
-  (define search-path-definition
-    (match-lambda
-     (($ <search-path-specification> variable directories separator)
-      (let ((values      (or (and=> (getenv variable)
-                                    (cut string-tokenize* <> separator))
-                             '()))
-            (directories (filter file-exists?
-                                 (map (cut string-append profile
-                                           "/" <>)
-                                      directories))))
-        (if (every (cut member <> values) directories)
-            #f
-            (format #f "export ~a=\"~a\""
-                    variable
-                    (string-join directories separator)))))))
-
-  (let* ((packages     (filter-map package-in-manifest->package packages))
-         (search-paths (delete-duplicates
-                        (append-map package-native-search-paths
-                                    packages))))
-    (filter-map search-path-definition search-paths)))
+  ;; Prefer ~/.guix-profile to the real profile directory name.
+  (let ((profile (if (and %user-environment-directory
+                          (false-if-exception
+                           (string=? (readlink %user-environment-directory)
+                                     profile)))
+                     %user-environment-directory
+                     profile)))
+
+    ;; The search path info is not stored in the manifest.  Thus, we infer the
+    ;; search paths from same-named packages found in the distro.
+
+    (define package-in-manifest->package
+      (match-lambda
+       ((name version _ ...)
+        (match (append (find-packages-by-name name version)
+                       (find-packages-by-name name))
+          ((p _ ...) p)
+          (_ #f)))))
+
+    (define search-path-definition
+      (match-lambda
+       (($ <search-path-specification> variable directories separator)
+        (let ((values      (or (and=> (getenv variable)
+                                      (cut string-tokenize* <> separator))
+                               '()))
+              (directories (filter file-exists?
+                                   (map (cut string-append profile
+                                             "/" <>)
+                                        directories))))
+          (if (every (cut member <> values) directories)
+              #f
+              (format #f "export ~a=\"~a\""
+                      variable
+                      (string-join directories separator)))))))
+
+    (let* ((packages     (filter-map package-in-manifest->package packages))
+           (search-paths (delete-duplicates
+                          (append-map package-native-search-paths
+                                      packages))))
+      (filter-map search-path-definition search-paths))))
 
 (define (display-search-paths packages profile)
   "Display the search path environment variables that may need to be set for
@@ -375,7 +383,7 @@ PACKAGES, in the context of PROFILE."
   (let ((settings (search-path-environment-variables packages profile)))
     (unless (null? settings)
       (format #t (_ "The following environment variable definitions may be needed:~%"))
-      (format #t "~{    ~a~%~}" settings))))
+      (format #t "~{   ~a~%~}" settings))))
 
 
 ;;;