File build-python3-conversion.patch of Package xen.17645

Index: xen-4.13.0-testing/Config.mk
===================================================================
--- xen-4.13.0-testing.orig/Config.mk
+++ xen-4.13.0-testing/Config.mk
@@ -82,7 +82,7 @@ EXTRA_INCLUDES += $(EXTRA_PREFIX)/includ
 EXTRA_LIB += $(EXTRA_PREFIX)/lib
 endif
 
-PYTHON      ?= python
+PYTHON      ?= python3
 PYTHON_PREFIX_ARG ?= --prefix="$(prefix)"
 # The above requires that prefix contains *no spaces*. This variable is here
 # to permit the user to set PYTHON_PREFIX_ARG to '' to workaround this bug:
Index: xen-4.13.0-testing/tools/configure
===================================================================
--- xen-4.13.0-testing.orig/tools/configure
+++ xen-4.13.0-testing/tools/configure
@@ -6926,7 +6926,7 @@ then
 fi;;
 esac
 if test -z "$PYTHON"; then :
-  for ac_prog in python python3 python2
+  for ac_prog in python3 python python2
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -7065,15 +7065,15 @@ if test x"${PYTHONPATH}" = x"no"
 then
     as_fn_error $? "Unable to find $PYTHON, please install $PYTHON" "$LINENO" 5
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for python version >= 2.6 " >&5
-$as_echo_n "checking for python version >= 2.6 ... " >&6; }
-`$PYTHON -c 'import sys; sys.exit(eval("sys.version_info < (2, 6)"))'`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for python3 version >= 3.0 " >&5
+$as_echo_n "checking for python3 version >= 3.0 ... " >&6; }
+`$PYTHON -c 'import sys; sys.exit(eval("sys.version_info < (3, 0)"))'`
 if test "$?" != "0"
 then
     python_version=`$PYTHON -V 2>&1`
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-    as_fn_error $? "$python_version is too old, minimum required version is 2.6" "$LINENO" 5
+    as_fn_error $? "$python_version is too old, minimum required version is 3.0" "$LINENO" 5
 else
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
Index: xen-4.13.0-testing/tools/python/test.py
===================================================================
--- xen-4.13.0-testing.orig/tools/python/test.py
+++ xen-4.13.0-testing/tools/python/test.py
@@ -1,4 +1,4 @@
-#! /usr/bin/env python2.3
+#!/usr/bin/python3
 ##############################################################################
 #
 # Copyright (c) 2001, 2002 Zope Corporation and Contributors.
@@ -289,9 +289,9 @@ class ImmediateTestResult(unittest._Text
     def stopTest(self, test):
         self._testtimes[test] = time.time() - self._testtimes[test]
         if gc.garbage:
-            print "The following test left garbage:"
-            print test
-            print gc.garbage
+            print("The following test left garbage:")
+            print(test)
+            print(gc.garbage)
             # XXX Perhaps eat the garbage here, so that the garbage isn't
             #     printed for every subsequent test.
 
@@ -301,23 +301,23 @@ class ImmediateTestResult(unittest._Text
                              and
                              t not in self._threads)]
         if new_threads:
-            print "The following test left new threads behind:"
-            print test
-            print "New thread(s):", new_threads
+            print("The following test left new threads behind:")
+            print(test)
+            print("New thread(s):", new_threads)
 
     def print_times(self, stream, count=None):
-        results = self._testtimes.items()
+        results = list(self._testtimes.items())
         results.sort(lambda x, y: cmp(y[1], x[1]))
         if count:
             n = min(count, len(results))
             if n:
-                print >>stream, "Top %d longest tests:" % n
+                print("Top %d longest tests:" % n, file=stream)
         else:
             n = len(results)
         if not n:
             return
         for i in range(n):
-            print >>stream, "%6dms" % int(results[i][1] * 1000), results[i][0]
+            print("%6dms" % int(results[i][1] * 1000), results[i][0], file=stream)
 
     def _print_traceback(self, msg, err, test, errlist):
         if self.showAll or self.dots or self._progress:
