summary refs log tree commit diff
diff options
context:
space:
mode:
-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