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

From: Vagrant Cascadian <[email-masked]>
Date: Thu, 03 Nov 2022 11:35:33 -0700

On 2022-11-03, zimoun wrote:
> 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.

Yes, this seems consistent with my understanding too.

I should also add that src/guix and src/guix-master are using the same
git repository, src/guix-master is just another worktree.

> 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, with the same inputs, they ought to produce the same outputs... :)

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

While I think somewhat of a digression, it explained the confusing
situation where "guix pull" appeared to behave differently (as I was
calling it with diffrent --url), as one of the ~/.cache/guix/checkouts/
was dirty and that mattered (as there were old removed files present in
the tree) ... which I suspect is the crux of the bug report, though I
don't know with absolutely certainty.

I'm guessing one could dirty the tree I'm guessing reverting:

  edac21bfc78ffea85f4dac7206e5e7cd621bba19 gnu: Remove wicd.

Something like this, maybe?

  cd ~/.cache/guix/checkouts/SOMECHECKOUT
  git revert edac21bfc78ffea85f4dac7206e5e7cd621bba19
  git reset origin/master
  cd ~
  guix pull ...

live well,
  vagrant