[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
04/05: offload: 'test' reports Guile and module errors more nicely.
From: |
Ludovic Courtès |
Subject: |
04/05: offload: 'test' reports Guile and module errors more nicely. |
Date: |
Fri, 12 Jan 2018 17:53:19 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit 4eb0f9ae05a9bf20fb91c49b39bebc687265c5e5
Author: Ludovic Courtès <address@hidden>
Date: Fri Jan 12 23:16:53 2018 +0100
offload: 'test' reports Guile and module errors more nicely.
Fixes <https://bugs.gnu.org/26008>.
Reported by Myles English <address@hidden>.
* 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'.
---
guix/scripts/offload.scm | 16 +++++++++++++---
guix/ssh.scm | 42 +++++++++++++++++++++++++++---------------
2 files changed, 40 insertions(+), 18 deletions(-)
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index aaad992..d011520 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -542,8 +542,7 @@ slot (which must later be released with
'release-build-slot'), or #f and #f."
"Bail out if NODE is not running Guile."
(match (node-guile-version node)
(#f
- (leave (G_ "Guile could not be started on '~a'~%")
- name))
+ (report-guile-error name))
((? string? version)
;; Note: The version string already contains the word "Guile".
(info (G_ "'~a' is running ~a~%")
@@ -556,6 +555,17 @@ slot (which must later be released with
'release-build-slot'), or #f and #f."
(match (node-eval node
'(begin
(use-modules (guix))
+ (and add-text-to-store 'alright)))
+ ('alright #t)
+ (_ (report-module-error name))))
+ (lambda (key . args)
+ (report-module-error name)))
+
+ (catch 'node-repl-error
+ (lambda ()
+ (match (node-eval node
+ '(begin
+ (use-modules (guix))
(with-store store
(add-text-to-store store "test"
"Hello, build machine!"))))
@@ -563,7 +573,7 @@ slot (which must later be released with
'release-build-slot'), or #f and #f."
(info (G_ "Guix is usable on '~a' (test returned ~s)~%")
name str))
(x
- (leave (G_ "failed to use Guix module on '~a' (test returned ~s)~%")
+ (leave (G_ "failed to talk to guix-daemon on '~a' (test returned
~s)~%")
name x))))
(lambda (key . args)
(leave (G_ "remove evaluation on '~a' failed:~{ ~s~}~%")
diff --git a/guix/ssh.scm b/guix/ssh.scm
index ac85692..4dcc6d3 100644
--- a/guix/ssh.scm
+++ b/guix/ssh.scm
@@ -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
address@hidden 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
address@hidden 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