Subject: ‘guix lint -c archival python-scikit-learn’ crashes

From: Ludovic Courtès <[email-masked]>
Date: Mon, 12 Feb 2024 11:11:51 +0100

Hi!

Starting from a couple of weeks ago, probably around the time SWH
deployed an updated version of their infrastructure, we get crashes like
this:

--8<---------------cut here---------------start------------->8---
$ guix describe
Generation 290  Feb 11 2024 23:01:35    (current)
  guix c4372f7
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: c4372f7ebfac17236299346fe60c6ca125336b1f
$ guix lint -c archival python-scikit-learn
Backtrace:[email-masked] [archival]...
          12 (primitive-load "/home/ludo/.config/guix/current/bin/gu…")
In guix/ui.scm:
   2324:7 11 (run-guix . _)
  2287:10 10 (run-guix-command _ . _)
In ice-9/boot-9.scm:
  1752:10  9 (with-exception-handler _ _ #:unwind? _ # _)
In srfi/srfi-1.scm:
    634:9  8 (for-each #<procedure 7f45354e9400 at guix/scripts/lin…> …)
In guix/scripts/lint.scm:
     65:4  7 (run-checkers _ _ #:store _)
In srfi/srfi-1.scm:
    634:9  6 (for-each #<procedure 7f4535405d50 at guix/scripts/lin…> …)
In guix/scripts/lint.scm:
    74:21  5 (_ _)
In guix/lint.scm:
   1662:4  4 (check-archival _)
    877:2  3 (call-with-networking-fail-safe _ _ _)
In ice-9/boot-9.scm:
  1752:10  2 (with-exception-handler _ _ #:unwind? _ # _)
  1685:16  1 (raise-exception _ #:continuable? _)
  1683:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1683:16: In procedure raise-exception:
Throw to key `match-error' with args `("match" "no matching pattern" directory)'.
--8<---------------cut here---------------end--------------->8---

This can be reproduced by merely evaluating:

  (lookup-origin-revision "https://github.com/scikit-learn/scikit-learn" "1.3.2")

The crux of the problem is that ‘snapshot-branches’ used to return
either a “revision” or a “release”, but now it can also return a
“directory”:

--8<---------------cut here---------------start------------->8---
$ wget -qO- https://archive.softwareheritage.org/api/1/snapshot/c405490b80fb35cc58b34260d9ec6add8248857f |jq
{
  "id": "c405490b80fb35cc58b34260d9ec6add8248857f",
  "branches": {
    "1.3.2": {
      "target": "e4a4be18fae8d9c6528abff3bc9088feb19a76c7",
      "target_type": "directory",
      "target_url": "https://archive.softwareheritage.org/api/1/directory/e4a4be18fae8d9c6528abff3bc9088feb19a76c7/"
    },
    "HEAD": {
      "target": "1.3.2",
      "target_type": "alias",
      "target_url": "https://archive.softwareheritage.org/api/1/directory/e4a4be18fae8d9c6528abff3bc9088feb19a76c7/"
    }
  },
  "next_branch": null
}
--8<---------------cut here---------------end--------------->8---

I’ll check with comrades at SWH whether this is intended.

(Note that this problem may vanish once
<https://issues.guix.gnu.org/68741> has been merged.)

Ludo’.