From 13164a210224025384061a5d4c522fa1983c10b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Sat, 31 Dec 2016 18:34:17 +0100 Subject: ssh: 'retrieve-files' detects remote export failures. * guix/ssh.scm (retrieve-files): Call 'lookahead-u8' and raise a '&message' condition when it returns EOF. --- guix/ssh.scm | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'guix/ssh.scm') diff --git a/guix/ssh.scm b/guix/ssh.scm index 226c4fd97d..3548243839 100644 --- a/guix/ssh.scm +++ b/guix/ssh.scm @@ -25,7 +25,10 @@ #: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 @@ LOCAL. When RECURSIVE? is true, retrieve the closure of FILES." (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) -- cgit v1.2.3