summary refs log tree commit diff
path: root/guix/build/cargo-utils.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/build/cargo-utils.scm')
-rw-r--r--guix/build/cargo-utils.scm16
1 files changed, 15 insertions, 1 deletions
diff --git a/guix/build/cargo-utils.scm b/guix/build/cargo-utils.scm
index 79e5440378..5ac429a62a 100644
--- a/guix/build/cargo-utils.scm
+++ b/guix/build/cargo-utils.scm
@@ -2,6 +2,7 @@
 ;;; Copyright © 2016 David Craven <david@craven.ch>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
+;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,7 +23,8 @@
   #:use-module (guix build utils)
   #:use-module (ice-9 popen)
   #:use-module (ice-9 rdelim)
-  #:export (generate-checksums))
+  #:export (generate-checksums
+            generate-all-checksums))
 
 ;; Commentary:
 ;;
@@ -66,3 +68,15 @@ the same directory."
         (display "},\"package\":" port)
         (write (file-sha256 "/dev/null") port)
         (display "}" port)))))
+
+(define (generate-all-checksums dir-name)
+  (for-each
+    (lambda (filename)
+      (let* ((dir (dirname filename))
+             (checksum-file (string-append dir "/.cargo-checksum.json")))
+        (when (file-exists? checksum-file) (delete-file checksum-file))
+        (display (string-append
+                   "patch-cargo-checksums: generate-checksums for "
+                   dir "\n"))
+        (generate-checksums dir)))
+    (find-files dir-name "Cargo.toml$")))