@@ -369,7 +369,7 @@ class ImmediateTestResult(unittest._Text
         if self._progress:
             self.stream.write("\r")
         if self._debug:
-            raise err[0], err[1], err[2]
+            raise err[0](err[1]).with_traceback(err[2])
         self._print_traceback("Error in test %s" % test, err,
                               test, self.errors)
 
@@ -377,7 +377,7 @@ class ImmediateTestResult(unittest._Text
         if self._progress:
             self.stream.write("\r")
         if self._debug:
-            raise err[0], err[1], err[2]
+            raise err[0](err[1]).with_traceback(err[2])
         self._print_traceback("Failure in test %s" % test, err,
                               test, self.failures)
 
@@ -480,11 +480,11 @@ class PathInit:
         kind = functional and "FUNCTIONAL" or "UNIT"
         if libdir:
             extra = os.path.join(self.org_cwd, libdir)
-            print "Running %s tests from %s" % (kind, extra)
+            print("Running %s tests from %s" % (kind, extra))
             self.libdir = extra
             sys.path.insert(0, extra)
         else:
-            print "Running %s tests from %s" % (kind, self.cwd)
+            print("Running %s tests from %s" % (kind, self.cwd))
         # Make sure functional tests find ftesting.zcml
         if functional:
             config_file = 'ftesting.zcml'
@@ -492,7 +492,7 @@ class PathInit:
                 # We chdired into build, so ftesting.zcml is in the
                 # parent directory
                 config_file = os.path.join('..', 'ftesting.zcml')
-            print "Parsing %s" % config_file
+            print("Parsing %s" % config_file)
             from zope.app.tests.functional import FunctionalTestSetup
             FunctionalTestSetup(config_file)
 
@@ -530,7 +530,7 @@ class TestFileFinder:
         if not "__init__.py" in files:
             if not files or files == ["CVS"]:
                 return
-            print "not a package", dir
+            print("not a package", dir)
             return
 
         # Put matching files in matches.  If matches is non-empty,
@@ -549,9 +549,9 @@ class TestFileFinder:
             __import__(pkg)
         # We specifically do not want to catch ImportError since that's useful
         # information to know when running the tests.
-        except RuntimeError, e:
+        except RuntimeError as e:
             if VERBOSE:
-                print "skipping %s because: %s" % (pkg, e)
+                print("skipping %s because: %s" % (pkg, e))
             return
         else:
             self.files.extend(matches)
@@ -698,16 +698,16 @@ class TrackRefs:
         ct = [(type2count[t] - self.type2count.get(t, 0),
                type2all[t] - self.type2all.get(t, 0),
                t)
-              for t in type2count.iterkeys()]
+              for t in type2count.keys()]
         ct.sort()
         ct.reverse()
         printed = False
         for delta1, delta2, t in ct:
             if delta1 or delta2:
                 if not printed:
-                    print "%-55s %8s %8s" % ('', 'insts', 'refs')
+                    print("%-55s %8s %8s" % ('', 'insts', 'refs'))
                     printed = True
-                print "%-55s %8d %8d" % (t, delta1, delta2)
+                print("%-55s %8d %8d" % (t, delta1, delta2))
 
         self.type2count = type2count
         self.type2all = type2all
@@ -729,25 +729,25 @@ def runner(files, test_filter, debug):
         if TIMESFN:
             r.print_times(open(TIMESFN, "w"))
             if VERBOSE:
-                print "Wrote timing data to", TIMESFN
+                print("Wrote timing data to", TIMESFN)
         if TIMETESTS:
             r.print_times(sys.stdout, TIMETESTS)
     except:
         if DEBUGGER:
-            print "%s:" % (sys.exc_info()[0], )
-            print sys.exc_info()[1]
+            print("%s:" % (sys.exc_info()[0], ))
+            print(sys.exc_info()[1])
             pdb.post_mortem(sys.exc_info()[2])
         else:
             raise
 
 def remove_stale_bytecode(arg, dirname, names):
-    names = map(os.path.normcase, names)
+    names = list(map(os.path.normcase, names))
     for name in names:
         if name.endswith(".pyc") or name.endswith(".pyo"):
             srcname = name[:-1]
             if srcname not in names:
                 fullname = os.path.join(dirname, name)
-                print "Removing stale bytecode file", fullname
+                print("Removing stale bytecode file", fullname)
                 os.unlink(fullname)
 
 def main(module_filter, test_filter, libdir):
@@ -773,12 +773,12 @@ def main(module_filter, test_filter, lib
             runner(files, test_filter, DEBUG)
             gc.collect()
             if gc.garbage:
-                print "GARBAGE:", len(gc.garbage), gc.garbage
+                print("GARBAGE:", len(gc.garbage), gc.garbage)
                 return
             if REFCOUNT:
                 prev = rc
                 rc = sys.gettotalrefcount()
-                print "totalrefcount=%-8d change=%-6d" % (rc, rc - prev)
+                print("totalrefcount=%-8d change=%-6d" % (rc, rc - prev))
                 track.update()
     else:
         runner(files, test_filter, DEBUG)
@@ -801,7 +801,7 @@ def configure_logging():
     else:
         logging.basicConfig()
 
-    if os.environ.has_key("LOGGING"):
+    if "LOGGING" in os.environ:
         level = int(os.environ["LOGGING"])
         logging.getLogger().setLevel(level)
 
@@ -865,8 +865,8 @@ def process_args(argv=None):
 
     # import the config file
     if os.path.isfile(config_filename):
-        print 'Configuration file found.'
-        execfile(config_filename, globals())
+        print('Configuration file found.')
+        exec(compile(open(config_filename).read(), config_filename, 'exec'), globals())
 
 
     try:
@@ -884,9 +884,9 @@ def process_args(argv=None):
     # fixme: add the long names
     # fixme: add the extra documentation
     # fixme: test for functional first!
-    except getopt.error, msg:
-        print msg
-        print "Try `python %s -h' for more information." % argv[0]
+    except getopt.error as msg:
+        print(msg)
+        print("Try `python %s -h' for more information." % argv[0])
         sys.exit(2)
 
     for k, v in opts:
@@ -916,13 +916,13 @@ def process_args(argv=None):
             RUN_UNIT = True
             RUN_FUNCTIONAL = True
         elif k in ("-h", "--help"):
-            print __doc__
+            print(__doc__)
             sys.exit(0)
         elif k in ("-g", "--gc-threshold"):
             GC_THRESHOLD = int(v)
         elif k in ("-G", "--gc-option"):
             if not v.startswith("DEBUG_"):
-                print "-G argument must be DEBUG_ flag, not", repr(v)
+                print("-G argument must be DEBUG_ flag, not", repr(v))
                 sys.exit(1)
             GC_FLAGS.append(v)
         elif k in ('-k', '--keepbytecode'):
@@ -968,30 +968,30 @@ def process_args(argv=None):
         import pychecker.checker
 
     if REFCOUNT and not hasattr(sys, "gettotalrefcount"):
-        print "-r ignored, because it needs a debug build of Python"
+        print("-r ignored, because it needs a debug build of Python")
         REFCOUNT = False
 
     if sys.version_info < ( 2,3,2 ):
-        print """\
+        print("""\
         ERROR: Your python version is not supported by Zope3.
-        Zope3 needs Python 2.3.2 or greater. You are running:""" + sys.version
+        Zope3 needs Python 2.3.2 or greater. You are running:""" + sys.version)
         sys.exit(1)
 
     if GC_THRESHOLD is not None:
         if GC_THRESHOLD == 0:
             gc.disable()
-            print "gc disabled"
+            print("gc disabled")
         else:
             gc.set_threshold(GC_THRESHOLD)
-            print "gc threshold:", gc.get_threshold()
+            print("gc threshold:", gc.get_threshold())
 
     if GC_FLAGS:
         val = 0
         for flag in GC_FLAGS:
             v = getattr(gc, flag, None)
             if v is None:
-                print "Unknown gc flag", repr(flag)
-                print gc.set_debug.__doc__
+                print("Unknown gc flag", repr(flag))
+                print(gc.set_debug.__doc__)
                 sys.exit(1)
             val |= v
         gcdebug |= v
@@ -1009,10 +1009,10 @@ def process_args(argv=None):
         if BUILD_INPLACE:
             cmd += "_ext -i"
         if VERBOSE:
-            print cmd
+            print(cmd)
         sts = os.system(cmd)
         if sts:
-            print "Build failed", hex(sts)
+            print("Build failed", hex(sts))
             sys.exit(1)
 
     k = []
@@ -1027,9 +1027,9 @@ def process_args(argv=None):
         if VERBOSE:
             kind = functional and "FUNCTIONAL" or "UNIT"
             if LEVEL == 0:
-                print "Running %s tests at all levels" % kind
+                print("Running %s tests at all levels" % kind)
             else:
-                print "Running %s tests at level %d" % (kind, LEVEL)
+                print("Running %s tests at level %d" % (kind, LEVEL))
 
 # This was to avoid functional tests outside of z3, but this doesn't really
 # work right.
@@ -1073,20 +1073,20 @@ def process_args(argv=None):
                               globals=globals(), locals=vars())
                 r = tracer.results()
                 path = "/tmp/trace.%s" % os.getpid()
