python: futurize -f libfuturize.fixes.fix_print_with_import

Change all Python code to use print as a function.

This is necessary for Python 3 compatibility.

Done using:

  $ py=$( (g grep -l -E '^#!.*python';find -name '*.py' -printf '%P\n';) | \
    sort -u | grep -v README.sh4)
  $ futurize -w -f libfuturize.fixes.fix_print_with_import $py

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Acked-by: Fam Zheng <famz@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20180608122952.2009-2-ehabkost@redhat.com>
[ehabkost: fixup tests/docker/docker.py]
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
diff --git a/scripts/analyse-9p-simpletrace.py b/scripts/analyse-9p-simpletrace.py
index 3c3dee4..710e01a 100755
--- a/scripts/analyse-9p-simpletrace.py
+++ b/scripts/analyse-9p-simpletrace.py
@@ -3,6 +3,7 @@
 # Usage: ./analyse-9p-simpletrace <trace-events> <trace-pid>
 #
 # Author: Harsh Prateek Bora
+from __future__ import print_function
 import os
 import simpletrace
 
@@ -79,135 +80,135 @@
 
 class VirtFSRequestTracker(simpletrace.Analyzer):
         def begin(self):
-                print "Pretty printing 9p simpletrace log ..."
+                print("Pretty printing 9p simpletrace log ...")
 
         def v9fs_rerror(self, tag, id, err):
-                print "RERROR (tag =", tag, ", id =", symbol_9p[id], ", err = \"", os.strerror(err), "\")"
+                print("RERROR (tag =", tag, ", id =", symbol_9p[id], ", err = \"", os.strerror(err), "\")")
 
         def v9fs_version(self, tag, id, msize, version):
-                print "TVERSION (tag =", tag, ", msize =", msize, ", version =", version, ")"
+                print("TVERSION (tag =", tag, ", msize =", msize, ", version =", version, ")")
 
         def v9fs_version_return(self, tag, id, msize, version):
-                print "RVERSION (tag =", tag, ", msize =", msize, ", version =", version, ")"
+                print("RVERSION (tag =", tag, ", msize =", msize, ", version =", version, ")")
 
         def v9fs_attach(self, tag, id, fid, afid, uname, aname):
-                print "TATTACH (tag =", tag, ", fid =", fid, ", afid =", afid, ", uname =", uname, ", aname =", aname, ")"
+                print("TATTACH (tag =", tag, ", fid =", fid, ", afid =", afid, ", uname =", uname, ", aname =", aname, ")")
 
         def v9fs_attach_return(self, tag, id, type, version, path):
-                print "RATTACH (tag =", tag, ", qid={type =", type, ", version =", version, ", path =", path, "})"
+                print("RATTACH (tag =", tag, ", qid={type =", type, ", version =", version, ", path =", path, "})")
 
         def v9fs_stat(self, tag, id, fid):
-                print "TSTAT (tag =", tag, ", fid =", fid, ")"
+                print("TSTAT (tag =", tag, ", fid =", fid, ")")
 
         def v9fs_stat_return(self, tag, id, mode, atime, mtime, length):
-                print "RSTAT (tag =", tag, ", mode =", mode, ", atime =", atime, ", mtime =", mtime, ", length =", length, ")"
+                print("RSTAT (tag =", tag, ", mode =", mode, ", atime =", atime, ", mtime =", mtime, ", length =", length, ")")
 
         def v9fs_getattr(self, tag, id, fid, request_mask):
-                print "TGETATTR (tag =", tag, ", fid =", fid, ", request_mask =", hex(request_mask), ")"
+                print("TGETATTR (tag =", tag, ", fid =", fid, ", request_mask =", hex(request_mask), ")")
 
         def v9fs_getattr_return(self, tag, id, result_mask, mode, uid, gid):
-                print "RGETATTR (tag =", tag, ", result_mask =", hex(result_mask), ", mode =", oct(mode), ", uid =", uid, ", gid =", gid, ")"
+                print("RGETATTR (tag =", tag, ", result_mask =", hex(result_mask), ", mode =", oct(mode), ", uid =", uid, ", gid =", gid, ")")
 
         def v9fs_walk(self, tag, id, fid, newfid, nwnames):
-                print "TWALK (tag =", tag, ", fid =", fid, ", newfid =", newfid, ", nwnames =", nwnames, ")"
+                print("TWALK (tag =", tag, ", fid =", fid, ", newfid =", newfid, ", nwnames =", nwnames, ")")
 
         def v9fs_walk_return(self, tag, id, nwnames, qids):
-                print "RWALK (tag =", tag, ", nwnames =", nwnames, ", qids =", hex(qids), ")"
+                print("RWALK (tag =", tag, ", nwnames =", nwnames, ", qids =", hex(qids), ")")
 
         def v9fs_open(self, tag, id, fid, mode):
-                print "TOPEN (tag =", tag, ", fid =", fid, ", mode =", oct(mode), ")"
+                print("TOPEN (tag =", tag, ", fid =", fid, ", mode =", oct(mode), ")")
 
         def v9fs_open_return(self, tag, id, type, version, path, iounit):
-                print "ROPEN (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, iounit =", iounit, ")"
+                print("ROPEN (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, iounit =", iounit, ")")
 
         def v9fs_lcreate(self, tag, id, dfid, flags, mode, gid):
