Commit beda0e72 authored by Tony Jones's avatar Tony Jones Committed by Arnaldo Carvalho de Melo

perf script python: Add Python3 support to exported-sql-viewer.py

Support both Python2 and Python3 in the exported-sql-viewer.py script.

The use of 'from __future__' implies the minimum supported Python2 version
is now v2.6
Signed-off-by: default avatarTony Jones <tonyj@suse.de>
Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Link: http://lkml.kernel.org/r/20190309000518.2438-2-tonyj@suse.deSigned-off-by: default avatarSeeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 75065a85
...@@ -88,11 +88,20 @@ ...@@ -88,11 +88,20 @@
# 7fab593ea956 48 89 15 3b 13 22 00 movq %rdx, 0x22133b(%rip) # 7fab593ea956 48 89 15 3b 13 22 00 movq %rdx, 0x22133b(%rip)
# 8107675243232 2 ls 22011 22011 hardware interrupt No 7fab593ea956 _dl_start+0x26 (ld-2.19.so) -> ffffffff86a012e0 page_fault ([kernel]) # 8107675243232 2 ls 22011 22011 hardware interrupt No 7fab593ea956 _dl_start+0x26 (ld-2.19.so) -> ffffffff86a012e0 page_fault ([kernel])
from __future__ import print_function
import sys import sys
import weakref import weakref
import threading import threading
import string import string
import cPickle try:
# Python2
import cPickle as pickle
# size of pickled integer big enough for record size
glb_nsz = 8
except ImportError:
import pickle
glb_nsz = 16
import re import re
import os import os
from PySide.QtCore import * from PySide.QtCore import *
...@@ -102,6 +111,15 @@ from decimal import * ...@@ -102,6 +111,15 @@ from decimal import *
from ctypes import * from ctypes import *
from multiprocessing import Process, Array, Value, Event from multiprocessing import Process, Array, Value, Event
# xrange is range in Python3
try:
xrange
except NameError:
xrange = range
def printerr(*args, **keyword_args):
print(*args, file=sys.stderr, **keyword_args)
# Data formatting helpers # Data formatting helpers
def tohex(ip): def tohex(ip):
...@@ -1004,10 +1022,6 @@ class ChildDataItemFinder(): ...@@ -1004,10 +1022,6 @@ class ChildDataItemFinder():
glb_chunk_sz = 10000 glb_chunk_sz = 10000
# size of pickled integer big enough for record size
glb_nsz = 8
# Background process for SQL data fetcher # Background process for SQL data fetcher
class SQLFetcherProcess(): class SQLFetcherProcess():
...@@ -1066,7 +1080,7 @@ class SQLFetcherProcess(): ...@@ -1066,7 +1080,7 @@ class SQLFetcherProcess():
return True return True
if space >= glb_nsz: if space >= glb_nsz:
# Use 0 (or space < glb_nsz) to mean there is no more at the top of the buffer # Use 0 (or space < glb_nsz) to mean there is no more at the top of the buffer
nd = cPickle.dumps(0, cPickle.HIGHEST_PROTOCOL) nd = pickle.dumps(0, pickle.HIGHEST_PROTOCOL)
self.buffer[self.local_head : self.local_head + len(nd)] = nd self.buffer[self.local_head : self.local_head + len(nd)] = nd
self.local_head = 0 self.local_head = 0
if self.local_tail - self.local_head > sz: if self.local_tail - self.local_head > sz:
...@@ -1084,9 +1098,9 @@ class SQLFetcherProcess(): ...@@ -1084,9 +1098,9 @@ class SQLFetcherProcess():
self.wait_event.wait() self.wait_event.wait()
def AddToBuffer(self, obj): def AddToBuffer(self, obj):
d = cPickle.dumps(obj, cPickle.HIGHEST_PROTOCOL) d = pickle.dumps(obj, pickle.HIGHEST_PROTOCOL)
n = len(d) n = len(d)
nd = cPickle.dumps(n, cPickle.HIGHEST_PROTOCOL) nd = pickle.dumps(n, pickle.HIGHEST_PROTOCOL)
sz = n + glb_nsz sz = n + glb_nsz
self.WaitForSpace(sz) self.WaitForSpace(sz)
pos = self.local_head pos = self.local_head
...@@ -1198,12 +1212,12 @@ class SQLFetcher(QObject): ...@@ -1198,12 +1212,12 @@ class SQLFetcher(QObject):
pos = self.local_tail pos = self.local_tail
if len(self.buffer) - pos < glb_nsz: if len(self.buffer) - pos < glb_nsz:
pos = 0 pos = 0
n = cPickle.loads(self.buffer[pos : pos + glb_nsz]) n = pickle.loads(self.buffer[pos : pos + glb_nsz])
if n == 0: if n == 0:
pos = 0 pos = 0
n = cPickle.loads(self.buffer[0 : glb_nsz]) n = pickle.loads(self.buffer[0 : glb_nsz])
pos += glb_nsz pos += glb_nsz
obj = cPickle.loads(self.buffer[pos : pos + n]) obj = pickle.loads(self.buffer[pos : pos + n])
self.local_tail = pos + n self.local_tail = pos + n
return obj return obj
...@@ -2973,7 +2987,7 @@ class DBRef(): ...@@ -2973,7 +2987,7 @@ class DBRef():
def Main(): def Main():
if (len(sys.argv) < 2): if (len(sys.argv) < 2):
print >> sys.stderr, "Usage is: exported-sql-viewer.py {<database name> | --help-only}" printerr("Usage is: exported-sql-viewer.py {<database name> | --help-only}");
raise Exception("Too few arguments") raise Exception("Too few arguments")
dbname = sys.argv[1] dbname = sys.argv[1]
...@@ -2986,8 +3000,8 @@ def Main(): ...@@ -2986,8 +3000,8 @@ def Main():
is_sqlite3 = False is_sqlite3 = False
try: try:
f = open(dbname) f = open(dbname, "rb")
if f.read(15) == "SQLite format 3": if f.read(15) == b'SQLite format 3':
is_sqlite3 = True is_sqlite3 = True
f.close() f.close()
except: except:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment