Subject: [bug#45919] [PATCH 0/8] Exporting a manifest and channels from a profile

From: Ludovic Courtès <[email-masked]>
Date: Thu, 28 Jan 2021 16:54:26 +0100

Hi,

zimoun <[email-masked]> skribis:

> On Wed, 27 Jan 2021 at 14:14, Ludovic Courtès <[email-masked]> wrote:
>> Ludovic Courtès <[email-masked]> skribis:
>>
>>> Here’s a simple but oft-requested feature (I remember discussing
>>> with Pierre and Simon a year ago at the Guix Days about ways to
>>> implement it—time flies!): these patches provide ‘guix package
>>> --export-manifest’ and ‘--export-channels’.  These options spit
>>> a manifest and a channel spec, respectively, with the goal of
>>> helping users who wish to migrate to the declarative model.
>>
>> I’m rather happy with this patch set but since this is something we’ve
>> discussed several times in the past, I think it’d be great if those
>> interested could chime in and comment:
>>
>>   https://issues.guix.gnu.org/45919
>>
>> I’ll leave a few more days and then… push!
>
> You are looking at me? :-)

Yes, but not just.  :-)

> Well, the feature is nice!  At first, I thought that it could be a bit
> smarter than using only one commit.  But as you said, the aim is for
> transitioning.  Maybe a future improvement should to list somewhere in
> the comments which commit provides which set of packages.  It could
> help… or not. :-)
>
> Using Docker, it works.  Let describe how in case people are interested.

[...]

> Awesome!

Woow, thanks for explaining the experiment, it’s a nice one!  Would be
worth turning into a blog post, maybe for hpc.guix.info?

> The unexpected is this channels and manifests files do not reproduce the
> same Docker pack tarball:
>
> $ guix describe
> Generation 99   Jan 05 2021 16:56:39    (current)
>   guix-past 829923f
>     repository URL: https://gitlab.inria.fr/guix-hpc/guix-past
>     branch: master
>     commit: 829923f01f894f1e687735627025ada26230832f
>   guix-bimsb a8b539d
>     repository URL: https://github.com/BIMSBbioinfo/guix-bimsb
>     branch: master
>     commit: a8b539d61a359060c35f3cb34c7edd1d9d14241d
>   bimsb-nonfree 4084e63
>     repository URL: https://github.com/BIMSBbioinfo/guix-bimsb-nonfree.git
>     branch: master
>     commit: 4084e63c9c0d662780870aded9f5a6ca1b063780
>   guix-science cf87b05
>     repository URL: https://github.com/guix-science/guix-science.git
>     branch: master
>     commit: cf87b0501c4a38b96edf41025a27bf1cb91f521a
>   guix 957f0c4
>     repository URL: https://git.savannah.gnu.org/git/guix.git
>     branch: master
>     commit: 957f0c40327ce00f53db22737e3775ce616ac258
>
> $ guix time-machine -C /tmp/img/channels.scm -- pack -f docker --save-provenance -m /tmp/img/manifest.scm
> Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
> /gnu/store/xzk604g8gysv4azn7sf9nylr6iah97gl-docker-pack.tar.gz
>
> To compare with
> /gnu/store/wxymmnxdvdvf08ifsfy39xjaxilhrigk-docker-pack.tar.gz.
>
> On a third machine, I get:
> /gnu/store/wxymmnxdvdvf08ifsfy39xjaxilhrigk-docker-pack.tar.gz
>
> Well, that’s another story and I have not inspected yet the
> derivations and what could be wrong on the machine B.

You’d have to check the differences.  It may be that provenance data
differs, for example because the second attempt includes data about
channels that are actually unused.  (That’s the whole problem of
provenance data: it’s not a one-to-one mapping and it’s not a bijection
either.)

Thanks for trying it out!

Ludo’.