guix gc should keep around recent intermediate build ingredients by default

  • Done
  • quality assurance status badge
Details
3 participants
  • Guillaume Le Vaillant
  • Ludovic Courtès
  • Robert Vollmert
Owner
unassigned
Submitted by
Robert Vollmert
Severity
normal
R
R
Robert Vollmert wrote on 3 Dec 2019 11:48
(address . bug-guix@gnu.org)
484751C5-E7B0-40AA-B0BD-E81D31C0535C@vllmrt.net
[ This is a user/developer friendliness feature request. I’m not arguing
that `guix gc` should do anything differently on a technical level, I’m
just trying to argue that the default experience should be different. ]

Current situation:
I use a forked guix repository as my default channel, which
includes a number of slow-to-build Haskell packages. Now and
then, I run out of disk space. So I call `guix gc`, which invariably
removes the store paths involved in building my current system generation,
so the next call to `guix system reconfigure` takes hours.

Desired situation:
After calling `guix gc`, the paths that were involved in my last system
build are still around, so reconfiguring doesn’t result in everything
being rebuilt.

(If there’s some way I can achieve that now, perhaps by explicitly managing
some roots, or passing specific arguments to `guix gc`, I’d be happy to
know! I’d still argue that we should try to make this the default behaviour,
though.)
G
G
Guillaume Le Vaillant wrote on 3 Dec 2019 13:59
(address . bug-guix@gnu.org)(address . 38469@debbugs.gnu.org)
87d0d5a7kl.fsf@yamatai
Robert Vollmert skribis:

Toggle quote (21 lines)
> [ This is a user/developer friendliness feature request. I’m not arguing
> that `guix gc` should do anything differently on a technical level, I’m
> just trying to argue that the default experience should be different. ]
>
> Current situation:
> I use a forked guix repository as my default channel, which
> includes a number of slow-to-build Haskell packages. Now and
> then, I run out of disk space. So I call `guix gc`, which invariably
> removes the store paths involved in building my current system generation,
> so the next call to `guix system reconfigure` takes hours.
>
> Desired situation:
> After calling `guix gc`, the paths that were involved in my last system
> build are still around, so reconfiguring doesn’t result in everything
> being rebuilt.
>
> (If there’s some way I can achieve that now, perhaps by explicitly managing
> some roots, or passing specific arguments to `guix gc`, I’d be happy to
> know! I’d still argue that we should try to make this the default behaviour,
> though.)

Have you tried passing the options '--gc-keep-derivations=yes' and
'--gc-keep-outputs=yes' to guix-daemon?

In the operating-system definition, it would be something like:
Toggle snippet (10 lines)
(services
(cons* (service ...)
[...]
(modify-services %desktop-services
(guix-service-type config =>
(guix-configuration
(inherit config)
(extra-options '("--gc-keep-derivations=yes"
"--gc-keep-outputs=yes")))))))
R
R
Robert Vollmert wrote on 3 Dec 2019 15:29
Re: bug#38469: guix gc should keep around recent intermediate build
(address . 38469@debbugs.gnu.org)
A0E5ED6B-5E4F-4AF3-A745-7FA2E7336AA5@vllmrt.net
Toggle quote (3 lines)
> Have you tried passing the options '--gc-keep-derivations=yes’ and
> '--gc-keep-outputs=yes' to guix-daemon?

I had not. I added that right now, and first tests seem to indicate
that this helps. Thanks!

Would it be a bad idea to make this the default?

Alternatively, how about some kind of developer config fragment that
would modify a system configuration with settings that are a good
idea for Guix development, if not general use? That might also include
things like setting the $%!^@!*^% guile backtrace columns variable
for guix-daemon.
L
L
Ludovic Courtès wrote on 10 Dec 2019 17:39
(name . Robert Vollmert)(address . rob@vllmrt.net)(address . 38469-done@debbugs.gnu.org)
87pngwnnis.fsf@gnu.org
Hi,

Robert Vollmert <rob@vllmrt.net> skribis:

Toggle quote (6 lines)
>> Have you tried passing the options '--gc-keep-derivations=yes’ and
>> '--gc-keep-outputs=yes' to guix-daemon?
>
> I had not. I added that right now, and first tests seem to indicate
> that this helps. Thanks!

Yes, I think these options are exactly what you want.

Toggle quote (2 lines)
> Would it be a bad idea to make this the default?

I think the current defaults are more appropriate; after all, they
really allow “garbage” to be collected.

Toggle quote (6 lines)
> Alternatively, how about some kind of developer config fragment that
> would modify a system configuration with settings that are a good
> idea for Guix development, if not general use? That might also include
> things like setting the $%!^@!*^% guile backtrace columns variable
> for guix-daemon.

I think what you’d want is to set COLUMNS within derivation, not “for
the daemon”.

So I don’t know, I’m sympathetic to the idea of developer settings in
Guix System, but I’m not sure what it could bring beyond these two
options.

In the meantime, I propose to close this bug and to discuss this
potential new feature separately.

Thanks,
Ludo’.
Closed
?