From: Simon Tournier <zimon.toutoune@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 65352@debbugs.gnu.org
Subject: [bug#65352] Fix time-machine and network
Date: Mon, 04 Sep 2023 19:37:08 +0200 [thread overview]
Message-ID: <87wmx5on5n.fsf@gmail.com> (raw)
In-Reply-To: <87o7iiqo6d.fsf_-_@gnu.org>
Hi,
On Mon, 04 Sep 2023 at 11:32, Ludovic Courtès <ludo@gnu.org> wrote:
> In fact, now I recall why that procedure was written that way: it’s
> meant to say whether a given commit (and only a commit) is already in
> the checkout, meaning we don’t need to pull. By definition, it’s an
> answer that can only be given for a specific commit; we cannot tell
> whether “master” or “HEAD” is available, that wouldn’t make sense.
Yeah, that’s the job of ’reference-available?’ to say if a given
reference is or not in the repository, IMHO.
The patch I proposed earlier fixes the issue you reported, I guess.
When debugging, I have noticed that this update-cached-checkout is
called many times. For instance,
79ec651a286c71a3d4c72be33a1f80e76a560031 introduced a call.
Investigating, I notice that this new procedure is incorrect:
--8<---------------cut here---------------start------------->8---
(define (validate-guix-channel channels)
"Finds the Guix channel among CHANNELS, and validates that REF as
captured from the closure, a git reference specification such as a commit hash
or tag associated to CHANNEL, is valid and new enough to satisfy the 'guix
time-machine' requirements. A `formatted-message' condition is raised
otherwise."
(let* ((guix-channel (find guix-channel? channels))
(checkout commit relation (update-cached-checkout
(channel-url guix-channel)
#:ref (or ref '())
#:starting-commit
%oldest-possible-commit)))
--8<---------------cut here---------------end--------------->8---
Here, the symbol ’ref’ is bound by:
(ref (assoc-ref opts 'ref))
which comes from:
(option '("commit") #t #f
(lambda (opt name arg result)
(alist-cons 'ref `(tag-or-commit . ,arg) result)))
(option '("branch") #t #f
(lambda (opt name arg result)
(alist-cons 'ref `(branch . ,arg) result)))
Therefore, it means that when none of the options --commit= or --branch=
is provided by the user at the CLI, this ’ref’ is bounded to #false.
Therefore, it can lead to unexpected behaviour when providing a
channels.scm file.
Well, instead, the correct something like:
(let* ((guix-channel (find guix-channel? channels))
(reference (or ref
(match (channel-commit guix-channel)
(#f `(branch . ,(channel-branch guix-channel)))
(commit `(tag-or-commit . ,commit)))))
(checkout commit relation (update-cached-checkout
(channel-url guix-channel)
#:ref reference
#:starting-commit
%oldest-possible-commit)))
which works using my tests (with or without network).
The remaining issue is the order when displaying messages. This
’validate-guix-channel’ happens before “Updating channel 'guix'”
therefore the progress bar appears before etc.
I have not investigated how to improve cached-channel-instance. Let me
know if the current tiny fix tweaking resolve-interface is enough for
now waiting some rework of validate-guix-channel. :-)
Cheers,
simon
next prev parent reply other threads:[~2023-09-04 17:38 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1689823648.git.maxim.cournoyer@gmail.com>
2023-07-20 16:34 ` [bug#64746] [PATCH 2/2] scripts: time-machine: Error when attempting to visit too old commits Maxim Cournoyer
2023-07-22 2:00 ` Maxim Cournoyer
2023-08-08 15:58 ` Ludovic Courtès
2023-08-10 14:47 ` Maxim Cournoyer
2023-08-10 16:56 ` Ludovic Courtès
2023-08-11 7:19 ` Josselin Poiret via Guix-patches via
2023-08-12 20:32 ` Ludovic Courtès
2023-08-15 18:57 ` Maxim Cournoyer
2023-08-15 16:14 ` Ludovic Courtès
2023-08-16 14:46 ` Simon Tournier
2023-08-16 18:41 ` Maxim Cournoyer
2023-08-17 14:06 ` [bug#65352] Fix time-machine and network Simon Tournier
2023-08-17 14:09 ` [bug#65352] [PATCH 1/2] guix: git: Fix the procedure reference-available? Simon Tournier
2023-08-17 14:09 ` [bug#65352] [PATCH 2/2] scripts: pull: Remove unused reference pair Simon Tournier
2023-08-17 15:41 ` [bug#65352] Fix time-machine and network Maxim Cournoyer
2023-08-17 16:08 ` Simon Tournier
2023-08-23 2:56 ` Maxim Cournoyer
2023-08-23 8:32 ` Simon Tournier
2023-08-23 20:25 ` Maxim Cournoyer
2023-08-21 14:00 ` Ludovic Courtès
2023-08-21 15:58 ` Maxim Cournoyer
2023-08-22 16:27 ` Ludovic Courtès
2023-08-23 2:14 ` Maxim Cournoyer
2023-08-21 13:57 ` Ludovic Courtès
2023-09-04 8:49 ` Ludovic Courtès
2023-09-04 11:34 ` Simon Tournier
2023-09-05 20:33 ` Maxim Cournoyer
2023-09-05 20:48 ` Simon Tournier
2023-09-04 9:32 ` Ludovic Courtès
2023-09-04 17:37 ` Simon Tournier [this message]
2023-09-06 0:22 ` Maxim Cournoyer
2023-09-05 20:39 ` Maxim Cournoyer
2023-09-05 20:56 ` Simon Tournier
2023-09-06 2:39 ` Maxim Cournoyer
2023-09-05 13:24 ` bug#65352: " Maxim Cournoyer
2023-09-05 13:43 ` [bug#65352] " Simon Tournier
2023-09-06 0:04 ` bug#65352: " Maxim Cournoyer
2023-09-06 0:58 ` [bug#65352] " Simon Tournier
2023-09-06 2:00 ` Maxim Cournoyer
2023-09-07 11:15 ` Simon Tournier
2023-09-06 10:32 ` [bug#65352] time-machine, unavailable network or Savannah down Simon Tournier
2023-09-06 14:17 ` [bug#65352] [PATCH v2] DRAFT git: Avoid touching the network unless needed in 'reference-available?' Simon Tournier
2023-09-13 20:16 ` [bug#65352] Fix time-machine and network Ludovic Courtès
2023-09-13 0:32 ` Simon Tournier
2023-09-14 8:50 ` Ludovic Courtès
2023-09-14 9:04 ` Ludovic Courtès
2023-09-14 9:42 ` Simon Tournier
2023-09-22 13:54 ` bug#65352: " Simon Tournier
2023-09-25 9:32 ` [bug#65352] " Ludovic Courtès
2023-09-25 9:57 ` Simon Tournier
2023-09-25 11:21 ` Simon Tournier
2023-09-25 15:01 ` Ludovic Courtès
2023-09-25 15:58 ` Simon Tournier
2023-09-06 17:41 ` [bug#65352] time-machine, unavailable network or Savannah down Maxim Cournoyer
2023-09-06 23:21 ` Simon Tournier
2023-08-15 19:44 ` [bug#64746] [PATCH v2 1/3] git: Clarify commit relation reference in doc Maxim Cournoyer
2023-08-15 19:44 ` [bug#64746] [PATCH v2 2/3] pull: Tag commit argument with 'tag-or-commit Maxim Cournoyer
2023-08-16 15:02 ` Simon Tournier
2023-08-16 18:47 ` Maxim Cournoyer
2023-08-17 14:45 ` Simon Tournier
2023-08-17 18:16 ` Maxim Cournoyer
2023-08-17 18:47 ` Simon Tournier
2023-08-23 2:54 ` [bug#64746] [PATCH 2/2] scripts: time-machine: Error when attempting to visit too old commits Maxim Cournoyer
2023-08-23 8:27 ` Simon Tournier
2023-08-15 19:44 ` [bug#64746] [PATCH v2 3/3] " Maxim Cournoyer
2023-08-16 15:39 ` Simon Tournier
2023-08-17 1:41 ` bug#64746: " 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
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=87wmx5on5n.fsf@gmail.com \
--to=zimon.toutoune@gmail.com \
--cc=65352@debbugs.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).