All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05
@ 2018-02-05 23:08 Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 01/21] qapi: convert to use python print function instead of statement Eduardo Habkost
                   ` (21 more replies)
  0 siblings, 22 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa

The following changes since commit f24ee107a07f093bd7ed475dd48d7ba57ea3d8fe:

  Merge remote-tracking branch 'remotes/kraxel/tags/ui-20180202-pull-request' into staging (2018-02-02 18:54:11 +0000)

are available in the Git repository at:

  git://github.com/ehabkost/qemu.git tags/python-next-pull-request

for you to fetch changes up to 356dc290f0ef930a24b6af3a0908b1cb58ad47c9:

  docker: change Fedora images to run with python3 (2018-02-05 19:53:55 -0200)

----------------------------------------------------------------
Python queue, 2018-02-05

----------------------------------------------------------------

Amador Pahim (7):
  qemu.py: remove unused import
  qemu.py: better control of created files
  qemu.py: refactor launch()
  qemu.py: always cleanup on shutdown()
  qemu.py: use poll() instead of 'returncode'
  qemu.py: cleanup redundant calls in launch()
  qemu.py: don't launch again before shutdown()

Daniel P. Berrange (13):
  qapi: convert to use python print function instead of statement
  qapi: use items()/values() intead of iteritems()/itervalues()
  qapi: Use OrderedDict from standard library if available
  qapi: adapt to moved location of StringIO module in py3
  qapi: Adapt to moved location of 'maketrans' function in py3
  qapi: remove '-q' arg to diff when comparing QAPI output
  qapi: ensure stable sort ordering when checking QAPI entities
  qapi: force a UTF-8 locale for running Python
  scripts: ensure signrom treats data as bytes
  configure: allow use of python 3
  ui: update keycodemapdb to get py3 fixes
  travis: improve python version test coverage
  docker: change Fedora images to run with python3

Miika S (1):
  input: add missing JIS keys to virtio input

 configure                              |  5 +-
 Makefile                               | 22 ++++----
 qapi/ui.json                           |  5 +-
 scripts/qapi.py                        | 43 ++++++++++------
 scripts/qapi2texi.py                   | 11 ++--
 scripts/qemu.py                        | 94 ++++++++++++++++++++++------------
 scripts/signrom.py                     |  4 +-
 .travis.yml                            | 14 +++--
 tests/Makefile.include                 |  6 +--
 tests/docker/dockerfiles/fedora.docker |  3 +-
 tests/qapi-schema/test-qapi.py         | 43 ++++++++--------
 ui/keycodemapdb                        |  2 +-
 12 files changed, 151 insertions(+), 101 deletions(-)

-- 
2.14.3

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 01/21] qapi: convert to use python print function instead of statement
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 02/21] qapi: use items()/values() intead of iteritems()/itervalues() Eduardo Habkost
                   ` (20 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Python 3 no longer supports the bare "print" statement, it must be
called as a normal function with round brackets. It is possible to
opt-in to this new syntax with Python 2.6 onwards by importing the
"print_function" from the "__future__" module, making it easy to
support Python 2 and 3 in parallel.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-2-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qapi.py                | 12 ++++++------
 scripts/qapi2texi.py           |  9 +++++----
 tests/qapi-schema/test-qapi.py | 41 +++++++++++++++++++++--------------------
 3 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 43a54bf40f..64fde4b6c5 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -11,6 +11,7 @@
 # This work is licensed under the terms of the GNU GPL, version 2.
 # See the COPYING file in the top-level directory.
 
+from __future__ import print_function
 import errno
 import getopt
 import os
@@ -1467,7 +1468,7 @@ class QAPISchema(object):
             self._def_exprs()
             self.check()
         except QAPIError as err:
-            print >>sys.stderr, err
+            print(err, file=sys.stderr)
             exit(1)
 
     def _def_entity(self, ent):
@@ -1931,7 +1932,7 @@ def parse_command_line(extra_options='', extra_long_options=[]):
                                        ['source', 'header', 'prefix=',
                                         'output-dir='] + extra_long_options)
     except getopt.GetoptError as err:
-        print >>sys.stderr, "%s: %s" % (sys.argv[0], str(err))
+        print("%s: %s" % (sys.argv[0], str(err)), file=sys.stderr)
         sys.exit(1)
 
     output_dir = ''
@@ -1945,9 +1946,8 @@ def parse_command_line(extra_options='', extra_long_options=[]):
         if o in ('-p', '--prefix'):
             match = re.match(r'([A-Za-z_.-][A-Za-z0-9_.-]*)?', a)
             if match.end() != len(a):
-                print >>sys.stderr, \
-                    "%s: 'funny character '%s' in argument of --prefix" \
-                    % (sys.argv[0], a[match.end()])
+                print("%s: 'funny character '%s' in argument of --prefix" \
+                      % (sys.argv[0], a[match.end()]), file=sys.stderr)
                 sys.exit(1)
             prefix = a
         elif o in ('-o', '--output-dir'):
@@ -1964,7 +1964,7 @@ def parse_command_line(extra_options='', extra_long_options=[]):
         do_h = True
 
     if len(args) != 1:
-        print >>sys.stderr, "%s: need exactly one argument" % sys.argv[0]
+        print("%s: need exactly one argument" % sys.argv[0], file=sys.stderr)
         sys.exit(1)
     fname = args[0]
 
diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index 92e2af2cd6..70e1fe76ef 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -4,6 +4,7 @@
 # This work is licensed under the terms of the GNU LGPL, version 2+.
 # See the COPYING file in the top-level directory.
 """This script produces the documentation of a qapi schema in texinfo format"""
+from __future__ import print_function
 import re
 import sys
 
@@ -274,15 +275,15 @@ def texi_schema(schema):
 def main(argv):
     """Takes schema argument, prints result to stdout"""
     if len(argv) != 2:
-        print >>sys.stderr, "%s: need exactly 1 argument: SCHEMA" % argv[0]
+        print("%s: need exactly 1 argument: SCHEMA" % argv[0], file=sys.stderr)
         sys.exit(1)
 
     schema = qapi.QAPISchema(argv[1])
     if not qapi.doc_required:
-        print >>sys.stderr, ("%s: need pragma 'doc-required' "
-                             "to generate documentation" % argv[0])
+        print("%s: need pragma 'doc-required' "
+               "to generate documentation" % argv[0], file=sys.stderr)
         sys.exit(1)