-                print "TLCREATE (tag =", tag, ", dfid =", dfid, ", flags =", oct(flags), ", mode =", oct(mode), ", gid =", gid, ")"
+                print("TLCREATE (tag =", tag, ", dfid =", dfid, ", flags =", oct(flags), ", mode =", oct(mode), ", gid =", gid, ")")
 
         def v9fs_lcreate_return(self, tag, id, type, version, path, iounit):
-                print "RLCREATE (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, iounit =", iounit, ")"
+                print("RLCREATE (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, iounit =", iounit, ")")
 
         def v9fs_fsync(self, tag, id, fid, datasync):
-                print "TFSYNC (tag =", tag, ", fid =", fid, ", datasync =", datasync, ")"
+                print("TFSYNC (tag =", tag, ", fid =", fid, ", datasync =", datasync, ")")
 
         def v9fs_clunk(self, tag, id, fid):
-                print "TCLUNK (tag =", tag, ", fid =", fid, ")"
+                print("TCLUNK (tag =", tag, ", fid =", fid, ")")
 
         def v9fs_read(self, tag, id, fid, off, max_count):
-                print "TREAD (tag =", tag, ", fid =", fid, ", off =", off, ", max_count =", max_count, ")"
+                print("TREAD (tag =", tag, ", fid =", fid, ", off =", off, ", max_count =", max_count, ")")
 
         def v9fs_read_return(self, tag, id, count, err):
-                print "RREAD (tag =", tag, ", count =", count, ", err =", err, ")"
+                print("RREAD (tag =", tag, ", count =", count, ", err =", err, ")")
 
         def v9fs_readdir(self, tag, id, fid, offset, max_count):
-                print "TREADDIR (tag =", tag, ", fid =", fid, ", offset =", offset, ", max_count =", max_count, ")"
+                print("TREADDIR (tag =", tag, ", fid =", fid, ", offset =", offset, ", max_count =", max_count, ")")
 
         def v9fs_readdir_return(self, tag, id, count, retval):
-                print "RREADDIR (tag =", tag, ", count =", count, ", retval =", retval, ")"
+                print("RREADDIR (tag =", tag, ", count =", count, ", retval =", retval, ")")
 
         def v9fs_write(self, tag, id, fid, off, count, cnt):
-                print "TWRITE (tag =", tag, ", fid =", fid, ", off =", off, ", count =", count, ", cnt =", cnt, ")"
+                print("TWRITE (tag =", tag, ", fid =", fid, ", off =", off, ", count =", count, ", cnt =", cnt, ")")
 
         def v9fs_write_return(self, tag, id, total, err):
-                print "RWRITE (tag =", tag, ", total =", total, ", err =", err, ")"
+                print("RWRITE (tag =", tag, ", total =", total, ", err =", err, ")")
 
         def v9fs_create(self, tag, id, fid, name, perm, mode):
-                print "TCREATE (tag =", tag, ", fid =", fid, ", perm =", oct(perm), ", name =", name, ", mode =", oct(mode), ")"
+                print("TCREATE (tag =", tag, ", fid =", fid, ", perm =", oct(perm), ", name =", name, ", mode =", oct(mode), ")")
 
         def v9fs_create_return(self, tag, id, type, version, path, iounit):
-                print "RCREATE (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, iounit =", iounit, ")"
+                print("RCREATE (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, iounit =", iounit, ")")
 
         def v9fs_symlink(self, tag, id, fid, name, symname, gid):
-                print "TSYMLINK (tag =", tag, ", fid =", fid, ", name =", name, ", symname =", symname, ", gid =", gid, ")"
+                print("TSYMLINK (tag =", tag, ", fid =", fid, ", name =", name, ", symname =", symname, ", gid =", gid, ")")
 
         def v9fs_symlink_return(self, tag, id, type, version, path):
-                print "RSYMLINK (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "})"
+                print("RSYMLINK (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "})")
 
         def v9fs_flush(self, tag, id, flush_tag):
-                print "TFLUSH (tag =", tag, ", flush_tag =", flush_tag, ")"
+                print("TFLUSH (tag =", tag, ", flush_tag =", flush_tag, ")")
 
         def v9fs_link(self, tag, id, dfid, oldfid, name):
-                print "TLINK (tag =", tag, ", dfid =", dfid, ", oldfid =", oldfid, ", name =", name, ")"
+                print("TLINK (tag =", tag, ", dfid =", dfid, ", oldfid =", oldfid, ", name =", name, ")")
 
         def v9fs_remove(self, tag, id, fid):
-                print "TREMOVE (tag =", tag, ", fid =", fid, ")"
+                print("TREMOVE (tag =", tag, ", fid =", fid, ")")
 
         def v9fs_wstat(self, tag, id, fid, mode, atime, mtime):
-                print "TWSTAT (tag =", tag, ", fid =", fid, ", mode =", oct(mode), ", atime =", atime, "mtime =", mtime, ")"
+                print("TWSTAT (tag =", tag, ", fid =", fid, ", mode =", oct(mode), ", atime =", atime, "mtime =", mtime, ")")
 
         def v9fs_mknod(self, tag, id, fid, mode, major, minor):
-                print "TMKNOD (tag =", tag, ", fid =", fid, ", mode =", oct(mode), ", major =", major, ", minor =", minor, ")"
+                print("TMKNOD (tag =", tag, ", fid =", fid, ", mode =", oct(mode), ", major =", major, ", minor =", minor, ")")
 
         def v9fs_lock(self, tag, id, fid, type, start, length):
