mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-23 11:09:41 -05:00
ssh: 'send-files' reports missing modules on the remote host.
Reported by Mikael Djurfeldt <mikael@djurfeldt.com> in <https://bugs.gnu.org/40125>. * guix/ssh.scm (send-files)[inferior-remote-eval*]: New procedure. [missing]: Use it. Add an explicit 'resolve-module' call. (report-inferior-exception): New procedure.
This commit is contained in:
parent
1eb27d5cae
commit
8f53d73493
1 changed files with 20 additions and 2 deletions
22
guix/ssh.scm
22
guix/ssh.scm
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -405,11 +405,24 @@ (define* (send-files local files remote
|
|||
"Send the subset of FILES from LOCAL (a local store) that's missing to
|
||||
REMOTE, a remote store. When RECURSIVE? is true, send the closure of FILES.
|
||||
Return the list of store items actually sent."
|
||||
(define (inferior-remote-eval* exp session)
|
||||
(guard (c ((inferior-exception? c)
|
||||
(match (inferior-exception-arguments c)
|
||||
(('quit 7)
|
||||
(report-module-error (remote-store-host remote)))
|
||||
(_
|
||||
(report-inferior-exception c (remote-store-host remote))))))
|
||||
(inferior-remote-eval exp session)))
|
||||
|
||||
;; Compute the subset of FILES missing on SESSION and send them.
|
||||
(let* ((files (if recursive? (requisites local files) files))
|
||||
(session (channel-get-session (store-connection-socket remote)))
|
||||
(missing (inferior-remote-eval
|
||||
(missing (inferior-remote-eval*
|
||||
`(begin
|
||||
(eval-when (load expand eval)
|
||||
(unless (resolve-module '(guix) #:ensure #f)
|
||||
(exit 7)))
|
||||
|
||||
(use-modules (guix)
|
||||
(srfi srfi-1) (srfi srfi-26))
|
||||
|
||||
|
@ -567,4 +580,9 @@ (define (report-module-error host)
|
|||
check.")
|
||||
host)))
|
||||
|
||||
(define (report-inferior-exception exception host)
|
||||
"Report EXCEPTION, an &inferior-exception that occurred on HOST."
|
||||
(raise-error (G_ "exception occurred on remote host '~A': ~s")
|
||||
host (inferior-exception-arguments exception)))
|
||||
|
||||
;;; ssh.scm ends here
|
||||
|
|
Loading…
Reference in a new issue