From 27a2c9c3e071fdb380c2f4f389b7cf4008dc75f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 19 Feb 2018 21:58:18 +0100 Subject: [PATCH] marionette: Use QEMU's "VM channel" mechanism. * gnu/tests.scm ()[device]: Default to "/dev/virtio-ports/org.gnu.guix.port.0". * gnu/tests.scm (marionette-shepherd-service): Remove (guix build syscalls) from 'modules'. Remove 'tcsetattr' call from 'start'. * gnu/build/marionette.scm (make-marionette): Use "-virtserialport" instead of "-virtconsole". --- gnu/build/marionette.scm | 7 +++++-- gnu/tests.scm | 22 +++++----------------- 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/gnu/build/marionette.scm b/gnu/build/marionette.scm index 7554a710a0..173a67cef9 100644 --- a/gnu/build/marionette.scm +++ b/gnu/build/marionette.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017 Ludovic Courtès +;;; Copyright © 2016, 2017, 2018 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; @@ -97,8 +97,11 @@ QEMU monitor and to the guest's backdoor REPL." "-monitor" (string-append "unix:" socket-directory "/monitor") "-chardev" (string-append "socket,id=repl,path=" socket-directory "/repl") + + ;; See + ;; . "-device" "virtio-serial" - "-device" "virtconsole,chardev=repl")) + "-device" "virtserialport,chardev=repl,name=org.gnu.guix.port.0")) (define (accept* port) (match (select (list port) '() (list port) timeout) diff --git a/gnu/tests.scm b/gnu/tests.scm index 3e4c3d4e3a..2aef370af5 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017 Ludovic Courtès +;;; Copyright © 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2017 Mathieu Othacehe ;;; Copyright © 2017 Tobias Geerinckx-Rice ;;; @@ -69,7 +69,7 @@ marionette-configuration make-marionette-configuration marionette-configuration? (device marionette-configuration-device ;string - (default "/dev/hvc0")) + (default "/dev/virtio-ports/org.gnu.guix.port.0")) (imported-modules marionette-configuration-imported-modules (default '())) (requirements marionette-configuration-requirements ;list of symbols @@ -87,17 +87,10 @@ (modules '((ice-9 match) (srfi srfi-9 gnu) - (guix build syscalls) (rnrs bytevectors))) (start - (with-imported-modules `((guix build syscalls) - ,@imported-modules) + (with-imported-modules imported-modules #~(lambda () - (define (clear-echo termios) - (set-field termios (termios-local-flags) - (logand (lognot (local-flags ECHO)) - (termios-local-flags termios)))) - (define (self-quoting? x) (letrec-syntax ((one-of (syntax-rules () ((_) #f) @@ -112,13 +105,8 @@ (dynamic-wind (const #t) (lambda () - (let* ((repl (open-file #$device "r+0")) - (termios (tcgetattr (fileno repl))) - (console (open-file "/dev/console" "r+0"))) - ;; Don't echo input back. - (tcsetattr (fileno repl) (tcsetattr-action TCSANOW) - (clear-echo termios)) - + (let ((repl (open-file #$device "r+0")) + (console (open-file "/dev/console" "r+0"))) ;; Redirect output to the console. (close-fdes 1) (close-fdes 2)