-                print "TLOCK (tag =", tag, ", fid =", fid, "type =", type, ", start =", start, ", length =", length, ")"
+                print("TLOCK (tag =", tag, ", fid =", fid, "type =", type, ", start =", start, ", length =", length, ")")
 
         def v9fs_lock_return(self, tag, id, status):
-                print "RLOCK (tag =", tag, ", status =", status, ")"
+                print("RLOCK (tag =", tag, ", status =", status, ")")
 
         def v9fs_getlock(self, tag, id, fid, type, start, length):
-                print "TGETLOCK (tag =", tag, ", fid =", fid, "type =", type, ", start =", start, ", length =", length, ")"
+                print("TGETLOCK (tag =", tag, ", fid =", fid, "type =", type, ", start =", start, ", length =", length, ")")
 
         def v9fs_getlock_return(self, tag, id, type, start, length, proc_id):
-                print "RGETLOCK (tag =", tag, "type =", type, ", start =", start, ", length =", length, ", proc_id =", proc_id,  ")"
+                print("RGETLOCK (tag =", tag, "type =", type, ", start =", start, ", length =", length, ", proc_id =", proc_id,  ")")
 
         def v9fs_mkdir(self, tag, id, fid, name, mode, gid):
-                print "TMKDIR (tag =", tag, ", fid =", fid, ", name =", name, ", mode =", mode, ", gid =", gid, ")"
+                print("TMKDIR (tag =", tag, ", fid =", fid, ", name =", name, ", mode =", mode, ", gid =", gid, ")")
 
         def v9fs_mkdir_return(self, tag, id, type, version, path, err):
-                print "RMKDIR (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, err =", err, ")"
+                print("RMKDIR (tag =", tag,  ", qid={type =", type, ", version =", version, ", path =", path, "}, err =", err, ")")
 
         def v9fs_xattrwalk(self, tag, id, fid, newfid, name):
-                print "TXATTRWALK (tag =", tag, ", fid =", fid, ", newfid =", newfid, ", xattr name =", name, ")"
+                print("TXATTRWALK (tag =", tag, ", fid =", fid, ", newfid =", newfid, ", xattr name =", name, ")")
 
         def v9fs_xattrwalk_return(self, tag, id, size):
-                print "RXATTRWALK (tag =", tag, ", xattrsize  =", size, ")"
+                print("RXATTRWALK (tag =", tag, ", xattrsize  =", size, ")")
 
         def v9fs_xattrcreate(self, tag, id, fid, name, size, flags):
-                print "TXATTRCREATE (tag =", tag, ", fid =", fid, ", name =", name, ", xattrsize =", size, ", flags =", flags, ")"
+                print("TXATTRCREATE (tag =", tag, ", fid =", fid, ", name =", name, ", xattrsize =", size, ", flags =", flags, ")")
 
         def v9fs_readlink(self, tag, id, fid):
-                print "TREADLINK (tag =", tag, ", fid =", fid, ")"
+                print("TREADLINK (tag =", tag, ", fid =", fid, ")")
 
         def v9fs_readlink_return(self, tag, id, target):
-                print "RREADLINK (tag =", tag, ", target =", target, ")"
+                print("RREADLINK (tag =", tag, ", target =", target, ")")
 
 simpletrace.run(VirtFSRequestTracker())
diff --git a/scripts/analyse-locks-simpletrace.py b/scripts/analyse-locks-simpletrace.py
index 101e84d..352bc9c 100755
--- a/scripts/analyse-locks-simpletrace.py
+++ b/scripts/analyse-locks-simpletrace.py
@@ -6,6 +6,7 @@
 # Author: Alex Bennée <alex.bennee@linaro.org>
 #
 
+from __future__ import print_function
 import os
 import simpletrace
 import argparse
diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
index 88ff4ad..5c2010c 100755
--- a/scripts/analyze-migration.py
+++ b/scripts/analyze-migration.py
@@ -17,6 +17,7 @@
 # You should have received a copy of the GNU Lesser General Public
 # License along with this library; if not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import print_function
 import numpy as np
 import json
 import os
@@ -162,7 +163,7 @@
                     len = self.file.read64()
                     self.sizeinfo[self.name] = '0x%016x' % len
                     if self.write_memory:
-                        print self.name
+                        print(self.name)
                         mkdir_p('./' + os.path.dirname(self.name))
                         f = open('./' + self.name, "wb")
                         f.truncate(0)
@@ -588,7 +589,7 @@
     dump = MigrationDump(args.file)
 
     dump.read(desc_only = True)
-    print "desc.json"
+    print("desc.json")
     f = open("desc.json", "wb")
     f.truncate()
     f.write(jsonenc.encode(dump.vmsd_desc))
@@ -596,7 +597,7 @@
 
     dump.read(write_memory = True)
     dict = dump.getDict()
-    print "state.json"
+    print("state.json")
     f = open("state.json", "wb")
     f.truncate()
     f.write(jsonenc.encode(dict))
@@ -605,10 +606,10 @@
     dump = MigrationDump(args.file)
     dump.read(dump_memory = args.memory)
     dict = dump.getDict()
