compatible with python2 and python3 (#1145)

* compatible with python2 and python3.

* fix python version check in configure of qemu.

* allow python-2.4.

* add credit.
This commit is contained in:
Chen Huitao
2019-09-20 17:23:12 +08:00
committed by Nguyen Anh Quynh
parent c46e745338
commit f4cc35a24a
6 changed files with 52 additions and 36 deletions

View File

@ -171,7 +171,7 @@ const int %(name)s_qtypes[QTYPE_MAX] = {
for key in members:
qapi_type = members[key]
if builtin_type_qtypes.has_key(qapi_type):
if qapi_type in builtin_type_qtypes:
qtype = builtin_type_qtypes[qapi_type]
elif find_struct(qapi_type):
qtype = "QTYPE_QDICT"
@ -284,8 +284,8 @@ try:
opts, args = getopt.gnu_getopt(sys.argv[1:], "chbp:i:o:",
["source", "header", "builtins",
"prefix=", "input-file=", "output-dir="])
except getopt.GetoptError, err:
print str(err)
except getopt.GetoptError as err:
print(str(err))
sys.exit(1)
output_dir = ""
@ -321,7 +321,7 @@ h_file = output_dir + prefix + h_file
try:
os.makedirs(output_dir)
except os.error, e:
except os.error as e:
if e.errno != errno.EEXIST:
raise
@ -329,8 +329,12 @@ def maybe_open(really, name, opt):
if really:
return open(name, opt)
else:
import StringIO
return StringIO.StringIO()
try:
import StringIO
return StringIO.StringIO()
except ImportError:
from io import StringIO
return StringIO()
fdef = maybe_open(do_c, c_file, 'w')
fdecl = maybe_open(do_h, h_file, 'w')
@ -383,7 +387,8 @@ fdecl.write(mcgen('''
guard=guardname(h_file)))
exprs = parse_schema(input_file)
exprs = filter(lambda expr: not expr.has_key('gen'), exprs)
exprs = filter(lambda expr: 'gen' not in expr, exprs)
exprs = list(exprs)
fdecl.write(guardstart("QAPI_TYPES_BUILTIN_STRUCT_DECL"))
for typename in builtin_types:
@ -392,13 +397,13 @@ fdecl.write(guardend("QAPI_TYPES_BUILTIN_STRUCT_DECL"))
for expr in exprs:
ret = "\n"
if expr.has_key('type'):
if 'type' in expr:
ret += generate_fwd_struct(expr['type'], expr['data'])
elif expr.has_key('enum'):
elif 'enum' in expr:
ret += generate_enum(expr['enum'], expr['data']) + "\n"
ret += generate_fwd_enum_struct(expr['enum'], expr['data'])
fdef.write(generate_enum_lookup(expr['enum'], expr['data']))
elif expr.has_key('union'):
elif 'union' in expr:
ret += generate_fwd_struct(expr['union'], expr['data']) + "\n"
enum_define = discriminator_find_enum_define(expr)
if not enum_define:
@ -429,19 +434,19 @@ if do_builtins:
for expr in exprs:
ret = "\n"
if expr.has_key('type'):
if 'type' in expr:
ret += generate_struct(expr) + "\n"
ret += generate_type_cleanup_decl(expr['type'] + "List")
fdef.write(generate_type_cleanup(expr['type'] + "List") + "\n")
ret += generate_type_cleanup_decl(expr['type'])
fdef.write(generate_type_cleanup(expr['type']) + "\n")
elif expr.has_key('union'):
elif 'union' in expr:
ret += generate_union(expr)
ret += generate_type_cleanup_decl(expr['union'] + "List")
fdef.write(generate_type_cleanup(expr['union'] + "List") + "\n")
ret += generate_type_cleanup_decl(expr['union'])
fdef.write(generate_type_cleanup(expr['union']) + "\n")
elif expr.has_key('enum'):
elif 'enum' in expr:
ret += generate_type_cleanup_decl(expr['enum'] + "List")
fdef.write(generate_type_cleanup(expr['enum'] + "List") + "\n")
else: