[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] [PATCH] xen/tools: support Python 2 and Python 3
On 22/02/18 05:52, Doug Goldstein
wrote:
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>
To the overall effect, this is definitely a good thing. Some
queries however...
---
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>
---
xen/tools/compat-build-header.py | 2 +-
xen/tools/compat-build-source.py | 2 +-
xen/tools/gen-cpuid.py | 37 +++++++++++++++++++++++++++----------
xen/tools/get-fields.sh | 2 +-
4 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/xen/tools/compat-build-header.py b/xen/tools/compat-build-header.py
index 32421b645b..546371225d 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()
+ sys.stdout.write(line.rstrip() + '\n')
Is there anything wrong with print(line.rstrip()) which is the more
common way of doing this?
diff --git a/xen/tools/compat-build-source.py b/xen/tools/compat-build-source.py
index 595bc3ff58..8101290ebe 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()
+ sys.stdout.write(line.rstrip() + '\n')
diff --git a/xen/tools/gen-cpuid.py b/xen/tools/gen-cpuid.py
index 613b909c3d..d64f257816 100755
--- a/xen/tools/gen-cpuid.py
+++ b/xen/tools/gen-cpuid.py
@@ -3,6 +3,13 @@
import sys, os, re
+if (sys.version_info > (3, 0)):
+ def long(x):
+ return x
Strictly speaking, return int(x), however...
+
+ def xrange(x):
+ return range(x)
+
class Fail(Exception):
pass
@@ -98,13 +105,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 = long(0)
for f in fs:
- bitmap |= 1L << f
+ bitmap |= long(1) << f
Having tested this out, I think the L suffixes can just be dropped:
Python 2.4.3 (#1, Sep 21 2011, 20:06:00)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-51)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> bitmap = 0
>>> type(bitmap)
<type 'int'>
>>> for x in xrange(80): bitmap |= 1 << x
...
>>> type(bitmap)
<type 'long'>
>>>
I don't recall why I wrote it like this, but I don't think its
necessary. As a result, you shouldn't need to define long above.
~Andrew
|
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|