From: zimoun <zimon.toutoune@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: Guix Devel <guix-devel@gnu.org>
Subject: Re: wishlist: “repack” generations history of profile
Date: Mon, 23 May 2022 18:58:01 +0200 [thread overview]
Message-ID: <86r14kdw4m.fsf@gmail.com> (raw)
In-Reply-To: <87tu9g2r3k.fsf@gnu.org>
Hi Ludo,
On Mon, 23 May 2022 at 17:42, Ludovic Courtès <ludo@gnu.org> wrote:
> Exactly! ‘guix pull’ profiles are entirely reproducible: we can rebuild
> them from the output of ‘guix describe’.
>
> So ‘guix gc’ (or something) could automatically remove old generation
> symlinks and instead store the output of ‘guix describe’. That way,
> ‘--list-generations’ or ‘--switch-generations’ could transparently
> display the info or rebuild the generation.
I have in mind to remove all except the manifest file.
--8<---------------cut here---------------start------------->8---
$ tree -L 1 $(readlink -f ~/.config/guix/current)
/gnu/store/jfnnd975724kdr8q61z4fwabrm4qvzff-profile/
├── bin -> /gnu/store/fnfzidl79gjdki2d8v2ghn6a42n75rqc-guix-58f372776/bin
├── etc
├── lib
├── manifest
└── share
4 directories, 1 file
--8<---------------cut here---------------end--------------->8---
After ’guix gc’ (or something), it would read:
--8<---------------cut here---------------start------------->8---
/gnu/store/jfnnd975724kdr8q61z4fwabrm4qvzff-profile/
└── manifest
0 directories, 1 file
--8<---------------cut here---------------end--------------->8---
And similarly for regular profile, it would become after ’guix gc’ (or
something)
--8<---------------cut here---------------start------------->8---
$ tree -L 1 $(readlink -f ~/.guix-profile)
/gnu/store/3kglj010azkdydsgn6inmxqa3d24yz8a-profile
└── manifest
0 directories, 1 file
--8<---------------cut here---------------end--------------->8---
instead of the 7 directories I get today.
Well, I am not enough familiar with various internals as the SQL
database and the daemon to have an opinion about the technical issues.
Or maybe, it is easier to remove as today but save the relevant
information elsewhere. WDYT?
> System and Home generations are usually, but not necessarily,
> reproducible: usually the channel info + config file are enough to
> rebuild them, but in theory the config file might refer to resources not
> known to Guix (e.g., SSH key files, modules, whatever). That said, we
> could arrange so that ‘guix gc -d’ keeps the metadata around.
>
> For regular profiles, we might do the same, but no guarantee we can
> rebuild them, unless all the packages come from the same channels (which
> is the case if the profile was built with ‘guix package -m’).
Yes. The same limitation as --export-manifest and --export-channels.
Somehow, if the full history is kept, we should be able to reproduce.
However, it could be slow or inefficient.
Today, I manually store the output of “guix describe” before I
manipulate a profile. This channels.scm output is tracked by Git as
part of my project. Then I run “git log” to find the previous state of
interest and go back using,
guix time-machine -C channels.scm -- shell -m manifest.scm
which is fine and works well. Probably the good practise. :-)
Instead of this external tracking, I would like to allow this workflow:
guix package -p project --list-generations
guix package -p project --switch-generation=12
whatever the sysadmin collect about the old generations.
Cheers,
simon
next prev parent reply other threads:[~2022-05-23 17:20 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-20 13:47 wishlist: “repack” generations history of profile zimoun
2022-05-21 11:30 ` Liliana Marie Prikler
2022-05-23 16:20 ` zimoun
2022-05-23 15:42 ` Ludovic Courtès
2022-05-23 16:58 ` zimoun [this message]
2022-05-30 15:40 ` Ludovic Courtès
2022-05-30 17:18 ` zimoun
2022-06-04 7:39 ` Giovanni Biscuolo
2022-06-05 9:45 ` zimoun
2022-06-05 11:16 ` Giovanni Biscuolo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86r14kdw4m.fsf@gmail.com \
--to=zimon.toutoune@gmail.com \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).