-    print jsonenc.encode(dict)
+    print(jsonenc.encode(dict))
 elif args.dump == "desc":
     dump = MigrationDump(args.file)
     dump.read(desc_only = True)
-    print jsonenc.encode(dump.vmsd_desc)
+    print(jsonenc.encode(dump.vmsd_desc))
 else:
     raise Exception("Please specify either -x, -d state or -d dump")
diff --git a/scripts/device-crash-test b/scripts/device-crash-test
index b3ce720..e6c233e 100755
--- a/scripts/device-crash-test
+++ b/scripts/device-crash-test
@@ -23,6 +23,7 @@
 Run QEMU with all combinations of -machine and -device types,
 check for crashes and unexpected errors.
 """
+from __future__ import print_function
 
 import sys
 import os
@@ -554,7 +555,7 @@
                 tc[k] = v
 
     if len(binariesToTest(args, tc)) == 0:
-        print >>sys.stderr, "No QEMU binary found"
+        print("No QEMU binary found", file=sys.stderr)
         parser.print_usage(sys.stderr)
         return 1
 
diff --git a/scripts/dump-guest-memory.py b/scripts/dump-guest-memory.py
index 276eebf..5a857ce 100644
--- a/scripts/dump-guest-memory.py
+++ b/scripts/dump-guest-memory.py
@@ -12,6 +12,7 @@
 This work is licensed under the terms of the GNU GPL, version 2 or later. See
 the COPYING file in the top-level directory.
 """
+from __future__ import print_function
 
 import ctypes
 import struct
diff --git a/scripts/kvm/kvm_flightrecorder b/scripts/kvm/kvm_flightrecorder
index 7fb1c2d..54a5674 100755
--- a/scripts/kvm/kvm_flightrecorder
+++ b/scripts/kvm/kvm_flightrecorder
@@ -32,6 +32,7 @@
 # consuming CPU cycles.  No disk I/O is performed since the ring buffer holds a
 # fixed-size in-memory trace.
 
+from __future__ import print_function
 import sys
 import os
 
@@ -77,8 +78,8 @@
         pass
 
 def usage():
-    print 'Usage: %s start [buffer_size_kb] | stop | dump | tail' % sys.argv[0]
-    print 'Control the KVM flight recorder tracing.'
+    print('Usage: %s start [buffer_size_kb] | stop | dump | tail' % sys.argv[0])
+    print('Control the KVM flight recorder tracing.')
     sys.exit(0)
 
 def main():
@@ -87,15 +88,15 @@
 
     cmd = sys.argv[1]
     if cmd == '--version':
-        print 'kvm_flightrecorder version 1.0'
+        print('kvm_flightrecorder version 1.0')
         sys.exit(0)
 
     if not os.path.isdir(tracing_dir):
-        print 'Unable to tracing debugfs directory, try:'
-        print 'mount -t debugfs none /sys/kernel/debug'
+        print('Unable to tracing debugfs directory, try:')
+        print('mount -t debugfs none /sys/kernel/debug')
         sys.exit(1)
     if not os.access(tracing_dir, os.W_OK):
-        print 'Unable to write to tracing debugfs directory, please run as root'
+        print('Unable to write to tracing debugfs directory, please run as root')
         sys.exit(1)
 
     if cmd == 'start':
@@ -105,16 +106,16 @@
             try:
                 buffer_size_kb = int(sys.argv[2])
             except ValueError:
-                print 'Invalid per-cpu trace buffer size in KB'
+                print('Invalid per-cpu trace buffer size in KB')
                 sys.exit(1)
             write_file(trace_path('buffer_size_kb'), str(buffer_size_kb))
-            print 'Per-CPU ring buffer size set to %d KB' % buffer_size_kb
+            print('Per-CPU ring buffer size set to %d KB' % buffer_size_kb)
 
         start_tracing()
-        print 'KVM flight recorder enabled'
+        print('KVM flight recorder enabled')
     elif cmd == 'stop':
         stop_tracing()
-        print 'KVM flight recorder disabled'
+        print('KVM flight recorder disabled')
     elif cmd == 'dump':
         dump_trace()
     elif cmd == 'tail':
diff --git a/scripts/kvm/vmxcap b/scripts/kvm/vmxcap
index d9a6db0..99a8146 100755
--- a/scripts/kvm/vmxcap
+++ b/scripts/kvm/vmxcap
@@ -10,6 +10,7 @@
 # This work is licensed under the terms of the GNU GPL, version 2.  See
 # the COPYING file in the top-level directory.
 
+from __future__ import print_function
 MSR_IA32_VMX_BASIC = 0x480
 MSR_IA32_VMX_PINBASED_CTLS = 0x481
 MSR_IA32_VMX_PROCBASED_CTLS = 0x482
diff --git a/scripts/qmp/qemu-ga-client b/scripts/qmp/qemu-ga-client
index 7d2a472..8510814 100755
--- a/scripts/qmp/qemu-ga-client
+++ b/scripts/qmp/qemu-ga-client
@@ -36,6 +36,7 @@
 # See also: https://wiki.qemu.org/Features/QAPI/GuestAgent
 #
 
+from __future__ import print_function
 import base64
 import random
 
diff --git a/scripts/qmp/qmp b/scripts/qmp/qmp
index 514b539..16d3bdb 100755
--- a/scripts/qmp/qmp
+++ b/scripts/qmp/qmp
@@ -10,6 +10,7 @@
 # This work is licensed under the terms of the GNU GPLv2 or later.
 # See the COPYING file in the top-level directory.
 
