Blame SOURCES/blktrace-python3.patch

5e71e3
make btt scripts python3-ready
5e71e3
5e71e3
Many distributions are moving to python3 by default.  Here's
5e71e3
an attempt to make the python scripts in blktrace python3-ready.
5e71e3
5e71e3
Most of this was done with automated tools.  I hand fixed some
5e71e3
space-vs tab issues, and cast an array index to integer.  It
5e71e3
passes rudimentary testing when run under python2.7 as well
5e71e3
as python3.
5e71e3
5e71e3
This doesn't do anything with the shebangs, it leaves them both
5e71e3
invoking whatever "env python" coughs up on the system.
5e71e3
5e71e3
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
5e71e3
---
5e71e3
5e71e3
I am not a python guru at all. Happy to have review by anyone more
5e71e3
pythonic than I am.  Hopefully this helps at least move things
5e71e3
toward python3-readiness.  Thanks!
5e71e3
5e71e3
Index: blktrace-1.2.0/btt/bno_plot.py
5e71e3
===================================================================
5e71e3
--- blktrace-1.2.0.orig/btt/bno_plot.py
5e71e3
+++ blktrace-1.2.0/btt/bno_plot.py
5e71e3
@@ -1,4 +1,4 @@
5e71e3
-#! /usr/bin/env python
5e71e3
+#!/usr/bin/python3
5e71e3
 #
5e71e3
 # btt blkno plotting interface
5e71e3
 #
5e71e3
@@ -38,6 +38,8 @@ automatically push the keys under the gr
5e71e3
 To exit the plotter, enter 'quit' or ^D at the 'gnuplot> ' prompt.
5e71e3
 """
5e71e3
 
5e71e3
+from __future__ import absolute_import
5e71e3
+from __future__ import print_function
5e71e3
 import getopt, glob, os, sys, tempfile
5e71e3
 
5e71e3
 verbose	= 0
5e71e3
@@ -60,14 +62,14 @@ def parse_args(in_args):
5e71e3
 
5e71e3
 	try:
5e71e3
 		(opts, args) = getopt.getopt(in_args, s_opts, l_opts)
5e71e3
-	except getopt.error, msg:
5e71e3
-		print >>sys.stderr, msg
5e71e3
-		print >>sys.stderr, __doc__
5e71e3
+	except getopt.error as msg:
5e71e3
+		print(msg, file=sys.stderr)
5e71e3
+		print(__doc__, file=sys.stderr)
5e71e3
 		sys.exit(1)
5e71e3
 
5e71e3
 	for (o, a) in opts:
5e71e3
 		if o in ('-h', '--help'):
5e71e3
-			print __doc__
5e71e3
+			print(__doc__)
5e71e3
 			sys.exit(0)
5e71e3
 		elif o in ('-v', '--verbose'):
5e71e3
 			verbose += 1
5e71e3
@@ -84,10 +86,10 @@ if __name__ == '__main__':
5e71e3
 	(bnos, keys_below) = parse_args(sys.argv[1:])
5e71e3
 
5e71e3
 	if verbose:
5e71e3
-		print 'Using files:',
5e71e3
-		for bno in bnos: print bno,
5e71e3
-		if keys_below:	print '\nKeys are to be placed below graph'
5e71e3
-		else:		print ''
5e71e3
+		print('Using files:', end=' ')
5e71e3
+		for bno in bnos: print(bno, end=' ')
5e71e3
+		if keys_below:	print('\nKeys are to be placed below graph')
5e71e3
+		else:		print('')
5e71e3
 
5e71e3
 	tmpdir = tempfile.mktemp()
5e71e3
 	os.mkdir(tmpdir)
5e71e3
@@ -99,7 +101,7 @@ if __name__ == '__main__':
5e71e3
 		fo = open(t, 'w')
5e71e3
 		for line in open(f, 'r'):
5e71e3
 			fld = line.split(None)
5e71e3
-			print >>fo, fld[0], fld[1], int(fld[2])-int(fld[1])
5e71e3
+			print(fld[0], fld[1], int(fld[2])-int(fld[1]), file=fo)
5e71e3
 		fo.close()
5e71e3
 
5e71e3
 		t = t[t.rfind('/')+1:]
5e71e3
@@ -107,16 +109,16 @@ if __name__ == '__main__':
5e71e3
 		else:                plot_cmd = "%s,'%s'" % (plot_cmd, t)
5e71e3
 
5e71e3
 	fo = open('%s/plot.cmds' % tmpdir, 'w')
5e71e3
-	print >>fo, cmds
5e71e3
-	if len(bnos) > 10 or keys_below: print >>fo, 'set key below'
5e71e3
-	print >>fo, plot_cmd
5e71e3
+	print(cmds, file=fo)
5e71e3
+	if len(bnos) > 10 or keys_below: print('set key below', file=fo)
5e71e3
+	print(plot_cmd, file=fo)
5e71e3
 	fo.close()
5e71e3
 
5e71e3
 	pid = os.fork()
5e71e3
 	if pid == 0:
5e71e3
 		cmd = 'gnuplot %s/plot.cmds -' % tmpdir
5e71e3
 
5e71e3
-		if verbose: print 'Executing %s' % cmd
5e71e3
+		if verbose: print('Executing %s' % cmd)
5e71e3
 
5e71e3
 		os.chdir(tmpdir)
5e71e3
 		os.system(cmd)
5e71e3
Index: blktrace-1.2.0/btt/btt_plot.py
5e71e3
===================================================================
5e71e3
--- blktrace-1.2.0.orig/btt/btt_plot.py
5e71e3
+++ blktrace-1.2.0/btt/btt_plot.py
5e71e3
@@ -1,4 +1,4 @@
5e71e3
-#! /usr/bin/env python
5e71e3
+#!/usr/bin/python3
5e71e3
 #
5e71e3
 # btt_plot.py: Generate matplotlib plots for BTT generate data files
5e71e3
 #
5e71e3
@@ -55,6 +55,10 @@ Arguments:
5e71e3
   but the -o (--output) and -T (--title) options will be ignored.
5e71e3
 """
