guix package: Do the right thing for '-p ~/.guix-profile'.
Fixes <http://bugs.gnu.org/17939>. Reported by Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com>. * guix/scripts/package.scm (canonicalize-profile): New procedure. (%options): Use it for --profile. * tests/guix-package.sh: Add test.
This commit is contained in:
parent
e84d8b30d9
commit
88371f0d7d
|
@ -68,6 +68,17 @@
|
||||||
;; coexist with Nix profiles.
|
;; coexist with Nix profiles.
|
||||||
(string-append %profile-directory "/guix-profile"))
|
(string-append %profile-directory "/guix-profile"))
|
||||||
|
|
||||||
|
(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>
|
||||||
|
(if (and %user-profile-directory
|
||||||
|
(string=? (canonicalize-path (dirname profile))
|
||||||
|
(dirname %user-profile-directory))
|
||||||
|
(string=? (basename profile) (basename %user-profile-directory)))
|
||||||
|
%current-profile
|
||||||
|
profile))
|
||||||
|
|
||||||
(define (link-to-empty-profile generation)
|
(define (link-to-empty-profile generation)
|
||||||
"Link GENERATION, a string, to the empty profile."
|
"Link GENERATION, a string, to the empty profile."
|
||||||
(let* ((drv (profile-derivation (%store) (manifest '())))
|
(let* ((drv (profile-derivation (%store) (manifest '())))
|
||||||
|
@ -573,7 +584,7 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
|
||||||
#f)))
|
#f)))
|
||||||
(option '(#\p "profile") #t #f
|
(option '(#\p "profile") #t #f
|
||||||
(lambda (opt name arg result arg-handler)
|
(lambda (opt name arg result arg-handler)
|
||||||
(values (alist-cons 'profile arg
|
(values (alist-cons 'profile (canonicalize-profile arg)
|
||||||
(alist-delete 'profile result))
|
(alist-delete 'profile result))
|
||||||
#f)))
|
#f)))
|
||||||
(option '(#\n "dry-run") #f #f
|
(option '(#\n "dry-run") #f #f
|
||||||
|
|
|
@ -189,7 +189,7 @@ test "`readlink_base "$profile"`" = "$generation"
|
||||||
|
|
||||||
XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
|
XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
|
||||||
export XDG_CACHE_HOME
|
export XDG_CACHE_HOME
|
||||||
HOME="t-home-$$"
|
HOME="$PWD/t-home-$$"
|
||||||
export HOME
|
export HOME
|
||||||
|
|
||||||
mkdir -p "$HOME"
|
mkdir -p "$HOME"
|
||||||
|
@ -224,6 +224,15 @@ do
|
||||||
test "`readlink "$default_profile"`" = "$default_profile-0-link"
|
test "`readlink "$default_profile"`" = "$default_profile-0-link"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Check whether '-p ~/.guix-profile' makes any difference.
|
||||||
|
# See <http://bugs.gnu.org/17939>.
|
||||||
|
if test -e "$HOME/.guix-profile-0-link"; then false; fi
|
||||||
|
if test -e "$HOME/.guix-profile-1-link"; then false; fi
|
||||||
|
guix package --bootstrap -p "$HOME/.guix-profile" -i guile-bootstrap
|
||||||
|
if test -e "$HOME/.guix-profile-1-link"; then false; fi
|
||||||
|
guix package --bootstrap --roll-back -p "$HOME/.guix-profile"
|
||||||
|
if test -e "$HOME/.guix-profile-0-link"; then false; fi
|
||||||
|
|
||||||
# Extraneous argument.
|
# Extraneous argument.
|
||||||
if guix package install foo-bar;
|
if guix package install foo-bar;
|
||||||
then false; else true; fi
|
then false; else true; fi
|
||||||
|
|
Loading…
Reference in New Issue