~ruther/guix-local

7fd60bfc0b088ee7d66e3b5676695a04d2ee01d9 — Ludovic Courtès 3 months ago a560be0
shell: Create cached profile directory once connected to the daemon.

Fixes a regression introduced in d12c4452a49b355369636de1dfc766b5bad6437b,
where ‘guix shell’, on a fresh installation, would attempt to create the
cached profile directory under /var/guix/profiles/per-user/$USER, which only
guix-daemon can do, on the user’s first connection.

* guix/scripts/shell.scm (options-with-caching): Remove ‘mkdir-p’ call for
ROOT’s parent directory.  Add ‘create-gc-root-directory?’ key to the result.
* guix/scripts/environment.scm (guix-environment*): Honor
‘create-gc-root-directory?’ key.

Fixes: guix/guix#126
Reported-by: Maxim Cournoyer <maxim@guixotic.coop>
Change-Id: I782461c80c254467108c6b8d676d269866795746
2 files changed, 10 insertions(+), 4 deletions(-)

M guix/scripts/environment.scm
M guix/scripts/shell.scm
M guix/scripts/environment.scm => guix/scripts/environment.scm +2 -0
@@ 1235,6 1235,8 @@ command-line option processing with 'parse-command-line'."
                                      (if prof-drv (list prof-drv) '())
                                      (if (derivation? bash) (list bash) '()))))
                (mwhen gc-root
                  (mwhen (assoc-ref opts 'create-gc-root-directory?)
                    (return (mkdir-p (dirname gc-root))))
                  (register-gc-root profile gc-root))

                (mwhen (assoc-ref opts 'check?)

M guix/scripts/shell.scm => guix/scripts/shell.scm +8 -4
@@ 261,10 261,14 @@ cache) or a 'gc-root' key (to add the profile to cache)."
                              opts)))             ;load right away
        (if (and root (not (assq-ref opts 'gc-root)))
            (begin
              (if stat
                  (delete-file root)
                  (mkdir-p (dirname root)))
              (alist-cons 'gc-root root opts))
              (when stat
                (delete-file root))
              ;; Note: Delay the creation of ROOT's parent directory: a
              ;; connection must first be made to the daemon so that it
              ;; creates /var/guix/profiles/per-user/$USER if needed.
              (alist-cons 'gc-root root
                          (alist-cons 'create-gc-root-directory? #t
                                      opts)))
            opts))))

(define (auto-detect-manifest opts)