ssh: 'retrieve-files' detects remote export failures.

* guix/ssh.scm (retrieve-files): Call 'lookahead-u8' and raise a
'&message' condition when it returns EOF.
This commit is contained in:
Ludovic Courtès 2016-12-31 18:34:17 +01:00
parent 23973e4fbf
commit 13164a2102
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -25,7 +25,10 @@ (define-module (guix ssh)
#:use-module (ssh dist)
#:use-module (ssh dist node)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (ice-9 match)
#:use-module (ice-9 binary-ports)
#:export (connect-to-remote-daemon
send-files
retrieve-files
@ -205,6 +208,16 @@ (define* (retrieve-files local files remote
(format #t (N_ "retrieving ~a store item from '~a'...~%"
"retrieving ~a store items from '~a'...~%" count)
count (remote-store-host remote))
(when (eof-object? (lookahead-u8 port))
;; The failure could be because one of the requested store items is not
;; valid on REMOTE, or because Guile or Guix is improperly installed.
;; TODO: Improve error reporting.
(raise (condition
(&message
(message
(format #f
(_ "failed to retrieve store items from '~a'")
(remote-store-host remote)))))))
(let ((result (import-paths local port)))
(close-port port)