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.
This commit is contained in:
parent
c122a2e509
commit
a387b0bebb
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue