[Spice-commits] spice_codegen.py

Christophe Fergau teuf at kemper.freedesktop.org
Thu Jul 23 01:30:10 PDT 2015


 spice_codegen.py |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit f4c729aad399e87140a18518a3a6268afd956782
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Wed Jul 22 12:48:55 2015 +0200

    codegen: Fix enums.h generation with python3
    
    Trying to generate enums.h with python3 results in
    Traceback (most recent call last):
      File "./spice_codegen.py", line 217, in <module>
        write_enums(writer, options.generate_dissector)
      File "./spice_codegen.py", line 99, in write_enums
        write_channel_enums(writer, c, False, False)
      File "./spice_codegen.py", line 17, in write_channel_enums
        if len(messages) == 0:
    TypeError: object of type 'filter' has no len()
    
    filter() returns an enumerator object in python3 while it used to return
    a list in python2. Using list(filter()) instead fixes that error.
    I've checked that the generated enums.h is identical with python2 and
    python3.

diff --git a/spice_codegen.py b/spice_codegen.py
index 84790af..569cccc 100755
--- a/spice_codegen.py
+++ b/spice_codegen.py
@@ -12,8 +12,8 @@ from python_modules import marshal
 import six
 
 def write_channel_enums(writer, channel, client, describe):
-    messages = filter(lambda m : m.channel == channel, \
-                          channel.client_messages if client else channel.server_messages)
+    messages = list(filter(lambda m : m.channel == channel, \
+                               channel.client_messages if client else channel.server_messages))
     if len(messages) == 0:
         return
     if client:


More information about the Spice-commits mailing list