tools: use print() function on both Python 2 and 3

PR-URL: https://github.com/nodejs/node/pull/24486
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
This commit is contained in:
cclauss 2018-11-19 06:09:40 -05:00 committed by Refael Ackermann
parent f2432a4761
commit b507783bc1
7 changed files with 120 additions and 113 deletions

View File

@ -7,13 +7,14 @@
# ustack helper.
#
from __future__ import print_function
import re
import subprocess
import sys
import errno
if len(sys.argv) != 3:
print "usage: objsym.py outfile libv8_base.a"
print("usage: objsym.py outfile libv8_base.a")
sys.exit(2);
outfile = file(sys.argv[1], 'w');
@ -22,13 +23,13 @@ try:
bufsize=-1, stdout=subprocess.PIPE).stdout;
except OSError, e:
if e.errno == errno.ENOENT:
print '''
print('''
Node.js compile error: could not find objdump
Check that GNU binutils are installed and included in PATH
'''
''')
else:
print 'problem running objdump: ', e.strerror
print('problem running objdump: ', e.strerror)
sys.exit()

View File

@ -1,4 +1,5 @@
#!/usr/bin/env python
from __future__ import print_function
import os
import sys
@ -52,7 +53,7 @@ def run_gyp(args):
rc = gyp.main(args)
if rc != 0:
print 'Error running GYP'
print('Error running GYP')
sys.exit(rc)

View File

@ -11,6 +11,7 @@
# Usage:
# Use "-h" to get help options.
from __future__ import print_function
import sys
import shutil
# for utf-8
@ -79,54 +80,54 @@ optVars = vars(options)
for opt in [ "datfile", "filterfile", "tmpdir", "outfile" ]:
if optVars[opt] is None:
print "Missing required option: %s" % opt
print("Missing required option: %s" % opt)
sys.exit(1)
if options.verbose>0:
print "Options: "+str(options)
print("Options: "+str(options))
if (os.path.isdir(options.tmpdir) and options.deltmpdir):
if options.verbose>1:
print "Deleting tmp dir %s.." % (options.tmpdir)
print("Deleting tmp dir %s.." % (options.tmpdir))
shutil.rmtree(options.tmpdir)
if not (os.path.isdir(options.tmpdir)):
os.mkdir(options.tmpdir)
else:
print "Please delete tmpdir %s before beginning." % options.tmpdir
print("Please delete tmpdir %s before beginning." % options.tmpdir)
sys.exit(1)
if options.endian not in ("big","little","host"):
print "Unknown endianness: %s" % options.endian
print("Unknown endianness: %s" % options.endian)
sys.exit(1)
if options.endian is "host":
options.endian = endian
if not os.path.isdir(options.tmpdir):
print "Error, tmpdir not a directory: %s" % (options.tmpdir)
print("Error, tmpdir not a directory: %s" % (options.tmpdir))
sys.exit(1)
if not os.path.isfile(options.filterfile):
print "Filterfile doesn't exist: %s" % (options.filterfile)
print("Filterfile doesn't exist: %s" % (options.filterfile))
sys.exit(1)
if not os.path.isfile(options.datfile):
print "Datfile doesn't exist: %s" % (options.datfile)
print("Datfile doesn't exist: %s" % (options.datfile))
sys.exit(1)
if not options.datfile.endswith(".dat"):
print "Datfile doesn't end with .dat: %s" % (options.datfile)
print("Datfile doesn't end with .dat: %s" % (options.datfile))
sys.exit(1)
outfile = os.path.join(options.tmpdir, options.outfile)
if os.path.isfile(outfile):
print "Error, output file does exist: %s" % (outfile)
print("Error, output file does exist: %s" % (outfile))
sys.exit(1)
if not options.outfile.endswith(".dat"):
print "Outfile doesn't end with .dat: %s" % (options.outfile)
print("Outfile doesn't end with .dat: %s" % (options.outfile))
sys.exit(1)
dataname=options.outfile[0:-4]
@ -140,11 +141,11 @@ def runcmd(tool, cmd, doContinue=False):
cmd = tool + " " + cmd
if(options.verbose>4):
print "# " + cmd
print("# " + cmd)
rc = os.system(cmd)
if rc is not 0 and not doContinue:
print "FAILED: %s" % cmd
print("FAILED: %s" % cmd)
sys.exit(1)
return rc
@ -161,10 +162,10 @@ if (options.locales):
config["variables"]["locales"]["only"] = options.locales.split(',')
if (options.verbose > 6):
print config
print(config)
if(config.has_key("comment")):
print "%s: %s" % (options.filterfile, config["comment"])
print("%s: %s" % (options.filterfile, config["comment"]))
## STEP 1 - copy the data file, swapping endianness
## The first letter of endian_letter will be 'b' or 'l' for big or little
@ -184,7 +185,7 @@ fi.close()
itemset = set(items)
if (options.verbose>1):
print "input file: %d items" % (len(items))
print("input file: %d items" % (len(items)))
# list of all trees
trees = {}
@ -211,23 +212,23 @@ def queueForRemoval(tree):
return
mytree = trees[tree]
if(options.verbose>0):
print "* %s: %d items" % (tree, len(mytree["locs"]))
print("* %s: %d items" % (tree, len(mytree["locs"])))
# do varible substitution for this tree here
if type(config["trees"][tree]) == str or type(config["trees"][tree]) == unicode:
treeStr = config["trees"][tree]
if(options.verbose>5):
print " Substituting $%s for tree %s" % (treeStr, tree)
print(" Substituting $%s for tree %s" % (treeStr, tree))
if(not config.has_key("variables") or not config["variables"].has_key(treeStr)):
print " ERROR: no variable: variables.%s for tree %s" % (treeStr, tree)
print(" ERROR: no variable: variables.%s for tree %s" % (treeStr, tree))
sys.exit(1)
config["trees"][tree] = config["variables"][treeStr]
myconfig = config["trees"][tree]
if(options.verbose>4):
print " Config: %s" % (myconfig)
print(" Config: %s" % (myconfig))
# Process this tree
if(len(myconfig)==0 or len(mytree["locs"])==0):
if(options.verbose>2):
print " No processing for %s - skipping" % (tree)
print(" No processing for %s - skipping" % (tree))
else:
only = None
if myconfig.has_key("only"):
@ -236,22 +237,22 @@ def queueForRemoval(tree):
thePool = "%spool.res" % (mytree["treeprefix"])
if (thePool in itemset):
if(options.verbose>0):
print "Removing %s because tree %s is empty." % (thePool, tree)
print("Removing %s because tree %s is empty." % (thePool, tree))
remove.add(thePool)
else:
print "tree %s - no ONLY"
print("tree %s - no ONLY")
for l in range(len(mytree["locs"])):
loc = mytree["locs"][l]
if (only is not None) and not loc in only:
# REMOVE loc
toRemove = "%s%s%s" % (mytree["treeprefix"], loc, mytree["extension"])
if(options.verbose>6):
print "Queueing for removal: %s" % toRemove
print("Queueing for removal: %s" % toRemove)
remove.add(toRemove)
def addTreeByType(tree, mytree):
if(options.verbose>1):
print "(considering %s): %s" % (tree, mytree)
print("(considering %s): %s" % (tree, mytree))
trees[tree] = mytree
mytree["locs"]=[]
for i in range(len(items)):
@ -278,7 +279,7 @@ for i in range(len(items)):
else:
tree = treeprefix[0:-1]
if(options.verbose>6):
print "procesing %s" % (tree)
print("procesing %s" % (tree))
trees[tree] = { "extension": ".res", "treeprefix": treeprefix, "hasIndex": True }
# read in the resource list for the tree
treelistfile = os.path.join(options.tmpdir,"%s.lst" % tree)
@ -288,7 +289,7 @@ for i in range(len(items)):
trees[tree]["locs"] = [treeitems[i].strip() for i in range(len(treeitems))]
fi.close()
if(not config.has_key("trees") or not config["trees"].has_key(tree)):
print " Warning: filter file %s does not mention trees.%s - will be kept as-is" % (options.filterfile, tree)
print(" Warning: filter file %s does not mention trees.%s - will be kept as-is" % (options.filterfile, tree))
else:
queueForRemoval(tree)
@ -297,22 +298,22 @@ def removeList(count=0):
global remove
remove = remove - keep
if(count > 10):
print "Giving up - %dth attempt at removal." % count
print("Giving up - %dth attempt at removal." % count)
sys.exit(1)
if(options.verbose>1):
print "%d items to remove - try #%d" % (len(remove),count)
print("%d items to remove - try #%d" % (len(remove),count))
if(len(remove)>0):
oldcount = len(remove)
hackerrfile=os.path.join(options.tmpdir, "REMOVE.err")
removefile = os.path.join(options.tmpdir, "REMOVE.lst")
fi = open(removefile, 'wb')
for i in remove:
print >>fi, i
print(i, file=fi)
fi.close()
rc = runcmd("icupkg","-r %s %s 2> %s" % (removefile,outfile,hackerrfile),True)
if rc is not 0:
if(options.verbose>5):
print "## Damage control, trying to parse stderr from icupkg.."
print("## Damage control, trying to parse stderr from icupkg..")
fi = open(hackerrfile, 'rb')
erritems = fi.readlines()
fi.close()
@ -324,15 +325,15 @@ def removeList(count=0):
if m:
toDelete = m.group(1)
if(options.verbose > 5):
print "<< %s added to delete" % toDelete
print("<< %s added to delete" % toDelete)
remove.add(toDelete)
else:
print "ERROR: could not match errline: %s" % line
print("ERROR: could not match errline: %s" % line)
sys.exit(1)
if(options.verbose > 5):
print " now %d items to remove" % len(remove)
print(" now %d items to remove" % len(remove))
if(oldcount == len(remove)):
print " ERROR: could not add any mor eitems to remove. Fail."
print(" ERROR: could not add any mor eitems to remove. Fail.")
sys.exit(1)
removeList(count+1)