-                import cPickle
+                import pickle
                 f = open(path, "wb")
-                cPickle.dump(r, f)
+                pickle.dump(r, f)
                 f.close()
-                print path
+                print(path)
                 r.write_results(show_missing=True,
                                 summary=True, coverdir=coverdir)
             else:
                 bad = main(MODULE_FILTER, TEST_FILTER, LIBDIR)
                 if bad:
                     sys.exit(1)
-        except ImportError, err:
-            print err
-            print sys.path
+        except ImportError as err:
+            print(err)
+            print(sys.path)
             raise
 
 
Index: xen-4.13.0-testing/tools/configure.ac
===================================================================
--- xen-4.13.0-testing.orig/tools/configure.ac
+++ xen-4.13.0-testing/tools/configure.ac
@@ -337,14 +337,14 @@ case "$host_os" in
   freebsd*) ;;
   *) AX_PATH_PROG_OR_FAIL([BASH], [bash]);;
 esac
-AS_IF([test -z "$PYTHON"], [AC_CHECK_PROGS([PYTHON], [python python3 python2], err)])
+AS_IF([test -z "$PYTHON"], [AC_CHECK_PROGS([PYTHON], [python3 python python2], err)])
 AS_IF([test "$PYTHON" = "err"], [AC_MSG_ERROR([No python interpreter found])])
 AS_IF([echo "$PYTHON" | grep -q "^/"], [], [AC_PATH_PROG([PYTHON], [$PYTHON])])
 PYTHONPATH=$PYTHON
 PYTHON=`basename $PYTHONPATH`
 
 AX_PATH_PROG_OR_FAIL([PYTHONPATH], [$PYTHON])
