summaryrefslogtreecommitdiff
path: root/guix/scripts
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-03-26 16:22:41 +0100
committerLudovic Courtès <ludo@gnu.org>2014-03-26 16:27:46 +0100
commit6c41cce0bee19b3a18edc82b17d5a8a110971ac6 (patch)
treec2613de4bde1406749d29bda429fffcd1ddbe91d /guix/scripts
parentc67ccedd9e6a75b6dd1e36b45f62cc8bbdcf93fb (diff)
offload: Wait for the processes involved in 'guix archive --missing'.
* guix/scripts/offload.scm (send-files): Keep the second return value of 'filtered-port'. Call 'waitpid' on it.
Diffstat (limited to 'guix/scripts')
-rw-r--r--guix/scripts/offload.scm22
1 files changed, 13 insertions, 9 deletions
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index 755453704e..6f04cf3b8a 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -26,6 +26,7 @@
#:use-module ((guix build utils) #:select (which mkdir-p))
#:use-module (guix ui)
#:use-module (srfi srfi-1)
+ #:use-module (srfi srfi-11)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
@@ -356,15 +357,18 @@ with exit code ~a~%"
success, #f otherwise."
(define (missing-files files)
;; Return the subset of FILES not already on MACHINE.
- (let* ((files (format #f "~{~a~%~}" files))
- (missing (filtered-port
- (list (which %lshg-command)
- "-l" (build-machine-user machine)
- "-p" (number->string (build-machine-port machine))
- "-i" (build-machine-private-key machine)
- (build-machine-name machine)
- "guix" "archive" "--missing")
- (open-input-string files))))
+ (let*-values (((files)
+ (format #f "~{~a~%~}" files))
+ ((missing pids)
+ (filtered-port
+ (list (which %lshg-command)
+ "-l" (build-machine-user machine)
+ "-p" (number->string (build-machine-port machine))
+ "-i" (build-machine-private-key machine)
+ (build-machine-name machine)
+ "guix" "archive" "--missing")
+ (open-input-string files))))
+ (for-each waitpid pids)
(string-tokenize (get-string-all missing))))
(with-store store