qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/5] Tracing patches for 1.1
@ 2012-05-01 19:28 Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 1/5] tracetool: use Python 2.4-compatible exception handling syntax Stefan Hajnoczi
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2012-05-01 19:28 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Stefan Hajnoczi

This pull request is for QEMU 1.1 and fixes tracetool Python compatibility
issues.  This makes it possible to run all the way back to Python 2.4.  These
patches are required so that QEMU can be built with tracing on older systems.

The following changes since commit b754e4fc1e8e68af975c545c38ebc3b001ebc98f:

  Remove stray HOST_LONG_SIZE (2012-05-01 18:23:04 +0400)

are available in the git repository at:

  git://github.com/stefanha/qemu.git tracing

for you to fetch changes up to e120d449e1b39ec508c297b963ce452628dd37c3:

  configure: check for supported Python 2.x versions (2012-05-01 20:15:31 +0100)

----------------------------------------------------------------
Stefan Hajnoczi (5):
      tracetool: use Python 2.4-compatible exception handling syntax
      tracetool: use Python 2.4-compatible __import__() arguments
      tracetool: avoid str.rpartition() Python 2.5 function
      tracetool: avoid pkgutil.iter_modules() Python 2.7 function
      configure: check for supported Python 2.x versions

 configure                             |    7 ++++---
 scripts/tracetool.py                  |    4 ++--
 scripts/tracetool/__init__.py         |   19 +++++++++++--------
 scripts/tracetool/backend/__init__.py |    8 ++++++--
 scripts/tracetool/format/__init__.py  |    8 ++++++--
 5 files changed, 29 insertions(+), 17 deletions(-)

-- 
1.7.10

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

* [Qemu-devel] [PATCH 1/5] tracetool: use Python 2.4-compatible exception handling syntax
  2012-05-01 19:28 [Qemu-devel] [PULL 0/5] Tracing patches for 1.1 Stefan Hajnoczi
@ 2012-05-01 19:28 ` Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 2/5] tracetool: use Python 2.4-compatible __import__() arguments Stefan Hajnoczi
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2012-05-01 19:28 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Stefan Hajnoczi

The newer "except <exception-type> as <exception>:" syntax is not
supported by Python 2.4, we need to use "except <exception-type>,
<exception>:".

Tested all trace backends with Python 2.4.

Reported-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 scripts/tracetool.py |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/scripts/tracetool.py b/scripts/tracetool.py
index cacfd99..c003cf6 100755
--- a/scripts/tracetool.py
+++ b/scripts/tracetool.py
@@ -70,7 +70,7 @@ def main(args):
 
     try:
         opts, args = getopt.getopt(args[1:], "", long_opts)
-    except getopt.GetoptError as err:
+    except getopt.GetoptError, err:
         error_opt(str(err))
 
     check_backend = False
@@ -131,7 +131,7 @@ def main(args):
     try:
         tracetool.generate(sys.stdin, arg_format, arg_backend,
                            binary = binary, probe_prefix = probe_prefix)
-    except tracetool.TracetoolError as e:
+    except tracetool.TracetoolError, e:
         error_opt(str(e))
 
 if __name__ == "__main__":
-- 
1.7.10

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

* [Qemu-devel] [PATCH 2/5] tracetool: use Python 2.4-compatible __import__() arguments
  2012-05-01 19:28 [Qemu-devel] [PULL 0/5] Tracing patches for 1.1 Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 1/5] tracetool: use Python 2.4-compatible exception handling syntax Stefan Hajnoczi
@ 2012-05-01 19:28 ` Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 3/5] tracetool: avoid str.rpartition() Python 2.5 function Stefan Hajnoczi
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2012-05-01 19:28 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Stefan Hajnoczi