-    print texi_schema(schema)
+    print(texi_schema(schema))
 
 
 if __name__ == '__main__':
diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
index fe0ca08d78..a43fa873e1 100644
--- a/tests/qapi-schema/test-qapi.py
+++ b/tests/qapi-schema/test-qapi.py
@@ -10,6 +10,7 @@
 # See the COPYING file in the top-level directory.
 #
 
+from __future__ import print_function
 from qapi import *
 from pprint import pprint
 import os
@@ -18,51 +19,51 @@ import sys
 
 class QAPISchemaTestVisitor(QAPISchemaVisitor):
     def visit_enum_type(self, name, info, values, prefix):
-        print 'enum %s %s' % (name, values)
+        print('enum %s %s' % (name, values))
         if prefix:
-            print '    prefix %s' % prefix
+            print('    prefix %s' % prefix)
 
     def visit_object_type(self, name, info, base, members, variants):
-        print 'object %s' % name
+        print('object %s' % name)
         if base:
-            print '    base %s' % base.name
+            print('    base %s' % base.name)
         for m in members:
-            print '    member %s: %s optional=%s' % \
-                (m.name, m.type.name, m.optional)
+            print('    member %s: %s optional=%s' % \
+                  (m.name, m.type.name, m.optional))
         self._print_variants(variants)
 
     def visit_alternate_type(self, name, info, variants):
-        print 'alternate %s' % name
+        print('alternate %s' % name)
         self._print_variants(variants)
 
     def visit_command(self, name, info, arg_type, ret_type,
                       gen, success_response, boxed):
-        print 'command %s %s -> %s' % \
-            (name, arg_type and arg_type.name, ret_type and ret_type.name)
-        print '   gen=%s success_response=%s boxed=%s' % \
-            (gen, success_response, boxed)
+        print('command %s %s -> %s' % \
+              (name, arg_type and arg_type.name, ret_type and ret_type.name))
+        print('   gen=%s success_response=%s boxed=%s' % \
+              (gen, success_response, boxed))
 
     def visit_event(self, name, info, arg_type, boxed):
-        print 'event %s %s' % (name, arg_type and arg_type.name)
-        print '   boxed=%s' % boxed
+        print('event %s %s' % (name, arg_type and arg_type.name))
+        print('   boxed=%s' % boxed)
 
     @staticmethod
     def _print_variants(variants):
         if variants:
-            print '    tag %s' % variants.tag_member.name
+            print('    tag %s' % variants.tag_member.name)
             for v in variants.variants:
-                print '    case %s: %s' % (v.name, v.type.name)
+                print('    case %s: %s' % (v.name, v.type.name))
 
 schema = QAPISchema(sys.argv[1])
 schema.visit(QAPISchemaTestVisitor())
 
 for doc in schema.docs:
     if doc.symbol:
-        print 'doc symbol=%s' % doc.symbol
+        print('doc symbol=%s' % doc.symbol)
     else:
-        print 'doc freeform'
-    print '    body=\n%s' % doc.body.text
+        print('doc freeform')
+    print('    body=\n%s' % doc.body.text)
     for arg, section in doc.args.iteritems():
-        print '    arg=%s\n%s' % (arg, section.text)
+        print('    arg=%s\n%s' % (arg, section.text))
     for section in doc.sections:
