From ee2cfdfe86b0ba7de0312592cbfb96ea175e8863 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 13 Nov 2018 22:26:07 +0100 Subject: download: Add Software Heritage as a content-addressed mirror. * guix/download.scm (%content-addressed-mirrors): Add Software Heritage. --- guix/download.scm | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/guix/download.scm b/guix/download.scm index 988117885c..b74fd31c1f 100644 --- a/guix/download.scm +++ b/guix/download.scm @@ -373,18 +373,28 @@ (define %content-addressed-mirrors ;; procedure that takes a file name, an algorithm (symbol) and a hash ;; (bytevector), and returns a URL or #f. ;; Note: Avoid 'https' to mitigate . - ;; TODO: Add more. - '(list (lambda (file algo hash) - ;; Files served by 'guix publish' are accessible under a single - ;; hash algorithm. - (string-append "http://mirror.hydra.gnu.org/file/" - file "/" (symbol->string algo) "/" - (bytevector->nix-base32-string hash))) - (lambda (file algo hash) - ;; 'tarballs.nixos.org' supports several algorithms. - (string-append "http://tarballs.nixos.org/" - (symbol->string algo) "/" - (bytevector->nix-base32-string hash))))) + '(begin + (use-modules (guix base32) (guix base16)) + + (list (lambda (file algo hash) + ;; Files served by 'guix publish' are accessible under a single + ;; hash algorithm. + (string-append "http://mirror.hydra.gnu.org/file/" + file "/" (symbol->string algo) "/" + (bytevector->nix-base32-string hash))) + (lambda (file algo hash) + ;; 'tarballs.nixos.org' supports several algorithms. + (string-append "http://tarballs.nixos.org/" + (symbol->string algo) "/" + (bytevector->nix-base32-string hash))) + (lambda (file algo hash) + ;; Software Heritage usually archives VCS history rather than + ;; tarballs, but tarballs are sometimes available (and can be + ;; explicitly stored there.) For example, see + ;; . + (string-append "http://archive.softwareheritage.org/api/1/content/" + (symbol->string algo) ":" + (bytevector->base16-string hash) "/raw/"))))) (define %content-addressed-mirror-file ;; Content-addressed mirrors stored in a file. -- cgit v1.2.3