Subject: bug#26833: `guix substitute --substitute' dies on unreachable substitute server

From: zimoun <[email-masked]>
Date: Fri, 20 Aug 2021 13:04:06 +0200

Hi Maxim,

Your recent investigation bug#30290 [0] rings this bell:

   <http://issues.guix.gnu.org/issue/26833>

If it appears the same issue, maybe we could merge them.  WDYT?

On Mon, 08 May 2017 at 08:40, Maxim Cournoyer <[email-masked]> wrote:
> Problem: When using multiple substitute servers, if one of the server is
> temporarily unreachable, `guix substitute --substitute' will throw an
> exception. Example (while bayfront server was down, attempting to build
> a package only available locally (emacs-dvc)):
>
> guix package -i emacs-dvc
> ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm
> ;;;       newer than compiled /home/maxim/.config/guix/latest/gnu/packages/emacs.go
> ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm
> ;;;       newer than compiled /gnu/store/nqy9m6hhnkkfwr5wyq5bac96v9s9hc9i-guix-0.12.0-9.25a4/lib/guile/2.0/site-ccache/gnu/packages/emacs.go
> ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm
> ;;;       newer than compiled /run/current-system/profile/lib/guile/2.0/site-ccache/gnu/packages/emacs.go
> ;;; note: source file /home/maxim/.config/guix/latest/gnu/packages/emacs.scm
> ;;;       newer than compiled /home/maxim/.cache/guile/ccache/2.0-LE-8-2.0/home/maxim/src/guix/gnu/packages/emacs.scm.go
> The following package will be installed:
>    emacs-dvc    trunk-1.591     /gnu/store/sraxmg5qz9i4338s4ks7asgy4v68dgqs-emacs-dvc-trunk-1.591
>>
> substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
> substitute: updating list of substitutes from 'https://mirror.hydra.gnu.org'... 100.0%
> Downloading https://bayfront.guixsd.org/nar/gzip/6h7ym07plwxfn4zq53ld8zfpbx3a09al-at-spi2-core-2.22.0 (1.1MiB installed)...
> guix substitute: error: connect: No route to host
> killing process 13896
> killing process 13896: No such process
>
> Expected: Since multiple substitute servers are being used, rather than
> bombing out on the first unavailable one, `guix substitute --substitute'
> (or any other command implicated with substitute servers) should simply
> warn about it before attempting the next one.
>
> Bonus point: `guix substitute --query' should also print a warning
> message that substitute server X couldn't be reached (it doesn't print
> anything about that right now, just skips to the next one).

Cheers,
simon

0: <http://issues.guix.gnu.org/issue/30290#10>