View File

@ -1,4 +1,5 @@
#!/usr/bin/env python
from __future__ import print_function
import optparse
import os
import re
@ -29,11 +30,11 @@ parser.add_option('--icutmp',
(options, args) = parser.parse_args()
if os.path.isdir(options.icusmall):
print 'Deleting existing icusmall %s' % (options.icusmall)
print('Deleting existing icusmall %s' % (options.icusmall))
shutil.rmtree(options.icusmall)
if not os.path.isdir(options.icusrc):
print 'Missing source ICU dir --icusrc=%s' % (options.icusrc)
print('Missing source ICU dir --icusrc=%s' % (options.icusrc))
sys.exit(1)
@ -73,7 +74,7 @@ def icu_ignore(dir, files):
def icu_info(icu_full_path):
uvernum_h = os.path.join(icu_full_path, 'source/common/unicode/uvernum.h')
if not os.path.isfile(uvernum_h):
print ' Error: could not load %s - is ICU installed?' % uvernum_h
print(' Error: could not load %s - is ICU installed?' % uvernum_h)
sys.exit(1)
icu_ver_major = None
matchVerExp = r'^\s*#define\s+U_ICU_VERSION_SHORT\s+"([^"]*)".*'
@ -83,25 +84,25 @@ def icu_info(icu_full_path):
if m:
icu_ver_major = m.group(1)
if not icu_ver_major:
print ' Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h
print(' Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h)
sys.exit(1)
icu_endianness = sys.byteorder[0]; # TODO(srl295): EBCDIC should be 'e'
return (icu_ver_major, icu_endianness)
(icu_ver_major, icu_endianness) = icu_info(options.icusrc)
print "icudt%s%s" % (icu_ver_major, icu_endianness)
print("icudt%s%s" % (icu_ver_major, icu_endianness))
src_datafile = os.path.join(options.icutmp, "icusmdt%s.dat" % (icu_ver_major))
dst_datafile = os.path.join(options.icusmall, "source","data","in", "icudt%s%s.dat" % (icu_ver_major, icu_endianness))
if not os.path.isfile(src_datafile):
print "Could not find source datafile %s - did you build small-icu node?" % src_datafile
print("Could not find source datafile %s - did you build small-icu node?" % src_datafile)
sys.exit(1)
else:
print "will use small datafile %s" % (src_datafile)
print '%s --> %s' % (options.icusrc, options.icusmall)
print("will use small datafile %s" % (src_datafile))
print('%s --> %s' % (options.icusrc, options.icusmall))
shutil.copytree(options.icusrc, options.icusmall, ignore=icu_ignore)
print '%s --> %s' % (src_datafile, dst_datafile)
print('%s --> %s' % (src_datafile, dst_datafile))
# now, make the data dir (since we ignored it)
os.mkdir(os.path.join(os.path.join(options.icusmall, "source", "data")))
@ -114,13 +115,13 @@ shutil.copy(src_datafile, dst_datafile)
readme_name = os.path.join(options.icusmall, "README-SMALL-ICU.txt" )
fi = open(readme_name, 'wb')
print >>fi, "Small ICU sources - auto generated by shrink-icu-src.py"
print >>fi, ""
print >>fi, "This directory contains the ICU subset used by --with-intl=small-icu (the default)"
print >>fi, "It is a strict subset of ICU %s source files with the following exception(s):" % (icu_ver_major)
print >>fi, "* %s : Reduced-size data file" % (dst_datafile)
print >>fi, ""
print >>fi, ""
print >>fi, "To rebuild this directory, see ../../tools/icu/README.md"
print >>fi, ""
print("Small ICU sources - auto generated by shrink-icu-src.py", file=fi)
print("", file=fi)
print("This directory contains the ICU subset used by --with-intl=small-icu (the default)", file=fi)
print("It is a strict subset of ICU %s source files with the following exception(s):" % (icu_ver_major), file=fi)
print("* %s : Reduced-size data file" % (dst_datafile), file=fi)
print("", file=fi)
print("", file=fi)
print("To rebuild this directory, see ../../tools/icu/README.md", file=fi)
print("", file=fi)
fi.close()

View File

@ -27,6 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from __future__ import print_function
from os import path
import subprocess
import sys
@ -40,12 +41,12 @@ VALGRIND_ARGUMENTS = [
]
if len(sys.argv) < 2:
print 'Please provide an executable to analyze.'
print('Please provide an executable to analyze.')
sys.exit(1)
executable = path.join(NODE_ROOT, sys.argv[1])
if not path.exists(executable):
print 'Cannot find the file specified: %s' % executable
print('Cannot find the file specified: %s' % executable)
sys.exit(1)
# Compute the command line.

View File

@ -6,11 +6,12 @@
# Specialize node.d for given flavor (`freebsd`) and arch (`x64` or `ia32`)
#
from __future__ import print_function
import re
import sys
if len(sys.argv) != 5:
print "usage: specialize_node_d.py outfile src/node.d flavor arch"
print("usage: specialize_node_d.py outfile src/node.d flavor arch")
sys.exit(2);
outfile = file(sys.argv[1], 'w');

View File

@ -28,6 +28,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
from __future__ import print_function
import imp
import logging
import optparse
@ -87,11 +88,11 @@ class ProgressIndicator(object):
negative_marker = '[negative] '
else:
negative_marker = ''
print "=== %(label)s %(negative)s===" % {
print("=== %(label)s %(negative)s===" % {
'label': test.GetLabel(),
'negative': negative_marker
}
print "Path: %s" % "/".join(test.path)
})
print("Path: %s" % "/".join(test.path))
def Run(self, tasks):
self.Starting()
@ -182,40 +183,40 @@ def EscapeCommand(command):
class SimpleProgressIndicator(ProgressIndicator):
def Starting(self):
print 'Running %i tests' % len(self.cases)
print('Running %i tests' % len(self.cases))
def Done(self):
print
print()
for failed in self.failed:
self.PrintFailureHeader(failed.test)
if failed.output.stderr:
print "--- stderr ---"
print failed.output.stderr.strip()
print("--- stderr ---")
print(failed.output.stderr.strip())
if failed.output.stdout:
print "--- stdout ---"
print failed.output.stdout.strip()
print "Command: %s" % EscapeCommand(failed.command)
print("--- stdout ---")
print(failed.output.stdout.strip())
print("Command: %s" % EscapeCommand(failed.command))
if failed.HasCrashed():
print "--- %s ---" % PrintCrashed(failed.output.exit_code)
print("--- %s ---" % PrintCrashed(failed.output.exit_code))
if failed.HasTimedOut():
print "--- TIMEOUT ---"
print("--- TIMEOUT ---")
if len(self.failed) == 0:
print "==="
print "=== All tests succeeded"
print "==="
print("===")
print("=== All tests succeeded")
print("===")
else:
print
print "==="
print "=== %i tests failed" % len(self.failed)
print()
print("===")
print("=== %i tests failed" % len(self.failed))
if self.crashed > 0:
print "=== %i tests CRASHED" % self.crashed
print "==="
print("=== %i tests CRASHED" % self.crashed)
print("===")
class VerboseProgressIndicator(SimpleProgressIndicator):
def AboutToRun(self, case):
print 'Starting %s...' % case.GetLabel()
print('Starting %s...' % case.GetLabel())
sys.stdout.flush()
def HasRun(self, output):
@ -226,7 +227,7 @@ class VerboseProgressIndicator(SimpleProgressIndicator):
outcome = 'FAIL'
else:
outcome = 'pass'
print 'Done running %s: %s' % (output.test.GetLabel(), outcome)
print('Done running %s: %s' % (output.test.GetLabel(), outcome))
class DotsProgressIndicator(SimpleProgressIndicator):
@ -362,9 +363,9 @@ class DeoptsCheckProgressIndicator(SimpleProgressIndicator):
("because:" in line or "reason:" in line):
if not printed_file:
printed_file = True
print '==== %s ====' % command
print('==== %s ====' % command)
self.failed.append(output)
print ' %s' % line
print(' %s' % line)
def Done(self):
pass
@ -393,15 +394,15 @@ class CompactProgressIndicator(ProgressIndicator):
self.PrintFailureHeader(output.test)
stdout = output.output.stdout.strip()
if len(stdout):
print self.templates['stdout'] % stdout
print(self.templates['stdout'] % stdout)
stderr = output.output.stderr.strip()
if len(stderr):
print self.templates['stderr'] % stderr
print "Command: %s" % EscapeCommand(output.command)
print(self.templates['stderr'] % stderr)
print("Command: %s" % EscapeCommand(output.command))
if output.HasCrashed():
print "--- %s ---" % PrintCrashed(output.output.exit_code)
print("--- %s ---" % PrintCrashed(output.output.exit_code))
if output.HasTimedOut():
print "--- TIMEOUT ---"
print("--- TIMEOUT ---")
def Truncate(self, str, length):
if length and (len(str) > (length - 3)):
@ -422,7 +423,7 @@ class CompactProgressIndicator(ProgressIndicator):
}
status = self.Truncate(status, 78)
self.last_status_length = len(status)
print status,
print(status, end=' ')
sys.stdout.flush()
@ -437,7 +438,7 @@ class ColorProgressIndicator(CompactProgressIndicator):
super(ColorProgressIndicator, self).__init__(cases, flaky_tests_mode, templates)
def ClearLine(self, last_line_length):
print "\033[1K\r",
print("\033[1K\r", end=' ')
class MonochromeProgressIndicator(CompactProgressIndicator):
@ -453,7 +454,7 @@ class MonochromeProgressIndicator(CompactProgressIndicator):
super(MonochromeProgressIndicator, self).__init__(cases, flaky_tests_mode, templates)
def ClearLine(self, last_line_length):
print ("\r" + (" " * last_line_length) + "\r"),
print(("\r" + (" " * last_line_length) + "\r"), end=' ')
PROGRESS_INDICATORS = {
@ -616,7 +617,7 @@ def KillTimedOutProcess(context, pid):
def RunProcess(context, timeout, args, **rest):
if context.verbose: print "#", " ".join(args)
if context.verbose: print("#", " ".join(args))
popen_args = args
prev_error_mode = SEM_INVALID_VALUE;
if utils.IsWindows():
@ -1181,15 +1182,15 @@ def ParseCondition(expr):
"""Parses a logical expression into an Expression object"""
tokens = Tokenizer(expr).Tokenize()
if not tokens:
print "Malformed expression: '%s'" % expr
print("Malformed expression: '%s'" % expr)
return None
scan = Scanner(tokens)
ast = ParseLogicalExpression(scan)
if not ast:
print "Malformed expression: '%s'" % expr
print("Malformed expression: '%s'" % expr)
return None
if scan.HasMore():
print "Malformed expression: '%s'" % expr
print("Malformed expression: '%s'" % expr)
return None
return ast
@ -1387,19 +1388,19 @@ def ProcessOptions(options):
if options.run == [""]:
options.run = None
elif len(options.run) != 2:
print "The run argument must be two comma-separated integers."
print("The run argument must be two comma-separated integers.")
return False
else:
try:
options.run = map(int, options.run)
except ValueError:
print "Could not parse the integers from the run argument."
print("Could not parse the integers from the run argument.")
return False
if options.run[0] < 0 or options.run[1] < 0:
print "The run argument cannot have negative integers."
print("The run argument cannot have negative integers.")
return False
if options.run[0] >= options.run[1]:
print "The test group to run (n) must be smaller than number of groups (m)."
print("The test group to run (n) must be smaller than number of groups (m).")
return False
if options.J:
# inherit JOBS from environment if provided. some virtualised systems
@ -1407,7 +1408,7 @@ def ProcessOptions(options):
cores = os.environ.get('JOBS')
options.j = int(cores) if cores is not None else multiprocessing.cpu_count()
if options.flaky_tests not in [RUN, SKIP, DONTCARE]:
print "Unknown flaky-tests mode %s" % options.flaky_tests
print("Unknown flaky-tests mode %s" % options.flaky_tests)
return False
return True
@ -1606,13 +1607,13 @@ def Main():
for mode in options.mode:
vm = context.GetVm(arch, mode)
if not exists(vm):
print "Can't find shell executable: '%s'" % vm
print("Can't find shell executable: '%s'" % vm)
continue
archEngineContext = Execute([vm, "-p", "process.arch"], context)
vmArch = archEngineContext.stdout.rstrip()
if archEngineContext.exit_code is not 0 or vmArch == "undefined":
print "Can't determine the arch of: '%s'" % vm
print archEngineContext.stderr.rstrip()
print("Can't determine the arch of: '%s'" % vm)
print(archEngineContext.stderr.rstrip())
continue
env = {
'mode': mode,
@ -1649,15 +1650,15 @@ def Main():
if key in visited:
continue
visited.add(key)
print "--- begin source: %s ---" % test.GetLabel()
print("--- begin source: %s ---" % test.GetLabel())
source = test.GetSource().strip()
print source
print "--- end source: %s ---" % test.GetLabel()
print(source)
print("--- end source: %s ---" % test.GetLabel())
return 0
if options.warn_unused:
for rule in globally_unused_rules:
print "Rule for '%s' was not used." % '/'.join([str(s) for s in rule.path])
print("Rule for '%s' was not used." % '/'.join([str(s) for s in rule.path]))
tempdir = os.environ.get('NODE_TEST_DIR') or options.temp_dir
if tempdir:
@ -1666,7 +1667,7 @@ def Main():
os.makedirs(tempdir)
except OSError as exception:
if exception.errno != errno.EEXIST:
print "Could not create the temporary directory", options.temp_dir
print("Could not create the temporary directory", options.temp_dir)
sys.exit(1)
def should_keep(case):
@ -1700,7 +1701,7 @@ def Main():
len(cases_to_run),
options.run[1]) ]
if len(cases_to_run) == 0:
print "No tests to run."
print("No tests to run.")
return 1
else:
try:
@ -1711,13 +1712,13 @@ def Main():
result = 1
duration = time.time() - start
except KeyboardInterrupt:
print "Interrupted"
print("Interrupted")
return 1
if options.time:
# Write the times to stderr to make it easy to separate from the
# test output.
print
print()
sys.stderr.write("--- Total time: %s ---\n" % FormatTime(duration))
timed_tests = [ t for t in cases_to_run if not t.duration is None ]
timed_tests.sort(lambda a, b: a.CompareTime(b))