unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
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


  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).