diff --git a/etc/sources.scm b/etc/sources.scm index 71d157d..515cf00 100644 --- a/etc/sources.scm +++ b/etc/sources.scm @@ -1,5 +1,5 @@ ;;; Preservation of Guix -;;; Copyright © 2022 Timothy Sample +;;; Copyright © 2022, 2024 Timothy Sample ;;; ;;; This file is part of Preservation of Guix. ;;; @@ -61,6 +61,7 @@ FROM fods f WHERE f.algorithm = 'sha256' AND (fr.reference LIKE '\"%' OR fr.reference LIKE '(\"%') + AND fr.reference LIKE '%bioconductor.org%' AND NOT fr.is_error AND f.is_in_swh IS NOT NULL AND NOT f.is_in_swh") @@ -85,22 +86,25 @@ Subresource Integrity metadata value." (define b64 (base64-encode bv)) (string-append "sha256-" b64)) -(define (web-reference-urls reference) +(define (web-reference-filename reference) (define uris (match (call-with-input-string reference read) ((urls ...) (map string->uri urls)) (url (list (string->uri url))))) - (append-map (lambda (uri) - (map uri->string - (maybe-expand-mirrors uri %mirrors))) - uris)) + (or (any (lambda (uri) + (and (string-suffix? "bioconductor.org" (uri-host uri)) + (basename (uri-path uri)))) + uris) + (error "Not a 'bioconductor.org' refernce" reference))) (define (record->url-source rec) (match-let ((#(digest reference) rec)) - (let ((urls (web-reference-urls reference)) - (integrity (nix-base32-sha256->subresource-integrity digest))) + (let* ((filename (web-reference-filename reference)) + (url (string-append "https://bordeaux.guix.gnu.org/file/" + filename "/sha256/" digest)) + (integrity (nix-base32-sha256->subresource-integrity digest))) `(("type" . "url") - ("urls" . ,(list->vector urls)) + ("urls" . ,(vector url)) ("integrity" . ,integrity))))) (define (lookup-missing-sources db)