From patchwork Thu Oct 24 01:22:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 1182572 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="IiQRhNCT"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 46z8kl493Rz9sNx for ; Thu, 24 Oct 2019 12:27:59 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 1A7F8C21E18; Thu, 24 Oct 2019 01:25:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 45DACC21E3A; Thu, 24 Oct 2019 01:23:57 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 4BE41C21D4A; Thu, 24 Oct 2019 01:23:45 +0000 (UTC) Received: from mail-io1-f68.google.com (mail-io1-f68.google.com [209.85.166.68]) by lists.denx.de (Postfix) with ESMTPS id 07DB9C21E4F for ; Thu, 24 Oct 2019 01:23:39 +0000 (UTC) Received: by mail-io1-f68.google.com with SMTP id 1so16060731iou.4 for ; Wed, 23 Oct 2019 18:23:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=d0I7uhb6r0kxvyQMENoKIPxhz/s/Z1Qb5w/eMtGPHhg=; b=IiQRhNCTSR7tlF06vC8Vcm8Zo4R7zlzINui6CA98rkoNzCSJaMqsxarKlytZOm3EE6 RVSxWt9xf74ba9h2BTfklTRYgMHm6hRHfiw/QdzcwMX5PiYHFzHOgCOyHLPUyZ2/XHWO y7ayhr0etZ/WDG+AvtZb/syVKv9AzMDiiKRV8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=d0I7uhb6r0kxvyQMENoKIPxhz/s/Z1Qb5w/eMtGPHhg=; b=PyyT11Fl56/7M1weWl7Z9E4S9GygSGkJVc/ivRAn0gz7Or1nBn55WahcNiitGywgIy c664VpG07fajH20rqGyfFZ235NoSPE2RfX1e30nxyuYK1yn/8FdQQVOXwqEPO7AxgcaX 4ss2zezLz+fZBy8hwWPHnMwEhAscPNlmzLlJYMV6FpxwKRreNpcz1AFW5B/85IazZOJ9 NeLtIuDTcYVwo95Vg7SaKd7CXYUsfta0HcxRNkl2HzEjQy+3LPhYbctz9o90Y4g3IOcM l5LDH/ZmY9bIicosYZ5xY5hPxbRfogWCUObKfuX0jmZUHmLlYAE0VUdKOSazkR8ZHd5j fFHw== X-Gm-Message-State: APjAAAW1Wz0DeVLWeGBT4T8oDNKhh/pyfaX/fUWuEGMzB9GWD5HaQviD PbSruW2D/QPrWPqiQLkXIyC02EG77/15oQ== X-Google-Smtp-Source: APXvYqwHieP5naP14z2TUrDE8C0OkDl8M1XrjCQRNSoxZqqVxf6+U3r5WjmY6OX6J9CdToBo2tfVUg== X-Received: by 2002:a05:6638:1f1:: with SMTP id t17mr12262384jaq.130.1571880216944; Wed, 23 Oct 2019 18:23:36 -0700 (PDT) Received: from kiwi.bld.corp.google.com ([2620:15c:183:0:8223:87c:a681:66aa]) by smtp.gmail.com with ESMTPSA id q80sm10001929ilk.43.2019.10.23.18.23.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Oct 2019 18:23:36 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Date: Wed, 23 Oct 2019 19:22:13 -0600 Message-Id: <20191024012247.171746-8-sjg@chromium.org> X-Mailer: git-send-email 2.24.0.rc0.303.g954a862665-goog In-Reply-To: <20191024012247.171746-1-sjg@chromium.org> References: <20191024012247.171746-1-sjg@chromium.org> MIME-Version: 1.0 Cc: Tom Rini , Chris Packham Subject: [U-Boot] [PATCH 07/10] move_config: Convert to Python 3 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Convert this tool to Python 3 and make it use that, to meet the 2020 deadline. Signed-off-by: Simon Glass --- tools/moveconfig.py | 82 ++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/tools/moveconfig.py b/tools/moveconfig.py index b99417e9d63..e2ff4cfc88b 100755 --- a/tools/moveconfig.py +++ b/tools/moveconfig.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0+ # # Author: Masahiro Yamada @@ -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() @@ -1236,7 +1236,7 @@ class Slot: "Tool chain for '%s' is missing. Do nothing.\n" % arch) self.finish(False) return - env = toolchain.MakeEnvironment(False) + env = toolchain.MakeEnvironment(False) cmd = list(self.make_cmd) cmd.append('KCONFIG_IGNORE_DUPLICATES=1') @@ -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,14 +1905,14 @@ def main(): return config_db = {} - db_queue = Queue.Queue() + db_queue = queue.Queue() t = DatabaseThread(config_db, db_queue) t.setDaemon(True) t.start() if not options.cleanup_headers_only: check_clean_directory() - bsettings.Setup('') + bsettings.Setup('') toolchains = toolchain.Toolchains() toolchains.GetSettings() toolchains.Scan(verbose=False) @@ -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]))