Subject: [bug#50960] [PATCH 10/10] shell: Maintain a profile cache.

From: Maxime Devos <[email-masked]>
Date: Sat, 02 Oct 2021 15:43:27 +0200

Ludovic Courtès schreef op za 02-10-2021 om 12:22 [+0200]:
> With this change, running "guix shell" (no arguments) is equivalent to:
> 
>   guix environment -r ~/.cache/guix/profiles/some-root -l guix.scm
> 
> This is the cache miss.  On cache hit, it's equivalent to:
> 
>   guix environment -p ~/.cache/guix/profiles/some-root
> 

What if guix.scm is something like

;; Load custom package definitions
(include "a-package.scm")
(include "b-package.scm")
(include "c-package.scm")
(list a-package b-package c-package bash ...)

and a-package.scm, b-package.scm or c-package.scm is modified?
Then the cached profile should be rebuild, no?

I use something like that for my operating system definition
(though with -L and use-modules).  It would be nice if this worked
for "guix shell" as well.

So I think the cache should also check if these dependencies have been modified.
To keep track of the dependencies, something like the ‘compile-all,compile:
Keep track of dependencies of compiled modules.’ patch from
<https://issues.guix.gnu.org/50384> could be used, though the 'include', 'load',
'include-from-path' and maybe 'use-modules' (if something like "guix shell -Lextra-modules-directory ..."
is done) macros would need to be replaced.

Greetings,
Maxime.