-        print '    section=%s\n%s' % (section.name, section.text)
+        print('    section=%s\n%s' % (section.name, section.text))
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 02/21] qapi: use items()/values() intead of iteritems()/itervalues()
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 01/21] qapi: convert to use python print function instead of statement Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 03/21] qapi: Use OrderedDict from standard library if available Eduardo Habkost
                   ` (19 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

The iteritems()/itervalues() methods are gone in py3, but the
items()/values() methods are still around. The latter are less
efficient than the former in py2, but this has unmeasurably
small impact on QEMU build time, so taking portability over
efficiency is a net win.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-3-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qapi.py                | 12 ++++++------
 scripts/qapi2texi.py           |  2 +-
 tests/qapi-schema/test-qapi.py |  2 +-
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 64fde4b6c5..98d7123d27 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -245,7 +245,7 @@ class QAPIDoc(object):
                                "'Returns:' is only valid for commands")
 
     def check(self):
-        bogus = [name for name, section in self.args.iteritems()
+        bogus = [name for name, section in self.args.items()
                  if not section.member]
         if bogus:
             raise QAPISemError(
@@ -300,7 +300,7 @@ class QAPISchemaParser(object):
                 if not isinstance(pragma, dict):
                     raise QAPISemError(
                         info, "Value of 'pragma' must be a dictionary")
-                for name, value in pragma.iteritems():
+                for name, value in pragma.items():
                     self._pragma(name, value, info)
             else:
                 expr_elem = {'expr': expr,
@@ -1566,7 +1566,7 @@ class QAPISchema(object):
 
     def _make_members(self, data, info):
         return [self._make_member(key, value, info)
-                for (key, value) in data.iteritems()]
+                for (key, value) in data.items()]
 
     def _def_struct_type(self, expr, info, doc):
         name = expr['struct']
@@ -1598,11 +1598,11 @@ class QAPISchema(object):
                 name, info, doc, 'base', self._make_members(base, info)))
         if tag_name:
             variants = [self._make_variant(key, value)
-                        for (key, value) in data.iteritems()]
+                        for (key, value) in data.items()]
             members = []
         else:
             variants = [self._make_simple_variant(key, value, info)
-                        for (key, value) in data.iteritems()]
+                        for (key, value) in data.items()]
             typ = self._make_implicit_enum_type(name, info,
                                                 [v.name for v in variants])
             tag_member = QAPISchemaObjectTypeMember('type', typ, False)
@@ -1617,7 +1617,7 @@ class QAPISchema(object):
         name = expr['alternate']
         data = expr['data']
         variants = [self._make_variant(key, value)
-                    for (key, value) in data.iteritems()]
+                    for (key, value) in data.items()]
         tag_member = QAPISchemaObjectTypeMember('type', 'QType', False)
         self._def_entity(
             QAPISchemaAlternateType(name, info, doc,
diff --git a/scripts/qapi2texi.py b/scripts/qapi2texi.py
index 70e1fe76ef..bf1c57b2e2 100755
--- a/scripts/qapi2texi.py
+++ b/scripts/qapi2texi.py
@@ -146,7 +146,7 @@ def texi_member(member, suffix=''):
 def texi_members(doc, what, base, variants, member_func):
     """Format the table of members"""
     items = ''
-    for section in doc.args.itervalues():
+    for section in doc.args.values():
         # TODO Drop fallbacks when undocumented members are outlawed
         if section.text:
             desc = texi_format(section.text)
diff --git a/tests/qapi-schema/test-qapi.py b/tests/qapi-schema/test-qapi.py
index a43fa873e1..ac43d3458e 100644
--- a/tests/qapi-schema/test-qapi.py
+++ b/tests/qapi-schema/test-qapi.py
@@ -63,7 +63,7 @@ for doc in schema.docs:
     else:
         print('doc freeform')
     print('    body=\n%s' % doc.body.text)
-    for arg, section in doc.args.iteritems():
+    for arg, section in doc.args.items():
         print('    arg=%s\n%s' % (arg, section.text))
     for section in doc.sections:
         print('    section=%s\n%s' % (section.name, section.text))
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 03/21] qapi: Use OrderedDict from standard library if available
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 01/21] qapi: convert to use python print function instead of statement Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 02/21] qapi: use items()/values() intead of iteritems()/itervalues() Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 04/21] qapi: adapt to moved location of StringIO module in py3 Eduardo Habkost
                   ` (18 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

The OrderedDict class appeared in the 'collections' module
from python 2.7 onwards, so use that in preference to our
local backport if available.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-4-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qapi.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 98d7123d27..514b7bb5a4 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -18,7 +18,10 @@ import os
 import re
 import string
 import sys
-from ordereddict import OrderedDict
+try:
+    from collections import OrderedDict
+except:
+    from ordereddict import OrderedDict
 
 builtin_types = {
     'null':     'QTYPE_QNULL',
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 04/21] qapi: adapt to moved location of StringIO module in py3
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (2 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 03/21] qapi: Use OrderedDict from standard library if available Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 05/21] qapi: Adapt to moved location of 'maketrans' function " Eduardo Habkost
                   ` (17 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-5-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qapi.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 514b7bb5a4..514cca44bf 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -22,6 +22,10 @@ try:
     from collections import OrderedDict
 except:
     from ordereddict import OrderedDict
+try:
+    from StringIO import StringIO
+except ImportError:
+    from io import StringIO
 
 builtin_types = {
     'null':     'QTYPE_QNULL',
@@ -1995,8 +1999,7 @@ def open_output(output_dir, do_c, do_h, prefix, c_file, h_file,
         if really:
             return open(name, opt)
         else:
-            import StringIO
-            return StringIO.StringIO()
+            return StringIO()
 
     fdef = maybe_open(do_c, c_file, 'w')
     fdecl = maybe_open(do_h, h_file, 'w')
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 05/21] qapi: Adapt to moved location of 'maketrans' function in py3
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (3 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 04/21] qapi: adapt to moved location of StringIO module in py3 Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 06/21] qapi: remove '-q' arg to diff when comparing QAPI output Eduardo Habkost
                   ` (16 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-6-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qapi.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 514cca44bf..1fdd189c0d 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -1734,7 +1734,10 @@ def c_enum_const(type_name, const_name, prefix=None):
         type_name = prefix
     return camel_to_upper(type_name) + '_' + c_name(const_name, False).upper()
 
-c_name_trans = string.maketrans('.-', '__')
+if hasattr(str, 'maketrans'):
+    c_name_trans = str.maketrans('.-', '__')
+else:
+    c_name_trans = string.maketrans('.-', '__')
 
 
 # Map @name to a valid C identifier.
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 06/21] qapi: remove '-q' arg to diff when comparing QAPI output
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (4 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 05/21] qapi: Adapt to moved location of 'maketrans' function " Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 07/21] qapi: ensure stable sort ordering when checking QAPI entities Eduardo Habkost
                   ` (15 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

When the qapi schema tests fail they merely print that the expected
output didn't match the actual output. This is largely useless when
trying diagnose what went wrong. Removing the '-q' arg to diff
means that it is still silent on successful tests, but when it
fails we'll see details of the incorrect output.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-7-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 tests/Makefile.include | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/Makefile.include b/tests/Makefile.include
index ca82e0c0cc..3258b9c22a 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -917,10 +917,10 @@ $(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json
 		$^ >$*.test.out 2>$*.test.err; \
 		echo $$? >$*.test.exit, \
 		"TEST","$*.out")
-	@diff -q $(SRC_PATH)/$*.out $*.test.out
+	@diff $(SRC_PATH)/$*.out $*.test.out
 	@# Sanitize error messages (make them independent of build directory)
-	@perl -p -e 's|\Q$(SRC_PATH)\E/||g' $*.test.err | diff -q $(SRC_PATH)/$*.err -
-	@diff -q $(SRC_PATH)/$*.exit $*.test.exit
+	@perl -p -e 's|\Q$(SRC_PATH)\E/||g' $*.test.err | diff $(SRC_PATH)/$*.err -
+	@diff $(SRC_PATH)/$*.exit $*.test.exit
 
 .PHONY: check-tests/qapi-schema/doc-good.texi
 check-tests/qapi-schema/doc-good.texi: tests/qapi-schema/doc-good.test.texi
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 07/21] qapi: ensure stable sort ordering when checking QAPI entities
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (5 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 06/21] qapi: remove '-q' arg to diff when comparing QAPI output Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 08/21] qapi: force a UTF-8 locale for running Python Eduardo Habkost
                   ` (14 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Some early python 3.x versions will have different default
ordering when calling the 'values()' method on a dict, compared
to python 2.x and later 3.x versions. Explicitly sort the items
to get a stable ordering.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-8-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qapi.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/qapi.py b/scripts/qapi.py
index 1fdd189c0d..58f995b07f 100644
--- a/scripts/qapi.py
+++ b/scripts/qapi.py
@@ -1678,7 +1678,7 @@ class QAPISchema(object):
                 assert False
 
     def check(self):
-        for ent in self._entity_dict.values():
+        for (name, ent) in sorted(self._entity_dict.items()):
             ent.check(self)
 
     def visit(self, visitor):
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 08/21] qapi: force a UTF-8 locale for running Python
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (6 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 07/21] qapi: ensure stable sort ordering when checking QAPI entities Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 09/21] scripts: ensure signrom treats data as bytes Eduardo Habkost
                   ` (13 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Python2 did not validate locale correctness when reading input data, so
would happily read UTF-8 data in non-UTF-8 locales. Python3 is strict so
if you try to read UTF-8 data in the C locale, it will raise an error
for any UTF-8 bytes that aren't representable in 7-bit ascii encoding.
e.g.

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 54: ordinal not in range(128)
Traceback (most recent call last):
  File "/tmp/qemu-test/src/scripts/qapi-commands.py", line 317, in <module>
    schema = QAPISchema(input_file)
  File "/tmp/qemu-test/src/scripts/qapi.py", line 1468, in __init__
    parser = QAPISchemaParser(open(fname, 'r'))
  File "/tmp/qemu-test/src/scripts/qapi.py", line 301, in __init__
    previously_included)
  File "/tmp/qemu-test/src/scripts/qapi.py", line 348, in _include
    exprs_include = QAPISchemaParser(fobj, previously_included, info)
  File "/tmp/qemu-test/src/scripts/qapi.py", line 271, in __init__
    self.src = fp.read()
  File "/usr/lib64/python3.5/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]

More background on this can be seen in

  https://www.python.org/dev/peps/pep-0538/

Many distros support a new C.UTF-8 locale that is like the C locale,
but with UTF-8 instead of 7-bit ASCII. That is not entirely portable
though. This patch thus sets the LANG to "C", but overrides LC_CTYPE
to be en_US.UTF-8 locale. This gets us pretty close to C.UTF-8, but
in a way that should be portable to everywhere QEMU builds.

This patch only forces UTF-8 for QAPI scripts, since that is the one
showing the immediate error under Python3 with C locale, but potentially
we ought to force this for all python scripts used in the build process.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-9-berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 Makefile | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/Makefile b/Makefile
index 7d35ea1a06..4ec7a3cb82 100644
--- a/Makefile
+++ b/Makefile
@@ -20,6 +20,8 @@ ifneq ($(wildcard config-host.mak),)
 all:
 include config-host.mak
 
+PYTHON_UTF8 = LC_ALL= LANG=C LC_CTYPE=en_US.UTF-8 $(PYTHON)
+
 git-submodule-update:
 
 .PHONY: git-submodule-update
@@ -487,17 +489,17 @@ qapi-py = $(SRC_PATH)/scripts/qapi.py $(SRC_PATH)/scripts/ordereddict.py
 
 qga/qapi-generated/qga-qapi-types.c qga/qapi-generated/qga-qapi-types.h :\
 $(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-types.py \
 		$(gen-out-type) -o qga/qapi-generated -p "qga-" $<, \
 		"GEN","$@")
 qga/qapi-generated/qga-qapi-visit.c qga/qapi-generated/qga-qapi-visit.h :\
 $(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-visit.py \
 		$(gen-out-type) -o qga/qapi-generated -p "qga-" $<, \
 		"GEN","$@")
 qga/qapi-generated/qga-qmp-commands.h qga/qapi-generated/qga-qmp-marshal.c :\
 $(SRC_PATH)/qga/qapi-schema.json $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-commands.py \
 		$(gen-out-type) -o qga/qapi-generated -p "qga-" $<, \
 		"GEN","$@")
 
@@ -518,27 +520,27 @@ qapi-modules = $(SRC_PATH)/qapi-schema.json $(SRC_PATH)/qapi/common.json \
 
 qapi-types.c qapi-types.h :\
 $(qapi-modules) $(SRC_PATH)/scripts/qapi-types.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-types.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-types.py \
 		$(gen-out-type) -o "." -b $<, \
 		"GEN","$@")
 qapi-visit.c qapi-visit.h :\
 $(qapi-modules) $(SRC_PATH)/scripts/qapi-visit.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-visit.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-visit.py \
 		$(gen-out-type) -o "." -b $<, \
 		"GEN","$@")
 qapi-event.c qapi-event.h :\
 $(qapi-modules) $(SRC_PATH)/scripts/qapi-event.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-event.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-event.py \
 		$(gen-out-type) -o "." $<, \
 		"GEN","$@")
 qmp-commands.h qmp-marshal.c :\
 $(qapi-modules) $(SRC_PATH)/scripts/qapi-commands.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-commands.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-commands.py \
 		$(gen-out-type) -o "." $<, \
 		"GEN","$@")
 qmp-introspect.h qmp-introspect.c :\
 $(qapi-modules) $(SRC_PATH)/scripts/qapi-introspect.py $(qapi-py)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-introspect.py \
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-introspect.py \
 		$(gen-out-type) -o "." $<, \
 		"GEN","$@")
 
@@ -811,10 +813,10 @@ qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx $(SRC_PATH)/scripts/hxtool
 docs/interop/qemu-qmp-qapi.texi docs/interop/qemu-ga-qapi.texi: $(SRC_PATH)/scripts/qapi2texi.py $(qapi-py)
 
 docs/interop/qemu-qmp-qapi.texi: $(qapi-modules)
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi2texi.py $< > $@,"GEN","$@")
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi2texi.py $< > $@,"GEN","$@")
 
 docs/interop/qemu-ga-qapi.texi: $(SRC_PATH)/qga/qapi-schema.json
-	$(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi2texi.py $< > $@,"GEN","$@")
+	$(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi2texi.py $< > $@,"GEN","$@")
 
 qemu.1: qemu-doc.texi qemu-options.texi qemu-monitor.texi qemu-monitor-info.texi
 qemu.1: qemu-option-trace.texi
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 09/21] scripts: ensure signrom treats data as bytes
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (7 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 08/21] qapi: force a UTF-8 locale for running Python Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 10/21] configure: allow use of python 3 Eduardo Habkost
                   ` (12 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-10-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/signrom.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/signrom.py b/scripts/signrom.py
index d1dabe0240..0497a1c32e 100644
--- a/scripts/signrom.py
+++ b/scripts/signrom.py
@@ -18,7 +18,7 @@ fin = open(sys.argv[1], 'rb')
 fout = open(sys.argv[2], 'wb')
 
 magic = fin.read(2)
-if magic != '\x55\xaa':
+if magic != b'\x55\xaa':
     sys.exit("%s: option ROM does not begin with magic 55 aa" % sys.argv[1])
 
 size_byte = ord(fin.read(1))
@@ -33,7 +33,7 @@ elif len(data) < size:
     # Add padding if necessary, rounding the whole input to a multiple of
     # 512 bytes according to the third byte of the input.
     # size-1 because a final byte is added below to store the checksum.
-    data = data.ljust(size-1, '\0')
+    data = data.ljust(size-1, b'\0')
 else:
     if ord(data[-1:]) != 0:
         sys.stderr.write('WARNING: ROM includes nonzero checksum\n')
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 10/21] configure: allow use of python 3
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (8 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 09/21] scripts: ensure signrom treats data as bytes Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 11/21] qemu.py: remove unused import Eduardo Habkost
                   ` (11 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-11-berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 configure | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index 302fdc92ff..886abe6a39 100755
--- a/configure
+++ b/configure
@@ -1604,9 +1604,8 @@ fi
 
 # Note that if the Python conditional here evaluates True we will exit
 # with status 1 which is a shell 'false' value.
-if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
-  error_exit "Cannot use '$python', Python 2.6 or later is required." \
-      "Note that Python 3 or later is not yet supported." \
+if ! $python -c 'import sys; sys.exit(sys.version_info < (2,6))'; then
+  error_exit "Cannot use '$python', Python 2 >= 2.6 or Python 3 is required." \
       "Use --python=/path/to/python to specify a supported Python."
 fi
 
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 11/21] qemu.py: remove unused import
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (9 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 10/21] configure: allow use of python 3 Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 12/21] qemu.py: better control of created files Eduardo Habkost
                   ` (10 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Amador Pahim

From: Amador Pahim <apahim@redhat.com>

Removing 'import sys' as it's not used anywhere.

Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20171114102246.22221-2-apahim@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qemu.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 9bfdf6d37d..65d9ad688c 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -15,7 +15,6 @@
 import errno
 import logging
 import os
-import sys
 import subprocess
 import qmp.qmp
 
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 12/21] qemu.py: better control of created files
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (10 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 11/21] qemu.py: remove unused import Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 13/21] qemu.py: refactor launch() Eduardo Habkost
                   ` (9 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Amador Pahim

From: Amador Pahim <apahim@redhat.com>

To launch a VM, we need to create basically two files: the monitor
socket (if it's a UNIX socket) and the qemu log file.

For the qemu log file, we currently just open the path, which will
create the file if it does not exist or overwrite the file if it does
exist.

For the monitor socket, if it already exists, we are currently removing
it, even if it's not created by us.

This patch moves to _pre_launch() the responsibility to create a
temporary directory to host the files so we can remove the whole
directory on _post_shutdown().

Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20180122205033.24893-2-apahim@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qemu.py | 39 +++++++++++++++++++++++++++++----------
 1 file changed, 29 insertions(+), 10 deletions(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 65d9ad688c..8d539206c4 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -17,6 +17,8 @@ import logging
 import os
 import subprocess
 import qmp.qmp
+import shutil
+import tempfile
 
 
 LOG = logging.getLogger(__name__)
@@ -72,10 +74,11 @@ class QEMUMachine(object):
             wrapper = []
         if name is None:
             name = "qemu-%d" % os.getpid()
-        if monitor_address is None:
-            monitor_address = os.path.join(test_dir, name + "-monitor.sock")
+        self._name = name
         self._monitor_address = monitor_address
-        self._qemu_log_path = os.path.join(test_dir, name + ".log")
+        self._vm_monitor = None
+        self._qemu_log_path = None
+        self._qemu_log_file = None
         self._popen = None
         self._binary = binary
         self._args = list(args)     # Force copy args in case we modify them
@@ -85,6 +88,8 @@ class QEMUMachine(object):
         self._socket_scm_helper = socket_scm_helper
         self._qmp = None
         self._qemu_full_args = None
+        self._test_dir = test_dir
+        self._temp_dir = None
 
         # just in case logging wasn't configured by the main script:
         logging.basicConfig()
@@ -167,36 +172,50 @@ class QEMUMachine(object):
                 self._monitor_address[0],
                 self._monitor_address[1])
         else:
-            moncdev = 'socket,id=mon,path=%s' % self._monitor_address
+            moncdev = 'socket,id=mon,path=%s' % self._vm_monitor
         return ['-chardev', moncdev,
                 '-mon', 'chardev=mon,mode=control',
                 '-display', 'none', '-vga', 'none']
 
     def _pre_launch(self):
-        self._qmp = qmp.qmp.QEMUMonitorProtocol(self._monitor_address,
+        self._temp_dir = tempfile.mkdtemp(dir=self._test_dir)
+        if self._monitor_address is not None:
+            self._vm_monitor = self._monitor_address
+        else:
+            self._vm_monitor = os.path.join(self._temp_dir,
+                                            self._name + "-monitor.sock")
+        self._qemu_log_path = os.path.join(self._temp_dir, self._name + ".log")
+        self._qemu_log_file = open(self._qemu_log_path, 'wb')
+
+        self._qmp = qmp.qmp.QEMUMonitorProtocol(self._vm_monitor,
                                                 server=True)
 
     def _post_launch(self):
         self._qmp.accept()
 
     def _post_shutdown(self):
-        if not isinstance(self._monitor_address, tuple):
-            self._remove_if_exists(self._monitor_address)
-        self._remove_if_exists(self._qemu_log_path)
+        if self._qemu_log_file is not None:
+            self._qemu_log_file.close()
+            self._qemu_log_file = None
+
+        self._qemu_log_path = None
+
+        if self._temp_dir is not None:
+            shutil.rmtree(self._temp_dir)
+            self._temp_dir = None
 
     def launch(self):
         '''Launch the VM and establish a QMP connection'''
         self._iolog = None
         self._qemu_full_args = None
         devnull = open(os.path.devnull, 'rb')
-        qemulog = open(self._qemu_log_path, 'wb')
         try:
             self._pre_launch()
             self._qemu_full_args = (self._wrapper + [self._binary] +
                                     self._base_args() + self._args)
             self._popen = subprocess.Popen(self._qemu_full_args,
                                            stdin=devnull,
-                                           stdout=qemulog,
+                                           stdout=self._qemu_log_file,
                                            stderr=subprocess.STDOUT,
                                            shell=False)
             self._post_launch()
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 13/21] qemu.py: refactor launch()
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (11 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 12/21] qemu.py: better control of created files Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 14/21] qemu.py: always cleanup on shutdown() Eduardo Habkost
                   ` (8 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Amador Pahim

From: Amador Pahim <apahim@redhat.com>

This is just a refactor to separate the exception handler from the
actual launch procedure, improving the readability and making future
maintenances in this piece of code easier.

Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20180122205033.24893-3-apahim@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qemu.py | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 8d539206c4..0333d1e7fa 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -205,20 +205,14 @@ class QEMUMachine(object):
             self._temp_dir = None
 
     def launch(self):
-        '''Launch the VM and establish a QMP connection'''
+        """
+        Launch the VM and make sure we cleanup and expose the
+        command line/output in case of exception
+        """
         self._iolog = None
         self._qemu_full_args = None
-        devnull = open(os.path.devnull, 'rb')
         try:
-            self._pre_launch()
-            self._qemu_full_args = (self._wrapper + [self._binary] +
-                                    self._base_args() + self._args)
-            self._popen = subprocess.Popen(self._qemu_full_args,
-                                           stdin=devnull,
-                                           stdout=self._qemu_log_file,
-                                           stderr=subprocess.STDOUT,
-                                           shell=False)
-            self._post_launch()
+            self._launch()
         except:
             if self.is_running():
                 self._popen.kill()
@@ -233,6 +227,19 @@ class QEMUMachine(object):
                 LOG.debug('Output: %r', self._iolog)
             raise
 
+    def _launch(self):
+        '''Launch the VM and establish a QMP connection'''
+        devnull = open(os.path.devnull, 'rb')
+        self._pre_launch()
+        self._qemu_full_args = (self._wrapper + [self._binary] +
+                                self._base_args() + self._args)
+        self._popen = subprocess.Popen(self._qemu_full_args,
+                                       stdin=devnull,
+                                       stdout=self._qemu_log_file,
+                                       stderr=subprocess.STDOUT,
+                                       shell=False)
+        self._post_launch()
+
     def wait(self):
         '''Wait for the VM to power off'''
         self._popen.wait()
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 14/21] qemu.py: always cleanup on shutdown()
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (12 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 13/21] qemu.py: refactor launch() Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 15/21] qemu.py: use poll() instead of 'returncode' Eduardo Habkost
                   ` (7 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Amador Pahim

From: Amador Pahim <apahim@redhat.com>

Currently we only cleanup on shutdown() if the VM is running.

To make sure we will always cleanup, this patch makes the
self._load_io_log() and the self._post_shutdown() to
always be called on shutdown(), regardless the VM running state.

Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20180122205033.24893-4-apahim@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qemu.py | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 0333d1e7fa..52cf09eebd 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -163,8 +163,9 @@ class QEMUMachine(object):
         return self._popen.pid
 
     def _load_io_log(self):
-        with open(self._qemu_log_path, "r") as iolog:
-            self._iolog = iolog.read()
+        if self._qemu_log_path is not None:
+            with open(self._qemu_log_path, "r") as iolog:
+                self._iolog = iolog.read()
 
     def _base_args(self):
         if isinstance(self._monitor_address, tuple):
@@ -257,8 +258,8 @@ class QEMUMachine(object):
                 self._popen.kill()
             self._popen.wait()
 
-            self._load_io_log()
-            self._post_shutdown()
+        self._load_io_log()
+        self._post_shutdown()
 
         exitcode = self.exitcode()
         if exitcode is not None and exitcode < 0:
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 15/21] qemu.py: use poll() instead of 'returncode'
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (13 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 14/21] qemu.py: always cleanup on shutdown() Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 16/21] qemu.py: cleanup redundant calls in launch() Eduardo Habkost
                   ` (6 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Amador Pahim

From: Amador Pahim <apahim@redhat.com>

The 'returncode' Popen attribute is not guaranteed to be updated. It
actually depends on a call to either poll(), wait() or communicate().

On the other hand, poll() will: "Check if child process has terminated.
Set and return returncode attribute."

Let's use the poll() to check whether the process is running and to get
the updated process exit code, when the process is finished.

Reviewed-by: Fam Zheng <famz@redhat.com>
eviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20180122205033.24893-5-apahim@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qemu.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 52cf09eebd..dcb4f0ffe6 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -150,12 +150,12 @@ class QEMUMachine(object):
             raise
 
     def is_running(self):
-        return self._popen is not None and self._popen.returncode is None
+        return self._popen is not None and self._popen.poll() is None
 
     def exitcode(self):
         if self._popen is None:
             return None
-        return self._popen.returncode
+        return self._popen.poll()
 
     def get_pid(self):
         if not self.is_running():
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 16/21] qemu.py: cleanup redundant calls in launch()
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (14 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 15/21] qemu.py: use poll() instead of 'returncode' Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 17/21] qemu.py: don't launch again before shutdown() Eduardo Habkost
                   ` (5 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Amador Pahim

From: Amador Pahim <apahim@redhat.com>

Now that shutdown() is guaranteed to always execute self._load_io_log()
and self._post_shutdown(), their calls in 'except' became redundant and
we can safely replace it by a call to shutdown().

Reviewed-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20180122205033.24893-6-apahim@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qemu.py | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index dcb4f0ffe6..09db6249a3 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -215,11 +215,7 @@ class QEMUMachine(object):
         try:
             self._launch()
         except:
-            if self.is_running():
-                self._popen.kill()
-                self._popen.wait()
-            self._load_io_log()
-            self._post_shutdown()
+            self.shutdown()
 
             LOG.debug('Error launching VM')
             if self._qemu_full_args:
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 17/21] qemu.py: don't launch again before shutdown()
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (15 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 16/21] qemu.py: cleanup redundant calls in launch() Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 18/21] input: add missing JIS keys to virtio input Eduardo Habkost
                   ` (4 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Amador Pahim

From: Amador Pahim <apahim@redhat.com>

If a VM is launched, files are created and a cleanup is required before
a new launch. This cleanup is executed by shutdown(), so shutdown() must
be called even if the VM is manually terminated (i.e. using kill).

This patch creates a control to make sure launch() will not be executed
again if shutdown() is not called after the previous launch().

Signed-off-by: Amador Pahim <apahim@redhat.com>
Message-Id: <20180122205033.24893-7-apahim@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 scripts/qemu.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/scripts/qemu.py b/scripts/qemu.py
index 09db6249a3..305a946562 100644
--- a/scripts/qemu.py
+++ b/scripts/qemu.py
@@ -90,6 +90,7 @@ class QEMUMachine(object):
         self._qemu_full_args = None
         self._test_dir = test_dir
         self._temp_dir = None
+        self._launched = False
 
         # just in case logging wasn't configured by the main script:
         logging.basicConfig()
@@ -210,10 +211,15 @@ class QEMUMachine(object):
         Launch the VM and make sure we cleanup and expose the
         command line/output in case of exception
         """
+
+        if self._launched:
+            raise QEMUMachineError('VM already launched')
+
         self._iolog = None
         self._qemu_full_args = None
         try:
             self._launch()
+            self._launched = True
         except:
             self.shutdown()
 
@@ -266,6 +272,8 @@ class QEMUMachine(object):
                 command = ''
             LOG.warn(msg, exitcode, command)
 
+        self._launched = False
+
     def qmp(self, cmd, conv_keys=True, **args):
         '''Invoke a QMP command and return the response dict'''
         qmp_args = dict()
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 18/21] input: add missing JIS keys to virtio input
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (16 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 17/21] qemu.py: don't launch again before shutdown() Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 19/21] ui: update keycodemapdb to get py3 fixes Eduardo Habkost
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Miika S

From: Miika S <miika9764@gmail.com>

keycodemapdb updated to add the QKeyCodes muhenkan and katakanahiragana

Signed-off-by: Miika S <miika9764@gmail.com>
Message-Id: <20180116134217.8725-12-berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 qapi/ui.json    | 5 ++++-
 ui/keycodemapdb | 2 +-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/qapi/ui.json b/qapi/ui.json
index 07b468f625..d6679aa8f5 100644
--- a/qapi/ui.json
+++ b/qapi/ui.json
@@ -748,6 +748,9 @@
 # @ac_bookmarks: since 2.10
 # altgr, altgr_r: dropped in 2.10
 #
+# @muhenkan: since 2.12
+# @katakanahiragana: since 2.12
+#
 # 'sysrq' was mistakenly added to hack around the fact that
 # the ps2 driver was not generating correct scancodes sequences
 # when 'alt+print' was pressed. This flaw is now fixed and the
@@ -775,7 +778,7 @@
             'left', 'up', 'down', 'right', 'insert', 'delete', 'stop', 'again',
             'props', 'undo', 'front', 'copy', 'open', 'paste', 'find', 'cut',
             'lf', 'help', 'meta_l', 'meta_r', 'compose', 'pause',
-            'ro', 'hiragana', 'henkan', 'yen',
+            'ro', 'hiragana', 'henkan', 'yen', 'muhenkan', 'katakanahiragana',
             'kp_comma', 'kp_equals', 'power', 'sleep', 'wake',
             'audionext', 'audioprev', 'audiostop', 'audioplay', 'audiomute',
             'volumeup', 'volumedown', 'mediaselect',
diff --git a/ui/keycodemapdb b/ui/keycodemapdb
index 10739aa260..05dad417e9 160000
--- a/ui/keycodemapdb
+++ b/ui/keycodemapdb
@@ -1 +1 @@
-Subproject commit 10739aa26051a5d49d88132604539d3ed085e72e
+Subproject commit 05dad417e9d0b37ee1fba33056d91a6b734b3357
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 19/21] ui: update keycodemapdb to get py3 fixes
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (17 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 18/21] input: add missing JIS keys to virtio input Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:08 ` [Qemu-devel] [PULL 20/21] travis: improve python version test coverage Eduardo Habkost
                   ` (2 subsequent siblings)
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-13-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 ui/keycodemapdb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ui/keycodemapdb b/ui/keycodemapdb
index 05dad417e9..6b3d716e2b 160000
--- a/ui/keycodemapdb
+++ b/ui/keycodemapdb
@@ -1 +1 @@
-Subproject commit 05dad417e9d0b37ee1fba33056d91a6b734b3357
+Subproject commit 6b3d716e2b6472eb7189d3220552280ef3d832ce
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 20/21] travis: improve python version test coverage
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (18 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 19/21] ui: update keycodemapdb to get py3 fixes Eduardo Habkost
@ 2018-02-05 23:08 ` Eduardo Habkost
  2018-02-05 23:09 ` [Qemu-devel] [PULL 21/21] docker: change Fedora images to run with python3 Eduardo Habkost
  2018-02-07 12:07 ` [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Peter Maydell
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:08 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Currently travis declares ancient python 2.4 is desired. Update that to
2.6 which is the oldest version any targetted distros still needs. If we
just list a python 3 version at the top level this will double the
number of travis jobs we run which is unreasonable.

So arbitrarily pick the clang test matrix entries to build with python
3.0 and 3.6, to extend coverage of python versions, without increasing
job count or build time.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-14-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 .travis.yml | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index f583839755..708c886017 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
 sudo: false
 language: c
 python:
-  - "2.4"
+  - "2.6"
 compiler:
   - gcc
 cache: ccache
@@ -115,15 +115,17 @@ matrix:
         - sudo apt-get build-dep -qq qemu
         - wget -O - http://people.linaro.org/~alex.bennee/qemu-submodule-git-seed.tar.xz | tar -xvJ
         - git submodule update --init --recursive
-    # Trusty System build with latest stable clang
+    # Trusty System build with latest stable clang & python 3.0
     - sudo: required
       addons:
       dist: trusty
       language: generic
       compiler: none
+      python:
+        - "3.0"
       env:
         - COMPILER_NAME=clang CXX=clang++-3.9 CC=clang-3.9
-        - CONFIG="--disable-linux-user --cc=clang-3.9 --cxx=clang++-3.9"
+        - CONFIG="--disable-linux-user --cc=clang-3.9 --cxx=clang++-3.9 --python=/usr/bin/python3"
       before_install:
         - wget -nv -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
         - sudo apt-add-repository -y 'deb http://llvm.org/apt/trusty llvm-toolchain-trusty-3.9 main'
@@ -134,15 +136,17 @@ matrix:
         - git submodule update --init --recursive
       before_script:
         - ./configure ${CONFIG} || cat config.log
-    # Trusty Linux User build with latest stable clang
+    # Trusty Linux User build with latest stable clang & python 3.6
     - sudo: required
       addons:
       dist: trusty
       language: generic
       compiler: none
+      python:
+        - "3.6"
       env:
         - COMPILER_NAME=clang CXX=clang++-3.9 CC=clang-3.9
-        - CONFIG="--disable-system --cc=clang-3.9 --cxx=clang++-3.9"
+        - CONFIG="--disable-system --cc=clang-3.9 --cxx=clang++-3.9 --python=/usr/bin/python3"
       before_install:
         - wget -nv -O - http://llvm.org/apt/llvm-snapshot.gpg.key | sudo apt-key add -
         - sudo apt-add-repository -y 'deb http://llvm.org/apt/trusty llvm-toolchain-trusty-3.9 main'
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [Qemu-devel] [PULL 21/21] docker: change Fedora images to run with python3
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (19 preceding siblings ...)
  2018-02-05 23:08 ` [Qemu-devel] [PULL 20/21] travis: improve python version test coverage Eduardo Habkost
@ 2018-02-05 23:09 ` Eduardo Habkost
  2018-02-07 12:07 ` [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Peter Maydell
  21 siblings, 0 replies; 23+ messages in thread
From: Eduardo Habkost @ 2018-02-05 23:09 UTC (permalink / raw)
  To: Peter Maydell, qemu-devel; +Cc: Cleber Rosa, Daniel P. Berrange

From: "Daniel P. Berrange" <berrange@redhat.com>

Fedora has switched to Python 3 by default, so it makes sense to use that
for testing QEMU builds, so we get testing of Python 3 compatibility.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-Id: <20180116134217.8725-15-berrange@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 tests/docker/dockerfiles/fedora.docker | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tests/docker/dockerfiles/fedora.docker b/tests/docker/dockerfiles/fedora.docker
index 32de731675..26ede4f1d6 100644
--- a/tests/docker/dockerfiles/fedora.docker
+++ b/tests/docker/dockerfiles/fedora.docker
@@ -1,6 +1,6 @@
 FROM fedora:latest
 ENV PACKAGES \
-    ccache gettext git tar PyYAML sparse flex bison python2 bzip2 hostname \
+    ccache gettext git tar PyYAML sparse flex bison python3 bzip2 hostname \
     glib2-devel pixman-devel zlib-devel SDL-devel libfdt-devel \
     gcc gcc-c++ clang make perl which bc findutils libaio-devel \
     nettle-devel libasan libubsan \
@@ -12,6 +12,7 @@ ENV PACKAGES \
     mingw64-gtk2 mingw64-gtk3 mingw64-gnutls mingw64-nettle mingw64-libtasn1 \
     mingw64-libjpeg-turbo mingw64-libpng mingw64-curl mingw64-libssh2 \
     mingw64-bzip2
+ENV QEMU_CONFIGURE_OPTS --python=/usr/bin/python3
 
 RUN dnf install -y $PACKAGES
 RUN rpm -q $PACKAGES | sort > /packages.txt
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05
  2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
                   ` (20 preceding siblings ...)
  2018-02-05 23:09 ` [Qemu-devel] [PULL 21/21] docker: change Fedora images to run with python3 Eduardo Habkost
@ 2018-02-07 12:07 ` Peter Maydell
  21 siblings, 0 replies; 23+ messages in thread
From: Peter Maydell @ 2018-02-07 12:07 UTC (permalink / raw)
  To: Eduardo Habkost; +Cc: QEMU Developers, Cleber Rosa

On 5 February 2018 at 23:08, Eduardo Habkost <ehabkost@redhat.com> wrote:
> The following changes since commit f24ee107a07f093bd7ed475dd48d7ba57ea3d8fe:
>
>   Merge remote-tracking branch 'remotes/kraxel/tags/ui-20180202-pull-request' into staging (2018-02-02 18:54:11 +0000)
>
> are available in the Git repository at:
>
>   git://github.com/ehabkost/qemu.git tags/python-next-pull-request
>
> for you to fetch changes up to 356dc290f0ef930a24b6af3a0908b1cb58ad47c9:
>
>   docker: change Fedora images to run with python3 (2018-02-05 19:53:55 -0200)
>
> ----------------------------------------------------------------
> Python queue, 2018-02-05
>
> ----------------------------------------------------------------

Applied, thanks. (I've also updated one of my local build configs
to use --with-python=python3; thanks to Daniel Berrange for the suggestion.)

-- PMM

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2018-02-07 12:07 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-05 23:08 [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 01/21] qapi: convert to use python print function instead of statement Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 02/21] qapi: use items()/values() intead of iteritems()/itervalues() Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 03/21] qapi: Use OrderedDict from standard library if available Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 04/21] qapi: adapt to moved location of StringIO module in py3 Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 05/21] qapi: Adapt to moved location of 'maketrans' function " Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 06/21] qapi: remove '-q' arg to diff when comparing QAPI output Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 07/21] qapi: ensure stable sort ordering when checking QAPI entities Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 08/21] qapi: force a UTF-8 locale for running Python Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 09/21] scripts: ensure signrom treats data as bytes Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 10/21] configure: allow use of python 3 Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 11/21] qemu.py: remove unused import Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 12/21] qemu.py: better control of created files Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 13/21] qemu.py: refactor launch() Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 14/21] qemu.py: always cleanup on shutdown() Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 15/21] qemu.py: use poll() instead of 'returncode' Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 16/21] qemu.py: cleanup redundant calls in launch() Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 17/21] qemu.py: don't launch again before shutdown() Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 18/21] input: add missing JIS keys to virtio input Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 19/21] ui: update keycodemapdb to get py3 fixes Eduardo Habkost
2018-02-05 23:08 ` [Qemu-devel] [PULL 20/21] travis: improve python version test coverage Eduardo Habkost
2018-02-05 23:09 ` [Qemu-devel] [PULL 21/21] docker: change Fedora images to run with python3 Eduardo Habkost
2018-02-07 12:07 ` [Qemu-devel] [PULL 00/21] Python queue, 2018-02-05 Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.