offload: 'test' reports Guile and module errors more nicely.

Fixes <https://bugs.gnu.org/26008>.
Reported by Myles English <mylesenglish@gmail.com>.

* guix/ssh.scm (retrieve-files*): Move error reporting to...
(report-guile-error, report-module-error): ... here.  New procedures.
* guix/scripts/offload.scm (assert-node-repl): Use 'report-guile-error'.
(assert-node-has-guix): Explicitly check for 'use-modules' first.  Use
'report-module-error'.
This commit is contained in:
Ludovic Courtès 2018-01-12 23:16:53 +01:00
parent 5a5e34e358
commit 4eb0f9ae05
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
2 changed files with 40 additions and 18 deletions

View file

@ -41,7 +41,10 @@
send-files
retrieve-files
retrieve-files*
remote-store-host))
remote-store-host
report-guile-error
report-module-error))
;;; Commentary:
;;;
@ -365,21 +368,9 @@ from REMOTE. When RECURSIVE? is true, retrieve the closure of FILES."
(lambda ()
(close-port port))))
((? eof-object?)
(raise-error (G_ "failed to start Guile on remote host '~A': exit code ~A")
(remote-store-host remote)
(channel-get-exit-status port)
(=> (G_ "Make sure @command{guile} can be found in
@code{$PATH} on the remote host. Run @command{ssh ~A guile --version} to
check.")
(remote-store-host remote))))
(report-guile-error (remote-store-host remote)))
(('module-error . _)
;; TRANSLATORS: Leave "Guile" untranslated.
(raise-error (G_ "Guile modules not found on remote host '~A'")
(remote-store-host remote)
(=> (G_ "Make sure @code{GUILE_LOAD_PATH} includes Guix'
own module directory. Run @command{ssh ~A env | grep GUILE_LOAD_PATH} to
check.")
(remote-store-host remote))))
(report-module-error (remote-store-host remote)))
(('connection-error file code . _)
(raise-error (G_ "failed to connect to '~A' on remote host '~A': ~a")
file (remote-store-host remote) (strerror code)))
@ -406,4 +397,25 @@ LOCAL. When RECURSIVE? is true, retrieve the closure of FILES."
#:import (lambda (port)
(import-paths local port))))
;;;
;;; Error reporting.
;;;
(define (report-guile-error host)
(raise-error (G_ "failed to start Guile on remote host '~A'") host
(=> (G_ "Make sure @command{guile} can be found in
@code{$PATH} on the remote host. Run @command{ssh ~A guile --version} to
check.")
host)))
(define (report-module-error host)
"Report an error about missing Guix modules on HOST."
;; TRANSLATORS: Leave "Guile" untranslated.
(raise-error (G_ "Guile modules not found on remote host '~A'") host
(=> (G_ "Make sure @code{GUILE_LOAD_PATH} includes Guix'
own module directory. Run @command{ssh ~A env | grep GUILE_LOAD_PATH} to
check.")
host)))
;;; ssh.scm ends here