diff --git a/guix/import/go.scm b/guix/import/go.scm index 32cba25b33..fba320ca06 100644 --- a/guix/import/go.scm +++ b/guix/import/go.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2021-2022 Ludovic Courtès ;;; Copyright © 2021 Xinglu Chen ;;; Copyright © 2021 Sarah Morgensen -;;; Copyright © 2021 Simon Tournier +;;; Copyright © 2021, 2024 Simon Tournier ;;; Copyright © 2023 Efraim Flashner ;;; Copyright © 2024 Christina O'Donnell ;;; @@ -38,7 +38,8 @@ (define-module (guix import go) #:use-module (guix http-client) #:use-module (guix memoization) #:autoload (htmlprag) (html->sxml) ;from Guile-Lib - #:autoload (guix base32) (bytevector->nix-base32-string) + #:autoload (guix base32) (bytevector->nix-base32-string + nix-base32-string->bytevector) #:autoload (guix build utils) (mkdir-p) #:autoload (guix ui) (warning) #:autoload (gcrypt hash) (hash-algorithm sha256) @@ -563,10 +564,19 @@ (define cache (chmod cache #o700) (let-values (((checkout commit _) (parameterize ((%repository-cache-directory cache)) - (update-cached-checkout url - #:ref - `(tag-or-commit . ,reference))))) - (file-hash* checkout #:algorithm algorithm #:recursive? #true))) + (catch 'git-error + (lambda () + (update-cached-checkout url + #:ref + `(tag-or-commit . ,reference))) + (lambda (key err) + (warning (G_ "failed to check out ~s from Git repository at '~a': ~a~%") + reference url (git-error-message err)) + (values #f #f #f)))))) + (if (and checkout commit) + (file-hash* checkout #:algorithm algorithm #:recursive? #true) + (nix-base32-string->bytevector + "0000000000000000000000000000000000000000000000000000")))) (define (vcs->origin vcs-type vcs-repo-url version subdir) "Generate the `origin' block of a package depending on what type of source