summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-02-03 22:13:55 +0100
committerLudovic Courtès <ludo@gnu.org>2019-02-04 00:03:30 +0100
commit765a5bf1677ad6bc77ed65df4f63da9ef77bb55a (patch)
tree1c6c03e6a0a73cb3d21d9d0a03b790bd14630805 /guix
parenta87d66f371da2a84d7bba1cae58b71c9c9af73aa (diff)
self: Ensure the daemon refers to the right 'guix' command.
Previously it would refer to /var/guix/profiles/per-user/root/current-guix/bin/guix, which would fail when that profile does not exist. This is notably the case when using 'channel-instance->package' as done in commit 7e6d8d366a61f951936ed83371877ce006f679f6. * gnu/packages/package-management.scm (guix-daemon)[arguments]: In 'install phase, honor environment variable 'GUIX'. * guix/self.scm (whole-package)[wrap]: New procedure. Use it.
Diffstat (limited to 'guix')
-rw-r--r--guix/self.scm14
1 files changed, 12 insertions, 2 deletions
diff --git a/guix/self.scm b/guix/self.scm
index 68f5641fec..a45470a0a6 100644
--- a/guix/self.scm
+++ b/guix/self.scm
@@ -460,17 +460,27 @@ load path."
the modules (under share/guile/site and lib/guile), and DEPENDENCIES, a list
of packages depended on. COMMAND is the 'guix' program to use; INFO is the
Info manual."
+ (define (wrap daemon)
+ (program-file "guix-daemon"
+ #~(begin
+ (setenv "GUIX" #$command)
+ (apply execl #$(file-append daemon "/bin/guix-daemon")
+ "guix-daemon" (cdr (command-line))))))
+
(computed-file name
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
+ (define daemon
+ #$(and daemon (wrap daemon)))
+
(mkdir-p (string-append #$output "/bin"))
(symlink #$command
(string-append #$output "/bin/guix"))
- (when #$daemon
- (symlink (string-append #$daemon "/bin/guix-daemon")
+ (when daemon
+ (symlink daemon
(string-append #$output "/bin/guix-daemon")))
(let ((share (string-append #$output "/share"))