From patchwork Fri Aug 15 15:59:26 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 380316 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 92655140077 for ; Sat, 16 Aug 2014 02:00:14 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id DD6064B372; Fri, 15 Aug 2014 18:00:12 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aH9eoAiree-Q; Fri, 15 Aug 2014 18:00:12 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 7198D4B576; Fri, 15 Aug 2014 18:00:10 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 8AA514B576 for ; Fri, 15 Aug 2014 18:00:05 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id e7Za1hnfzDFG for ; Fri, 15 Aug 2014 18:00:01 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-pa0-f43.google.com (mail-pa0-f43.google.com [209.85.220.43]) by theia.denx.de (Postfix) with ESMTPS id 7A85D4B372 for ; Fri, 15 Aug 2014 17:59:57 +0200 (CEST) Received: by mail-pa0-f43.google.com with SMTP id lf10so3650096pab.2 for ; Fri, 15 Aug 2014 08:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id; bh=+fRpKI6MyGlzVCGRDkrt8upricZefnQefp4IVhANl9I=; b=j+oKipKYLjY8HqgotCXFsUItZCSpubiqI6SaxqygGxRZ5NWnSNoKV1Jk8HkeTK23UI i6fBBVGO0mu+HvumzhPqJi28JLennKDsggXnfgn6m8hZeTXRfuyVVv6mxe3KyqzHZYX3 WjQhF0SUdueVQEawtshBmkUh51IrlGPIyqL2bKzCZEByjTOOR3PchUQK/eE1MTUoOXgb f1UIB0KU1aRbmZ+UOj1TpFUiupG/URnB7TeIp3lUo2QCOBv0dYwLBJ6GIvub6y3YvSHC kDf0epY/XGYT/4+UW6+sStbJr3W7dTJt15NMk/HTEkNe9dXsyjupKgLppSGGd9ubqBV9 61fQ== X-Received: by 10.68.243.70 with SMTP id ww6mr13391803pbc.3.1408118390088; Fri, 15 Aug 2014 08:59:50 -0700 (PDT) Received: from oscar.sesame (112.136.125.45.er.eaccess.ne.jp. [112.136.125.45]) by mx.google.com with ESMTPSA id qn7sm28890639pac.42.2014.08.15.08.59.48 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 15 Aug 2014 08:59:49 -0700 (PDT) From: Masahiro Yamada To: u-boot@lists.denx.de Date: Sat, 16 Aug 2014 00:59:26 +0900 Message-Id: <1408118367-6705-1-git-send-email-yamada.m@jp.panasonic.com> X-Mailer: git-send-email 1.9.1 Subject: [U-Boot] [PATCH v2] tools, scripts: refactor error-out statements of Python scripts X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de In Python, sys.exit() function can also take an object other than an integer. If an integer is given to the argument, Python exits with the return code of it. If a non-integer argument is given, Python outputs it to stderr and exits with the return code of 1. That means, print >> sys.stderr, "Blah Blah" sys.exit(1) is equivalent to sys.exit("Blah Blah") The latter is a useful shorthand. Note: Some error messages in Buildman and Patman were output to stdout. But they should go to stderr. They are also fixed by this commit. This is a nice side effect. Signed-off-by: Masahiro Yamada Acked-by: Simon Glass --- Changes in v2: - Rebase on commit e49f14af13 scripts/mailmapper | 3 +-- scripts/multiconfig.py | 7 +------ tools/buildman/control.py | 15 +++++---------- tools/genboardscfg.py | 16 +++++----------- tools/patman/checkpatch.py | 5 ++--- tools/patman/patman.py | 3 +-- 6 files changed, 15 insertions(+), 34 deletions(-) diff --git a/scripts/mailmapper b/scripts/mailmapper index dd1ddf6..922ada6 100755 --- a/scripts/mailmapper +++ b/scripts/mailmapper @@ -59,8 +59,7 @@ MIN_COMMITS = 50 try: toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel']) except subprocess.CalledProcessError: - print >> sys.stderr, 'Please run in a git repository.' - sys.exit(1) + sys.exit('Please run in a git repository.') # strip '\n' toplevel = toplevel.rstrip() diff --git a/scripts/multiconfig.py b/scripts/multiconfig.py index 749abcb..69a470e 100755 --- a/scripts/multiconfig.py +++ b/scripts/multiconfig.py @@ -194,11 +194,6 @@ def rmdirs(*dirs): exception.errno != errno.ENOTEMPTY: raise -def error(msg): - """Output the given argument to stderr and exit with return code 1.""" - print >> sys.stderr, msg - sys.exit(1) - def run_command(command, callback_on_error=None): """Run the given command in a sub-shell (and exit if it fails). @@ -211,7 +206,7 @@ def run_command(command, callback_on_error=None): if retcode: if callback_on_error: callback_on_error() - error("'%s' Failed" % command) + sys.exit("'%s' Failed" % command) def run_make_config(cmd, objdir, callback_on_error=None): """Run the make command in a sub-shell (and exit if it fails). diff --git a/tools/buildman/control.py b/tools/buildman/control.py index 98a07a2..d98e50a 100644 --- a/tools/buildman/control.py +++ b/tools/buildman/control.py @@ -110,15 +110,13 @@ def DoBuildman(options, args): if count is None: str = ("Branch '%s' not found or has no upstream" % options.branch) - print col.Color(col.RED, str) - sys.exit(1) + sys.exit(col.Color(col.RED, str)) count += 1 # Build upstream commit also if not count: str = ("No commits found to process in branch '%s': " "set branch's upstream or use -c flag" % options.branch) - print col.Color(col.RED, str) - sys.exit(1) + sys.exit(col.Color(col.RED, str)) # Work out what subset of the boards we are building board_file = os.path.join(options.git, 'boards.cfg') @@ -127,16 +125,14 @@ def DoBuildman(options, args): status = subprocess.call([os.path.join(options.git, 'tools/genboardscfg.py')]) if status != 0: - print >> sys.stderr, "Failed to generate boards.cfg" - sys.exit(1) + sys.exit("Failed to generate boards.cfg") boards = board.Boards() boards.ReadBoards(os.path.join(options.git, 'boards.cfg')) why_selected = boards.SelectBoards(args) selected = boards.GetSelected() if not len(selected): - print col.Color(col.RED, 'No matching boards found') - sys.exit(1) + sys.exit(col.Color(col.RED, 'No matching boards found')) # Read the metadata from the commits. First look at the upstream commit, # then the ones in the branch. We would like to do something like @@ -182,8 +178,7 @@ def DoBuildman(options, args): gnu_make = command.Output(os.path.join(options.git, 'scripts/show-gnu-make')).rstrip() if not gnu_make: - print >> sys.stderr, 'GNU Make not found' - sys.exit(1) + sys.exit('GNU Make not found') # Create a new builder with the selected options if options.branch: diff --git a/tools/genboardscfg.py b/tools/genboardscfg.py index 734d90b..99e4e87 100755 --- a/tools/genboardscfg.py +++ b/tools/genboardscfg.py @@ -77,16 +77,14 @@ def check_top_directory(): """Exit if we are not at the top of source directory.""" for f in ('README', 'Licenses'): if not os.path.exists(f): - print >> sys.stderr, 'Please run at the top of source directory.' - sys.exit(1) + sys.exit('Please run at the top of source directory.') def get_make_cmd(): """Get the command name of GNU Make.""" process = subprocess.Popen([SHOW_GNU_MAKE], stdout=subprocess.PIPE) ret = process.communicate() if process.returncode: - print >> sys.stderr, 'GNU Make not found' - sys.exit(1) + sys.exit('GNU Make not found') return ret[0].rstrip() ### classes ### @@ -209,9 +207,7 @@ class DotConfigParser: # sanity check of '.config' file for field in self.must_fields: if not field in fields: - print >> sys.stderr, 'Error: %s is not defined in %s' % \ - (field, defconfig) - sys.exit(1) + sys.exit('Error: %s is not defined in %s' % (field, defconfig)) # fix-up for aarch64 and tegra if fields['arch'] == 'arm' and 'cpu' in fields: @@ -455,8 +451,7 @@ def __gen_boards_cfg(jobs): # wait until the reformat tool finishes reformat_process.communicate() if reformat_process.returncode != 0: - print >> sys.stderr, '"%s" failed' % REFORMAT_CMD[0] - sys.exit(1) + sys.exit('"%s" failed' % REFORMAT_CMD[0]) def gen_boards_cfg(jobs): """Generate boards.cfg file. @@ -489,8 +484,7 @@ def main(): try: jobs = int(options.jobs) except ValueError: - print >> sys.stderr, 'Option -j (--jobs) takes a number' - sys.exit(1) + sys.exit('Option -j (--jobs) takes a number') else: try: jobs = int(subprocess.Popen(['getconf', '_NPROCESSORS_ONLN'], diff --git a/tools/patman/checkpatch.py b/tools/patman/checkpatch.py index 0d4e935..34a3bd2 100644 --- a/tools/patman/checkpatch.py +++ b/tools/patman/checkpatch.py @@ -34,9 +34,8 @@ def FindCheckPatch(): return fname path = os.path.dirname(path) - print >> sys.stderr, ('Cannot find checkpatch.pl - please put it in your ' + - '~/bin directory or use --no-check') - sys.exit(1) + sys.exit('Cannot find checkpatch.pl - please put it in your ' + + '~/bin directory or use --no-check') def CheckPatch(fname, verbose=False): """Run checkpatch.pl on a file. diff --git a/tools/patman/patman.py b/tools/patman/patman.py index c60aa5a..ba5dc91 100755 --- a/tools/patman/patman.py +++ b/tools/patman/patman.py @@ -122,8 +122,7 @@ else: col = terminal.Color() if not options.count: str = 'No commits found to process - please use -c flag' - print col.Color(col.RED, str) - sys.exit(1) + sys.exit(col.Color(col.RED, str)) # Read the metadata from the commits if options.count: