[Spice-devel] [xspice 4/6] Add a '--auto' flag to create a temporary xorg.conf file.

Jeremy White jwhite at codeweavers.com
Thu Mar 14 11:00:01 PDT 2013


Signed-off-by: Jeremy White <jwhite at codeweavers.com>
---
 scripts/Xspice |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 58 insertions(+), 1 deletion(-)

diff --git a/scripts/Xspice b/scripts/Xspice
index 1686f9e..32219b4 100755
--- a/scripts/Xspice
+++ b/scripts/Xspice
@@ -19,6 +19,7 @@ which can be overridden as well.
 import argparse
 import os
 import sys
+import tempfile
 
 def which(x):
     for p in os.environ['PATH'].split(':'):
@@ -44,6 +45,7 @@ parser = argparse.ArgumentParser("Xspice",
     usage="Xspice [Xspice and Xorg options intermixed]",
     epilog="Any options not parsed by Xspice get passed to Xorg as is.")
 parser.add_argument('--xorg', default=which('Xorg'))
+parser.add_argument('--auto', action='store_true', help='Automatically create a temporary xorg.conf and start the X server')
 parser.add_argument('--config', default='spiceqxl.xorg.conf')
 # Don't use any options that are already used by Xorg (unless we must)
 # specifically, don't use -p and -s.
@@ -119,6 +121,52 @@ def error(msg, exit_code=1):
 if not args.xorg:
     error("Xorg missing")
 
+if args.auto:
+    cf = tempfile.NamedTemporaryFile(prefix="Xspice-", delete=True)
+    args.config = cf.name
+    xorg_args = [ '-logfile', cf.name + ".log" ] + xorg_args
+    cf.write("""
+Section "Device"
+    Identifier "XSPICE"
+    Driver "spiceqxl"
+EndSection
+
+Section "InputDevice"
+    Identifier "XSPICE POINTER"
+    Driver     "xspice pointer"
+EndSection
+
+Section "InputDevice"
+    Identifier "XSPICE KEYBOARD"
+    Driver     "xspice keyboard"
+EndSection
+
+Section "Monitor"
+    Identifier    "Configured Monitor"
+EndSection
+
+Section "Screen"
+    Identifier     "XSPICE Screen"
+    Monitor        "Configured Monitor"
+    Device         "XSPICE"
+EndSection
+
+Section "ServerLayout"
+    Identifier "XSPICE Example"
+    Screen "XSPICE Screen"
+    InputDevice "XSPICE KEYBOARD"
+    InputDevice "XSPICE POINTER"
+EndSection
+
+# Prevent udev from loading vmmouse in a vm and crashing.
+Section "ServerFlags"
+    Option "AutoAddDevices" "False"
+EndSection
+
+
+    """)
+    cf.flush()
+
 var_args = ['port', 'tls_port', 'disable_ticketing',
     'x509_dir', 'sasl', 'cacert_file', 'x509_cert_file',
     'x509_key_file', 'x509_key_password',
@@ -134,4 +182,13 @@ if cgdb and args.cgdb:
     exec_args = [cgdb, '--args'] + exec_args
     args.xorg = cgdb
 
-os.execv(args.xorg, exec_args + xorg_args)
+xpid = os.spawnv(os.P_NOWAIT, args.xorg, exec_args + xorg_args)
+try:
+    os.waitpid(xpid, 0)
+except KeyboardInterrupt:
+# Catch Ctrl-C so we clean up the log file in that case
+    print "Keyboard Interrupt"
+
+if args.auto:
+    if os.path.isfile(cf.name + ".log"):
+        os.remove(cf.name + ".log")
-- 
1.7.10.4





More information about the Spice-devel mailing list