-AX_CHECK_PYTHON_VERSION([2], [6])
+AX_CHECK_PYTHON_VERSION([3], [0])
 
 AS_IF([test "$cross_compiling" != yes], [
     AX_CHECK_PYTHON_DEVEL()
Index: xen-4.13.0-testing/tools/libxl/idl.py
===================================================================
--- xen-4.13.0-testing.orig/tools/libxl/idl.py
+++ xen-4.13.0-testing/tools/libxl/idl.py
@@ -271,7 +271,7 @@ class KeyedUnion(Aggregate):
         if not isinstance(keyvar_type, Enumeration):
             raise ValueError
 
-        kv_kwargs = dict([(x.lstrip('keyvar_'),y) for (x,y) in kwargs.items() if x.startswith('keyvar_')])
+        kv_kwargs = dict([(x.lstrip('keyvar_'),y) for (x,y) in list(kwargs.items()) if x.startswith('keyvar_')])
         
         self.keyvar = Field(keyvar_type, keyvar_name, **kv_kwargs)
 
@@ -317,7 +317,7 @@ class Array(Type):
         kwargs.setdefault('json_parse_type', 'JSON_ARRAY')
         Type.__init__(self, namespace=elem_type.namespace, typename=elem_type.rawname + " *", **kwargs)
 
-        lv_kwargs = dict([(x.lstrip('lenvar_'),y) for (x,y) in kwargs.items() if x.startswith('lenvar_')])
+        lv_kwargs = dict([(x.lstrip('lenvar_'),y) for (x,y) in list(kwargs.items()) if x.startswith('lenvar_')])
 
         self.lenvar = Field(integer, lenvar_name, **lv_kwargs)
         self.elem_type = elem_type
@@ -353,7 +353,7 @@ def parse(f):
     globs = {}
     locs = OrderedDict()
 
-    for n,t in globals().items():
+    for n,t in list(globals().items()):
         if isinstance(t, Type):
             globs[n] = t
         elif isinstance(t,type(object)) and issubclass(t, Type):
Index: xen-4.13.0-testing/tools/libxl/gentest.py
===================================================================
--- xen-4.13.0-testing.orig/tools/libxl/gentest.py
+++ xen-4.13.0-testing/tools/libxl/gentest.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 from __future__ import print_function
 
Index: xen-4.13.0-testing/tools/libxl/gentypes.py
===================================================================
--- xen-4.13.0-testing.orig/tools/libxl/gentypes.py
+++ xen-4.13.0-testing/tools/libxl/gentypes.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 from __future__ import print_function
 
Index: xen-4.13.0-testing/tools/ocaml/libs/xentoollog/genlevels.py
===================================================================
--- xen-4.13.0-testing.orig/tools/ocaml/libs/xentoollog/genlevels.py
+++ xen-4.13.0-testing/tools/ocaml/libs/xentoollog/genlevels.py
@@ -89,7 +89,7 @@ def gen_c(level):
 def autogen_header(open_comment, close_comment):
     s = open_comment + " AUTO-GENERATED FILE DO NOT EDIT " + close_comment + "\n"
     s += open_comment + " autogenerated by \n"
-    s += reduce(lambda x,y: x + " ", range(len(open_comment + " ")), "")
+    s += reduce(lambda x,y: x + " ", list(range(len(open_comment + " "))), "")
     s += "%s" % " ".join(sys.argv)
     s += "\n " + close_comment + "\n\n"
     return s
Index: xen-4.13.0-testing/tools/include/xen-foreign/mkheader.py
===================================================================
--- xen-4.13.0-testing.orig/tools/include/xen-foreign/mkheader.py
+++ xen-4.13.0-testing/tools/include/xen-foreign/mkheader.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 import sys, re;
 from structs import unions, structs, defines;
Index: xen-4.13.0-testing/tools/include/xen-foreign/mkchecker.py
===================================================================
--- xen-4.13.0-testing.orig/tools/include/xen-foreign/mkchecker.py
+++ xen-4.13.0-testing/tools/include/xen-foreign/mkchecker.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 import sys;
 from structs import structs, compat_arches;
Index: xen-4.13.0-testing/xen/tools/gen-cpuid.py
===================================================================
--- xen-4.13.0-testing.orig/xen/tools/gen-cpuid.py
+++ xen-4.13.0-testing/xen/tools/gen-cpuid.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 # -*- coding: utf-8 -*-
 
 import sys, os, re
@@ -135,7 +135,7 @@ def crunch_numbers(state):
     common_1d = (FPU, VME, DE, PSE, TSC, MSR, PAE, MCE, CX8, APIC,
                  MTRR, PGE, MCA, CMOV, PAT, PSE36, MMX, FXSR)
 
-    state.known = featureset_to_uint32s(state.names.keys(), nr_entries)
+    state.known = featureset_to_uint32s(list(state.names.keys()), nr_entries)
     state.common_1d = featureset_to_uint32s(common_1d, 1)[0]
     state.special = featureset_to_uint32s(state.raw_special, nr_entries)
     state.pv = featureset_to_uint32s(state.raw_pv, nr_entries)
@@ -317,11 +317,11 @@ def crunch_numbers(state):
 
         state.deep_deps[feat] = seen[1:]
 
-    state.deep_features = featureset_to_uint32s(deps.keys(), nr_entries)
-    state.nr_deep_deps = len(state.deep_deps.keys())
+    state.deep_features = featureset_to_uint32s(list(deps.keys()), nr_entries)
+    state.nr_deep_deps = len(list(state.deep_deps.keys()))
 
     try:
-        _tmp = state.deep_deps.iteritems()
+        _tmp = state.deep_deps.items()
     except AttributeError:
         _tmp = state.deep_deps.items()
 
@@ -329,10 +329,10 @@ def crunch_numbers(state):
         state.deep_deps[k] = featureset_to_uint32s(v, nr_entries)
 
     # Calculate the bitfield name declarations
-    for word in xrange(nr_entries):
+    for word in range(nr_entries):
 
         names = []
-        for bit in xrange(32):
+        for bit in range(32):
 
             name = state.names.get(word * 32 + bit, "")
 
Index: xen-4.13.0-testing/xen/tools/compat-build-source.py
===================================================================
--- xen-4.13.0-testing.orig/xen/tools/compat-build-source.py
+++ xen-4.13.0-testing/xen/tools/compat-build-source.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 
 import re,sys
 
Index: xen-4.13.0-testing/xen/tools/compat-build-header.py
===================================================================
--- xen-4.13.0-testing.orig/xen/tools/compat-build-header.py
+++ xen-4.13.0-testing/xen/tools/compat-build-header.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 
 import re,sys
 
Index: xen-4.13.0-testing/xen/tools/fig-to-oct.py
===================================================================
--- xen-4.13.0-testing.orig/xen/tools/fig-to-oct.py
+++ xen-4.13.0-testing/xen/tools/fig-to-oct.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 import sys
 
 chars_per_line = 18
Index: xen-4.13.0-testing/tools/misc/xensymoops
===================================================================
--- xen-4.13.0-testing.orig/tools/misc/xensymoops
+++ xen-4.13.0-testing/tools/misc/xensymoops
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
 
 # An oops analyser for Xen
 # Usage: xensymoops path-to-xen.s < oops-message
@@ -43,12 +43,12 @@ def read_oops():
     return (eip_addr, stack_addresses)
 
 def usage():
-    print >> sys.stderr, """Usage: %s path-to-asm < oops-msg
+    print("""Usage: %s path-to-asm < oops-msg
     The oops message should be fed to the standard input.  The
     command-line argument specifies the path to the Xen assembly dump
     produced by \"make debug\".  The location of EIP and the backtrace
     will be output to standard output.
-    """ % sys.argv[0]
+    """ % sys.argv[0], file=sys.stderr)
     sys.exit()
 
 ##### main
@@ -99,7 +99,7 @@ while True:
 
     # if this address was seen as a potential code address in the backtrace then
     # record it in the backtrace list
-    if stk_addrs.has_key(address):
+    if address in stk_addrs:
         backtrace.append((stk_addrs[address], address, func))
 
     # if this was the address that EIP...
@@ -107,12 +107,12 @@ while True:
         eip_func = func
 
 
-print "EIP %s in function %s" % (eip_addr, eip_func)
-print "Backtrace:"
+print("EIP %s in function %s" % (eip_addr, eip_func))
+print("Backtrace:")
 
 # sorting will order primarily by the first element of each tuple,
 # i.e. the order in the original oops
 backtrace.sort()
 
 for (i, a, f) in backtrace:
-    print "%s in function %s" % ( a, f )
+    print("%s in function %s" % ( a, f ))
openSUSE Build Service is sponsored by