marionette: Add wait-for-unix-socket.
* gnu/build/marionette.scm (wait-for-unix-socket): New variable.
This commit is contained in:
parent
4dd53a83b5
commit
cb29343940
|
@ -1,5 +1,6 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||||
|
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -27,6 +28,7 @@
|
||||||
marionette-eval
|
marionette-eval
|
||||||
wait-for-file
|
wait-for-file
|
||||||
wait-for-tcp-port
|
wait-for-tcp-port
|
||||||
|
wait-for-unix-socket
|
||||||
marionette-control
|
marionette-control
|
||||||
marionette-screen-text
|
marionette-screen-text
|
||||||
wait-for-screen-text
|
wait-for-screen-text
|
||||||
|
@ -214,6 +216,29 @@ MARIONETTE. Raise an error on failure."
|
||||||
('failure
|
('failure
|
||||||
(error "nobody's listening on port" port))))
|
(error "nobody's listening on port" port))))
|
||||||
|
|
||||||
|
(define* (wait-for-unix-socket file-name marionette
|
||||||
|
#:key (timeout 20))
|
||||||
|
"Wait for up to TIMEOUT seconds for FILE-NAME, a Unix domain socket, to
|
||||||
|
accept connections in MARIONETTE. Raise an error on failure."
|
||||||
|
(match (marionette-eval
|
||||||
|
`(begin
|
||||||
|
(let ((sock (socket PF_UNIX SOCK_STREAM 0)))
|
||||||
|
(let loop ((i 0))
|
||||||
|
(catch 'system-error
|
||||||
|
(lambda ()
|
||||||
|
(connect sock AF_UNIX ,file-name)
|
||||||
|
'success)
|
||||||
|
(lambda args
|
||||||
|
(if (< i ,timeout)
|
||||||
|
(begin
|
||||||
|
(sleep 1)
|
||||||
|
(loop (+ 1 i)))
|
||||||
|
'failure))))))
|
||||||
|
marionette)
|
||||||
|
('success #t)
|
||||||
|
('failure
|
||||||
|
(error "nobody's listening on unix domain socket" file-name))))
|
||||||
|
|
||||||
(define (marionette-control command marionette)
|
(define (marionette-control command marionette)
|
||||||
"Run COMMAND in the QEMU monitor of MARIONETTE. COMMAND is a string such as
|
"Run COMMAND in the QEMU monitor of MARIONETTE. COMMAND is a string such as
|
||||||
\"sendkey ctrl-alt-f1\" or \"screendump foo.ppm\" (info \"(qemu-doc)
|
\"sendkey ctrl-alt-f1\" or \"screendump foo.ppm\" (info \"(qemu-doc)
|
||||||
|
|
Loading…
Reference in New Issue