unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] profiles: Let canonicalize-profile return an absolute path.
@ 2018-07-03 17:59 Roel Janssen
  2018-07-11 11:06 ` Ludovic Courtès
  0 siblings, 1 reply; 4+ messages in thread
From: Roel Janssen @ 2018-07-03 17:59 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1018 bytes --]

Dear Guix,

I'd like to change the way the symlinks to custom profiles are created.
Here's what currently happens:

$ guixr package -i hello -p guix-profiles/test
$ ls -l guix-profiles
lrwxrwxrwx. 1 user group 25 Jul  3 19:53 test -> guix-profiles/test-1-link
lrwxrwxrwx. 1 user group 51 Jul  3 19:53 test-1-link -> /gnu/store/...6qbaps-profile

Now, that symlink is broken.
Instead, I'd like to have it always use absolute paths:

$ guixr package -i hello -p guix-profiles/test
$ ls -l guix-profiles
lrwxrwxrwx 1 roel users 36  3 jul 19:56 test -> /home/user/guix-profiles/test-1-link
lrwxrwxrwx 1 roel users 51  3 jul 19:56 test-1-link -> /gnu/store/...6qbaps-profile

This symlink isn't broken.

In this patch I implemented this behavior by modifying
canonicalize-profile to return an absolute path when it's not
“~/.guix-profile”.

I hope we can merge this, or a similar solution so that creating
profiles in custom locations is a little more robust.

Kind regards,
Roel Janssen


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-profiles-Let-canonicalize-path-return-an-absolute-pa.patch --]
[-- Type: text/x-patch, Size: 1653 bytes --]

From 95178018beb8c5458c154771ac9d1ff4866cc507 Mon Sep 17 00:00:00 2001
From: Roel Janssen <roel@gnu.org>
Date: Tue, 3 Jul 2018 19:49:04 +0200
Subject: [PATCH] profiles: Let canonicalize-profile return an absolute path.

* guix/profiles.scm (canonicalize-profile): Return an absolute path.
---
 guix/profiles.scm | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/guix/profiles.scm b/guix/profiles.scm
index ebd7da2a2..4a6a0a80e 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -1547,8 +1547,8 @@ because the NUMBER is zero.)"
 
 (define (canonicalize-profile profile)
   "If PROFILE is %USER-PROFILE-DIRECTORY, return %CURRENT-PROFILE.  Otherwise
-return PROFILE unchanged.  The goal is to treat '-p ~/.guix-profile' as if
-'-p' was omitted."                           ; see <http://bugs.gnu.org/17939>
+return PROFILE as an absolute path.  The goal is to treat '-p ~/.guix-profile'
+as if '-p' was omitted."                       ; see <http://bugs.gnu.org/17939>
 
   ;; Trim trailing slashes so that the basename comparison below works as
   ;; intended.
@@ -1558,7 +1558,10 @@ return PROFILE unchanged.  The goal is to treat '-p ~/.guix-profile' as if
                        (dirname %user-profile-directory))
              (string=? (basename profile) (basename %user-profile-directory)))
         %current-profile
-        profile)))
+        (string-append
+         (canonicalize-path (dirname profile))
+         file-name-separator-string
+         (basename profile)))))
 
 (define (user-friendly-profile profile)
   "Return either ~/.guix-profile if that's what PROFILE refers to, directly or
-- 
2.17.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-07-13 15:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-03 17:59 [PATCH] profiles: Let canonicalize-profile return an absolute path Roel Janssen
2018-07-11 11:06 ` Ludovic Courtès
2018-07-12 20:53   ` Roel Janssen
2018-07-13 15:33     ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).