On 10/7/26 18:49, Ludovic Courtès wrote:
Hi!
Hugo Buddelmeijer via <[email protected]> skribis:
This is really limiting my Guix contributions, because if I just 'guix
gc', I have to spend another week getting back to having the
python-team branch rebuild.
If I’m not mistaken, ‘python-team’ is being built by ci.guix.gnu.org,
right? (If not, it should. :-))
I don't yet really understand what is build where and when, but
python-team is high up in the merge queue, so at the moment I think it
is being built.
But this is a question in general. I also don't want to gc all the
compilers all the time.
And I now use one machine to build everything also for other systems, so
I don't want those packages to be garbage collected either, even though
they will never be used on that machine.
Basically, I want to always keep everything in the store that
corresponds to the tip of master or the tip of python-team; I never want
to collect those, because chances are high I'm going to need those
packages later.
What I do is that I usually run ‘guix gc -F40G’ or similar to only GC as
much as strictly needed.
How does gc prioritize what to collect? I could not find that
information, so I didn't dare to risk it. (Because the point is that I
want to prevent it collecting certain things that are not live.)
Another tip: from the branch in question, you can do ‘guix build -r xyz
python-pytorch --no-grafts’ (replace ‘python-pytorch’ with any package
high in the stack) so that this package and its dependencies aren’t
GC’d.
That only works if `guix build` gets to the end. The problem is that
packages in the middle of the graph fail, so no root is created.
Finding and fixing those packages is the entire point, and I want my
progress to persist.
Also, Python also used build inputs like rust, clang, llvm, zig, etc.,
and those dependencies are not captured by that command if I understand
correctly.
So I'm now running 'guix build -r $PKG $PKG --no-grafts' for all 2700
packages I have already built, but it takes about 2 seconds per package,
so it will take hours. So this is not something I can do before every
`guix gc` either.