all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Vagrant Cascadian <vagrant@debian.org>
To: zimoun <zimon.toutoune@gmail.com>,
	"Ludovic Courtès" <ludo@gnu.org>, "Roel Janssen" <roel@gnu.org>
Cc: 47949@debbugs.gnu.org
Subject: bug#47949: Failed to produce output path for guix-package-cache
Date: Wed, 02 Nov 2022 11:40:20 -0700	[thread overview]
Message-ID: <87sfj1ci97.fsf@contorta> (raw)
In-Reply-To: <87iljxhb5a.fsf@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5197 bytes --]

On 2022-11-02, zimoun wrote:
> On ven., 28 oct. 2022 at 13:23, Vagrant Cascadian <vagrant@debian.org> wrote:
>
>>> Oh yeah, that reminds me to add to the confusion, "guix time-machine
>>> --commit=SOMECOMMIT" worked fine, even where "SOMECOMMIT" didn't
>>> successfully work with guix pull.
>>>
>>> Maybe that's a clue pointing to the crufty .cache directories?
>>
>> Well, after removing ~/.cache/guix/checkouts/ I haven't had the problem
>> again, with several successful pulls.
>
> Well, “guix time-machine --commit=<some-commit>” uses,
>
> --8<---------------cut here---------------start------------->8---
> (define %default-channel-url
>   ;; URL of the default 'guix' channel.
>   "https://git.savannah.gnu.org/git/guix.git")
>
> (define %default-guix-channel
>   (channel
>    (name 'guix)
>    (branch "master")
>    (url %default-channel-url)
>    (introduction %guix-channel-introduction)))
>
> (define %default-channels
>   ;; Default list of channels.
>   (list %default-guix-channel))
> --8<---------------cut here---------------end--------------->8---
>
> which is another directory checkout under ~/.cache/guix/checkouts. :-)

Ok, that's promising. :)


>> This suggests to me that guix should make sure to not use a dirty
>> checkout to prevent this in the future ... either exporting the guix
>> tree it's working with to a temporary location, or something like
>> running "git clean -dfx" before using the checkout...
>
> From my understanding, you have 3 similar checkouts of Guix; the default one:
>
> --8<---------------cut here---------------start------------->8---
> $ cat  ~/.cache/guix/checkouts/pjmkglp4t7znuugeurpurzikxq3tnlaywmisyr27shj7apsnalwq/.git/config
> [core]
> 	bare = false
> 	repositoryformatversion = 0
> 	filemode = true
> 	logallrefupdates = true
> [remote "origin"]
> 	url = https://git.savannah.gnu.org/git/guix.git
> 	fetch = +refs/heads/*:refs/remotes/origin/*
> [branch "master"]
> 	remote = origin
> 	merge = refs/heads/master
> --8<---------------cut here---------------end--------------->8---
>
> and then 2 others, probably located at these hash names:
>
> --8<---------------cut here---------------start------------->8---
> $ guix repl
> GNU Guile 3.0.8
> Copyright (C) 1995-2021 Free Software Foundation, Inc.
>
> Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'.
> This program is free software, and you are welcome to redistribute it
> under certain conditions; type `,show c' for details.
>
> Enter `,help' for help.
> scheme@(guix-user)> ,use(guix git)
> scheme@(guix-user)> ,pp (map url-cache-directory (list
> "https://git.savannah.gnu.org/git/guix.git"
> "file:///home/vagrant/src/guix"
> "file:///home/vagrant/src/guix-master"))
> $1 = (
>  "/home/simon/.cache/guix/checkouts/pjmkglp4t7znuugeurpurzikxq3tnlaywmisyr27shj7apsnalwq"
>  "/home/simon/.cache/guix/checkouts/cbek2jy4zeoea2wj4xppwabceeayfzzuap6iw6uk7kylh4hdolfa"
>  "/home/simon/.cache/guix/checkouts/duxgcjge5pc2tzexf4qwjra3uzu3t4htsxojtxralegek3bqkisa"
> )
> --8<---------------cut here---------------end--------------->8---

Hashes are coming out different, maybe without the file:// prefix?


> then you pulled,
>
>   guix pull --url=/home/vagrant/src/guix --branch=master
>
> and sometimes:
>
>   guix pull --url=/home/vagrant/src/guix-master --branch=master
>
> How clean are these 2 local repositories?

src/guix tends to have cruft laying around, but src/guix-master I tend
to keep clean, barring accidents. I *usually* just pull from
src/guix-master, which is essentially a local mirror of upstream
guix.git. Though I suspect the state of the local branch does not or at
least should not matter, since it's pulling from --branch=master.


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

So My suspicion here is somehow guix is working off of dirty checkouts
in ~/.cache/guix/checkouts ... which, maybe would not be so hard to
reproduce ... just drop some files from an ancient checkout or
something. Not sure what the conditions are necessary to make it
actually leave behind cruft in a way that triggers the issue. It
definitely seemed related to an old copy of wicd.scm that has since been
removed.


FWIW, I use my git checkout to avoid re-downloading the git history
multiple times... since I already typically have a full copy of the git
history.


> When you cleaned ~/.cache/guix/checkouts and pulled again, you created a
> new directory checkout.  Based on which origin?  Default?  Or src/guix?
> Or src/guix-master?

I think so far only src/guix-master.

live well,
  vagrant

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 227 bytes --]

  reply	other threads:[~2022-11-02 18:41 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-22 11:38 bug#47949: Failed to produce output path for guix-package-cache Roel Janssen
2021-04-28 21:38 ` Ludovic Courtès
2021-04-29  7:01   ` Roel Janssen
2021-04-29  7:56     ` Ludovic Courtès
2022-10-25 19:50       ` Vagrant Cascadian
2022-10-26  8:10         ` zimoun
2022-10-26 16:57           ` Vagrant Cascadian
2022-10-26 19:58             ` zimoun
2022-10-26 23:25               ` Vagrant Cascadian
2022-10-28 20:23                 ` Vagrant Cascadian
2022-10-29 14:42                   ` Maxime Devos
2022-11-02 11:02                   ` zimoun
2022-11-02 18:40                     ` Vagrant Cascadian [this message]
2022-11-03  8:48                       ` zimoun
2022-11-03 18:35                         ` Vagrant Cascadian
2023-04-28 16:47                           ` Maxim Cournoyer
2023-04-28 17:41                             ` Maxim Cournoyer
2023-05-03 16:44                             ` Simon Tournier
2023-05-04 12:53                               ` Maxim Cournoyer
2023-05-04 18:05                                 ` Simon Tournier
2023-05-05 14:23                                   ` Maxim Cournoyer
2023-05-03 19:25                             ` Ludovic Courtès
2023-05-04 12:55                               ` Maxim Cournoyer
2023-05-04 12:59                               ` Maxim Cournoyer

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87sfj1ci97.fsf@contorta \
    --to=vagrant@debian.org \
    --cc=47949@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    --cc=roel@gnu.org \
    --cc=zimon.toutoune@gmail.com \
    /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 external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.