diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-09-23 22:24:07 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-09-23 23:34:16 +0200 |
commit | a387b0bebb151a766ca6a454a891f2370c96703c (patch) | |
tree | e182a2d5b825d095dc3c4b13f98ec7bcca0f7f13 | |
parent | c122a2e509df98c4391750a066fecba37465eab3 (diff) | |
download | guix-a387b0bebb151a766ca6a454a891f2370c96703c.tar guix-a387b0bebb151a766ca6a454a891f2370c96703c.tar.gz |
store-copy: Display a progress bar when copying store items.
* guix/build/store-copy.scm (populate-store): Add #:log-port parameter.
Use 'progress-reporter/bar' to report progress.
-rw-r--r-- | guix/build/store-copy.scm | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/guix/build/store-copy.scm b/guix/build/store-copy.scm index 2d9590d16f..64ade7885c 100644 --- a/guix/build/store-copy.scm +++ b/guix/build/store-copy.scm @@ -19,6 +19,7 @@ (define-module (guix build store-copy) #:use-module (guix build utils) #:use-module (guix sets) + #:use-module (guix progress) #:use-module (srfi srfi-1) #:use-module (srfi srfi-9) #:use-module (srfi srfi-26) @@ -167,7 +168,8 @@ REFERENCE-GRAPHS, a list of reference-graph files." (reduce + 0 (map file-size items))) -(define* (populate-store reference-graphs target) +(define* (populate-store reference-graphs target + #:key (log-port (current-error-port))) "Populate the store under directory TARGET with the items specified in REFERENCE-GRAPHS, a list of reference-graph files." (define store @@ -183,9 +185,20 @@ REFERENCE-GRAPHS, a list of reference-graph files." (mkdir-p store) (chmod store #o1775) - (for-each (lambda (thing) - (copy-recursively thing - (string-append target thing))) - (things-to-copy))) + + (let* ((things (things-to-copy)) + (len (length things)) + (progress (progress-reporter/bar len + (format #f "copying ~a store items" + len) + log-port))) + (call-with-progress-reporter progress + (lambda (report) + (for-each (lambda (thing) + (copy-recursively thing + (string-append target thing) + #:log (%make-void-port "w")) + (report)) + things))))) ;;; store-copy.scm ends here |