move_config: Convert to Python 3

Convert this tool to Python 3 and make it use that, to meet the 2020
deadline.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2019-10-31 07:42:57 -06:00
parent 879ca27656
commit 793dca34ca

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python2
#!/usr/bin/env python3
# SPDX-License-Identifier: GPL-2.0+
#
# Author: Masahiro Yamada <yamada.masahiro@socionext.com>
@ -304,7 +304,7 @@ import glob
import multiprocessing
import optparse
import os
import Queue
import queue
import re
import shutil
import subprocess
@ -450,8 +450,8 @@ def get_matched_defconfigs(defconfigs_file):
line = line.split(' ')[0] # handle 'git log' input
matched = get_matched_defconfig(line)
if not matched:
print >> sys.stderr, "warning: %s:%d: no defconfig matched '%s'" % \
(defconfigs_file, i + 1, line)
print("warning: %s:%d: no defconfig matched '%s'" % \
(defconfigs_file, i + 1, line), file=sys.stderr)
defconfigs += matched
@ -494,11 +494,11 @@ def show_diff(a, b, file_path, color_enabled):
for line in diff:
if line[0] == '-' and line[1] != '-':
print color_text(color_enabled, COLOR_RED, line),
print(color_text(color_enabled, COLOR_RED, line), end=' ')
elif line[0] == '+' and line[1] != '+':
print color_text(color_enabled, COLOR_GREEN, line),
print(color_text(color_enabled, COLOR_GREEN, line), end=' ')
else:
print line,
print(line, end=' ')
def extend_matched_lines(lines, matched, pre_patterns, post_patterns, extend_pre,
extend_post):
@ -554,9 +554,9 @@ def extend_matched_lines(lines, matched, pre_patterns, post_patterns, extend_pre
def confirm(options, prompt):
if not options.yes:
while True:
choice = raw_input('{} [y/n]: '.format(prompt))
choice = input('{} [y/n]: '.format(prompt))
choice = choice.lower()
print choice
print(choice)
if choice == 'y' or choice == 'n':
break
@ -809,10 +809,10 @@ def try_expand(line):
val= val.strip('\"')
if re.search("[*+-/]|<<|SZ_+|\(([^\)]+)\)", val):
newval = hex(eval(val, SIZES))
print "\tExpanded expression %s to %s" % (val, newval)
print("\tExpanded expression %s to %s" % (val, newval))
return cfg+'='+newval
except:
print "\tFailed to expand expression in %s" % line
print("\tFailed to expand expression in %s" % line)
return line
@ -838,7 +838,7 @@ class Progress:
def show(self):
"""Display the progress."""
print ' %d defconfigs out of %d\r' % (self.current, self.total),
print(' %d defconfigs out of %d\r' % (self.current, self.total), end=' ')
sys.stdout.flush()
@ -1312,7 +1312,7 @@ class Slot:
log += '\n'.join([ ' ' + s for s in self.log.split('\n') ])
# Some threads are running in parallel.
# Print log atomically to not mix up logs from different threads.
print >> (sys.stdout if success else sys.stderr), log
print(log, file=(sys.stdout if success else sys.stderr))
if not success:
if self.options.exit_on_error:
@ -1411,8 +1411,8 @@ class Slots:
msg = "The following boards were not processed due to error:\n"
msg += boards
msg += "(the list has been saved in %s)\n" % output_file
print >> sys.stderr, color_text(self.options.color, COLOR_LIGHT_RED,
msg)
print(color_text(self.options.color, COLOR_LIGHT_RED,
msg), file=sys.stderr)
with open(output_file, 'w') as f:
f.write(boards)
@ -1431,8 +1431,8 @@ class Slots:
msg += "It is highly recommended to check them manually:\n"
msg += boards
msg += "(the list has been saved in %s)\n" % output_file
print >> sys.stderr, color_text(self.options.color, COLOR_YELLOW,
msg)
print(color_text(self.options.color, COLOR_YELLOW,
msg), file=sys.stderr)
with open(output_file, 'w') as f:
f.write(boards)
@ -1448,11 +1448,11 @@ class ReferenceSource:
commit: commit to git-clone
"""
self.src_dir = tempfile.mkdtemp()
print "Cloning git repo to a separate work directory..."
print("Cloning git repo to a separate work directory...")
subprocess.check_output(['git', 'clone', os.getcwd(), '.'],
cwd=self.src_dir)
print "Checkout '%s' to build the original autoconf.mk." % \
subprocess.check_output(['git', 'rev-parse', '--short', commit]).strip()
print("Checkout '%s' to build the original autoconf.mk." % \
subprocess.check_output(['git', 'rev-parse', '--short', commit]).strip())
subprocess.check_output(['git', 'checkout', commit],
stderr=subprocess.STDOUT, cwd=self.src_dir)
@ -1480,14 +1480,14 @@ def move_config(toolchains, configs, options, db_queue):
"""
if len(configs) == 0:
if options.force_sync:
print 'No CONFIG is specified. You are probably syncing defconfigs.',
print('No CONFIG is specified. You are probably syncing defconfigs.', end=' ')
elif options.build_db:
print 'Building %s database' % CONFIG_DATABASE
print('Building %s database' % CONFIG_DATABASE)
else:
print 'Neither CONFIG nor --force-sync is specified. Nothing will happen.',
print('Neither CONFIG nor --force-sync is specified. Nothing will happen.', end=' ')
else:
print 'Move ' + ', '.join(configs),
print '(jobs: %d)\n' % options.jobs
print('Move ' + ', '.join(configs), end=' ')
print('(jobs: %d)\n' % options.jobs)
if options.git_ref:
reference_src = ReferenceSource(options.git_ref)
@ -1517,7 +1517,7 @@ def move_config(toolchains, configs, options, db_queue):
while not slots.empty():
time.sleep(SLEEP_TIME)
print ''
print('')
slots.show_failed_boards()
slots.show_suspicious_boards()
@ -1691,15 +1691,15 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added,
for config in config_list:
defconfigs = defconfig_db.get(config)
if not defconfigs:
print '%s not found in any defconfig' % config
print('%s not found in any defconfig' % config)
continue
# Get the set of defconfigs without this one (since a config cannot
# imply itself)
non_defconfigs = all_defconfigs - defconfigs
num_defconfigs = len(defconfigs)
print '%s found in %d/%d defconfigs' % (config, num_defconfigs,
len(all_configs))
print('%s found in %d/%d defconfigs' % (config, num_defconfigs,
len(all_configs)))
# This will hold the results: key=config, value=defconfigs containing it
imply_configs = {}
@ -1736,7 +1736,7 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added,
if common_defconfigs:
skip = False
if find_superset:
for prev in imply_configs.keys():
for prev in list(imply_configs.keys()):
prev_count = len(imply_configs[prev])
count = len(common_defconfigs)
if (prev_count > count and
@ -1806,15 +1806,15 @@ def do_imply_config(config_list, add_imply, imply_flags, skip_added,
add_list[fname].append(linenum)
if show and kconfig_info != 'skip':
print '%5d : %-30s%-25s %s' % (num_common, iconfig.ljust(30),
kconfig_info, missing_str)
print('%5d : %-30s%-25s %s' % (num_common, iconfig.ljust(30),
kconfig_info, missing_str))
# Having collected a list of things to add, now we add them. We process
# each file from the largest line number to the smallest so that
# earlier additions do not affect our line numbers. E.g. if we added an
# imply at line 20 it would change the position of each line after
# that.
for fname, linenums in add_list.iteritems():
for fname, linenums in add_list.items():
for linenum in sorted(linenums, reverse=True):
add_imply_rule(config[CONFIG_LEN:], fname, linenum)
@ -1891,11 +1891,11 @@ def main():
for flag in options.imply_flags.split(','):
bad = flag not in IMPLY_FLAGS
if bad:
print "Invalid flag '%s'" % flag
print("Invalid flag '%s'" % flag)
if flag == 'help' or bad:
print "Imply flags: (separate with ',')"
for name, info in IMPLY_FLAGS.iteritems():
print ' %-15s: %s' % (name, info[1])
print("Imply flags: (separate with ',')")
for name, info in IMPLY_FLAGS.items():
print(' %-15s: %s' % (name, info[1]))
parser.print_usage()
sys.exit(1)
imply_flags |= IMPLY_FLAGS[flag][0]
@ -1905,7 +1905,7 @@ def main():
return
config_db = {}
db_queue = Queue.Queue()
db_queue = queue.Queue()
t = DatabaseThread(config_db, db_queue)
t.setDaemon(True)
t.start()
@ -1939,7 +1939,7 @@ def main():
if options.build_db:
with open(CONFIG_DATABASE, 'w') as fd:
for defconfig, configs in config_db.iteritems():
for defconfig, configs in config_db.items():
fd.write('%s\n' % defconfig)
for config in sorted(configs.keys()):
fd.write(' %s=%s\n' % (config, configs[config]))