Subject: bug#65740: No fallback to SWH for .guix-channel dependencies

From: Simon Tournier <[email-masked]>
Date: Mon, 04 Sep 2023 19:09:39 +0200

Hi,

Consider this channels.scm file:

--8<---------------cut here---------------start------------->8---
$ cat /tmp/channels.scm
(list (channel
        (name 'guix)
        (url "https://git.savannah.gnu.org/git/guix.git")
        (branch "master")
        (commit
          "710d9050524213a83e4ce9efe9765d7fbc233839"))
      (channel
        (name 'bimsb)
        (url "https://github.com/BIMSBbioinfo/guix-bimsb.git")
        (branch "master")
        (commit
          "240a599f77dab7dcb8d2ed091b90056e58a46c51")))
--8<---------------cut here---------------end--------------->8---

Then, assume Github is down forever.  Guix will lookup to Software
Heritage (SWH) for the channel bimsb.  So far, so good.  However, then
it fails:

--8<---------------cut here---------------start------------->8---
$ guix time-machine -C /tmp/channels.scm -- describe
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'bimsb' from Git repository at 'https://github.com/BIMSBbioinfo/guix-bimsb.git'...
/tmp/channels.scm:95:6: warning: channel 'bimsb' lacks 'introduction' field but '.guix-authorizations' found
Updating channel 'guix-past' from Git repository at 'https://gitlab.inria.fr/guix-hpc/guix-past'...
guix time-machine: error: Git error: failed to resolve address for gitlab.inria.fr: Name or service not known
--8<---------------cut here---------------end--------------->8---

The main reason is because the channel bimsb contains the file
.guix-channel which reads,

--8<---------------cut here---------------start------------->8---
(channel
 (version 0)
 (dependencies
  (channel
   (name guix-past)
   (url "https://gitlab.inria.fr/guix-hpc/guix-past"))
  (channel
   (name guix-science)
   (url "https://github.com/guix-science/guix-science.git"))))
--8<---------------cut here---------------end--------------->8---

And Guix is not able to fallback to SWH for these channels.

Corollary, even if it was able, what is the correct revision of
the guix-past or guix-science channels?

This report is about two bugs:

 1. transparent fallback to SWH for .guix-channel dependencies

 2. pin all channels when running “guix describe”, even the ones from
   .guix-channel dependencies.

This #2 is annoying because it makes the workflow:

    guix time-machine -C channels.scm -- shell -m manifest.scm

unpractical when user relies on channels with dependencies.

Cheers,
simon