5e71e3
 
5e71e3
+from __future__ import absolute_import
5e71e3
+from __future__ import print_function
5e71e3
+import six
5e71e3
+from six.moves import range
5e71e3
 __author__ = 'Alan D. Brunelle <alan.brunelle@hp.com>'
5e71e3
 
5e71e3
 #------------------------------------------------------------------------------
5e71e3
@@ -82,7 +86,7 @@ get_base 	= lambda file: file[file.find(
5e71e3
 def fatal(msg):
5e71e3
 	"""Generate fatal error message and exit"""
5e71e3
 
5e71e3
-	print >>sys.stderr, 'FATAL: %s' % msg
5e71e3
+	print('FATAL: %s' % msg, file=sys.stderr)
5e71e3
 	sys.exit(1)
5e71e3
 
5e71e3
 #------------------------------------------------------------------------------
5e71e3
@@ -163,7 +167,7 @@ def get_data(files):
5e71e3
 		if not os.path.exists(file):
5e71e3
 			fatal('%s not found' % file)
5e71e3
 		elif verbose:
5e71e3
-			print 'Processing %s' % file
5e71e3
+			print('Processing %s' % file)
5e71e3
 
5e71e3
 		xs = []
5e71e3
 		ys = []
5e71e3
@@ -214,8 +218,8 @@ def parse_args(args):
5e71e3
 
5e71e3
 	try:
5e71e3
 		(opts, args) = getopt.getopt(args[1:], s_opts, l_opts)
5e71e3
-	except getopt.error, msg:
5e71e3
-		print >>sys.stderr, msg
5e71e3
+	except getopt.error as msg:
5e71e3
+		print(msg, file=sys.stderr)
5e71e3
 		fatal(__doc__)
5e71e3
 
5e71e3
 	for (o, a) in opts:
5e71e3
@@ -293,15 +297,15 @@ def generate_output(type, db):
5e71e3
 	def color(idx, style):
5e71e3
 		"""Returns a color/symbol type based upon the index passed."""
5e71e3
 
5e71e3
-                colors = [ 'b', 'g', 'r', 'c', 'm', 'y', 'k' ]
5e71e3
+		colors = [ 'b', 'g', 'r', 'c', 'm', 'y', 'k' ]
5e71e3
 		l_styles = [ '-', ':', '--', '-.' ]
5e71e3
 		m_styles = [ 'o', '+', '.', ',', 's', 'v', 'x', '<', '>' ]
5e71e3
 
5e71e3
 		color = colors[idx % len(colors)]
5e71e3
 		if style == 'line':
5e71e3
-			style = l_styles[(idx / len(l_styles)) % len(l_styles)]
5e71e3
+			style = l_styles[int((idx / len(l_styles)) % len(l_styles))]
5e71e3
 		elif style == 'marker':
5e71e3
-			style = m_styles[(idx / len(m_styles)) % len(m_styles)]
5e71e3
+			style = m_styles[int((idx / len(m_styles)) % len(m_styles))]
5e71e3
 
5e71e3
 		return '%s%s' % (color, style)
5e71e3
 
5e71e3
@@ -314,7 +318,7 @@ def generate_output(type, db):
5e71e3
 		ofile = '%s.png' % type
5e71e3
 
5e71e3
 	if verbose:
5e71e3
-		print 'Generating plot into %s' % ofile
5e71e3
+		print('Generating plot into %s' % ofile)
5e71e3
 
5e71e3
 	fig = plt.figure(figsize=plot_size)
5e71e3
 	ax = fig.add_subplot(111)
5e71e3
@@ -329,7 +333,7 @@ def generate_output(type, db):
5e71e3
 		legends = None
5e71e3
 
5e71e3
 	keys = []
5e71e3
-	for file in db.iterkeys():
5e71e3
+	for file in six.iterkeys(db):
5e71e3
 		if not file in ['min_x', 'max_x', 'min_y', 'max_y']:
5e71e3
 			keys.append(file)
5e71e3
 
5e71e3
5e71e3