In Python 2.5 keyword arguments were added to __import__().  Avoid using
them to achieve Python 2.4 compatibility.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 scripts/tracetool/__init__.py |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 74fe21b..49858c9 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -204,7 +204,7 @@ def try_import(mod_name, attr_name = None, attr_default = None):
     object or attribute value.
     """
     try:
-        module = __import__(mod_name, fromlist=["__package__"])
+        module = __import__(mod_name, globals(), locals(), ["__package__"])
         if attr_name is None:
             return True, module
         return True, getattr(module, str(attr_name), attr_default)
-- 
1.7.10

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

* [Qemu-devel] [PATCH 3/5] tracetool: avoid str.rpartition() Python 2.5 function
  2012-05-01 19:28 [Qemu-devel] [PULL 0/5] Tracing patches for 1.1 Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 1/5] tracetool: use Python 2.4-compatible exception handling syntax Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 2/5] tracetool: use Python 2.4-compatible __import__() arguments Stefan Hajnoczi
@ 2012-05-01 19:28 ` Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 4/5] tracetool: avoid pkgutil.iter_modules() Python 2.7 function Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 5/5] configure: check for supported Python 2.x versions Stefan Hajnoczi
  4 siblings, 0 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2012-05-01 19:28 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Stefan Hajnoczi

The str.rpartition() function is related to str.split() and is used for
splitting strings.  It was introduced in Python 2.5 and therefore cannot
be used in tracetool as Python 2.4 compatibility is required.

Replace the code using str.rsplit().

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 scripts/tracetool/__init__.py |   17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 49858c9..175df08 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -64,14 +64,17 @@ class Arguments:
         res = []
         for arg in arg_str.split(","):
             arg = arg.strip()
-            parts = arg.split()
-            head, sep, tail = parts[-1].rpartition("*")
-            parts = parts[:-1]
-            if tail == "void":
-                assert len(parts) == 0 and sep == ""
+            if arg == 'void':
                 continue
-            arg_type = " ".join(parts + [ " ".join([head, sep]).strip() ]).strip()
-            res.append((arg_type, tail))
+
+            if '*' in arg:
+                arg_type, identifier = arg.rsplit('*', 1)
+                arg_type += '*'
+                identifier = identifier.strip()
+            else:
+                arg_type, identifier = arg.rsplit(None, 1)
+
+            res.append((arg_type, identifier))
         return Arguments(res)
 
     def __iter__(self):
-- 
1.7.10

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

* [Qemu-devel] [PATCH 4/5] tracetool: avoid pkgutil.iter_modules() Python 2.7 function
  2012-05-01 19:28 [Qemu-devel] [PULL 0/5] Tracing patches for 1.1 Stefan Hajnoczi
                   ` (2 preceding siblings ...)
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 3/5] tracetool: avoid str.rpartition() Python 2.5 function Stefan Hajnoczi
@ 2012-05-01 19:28 ` Stefan Hajnoczi
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 5/5] configure: check for supported Python 2.x versions Stefan Hajnoczi
  4 siblings, 0 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2012-05-01 19:28 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Stefan Hajnoczi

The pkgutil.iter_modules() function provides a way to enumerate child
modules.  Unfortunately it's missing in Python <2.7 so we must implement
similar behavior ourselves.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 scripts/tracetool/backend/__init__.py |    8 ++++++--
 scripts/tracetool/format/__init__.py  |    8 ++++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/scripts/tracetool/backend/__init__.py b/scripts/tracetool/backend/__init__.py
index 34b7ed8..be43472 100644
--- a/scripts/tracetool/backend/__init__.py
+++ b/scripts/tracetool/backend/__init__.py
@@ -37,7 +37,7 @@ __maintainer__ = "Stefan Hajnoczi"
 __email__      = "stefanha@linux.vnet.ibm.com"
 
 
-import pkgutil
+import os
 
 import tracetool
 
@@ -45,7 +45,11 @@ import tracetool
 def get_list():
     """Get a list of (name, description) pairs."""
     res = [("nop", "Tracing disabled.")]
-    for _, modname, _ in pkgutil.iter_modules(tracetool.backend.__path__):
+    modnames = []
+    for filename in os.listdir(tracetool.backend.__path__[0]):
+        if filename.endswith('.py') and filename != '__init__.py':
+            modnames.append(filename.rsplit('.', 1)[0])
+    for modname in modnames:
         module = tracetool.try_import("tracetool.backend." + modname)
 
         # just in case; should never fail unless non-module files are put there
diff --git a/scripts/tracetool/format/__init__.py b/scripts/tracetool/format/__init__.py
index 0e4baf0..3c2a0d8 100644
--- a/scripts/tracetool/format/__init__.py
+++ b/scripts/tracetool/format/__init__.py
@@ -41,7 +41,7 @@ __maintainer__ = "Stefan Hajnoczi"
 __email__      = "stefanha@linux.vnet.ibm.com"
 
 
-import pkgutil
+import os
 
 import tracetool
 
@@ -49,7 +49,11 @@ import tracetool
 def get_list():
     """Get a list of (name, description) pairs."""
     res = []
-    for _, modname, _ in pkgutil.iter_modules(tracetool.format.__path__):
+    modnames = []
+    for filename in os.listdir(tracetool.format.__path__[0]):
+        if filename.endswith('.py') and filename != '__init__.py':
+            modnames.append(filename.rsplit('.', 1)[0])
+    for modname in modnames:
         module = tracetool.try_import("tracetool.format." + modname)
 
         # just in case; should never fail unless non-module files are put there
-- 
1.7.10

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

* [Qemu-devel] [PATCH 5/5] configure: check for supported Python 2.x versions
  2012-05-01 19:28 [Qemu-devel] [PULL 0/5] Tracing patches for 1.1 Stefan Hajnoczi
                   ` (3 preceding siblings ...)
  2012-05-01 19:28 ` [Qemu-devel] [PATCH 4/5] tracetool: avoid pkgutil.iter_modules() Python 2.7 function Stefan Hajnoczi
@ 2012-05-01 19:28 ` Stefan Hajnoczi
  4 siblings, 0 replies; 6+ messages in thread
From: Stefan Hajnoczi @ 2012-05-01 19:28 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, Stefan Hajnoczi

The tracetool code requires Python 2.4, which was released in 2004.
Check for a supported Python version so we can give a clear error
message.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Reviewed-by: Lluís Vilanova <vilanova@ac.upc.edu>
---
 configure |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/configure b/configure
index 3c72fa0..b4f1379 100755
--- a/configure
+++ b/configure
@@ -1239,9 +1239,10 @@ 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[0] >= 3)'; then
-  echo "Python 2 required but '$python' is version 3 or better."
-  echo "Use --python=/path/to/python to specify a Python 2."
+if ! "$python" -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
+  echo "Cannot use '$python', Python 2.4 or later is required."
+  echo "Note that Python 3 or later is not yet supported."
+  echo "Use --python=/path/to/python to specify a supported Python."
   exit 1
 fi
 
-- 
1.7.10

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

end of thread, other threads:[~2012-05-01 19:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-01 19:28 [Qemu-devel] [PULL 0/5] Tracing patches for 1.1 Stefan Hajnoczi
2012-05-01 19:28 ` [Qemu-devel] [PATCH 1/5] tracetool: use Python 2.4-compatible exception handling syntax Stefan Hajnoczi
2012-05-01 19:28 ` [Qemu-devel] [PATCH 2/5] tracetool: use Python 2.4-compatible __import__() arguments Stefan Hajnoczi
2012-05-01 19:28 ` [Qemu-devel] [PATCH 3/5] tracetool: avoid str.rpartition() Python 2.5 function Stefan Hajnoczi
2012-05-01 19:28 ` [Qemu-devel] [PATCH 4/5] tracetool: avoid pkgutil.iter_modules() Python 2.7 function Stefan Hajnoczi
2012-05-01 19:28 ` [Qemu-devel] [PATCH 5/5] configure: check for supported Python 2.x versions Stefan Hajnoczi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).