mbox

[bug#33432,0/2] Download Git checkouts from Software Heritage as a last resort

Message ID 20181119161325.7801-1-ludo@gnu.org
Headers show

Message

Ludovic Courtès Nov. 19, 2018, 4:13 p.m. UTC
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