+from __future__ import print_function
 import sys, os
 from qmp import QEMUMonitorProtocol
 
@@ -26,9 +27,9 @@
             print_response(rsp[key], prefix + [key])
     else:
         if len(prefix):
-            print '%s: %s' % ('.'.join(prefix), rsp)
+            print('%s: %s' % ('.'.join(prefix), rsp))
         else:
-            print '%s' % (rsp)
+            print('%s' % (rsp))
 
 def main(args):
     path = None
@@ -53,21 +54,21 @@
             elif arg in ['help']:
                 os.execlp('man', 'man', 'qmp')
             else:
-                print 'Unknown argument "%s"' % arg
+                print('Unknown argument "%s"' % arg)
 
             args = args[1:]
         else:
             break
 
     if not path:
-        print "QMP path isn't set, use --path=qmp-monitor-address or set QMP_PATH"
+        print("QMP path isn't set, use --path=qmp-monitor-address or set QMP_PATH")
         return 1
 
     if len(args):
         command, args = args[0], args[1:]
     else:
-        print 'No command found'
-        print 'Usage: "qmp [--path=qmp-monitor-address] qmp-cmd arguments"'
+        print('No command found')
+        print('Usage: "qmp [--path=qmp-monitor-address] qmp-cmd arguments"')
         return 1
 
     if command in ['help']:
@@ -93,7 +94,7 @@
             os.execvp(fullcmd, [fullcmd] + args)
         except OSError as exc:
             if exc.errno == 2:
-                print 'Command "%s" not found.' % (fullcmd)
+                print('Command "%s" not found.' % (fullcmd))
                 return 1
             raise
         return 0
@@ -104,7 +105,7 @@
     arguments = {}
     for arg in args:
         if not arg.startswith('--'):
-            print 'Unknown argument "%s"' % arg
+            print('Unknown argument "%s"' % arg)
             return 1
 
         arg = arg[2:]
diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index be449de..b1cc7e2 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -65,6 +65,7 @@
 # which will echo back the properly formatted JSON-compliant QMP that is being
 # sent to QEMU, which is useful for debugging and documentation generation.
 
+from __future__ import print_function
 import qmp
 import json
 import ast
@@ -153,14 +154,14 @@
                 # File not found. No problem.
                 pass
             else:
-                print "Failed to read history '%s'; %s" % (self._histfile, e)
+                print("Failed to read history '%s'; %s" % (self._histfile, e))
         atexit.register(self.__save_history)
 
     def __save_history(self):
         try:
             readline.write_history_file(self._histfile)
         except Exception as e:
-            print "Failed to save history file '%s'; %s" % (self._histfile, e)
+            print("Failed to save history file '%s'; %s" % (self._histfile, e))
 
     def __parse_value(self, val):
         try:
@@ -258,15 +259,15 @@
         if self._pretty:
             indent = 4
         jsobj = json.dumps(qmp, indent=indent)
-        print str(jsobj)
+        print(str(jsobj))
 
     def _execute_cmd(self, cmdline):
         try:
             qmpcmd = self.__build_cmd(cmdline)
         except Exception as e:
-            print 'Error while parsing command line: %s' % e
-            print 'command format: <command-name> ',
-            print '[arg-name1=arg1] ... [arg-nameN=argN]'
+            print('Error while parsing command line: %s' % e)
+            print('command format: <command-name> ', end=' ')
+            print('[arg-name1=arg1] ... [arg-nameN=argN]')
             return True
         # For transaction mode, we may have just cached the action:
         if qmpcmd is None:
@@ -275,7 +276,7 @@
             self._print(qmpcmd)
         resp = self.cmd_obj(qmpcmd)
         if resp is None:
-            print 'Disconnected'
+            print('Disconnected')
             return False
         self._print(resp)
         return True
@@ -285,12 +286,12 @@
         self.__completer_setup()
 
     def show_banner(self, msg='Welcome to the QMP low-level shell!'):
-        print msg
+        print(msg)
         if not self._greeting:
-            print 'Connected'
+            print('Connected')
             return
         version = self._greeting['QMP']['version']['qemu']
-        print 'Connected to QEMU %d.%d.%d\n' % (version['major'],version['minor'],version['micro'])
+        print('Connected to QEMU %d.%d.%d\n' % (version['major'],version['minor'],version['micro']))
 
     def get_prompt(self):
         if self._transmode:
@@ -306,11 +307,11 @@
         try:
             cmdline = raw_input(prompt)
         except EOFError:
-            print
+            print()
             return False
         if cmdline == '':
             for ev in self.get_events():
-                print ev
+                print(ev)
             self.clear_events()
             return True
         else:
@@ -366,24 +367,24 @@
             try:
                 idx = int(cmdline.split()[1])
                 if not 'return' in self.__cmd_passthrough('info version', idx):
-                    print 'bad CPU index'
+                    print('bad CPU index')
                     return True
                 self.__cpu_index = idx
             except ValueError:
-                print 'cpu command takes an integer argument'
+                print('cpu command takes an integer argument')
                 return True
         resp = self.__cmd_passthrough(cmdline, self.__cpu_index)
         if resp is None:
