Subject: bug#47949: Failed to produce output path for guix-package-cache

From: zimoun <[email-masked]>
Date: Thu, 03 Nov 2022 09:48:21 +0100

Hi Vagrant,

On Wed, 02 Nov 2022 at 11:40, Vagrant Cascadian <[email-masked]> wrote:

>> I do not know if “git clean -dfx” would help because here the error is
>> probably between the repositories src/guix and src/guix-master and Guix
>> manages them under 2 unrelated directory checkouts.
>
> I had the impression that it uses git to copy the branches (rather than
> cp -r or something), otherwise the --branch=master argument would be
> meaningless (e.g. --branch=master does not mean whatever happens to be
> in the working directory), so I would assume the state of the local
> working directory wouldn't matter, only what's in the specified branch
> as git sees it.

>From my understanding, this

  guix pull --url=/home/vagrant/src/guix --branch=master

creates one directory under ~/.cache/guix/checkouts/ and then this,

  guix pull --url=/home/vagrant/src/guix-master --branch=master

creates another directory under ~/.cache/guix/checkouts/ and these both
directory does not have the same name because their url is different.

IIUC, you were at generation 139 (using a clone of
/home/vagrant/src/guix living under say
~/.cache/guix/checkouts/maboosgggz6g6va54rikfxrsdsxhe363jri7g5dhcqb57odwklaa)

--8<---------------cut here---------------start------------->8---
# First version where I noticed failures:
Generation 139       Oct 22 2022 13:07:08
  guix bb2701b
    repository URL: /home/vagrant/src/guix
    branch: master
    commit: bb2701b9111a3d82a82ceaaf2b22b51ecd8ac21f

# Failed to pull from 139, successfully pulled from 138:
Generation 140       Oct 24 2022 13:19:21
  guix 8663be6
    repository URL: /home/vagrant/src/guix-master
    branch: master
    commit: 8663be6da7f13a8eeea71dc1f493f7adc5b7672a
--8<---------------cut here---------------end--------------->8---

and then you had difficulties, but note that “guix pull” generating 140
created another clone from /home/vagrant/src/guix-master living under
~/.cache/guix/checkouts/ie7tn3i564wpt5i2dqqm7ixzqfxwpp2ns6rqkyqn4z55d4kqujuq.

Generation 140 did not updated the checkout used by generation 139.

Somehow, the state of
~/.cache/guix/checkouts/maboosgggz6g6va54rikfxrsdsxhe363jri7g5dhcqb57odwklaa
and the state of
~/.cache/guix/checkouts/ie7tn3i564wpt5i2dqqm7ixzqfxwpp2ns6rqkyqn4z55d4kqujuq
require some compatibility, no?

Well, I have lost the topic of the initial bug report. :-)

BTW, I agree that “guix pull” and “guix time-machine” are requiring too
much resource (especially bandwidth) when we could imagine more resource
shares between various accounts and root.  Well, I do no know if
guile-git provides the git-worktree feature.  Or we could also imagine a
more automated workflow using only one local clone as you are doing.

Cheers,
simon