Message ID | 87tu74z479.fsf@trop.in |
---|---|
State | Accepted |
Headers | show |
Series | [bug#56777] Use absolute path for home activation script. | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git-branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
Hi Andrew, Andrew Tropin <andrew@trop.in> skribis: > * gnu/home/services.scm (compute-activation-script): Use absolute path for > home activation script. > > --- > gnu/home/services.scm | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gnu/home/services.scm b/gnu/home/services.scm > index b05ec53e2a..6d5e4308a0 100644 > --- a/gnu/home/services.scm > +++ b/gnu/home/services.scm > @@ -418,7 +418,7 @@ (define (compute-activation-script init-gexp gexps) > (new-home-env (getenv "GUIX_NEW_HOME")) > (new-home (or new-home-env > ;; Path of the activation file if called interactively > - (dirname (car (command-line))))) > + (canonicalize-path (dirname (car (command-line)))))) Just wondering: what’s the rationale? This is harmless-looking and perhaps it’s all fine, but IME calling ‘canonicalize-path’ might sometimes paper over problems related to file name handling. Thanks, Ludo’.
On 2022-08-29 23:24, Ludovic Courtès wrote: > Hi Andrew, > > Andrew Tropin <andrew@trop.in> skribis: > >> * gnu/home/services.scm (compute-activation-script): Use absolute path for >> home activation script. >> >> --- >> gnu/home/services.scm | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/gnu/home/services.scm b/gnu/home/services.scm >> index b05ec53e2a..6d5e4308a0 100644 >> --- a/gnu/home/services.scm >> +++ b/gnu/home/services.scm >> @@ -418,7 +418,7 @@ (define (compute-activation-script init-gexp gexps) >> (new-home-env (getenv "GUIX_NEW_HOME")) >> (new-home (or new-home-env >> ;; Path of the activation file if called interactively >> - (dirname (car (command-line))))) >> + (canonicalize-path (dirname (car (command-line)))))) > > Just wondering: what’s the rationale? It's been a while since I posted it, but IIRC, in case the activation script called manually from other directory without this change the relative new-home can be set, which can fail later if some of activation code changes the current working directory, but reference home environment by relative path. Probably I faced this one, when was working on prototype for https://issues.guix.gnu.org/56669 Another hypothetical case, which can fail: ln -s /gnu/store/...-home ~/tmp/he ~/tmp/he/activate rm ~/tmp/he # Dangling symlink ~/.guix-home -> ~/tmp/he Last one can be solved by resolving full path of new-home in symlink-manager, but always setting new-home to absolute path to home item in the store seems as a way to avoid both potential problems mentioned above. This change is pushed as ffc391500ac7eae1ef100d8d36f6c01f4f606170 > > This is harmless-looking and perhaps it’s all fine, but IME calling > ‘canonicalize-path’ might sometimes paper over problems related to file > name handling. Will keep it in mind.
diff --git a/gnu/home/services.scm b/gnu/home/services.scm index b05ec53e2a..6d5e4308a0 100644 --- a/gnu/home/services.scm +++ b/gnu/home/services.scm @@ -418,7 +418,7 @@ (define (compute-activation-script init-gexp gexps) (new-home-env (getenv "GUIX_NEW_HOME")) (new-home (or new-home-env ;; Path of the activation file if called interactively - (dirname (car (command-line))))) + (canonicalize-path (dirname (car (command-line)))))) (old-home-env (getenv "GUIX_OLD_HOME")) (old-home (or old-home-env (if (file-exists? (he-init-file he-path))