[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 2/2] xen/tools: support Python 2 and Python 3
These changes should make it possible to support modern Pythons as well as the oldest Python 2 still supported. Signed-off-by: Doug Goldstein <cardoe@xxxxxxxxxx> --- CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: George Dunlap <George.Dunlap@xxxxxxxxxxxxx> CC: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> CC: Jan Beulich <jbeulich@xxxxxxxx> CC: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Tim Deegan <tim@xxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> --- changes since v1: - switched to print() in cases where it works from Andrew Cooper - dropped long() magic from Andrew Cooper. This is unnecessary with Python 2.4 and newer. --- xen/tools/compat-build-header.py | 2 +- xen/tools/compat-build-source.py | 2 +- xen/tools/gen-cpuid.py | 34 ++++++++++++++++++++++++---------- xen/tools/get-fields.sh | 2 +- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/xen/tools/compat-build-header.py b/xen/tools/compat-build-header.py index 32421b645b..b85c43f13f 100755 --- a/xen/tools/compat-build-header.py +++ b/xen/tools/compat-build-header.py @@ -23,4 +23,4 @@ pats = [ for line in sys.stdin.readlines(): for pat in pats: line = re.subn(pat[0], pat[1], line)[0] - print line.rstrip() + print(line.rstrip()) diff --git a/xen/tools/compat-build-source.py b/xen/tools/compat-build-source.py index 595bc3ff58..c664eb85e6 100755 --- a/xen/tools/compat-build-source.py +++ b/xen/tools/compat-build-source.py @@ -26,4 +26,4 @@ for pat in pats: for line in sys.stdin.readlines(): for pat in pats: line = re.sub(pat[0], pat[1], line) - print line.rstrip() + print(line.rstrip()) diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py index 613b909c3d..6359afb704 100755 --- a/xen/tools/gen-cpuid.py +++ b/xen/tools/gen-cpuid.py @@ -3,6 +3,10 @@ import sys, os, re +if (sys.version_info > (3, 0)): + def xrange(x): + return range(x) + class Fail(Exception): pass @@ -98,13 +102,13 @@ def parse_definitions(state): def featureset_to_uint32s(fs, nr): """ Represent a featureset as a list of C-compatible uint32_t's """ - bitmap = 0L + bitmap = 0 for f in fs: - bitmap |= 1L << f + bitmap |= 1 << f words = [] while bitmap: - words.append(bitmap & ((1L << 32) - 1)) + words.append(bitmap & ((1 << 32) - 1)) bitmap >>= 32 assert len(words) <= nr @@ -276,8 +280,8 @@ def crunch_numbers(state): # To debug, uncomment the following lines: # def repl(l): # return "[" + ", ".join((state.names[x] for x in l)) + "]" - # print >>sys.stderr, "Feature %s, seen %s, to_process %s " % \ - # (state.names[feat], repl(seen), repl(to_process)) + # sys.stderr.write("Feature %s, seen %s, to_process %s \n" % \ + # (state.names[feat], repl(seen), repl(to_process))) f = to_process.pop(0) @@ -293,7 +297,12 @@ def crunch_numbers(state): state.deep_features = featureset_to_uint32s(deps.keys(), nr_entries) state.nr_deep_deps = len(state.deep_deps.keys()) - for k, v in state.deep_deps.iteritems(): + try: + _tmp = state.deep_deps.iteritems() + except AttributeError: + _tmp = state.deep_deps.items() + + for k, v in _tmp: state.deep_deps[k] = featureset_to_uint32s(v, nr_entries) # Calculate the bitfield name declarations @@ -410,7 +419,8 @@ def open_file_or_fd(val, mode, buffering): else: return open(val, mode, buffering) - except StandardError, e: + except StandardError: + e = sys.exc_info()[1] if fd != -1: raise Fail("Unable to open fd %d: %s: %s" % (fd, e.__class__.__name__, e)) @@ -453,10 +463,14 @@ def main(): if __name__ == "__main__": try: sys.exit(main()) - except Fail, e: - print >>sys.stderr, "%s:" % (sys.argv[0],), e + except Fail: + e = sys.exc_info()[1] + sys.stderr.write("%s:" % (sys.argv[0],)) + sys.stderr.write(e) + sys.stderr.write("\n") sys.exit(1) - except SystemExit, e: + except SystemExit: + e = sys.exc_info()[1] sys.exit(e.code) except KeyboardInterrupt: sys.exit(2) diff --git a/xen/tools/get-fields.sh b/xen/tools/get-fields.sh index 887feec370..45a0e2ed50 100644 --- a/xen/tools/get-fields.sh +++ b/xen/tools/get-fields.sh @@ -139,7 +139,7 @@ handle_field () local tag=$(echo "$5" | ${PYTHON} -c ' import re,sys for line in sys.stdin.readlines(): - print re.subn(r"\s*(struct|union)\s+(compat_)?(\w+)\s.*", r"\3", line)[0].rstrip() + sys.stdout.write(re.subn(r"\s*(struct|union)\s+(compat_)?(\w+)\s.*", r"\3", line)[0].rstrip() + "\n") ') echo " \\" printf %s "${1}XLAT_$tag(&(_d_)->$3, &(_s_)->$3);" -- 2.16.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |