diff options
author | Ludovic Courtès <ludovic.courtes@inria.fr> | 2017-04-21 19:01:03 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-04-21 19:17:36 +0200 |
commit | e537833726cb093f101566793e083098d04ac58b (patch) | |
tree | a97d35a9801285b8d98d03ef6ee1dafd33853a98 | |
parent | 615c5298f705c040068c363c45ed379f7c2b5319 (diff) | |
download | guix-e537833726cb093f101566793e083098d04ac58b.tar.gz |
ssh: Decompose 'connect-to-remote-daemon'.
* guix/ssh.scm (remote-daemon-channel): New procedure. (connect-to-remote-daemon): Implement in terms of it.
-rw-r--r-- | guix/ssh.scm | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/guix/ssh.scm b/guix/ssh.scm index e02c8ebc32..59fd002dc7 100644 --- a/guix/ssh.scm +++ b/guix/ssh.scm @@ -33,6 +33,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 binary-ports) #:export (open-ssh-session + remote-daemon-channel connect-to-remote-daemon send-files retrieve-files @@ -88,11 +89,11 @@ Throw an error on failure." (message (format #f (_ "SSH connection to '~a' failed: ~a~%") host (get-error session)))))))))) -(define* (connect-to-remote-daemon session - #:optional - (socket-name "/var/guix/daemon-socket/socket")) - "Connect to the remote build daemon listening on SOCKET-NAME over SESSION, -an SSH session. Return a <nix-server> object." +(define* (remote-daemon-channel session + #:optional + (socket-name + "/var/guix/daemon-socket/socket")) + "Return an input/output port (an SSH channel) to the daemon at SESSION." (define redirect ;; Code run in SESSION to redirect the remote process' stdin/stdout to the ;; daemon's socket, à la socat. The SSH protocol supports forwarding to @@ -127,13 +128,20 @@ an SSH session. Return a <nix-server> object." (_ (primitive-exit 1))))))) - (let ((channel - (open-remote-pipe* session OPEN_BOTH - ;; Sort-of shell-quote REDIRECT. - "guile" "-c" - (object->string - (object->string redirect))))) - (open-connection #:port channel))) + (open-remote-pipe* session OPEN_BOTH + ;; Sort-of shell-quote REDIRECT. + "guile" "-c" + (object->string + (object->string redirect)))) + +(define* (connect-to-remote-daemon session + #:optional + (socket-name + "/var/guix/daemon-socket/socket")) + "Connect to the remote build daemon listening on SOCKET-NAME over SESSION, +an SSH session. Return a <nix-server> object." + (open-connection #:port (remote-daemon-channel session))) + (define (store-import-channel session) "Return an output port to which archives to be exported to SESSION's store |