Subject: [PATCH 0/2] Download Git checkouts from Software Heritage as a last resort
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Cc: Ludovic Courtès <[email-masked]>
Date: Mon, 19 Nov 2018 17:13:25 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello Guix!

This patch series adds the Software Heritage (SWH) client library initially
discussed at:

  https://lists.gnu.org/archive/html/guix-devel/2018-11/msg00285.html

Furthermore, it uses it in (guix git-download) to download code from SWH
when it is unavailable upstream and on our servers.  This bit relies on
the “vault” API of SWH, which allows you to fetch a checkout as a tarball.
Not all revisions are readily available as tarballs, understandably, so
the vault API has a mechanism that allows you to request the “cooking”
of a specific checkout.  Cooking is asynchronous and can take some time.

  https://docs.softwareheritage.org/devel/swh-vault/api.html

When downloading over SWH, the ‘swh-download’ procedure first resolves
the tag (if it’s a tag), then tries to download the corresponding tarball
from the vault.  If the vault doesn’t have it yet, it sends a cooking
request and waits for it to complete by periodically checking the cooking
status.

In the future, we should provide a “lister” and “loader” so that SWH can
regularly obtain a list of Guix packages with their source URL and
commit/tag:

  https://forge.softwareheritage.org/T1352

The SWH team is also considering pre-cooking all VCS tags such that
every time we refer to a tag, we can be sure its contents are already
available in the vault:

  https://forge.softwareheritage.org/T1350

Feedback welcome!

Ludo’.

Ludovic Courtès (2):
  Add (guix swh).
  git-download: Download from Software Heritage as a last resort.

 Makefile.am           |   1 +
 guix/git-download.scm |  64 +++--
 guix/swh.scm          | 551 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 596 insertions(+), 20 deletions(-)
 create mode 100644 guix/swh.scm

-- 
2.19.1