summaryrefslogtreecommitdiff
path: root/guix/scripts/offload.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-02-05 22:16:59 +0100
committerLudovic Courtès <ludo@gnu.org>2015-02-05 23:40:55 +0100
commitfc61b641c28db1fc70da798fb6dcedb853b1ad1a (patch)
tree4ec58218d1d576c25152d350163d5a0652b1a0ee /guix/scripts/offload.scm
parentbf26b8ddabbc357c55af5140bb0522fd46afbd54 (diff)
downloadgnu-guix-fc61b641c28db1fc70da798fb6dcedb853b1ad1a.tar
gnu-guix-fc61b641c28db1fc70da798fb6dcedb853b1ad1a.tar.gz
offload: Warn about SSH client issues.
Suggested by Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>. * guix/scripts/offload.scm (remote-pipe): Remove unneeded 'catch'. (machine-load): Check the exit value upon (close-pipe pipe). Call 'warning' when it is non-zero.
Diffstat (limited to 'guix/scripts/offload.scm')
-rw-r--r--guix/scripts/offload.scm41
1 files changed, 20 insertions, 21 deletions
diff --git a/guix/scripts/offload.scm b/guix/scripts/offload.scm
index be233d96be..e494500d56 100644
--- a/guix/scripts/offload.scm
+++ b/guix/scripts/offload.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -191,25 +191,19 @@ not be started."
(lambda ()
(write str))))
- (catch 'system-error
- (lambda ()
- ;; Let the child inherit ERROR-PORT.
- (with-error-to-port error-port
- (apply open-pipe* mode %lshg-command
- "-l" (build-machine-user machine)
- "-p" (number->string (build-machine-port machine))
+ ;; Let the child inherit ERROR-PORT.
+ (with-error-to-port error-port
+ (apply open-pipe* mode %lshg-command
+ "-l" (build-machine-user machine)
+ "-p" (number->string (build-machine-port machine))
- ;; XXX: Remove '-i' when %LSHG-COMMAND really is lshg.
- "-i" (build-machine-private-key machine)
+ ;; XXX: Remove '-i' when %LSHG-COMMAND really is lshg.
+ "-i" (build-machine-private-key machine)
- (build-machine-name machine)
- (if quote?
- (map shell-quote command)
- command))))
- (lambda args
- (warning (_ "failed to execute '~a': ~a~%")
- %lshg-command (strerror (system-error-errno args)))
- #f)))
+ (build-machine-name machine)
+ (if quote?
+ (map shell-quote command)
+ command))))
;;;
@@ -533,9 +527,14 @@ success, #f otherwise."
(define (machine-load machine)
"Return the load of MACHINE, divided by the number of parallel builds
allowed on MACHINE."
- (let* ((pipe (remote-pipe machine OPEN_READ `("cat" "/proc/loadavg")))
- (line (read-line pipe)))
- (close-pipe pipe)
+ (let* ((pipe (remote-pipe machine OPEN_READ `("cat" "/proc/loadavg")))
+ (line (read-line pipe))
+ (status (close-pipe pipe)))
+ (unless (eqv? 0 (status:exit-val status))
+ (warning (_ "failed to obtain load of '~a': SSH client exited with ~a~%")
+ (build-machine-name machine)
+ (status:exit-val status)))
+
(if (eof-object? line)
+inf.0 ;MACHINE does not respond, so assume it is infinitely loaded
(match (string-tokenize line)