-            print 'Disconnected'
+            print('Disconnected')
             return False
         assert 'return' in resp or 'error' in resp
         if 'return' in resp:
             # Success
             if len(resp['return']) > 0:
-                print resp['return'],
+                print(resp['return'], end=' ')
         else:
             # Error
-            print '%s: %s' % (resp['error']['class'], resp['error']['desc'])
+            print('%s: %s' % (resp['error']['class'], resp['error']['desc']))
         return True
 
     def show_banner(self):
diff --git a/scripts/qmp/qom-get b/scripts/qmp/qom-get
index 0172c69..291c8bf 100755
--- a/scripts/qmp/qom-get
+++ b/scripts/qmp/qom-get
@@ -11,6 +11,7 @@
 # the COPYING file in the top-level directory.
 ##
 
+from __future__ import print_function
 import sys
 import os
 from qmp import QEMUMonitorProtocol
@@ -33,7 +34,7 @@
 
 if len(args) > 0:
     if args[0] == "-h":
-        print usage()
+        print(usage())
         exit(0);
     elif args[0] == "-s":
         try:
@@ -62,6 +63,6 @@
 rsp = srv.command('qom-get', path=path, property=prop)
 if type(rsp) == dict:
     for i in rsp.keys():
-        print '%s: %s' % (i, rsp[i])
+        print('%s: %s' % (i, rsp[i]))
 else:
-    print rsp
+    print(rsp)
diff --git a/scripts/qmp/qom-list b/scripts/qmp/qom-list
index 1e7cc6c..cd907bb 100755
--- a/scripts/qmp/qom-list
+++ b/scripts/qmp/qom-list
@@ -11,6 +11,7 @@
 # the COPYING file in the top-level directory.
 ##
 
+from __future__ import print_function
 import sys
 import os
 from qmp import QEMUMonitorProtocol
@@ -33,7 +34,7 @@
 
 if len(args) > 0:
     if args[0] == "-h":
-        print usage()
+        print(usage())
         exit(0);
     elif args[0] == "-s":
         try:
@@ -52,13 +53,13 @@
 srv.connect()
 
 if len(args) == 0:
-    print '/'
+    print('/')
     sys.exit(0)
 
 for item in srv.command('qom-list', path=args[0]):
     if item['type'].startswith('child<'):
-        print '%s/' % item['name']
+        print('%s/' % item['name'])
     elif item['type'].startswith('link<'):
-        print '@%s/' % item['name']
+        print('@%s/' % item['name'])
     else:
-        print '%s' % item['name']
+        print('%s' % item['name'])
diff --git a/scripts/qmp/qom-set b/scripts/qmp/qom-set
index 94e2778..fbe4b3e 100755
--- a/scripts/qmp/qom-set
+++ b/scripts/qmp/qom-set
@@ -11,6 +11,7 @@
 # the COPYING file in the top-level directory.
 ##
 
+from __future__ import print_function
 import sys
 import os
 from qmp import QEMUMonitorProtocol
@@ -34,7 +35,7 @@
 
 if len(args) > 0:
     if args[0] == "-h":
-        print usage()
+        print(usage())
         exit(0);
     elif args[0] == "-s":
         try:
@@ -61,4 +62,4 @@
 srv = QEMUMonitorProtocol(socket_path)
 srv.connect()
 
-print srv.command('qom-set', path=path, property=prop, value=value)
+print(srv.command('qom-set', path=path, property=prop, value=value))
diff --git a/scripts/qmp/qom-tree b/scripts/qmp/qom-tree
index 906fcd2..0ffd1ff 100755
--- a/scripts/qmp/qom-tree
+++ b/scripts/qmp/qom-tree
@@ -13,6 +13,7 @@
 # the COPYING file in the top-level directory.
 ##
 
+from __future__ import print_function
 import sys
 import os
 from qmp import QEMUMonitorProtocol
@@ -35,7 +36,7 @@
 
 if len(args) > 0:
     if args[0] == "-h":
-        print usage()
+        print(usage())
         exit(0);
     elif args[0] == "-s":
         try:
@@ -54,15 +55,15 @@
 srv.connect()
 
 def list_node(path):
-    print '%s' % path
+    print('%s' % path)
     items = srv.command('qom-list', path=path)
     for item in items:
         if not item['type'].startswith('child<'):
             try:
-                print '  %s: %s (%s)' % (item['name'], srv.command('qom-get', path=path, property=item['name']), item['type'])
+                print('  %s: %s (%s)' % (item['name'], srv.command('qom-get', path=path, property=item['name']), item['type']))
             except:
-                print '  %s: <EXCEPTION> (%s)' % (item['name'], item['type'])
-    print ''
+                print('  %s: <EXCEPTION> (%s)' % (item['name'], item['type']))
+    print('')
     for item in items:
         if item['type'].startswith('child<'):
             list_node((path if (path != '/') else '')  + '/' + item['name'])
diff --git a/scripts/replay-dump.py b/scripts/replay-dump.py
index e274086..5ae77c8 100755
--- a/scripts/replay-dump.py
+++ b/scripts/replay-dump.py
@@ -18,6 +18,7 @@
 # You should have received a copy of the GNU Lesser General Public
 # License along with this library; if not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import print_function
 import argparse
 import struct
 from collections import namedtuple
@@ -89,9 +90,9 @@
     "Search decode table for next step"
     decoder = next((d for d in table if d.eid == index), None)
     if not decoder:
