channel-with-substitutes-available without network

  • Open
  • quality assurance status badge
Details
One participant
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal
S
S
Simon Tournier wrote on 24 Apr 16:43 +0200
(address . bug-guix@gnu.org)
87jzkmbz3x.fsf@gmail.com
Hi,

Out of any network, I get this error:

Toggle snippet (6 lines)
$ guix time-machine --commit=1971d11d -- describe
guix time-machine: error: failed to load '/home/simon/.config//guix/channels.scm':
guix/build/download.scm:399:8: In procedure open-socket-for-uri:
In procedure getaddrinfo: Name or service not known

And that’s annoying. It comes from:

$ cat /home/simon/.config//guix/channels.scm
(use-modules (guix ci))

(list (channel-with-substitutes-available
%default-guix-channel
"https://ci.guix.gnu.org"))

as documented by section “Channels with Substitutes” [1].

Specifically, the error is raised by the procedure ’load*’ called by
’channel-list’ inside ’load-channels’. Other said, ’load*’ runs the
procedure ’channel-with-substitutes-available’ which asks network via
the procedure ’find-latest-commit-with-substitutes’.

I think this is incorrect; the correct behaviour seems trying to do as
most as possible. With the attached patch, I get:

Toggle snippet (8 lines)
$ ./pre-inst-env guix time-machine --commit=1971d11d -- describe
guix time-machine: warning: could not find available substitutes at https://ci.guix.gnu.org
guix 1971d11
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 1971d11db9ed9683d5036cd4c62deb564842e1f6

Obviously, the option ’-q’ allows to bypass the problem. :-) However,
it’s annoying because the default file channels.scm can be complex and
it still should work without any tweak, IMHO.

Well, the proposed fix is here to catch the error; maybe it could be
finer than #t.

WDYT?

Cheers,
simon


From 5955a4c3f913d1aa77ec3a27d6430f3dcf22aab6 Mon Sep 17 00:00:00 2001
Message-ID: <5955a4c3f913d1aa77ec3a27d6430f3dcf22aab6.1713969693.git.zimon.toutoune@gmail.com>
From: Simon Tournier <zimon.toutoune@gmail.com>
Date: Wed, 24 Apr 2024 16:39:10 +0200
Subject: [PATCH] ci: Catch error for channel with substitutes.

* guix/ci.scm (channel-with-substitutes-available): Catch all error when
running 'find-latest-commit-with-substitutes'. Move the warning when failing.

Change-Id: I352e07f14417f77c7ebf0f40a01c6a2e58b15d78
---
guix/ci.scm | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)

Toggle diff (26 lines)
diff --git a/guix/ci.scm b/guix/ci.scm
index 5d16ee69d0..b2077448b0 100644
--- a/guix/ci.scm
+++ b/guix/ci.scm
@@ -336,10 +336,13 @@ (define (channel-with-substitutes-available chan url)
If no commit with available substitutes were found, the commit field is set to
false and a warning message is printed."
- (let ((commit (find-latest-commit-with-substitutes url)))
- (unless commit
- (warning (G_ "could not find available substitutes at ~a~%")
- url))
+ (let ((commit (catch #t
+ (lambda ()
+ (find-latest-commit-with-substitutes url))
+ (lambda _
+ (warning (G_ "could not find available substitutes at ~a~%")
+ url)
+ #false))))
(channel
(inherit chan)
(commit commit))))

base-commit: 10d0e2d3110e4be2bc6cfecb9a3abb83d8e1ddd6
--
2.41.0
?