-        print "Could not decode index: %d" % (index)
-        print "Entry is: %s" % (decoder)
-        print "Decode Table is:\n%s" % (table)
+        print("Could not decode index: %d" % (index))
+        print("Entry is: %s" % (decoder))
+        print("Decode Table is:\n%s" % (table))
         return False
     else:
         return decoder.fn(decoder.eid, decoder.name, dumpfile)
@@ -103,23 +104,23 @@
         event_count = replay_state.event_count
 
     if string:
-        print "%d:%s(%d) %s" % (event_count, name, eid, string)
+        print("%d:%s(%d) %s" % (event_count, name, eid, string))
     else:
-        print "%d:%s(%d)" % (event_count, name, eid)
+        print("%d:%s(%d)" % (event_count, name, eid))
 
 
 # Decoders for each event type
 
 def decode_unimp(eid, name, _unused_dumpfile):
     "Unimplimented decoder, will trigger exit"
-    print "%s not handled - will now stop" % (name)
+    print("%s not handled - will now stop" % (name))
     return False
 
 # Checkpoint decoder
 def swallow_async_qword(eid, name, dumpfile):
     "Swallow a qword of data without looking at it"
     step_id = read_qword(dumpfile)
-    print "  %s(%d) @ %d" % (name, eid, step_id)
+    print("  %s(%d) @ %d" % (name, eid, step_id))
     return True
 
 async_decode_table = [ Decoder(0, "REPLAY_ASYNC_EVENT_BH", swallow_async_qword),
@@ -139,8 +140,8 @@
     async_event_checkpoint = read_byte(dumpfile)
 
     if async_event_checkpoint != replay_state.current_checkpoint:
-        print "  mismatch between checkpoint %d and async data %d" % (
-            replay_state.current_checkpoint, async_event_checkpoint)
+        print("  mismatch between checkpoint %d and async data %d" % (
+            replay_state.current_checkpoint, async_event_checkpoint))
         return True
 
     return call_decode(async_decode_table, async_event_kind, dumpfile)
@@ -283,7 +284,7 @@
     version = read_dword(dumpfile)
     junk = read_qword(dumpfile)
 
-    print "HEADER: version 0x%x" % (version)
+    print("HEADER: version 0x%x" % (version))
 
     if version == 0xe02007:
         event_decode_table = v7_event_table
diff --git a/scripts/signrom.py b/scripts/signrom.py
index 0497a1c..313ee28 100644
--- a/scripts/signrom.py
+++ b/scripts/signrom.py
@@ -1,3 +1,4 @@
+from __future__ import print_function
 #
 # Option ROM signing utility
 #
diff --git a/scripts/simpletrace.py b/scripts/simpletrace.py
index 9d45c6b..2658b5c 100755
--- a/scripts/simpletrace.py
+++ b/scripts/simpletrace.py
@@ -9,6 +9,7 @@
 #
 # For help see docs/devel/tracing.txt
 
+from __future__ import print_function
 import struct
 import re
 import inspect
@@ -257,6 +258,6 @@
                 else:
                     fields.append('%s=0x%x' % (name, rec[i]))
                 i += 1
-            print ' '.join(fields)
+            print(' '.join(fields))
 
     run(Formatter())
diff --git a/scripts/vmstate-static-checker.py b/scripts/vmstate-static-checker.py
index bcef7ee..60d1bf4 100755
--- a/scripts/vmstate-static-checker.py
+++ b/scripts/vmstate-static-checker.py
@@ -19,6 +19,7 @@
 # You should have received a copy of the GNU General Public License along
 # with this program; if not, see <http://www.gnu.org/licenses/>.
 
+from __future__ import print_function
 import argparse
 import json
 import sys
@@ -176,10 +177,10 @@
             except StopIteration:
                 if d_iter_list == []:
                     # We were not in a substruct
-                    print "Section \"" + sec + "\",",
-                    print "Description " + "\"" + desc + "\":",
-                    print "expected field \"" + s_item["field"] + "\",",
-                    print "while dest has no further fields"
+                    print("Section \"" + sec + "\",", end=' ')
+                    print("Description " + "\"" + desc + "\":", end=' ')
+                    print("expected field \"" + s_item["field"] + "\",", end=' ')
+                    print("while dest has no further fields")
                     bump_taint()
                     break
 
@@ -197,10 +198,10 @@
                     advance_dest = True
                     continue
                 if unused_count < 0:
-                    print "Section \"" + sec + "\",",
-                    print "Description \"" + desc + "\":",
-                    print "unused size mismatch near \"",
-                    print s_item["field"] + "\""
+                    print("Section \"" + sec + "\",", end=' ')
+                    print("Description \"" + desc + "\":", end=' ')
+                    print("unused size mismatch near \"", end=' ')
+                    print(s_item["field"] + "\"")
                     bump_taint()
                     break
                 continue
@@ -211,10 +212,10 @@
                     advance_src = True
                     continue
                 if unused_count < 0:
-                    print "Section \"" + sec + "\",",
-                    print "Description \"" + desc + "\":",
-                    print "unused size mismatch near \"",
-                    print d_item["field"] + "\""
+                    print("Section \"" + sec + "\",", end=' ')
+                    print("Description \"" + desc + "\":", end=' ')
+                    print("unused size mismatch near \"", end=' ')
+                    print(d_item["field"] + "\"")
                     bump_taint()
                     break
                 continue
@@ -262,10 +263,10 @@
                     unused_count = s_item["size"] - d_item["size"]
                     continue
 
-            print "Section \"" + sec + "\",",
-            print "Description \"" + desc + "\":",
-            print "expected field \"" + s_item["field"] + "\",",
-            print "got \"" + d_item["field"] + "\"; skipping rest"
+            print("Section \"" + sec + "\",", end=' ')
+            print("Description \"" + desc + "\":", end=' ')
+            print("expected field \"" + s_item["field"] + "\",", end=' ')
+            print("got \"" + d_item["field"] + "\"; skipping rest")
             bump_taint()
             break
 
@@ -289,8 +290,8 @@
             check_descriptions(s_item, d_item, sec)
 
         if not found:
-            print "Section \"" + sec + "\", Description \"" + desc + "\":",
-            print "Subsection \"" + s_item["name"] + "\" not found"
+            print("Section \"" + sec + "\", Description \"" + desc + "\":", end=' ')
+            print("Subsection \"" + s_item["name"] + "\" not found")
             bump_taint()
 
 
@@ -299,8 +300,8 @@
         return
 
     if not "Description" in d_item:
-        print "Section \"" + sec + "\", Description \"" + desc + "\",",
-        print "Field \"" + s_item["field"] + "\": missing description"
+        print("Section \"" + sec + "\", Description \"" + desc + "\",", end=' ')
+        print("Field \"" + s_item["field"] + "\": missing description")
         bump_taint()
         return
 
@@ -311,17 +312,17 @@
     check_version(src_desc, dest_desc, sec, src_desc["name"])
 
     if not check_fields_match(sec, src_desc["name"], dest_desc["name"]):
-        print "Section \"" + sec + "\":",
-        print "Description \"" + src_desc["name"] + "\"",
-        print "missing, got \"" + dest_desc["name"] + "\" instead; skipping"
+        print("Section \"" + sec + "\":", end=' ')
+        print("Description \"" + src_desc["name"] + "\"", end=' ')
+        print("missing, got \"" + dest_desc["name"] + "\" instead; skipping")
         bump_taint()
         return
 
     for f in src_desc:
         if not f in dest_desc:
-            print "Section \"" + sec + "\"",
-            print "Description \"" + src_desc["name"] + "\":",
-            print "Entry \"" + f + "\" missing"
+            print("Section \"" + sec + "\"", end=' ')
+            print("Description \"" + src_desc["name"] + "\":", end=' ')
+            print("Entry \"" + f + "\" missing")
             bump_taint()
             continue
 
@@ -334,39 +335,39 @@
 
 def check_version(s, d, sec, desc=None):
     if s["version_id"] > d["version_id"]:
-        print "Section \"" + sec + "\"",
+        print("Section \"" + sec + "\"", end=' ')
         if desc:
-            print "Description \"" + desc + "\":",
-        print "version error:", s["version_id"], ">", d["version_id"]
+            print("Description \"" + desc + "\":", end=' ')
+        print("version error:", s["version_id"], ">", d["version_id"])
         bump_taint()
 
     if not "minimum_version_id" in d:
         return
 
     if s["version_id"] < d["minimum_version_id"]:
-        print "Section \"" + sec + "\"",
+        print("Section \"" + sec + "\"", end=' ')
         if desc:
-            print "Description \"" + desc + "\":",
-            print "minimum version error:", s["version_id"], "<",
-            print d["minimum_version_id"]
+            print("Description \"" + desc + "\":", end=' ')
+            print("minimum version error:", s["version_id"], "<", end=' ')
+            print(d["minimum_version_id"])
             bump_taint()
 
 
 def check_size(s, d, sec, desc=None, field=None):
     if s["size"] != d["size"]:
-        print "Section \"" + sec + "\"",
+        print("Section \"" + sec + "\"", end=' ')
         if desc:
-            print "Description \"" + desc + "\"",
+            print("Description \"" + desc + "\"", end=' ')
         if field:
-            print "Field \"" + field + "\"",
-        print "size mismatch:", s["size"], ",", d["size"]
+            print("Field \"" + field + "\"", end=' ')
+        print("size mismatch:", s["size"], ",", d["size"])
         bump_taint()
 
 
 def check_machine_type(s, d):
     if s["Name"] != d["Name"]:
-        print "Warning: checking incompatible machine types:",
-        print "\"" + s["Name"] + "\", \"" + d["Name"] + "\""
+        print("Warning: checking incompatible machine types:", end=' ')
+        print("\"" + s["Name"] + "\", \"" + d["Name"] + "\"")
     return
 
 
@@ -400,7 +401,7 @@
             # doesn't exist in dest.
             dest_sec = get_changed_sec_name(sec)
             if not dest_sec in dest_data:
-                print "Section \"" + sec + "\" does not exist in dest"
+                print("Section \"" + sec + "\" does not exist in dest")
                 bump_taint()
                 continue
 
@@ -415,8 +416,8 @@
 
         for entry in s:
             if not entry in d:
-                print "Section \"" + sec + "\": Entry \"" + entry + "\"",
-                print "missing"
+                print("Section \"" + sec + "\": Entry \"" + entry + "\"", end=' ')
+                print("missing")
                 bump_taint()
                 continue