Browse Source

tools, scripts: refactor error-out statements of Python scripts

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 <yamada.m@jp.panasonic.com>
Acked-by: Simon Glass <sjg@chromium.org>
Masahiro Yamada 9 years ago
parent
commit
31e2141d5a

+ 1 - 2
scripts/mailmapper

@@ -59,8 +59,7 @@ MIN_COMMITS = 50
 try:
 try:
     toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'])
     toplevel = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'])
 except subprocess.CalledProcessError:
 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'
 # strip '\n'
 toplevel = toplevel.rstrip()
 toplevel = toplevel.rstrip()

+ 1 - 6
scripts/multiconfig.py

@@ -194,11 +194,6 @@ def rmdirs(*dirs):
                exception.errno != errno.ENOTEMPTY:
                exception.errno != errno.ENOTEMPTY:
                 raise
                 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):
 def run_command(command, callback_on_error=None):
     """Run the given command in a sub-shell (and exit if it fails).
     """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 retcode:
         if callback_on_error:
         if callback_on_error:
             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):
 def run_make_config(cmd, objdir, callback_on_error=None):
     """Run the make command in a sub-shell (and exit if it fails).
     """Run the make command in a sub-shell (and exit if it fails).

+ 5 - 10
tools/buildman/control.py

@@ -110,15 +110,13 @@ def DoBuildman(options, args):
             if count is None:
             if count is None:
                 str = ("Branch '%s' not found or has no upstream" %
                 str = ("Branch '%s' not found or has no upstream" %
                        options.branch)
                        options.branch)
-                print col.Color(col.RED, str)
-                sys.exit(1)
+                sys.exit(col.Color(col.RED, str))
             count += 1   # Build upstream commit also
             count += 1   # Build upstream commit also
 
 
     if not count:
     if not count:
         str = ("No commits found to process in branch '%s': "
         str = ("No commits found to process in branch '%s': "
                "set branch's upstream or use -c flag" % options.branch)
                "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
     # Work out what subset of the boards we are building
     board_file = os.path.join(options.git, 'boards.cfg')
     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,
         status = subprocess.call([os.path.join(options.git,
                                                'tools/genboardscfg.py')])
                                                'tools/genboardscfg.py')])
         if status != 0:
         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 = board.Boards()
     boards.ReadBoards(os.path.join(options.git, 'boards.cfg'))
     boards.ReadBoards(os.path.join(options.git, 'boards.cfg'))
     why_selected = boards.SelectBoards(args)
     why_selected = boards.SelectBoards(args)
     selected = boards.GetSelected()
     selected = boards.GetSelected()
     if not len(selected):
     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,
     # 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
     # 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,
     gnu_make = command.Output(os.path.join(options.git,
                                            'scripts/show-gnu-make')).rstrip()
                                            'scripts/show-gnu-make')).rstrip()
     if not gnu_make:
     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
     # Create a new builder with the selected options
     if options.branch:
     if options.branch:

+ 5 - 11
tools/genboardscfg.py

@@ -77,16 +77,14 @@ def check_top_directory():
     """Exit if we are not at the top of source directory."""
     """Exit if we are not at the top of source directory."""
     for f in ('README', 'Licenses'):
     for f in ('README', 'Licenses'):
         if not os.path.exists(f):
         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():
 def get_make_cmd():
     """Get the command name of GNU Make."""
     """Get the command name of GNU Make."""
     process = subprocess.Popen([SHOW_GNU_MAKE], stdout=subprocess.PIPE)
     process = subprocess.Popen([SHOW_GNU_MAKE], stdout=subprocess.PIPE)
     ret = process.communicate()
     ret = process.communicate()
     if process.returncode:
     if process.returncode:
-        print >> sys.stderr, 'GNU Make not found'
-        sys.exit(1)
+        sys.exit('GNU Make not found')
     return ret[0].rstrip()
     return ret[0].rstrip()
 
 
 ### classes ###
 ### classes ###
@@ -209,9 +207,7 @@ class DotConfigParser:
         # sanity check of '.config' file
         # sanity check of '.config' file
         for field in self.must_fields:
         for field in self.must_fields:
             if not field in 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
         # fix-up for aarch64 and tegra
         if fields['arch'] == 'arm' and 'cpu' in fields:
         if fields['arch'] == 'arm' and 'cpu' in fields:
@@ -455,8 +451,7 @@ def __gen_boards_cfg(jobs):
     # wait until the reformat tool finishes
     # wait until the reformat tool finishes
     reformat_process.communicate()
     reformat_process.communicate()
     if reformat_process.returncode != 0:
     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):
 def gen_boards_cfg(jobs):
     """Generate boards.cfg file.
     """Generate boards.cfg file.
@@ -489,8 +484,7 @@ def main():
         try:
         try:
             jobs = int(options.jobs)
             jobs = int(options.jobs)
         except ValueError:
         except ValueError:
-            print >> sys.stderr, 'Option -j (--jobs) takes a number'
-            sys.exit(1)
+            sys.exit('Option -j (--jobs) takes a number')
     else:
     else:
         try:
         try:
             jobs = int(subprocess.Popen(['getconf', '_NPROCESSORS_ONLN'],
             jobs = int(subprocess.Popen(['getconf', '_NPROCESSORS_ONLN'],

+ 2 - 3
tools/patman/checkpatch.py

@@ -34,9 +34,8 @@ def FindCheckPatch():
             return fname
             return fname
         path = os.path.dirname(path)
         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):
 def CheckPatch(fname, verbose=False):
     """Run checkpatch.pl on a file.
     """Run checkpatch.pl on a file.

+ 1 - 2
tools/patman/patman.py

@@ -122,8 +122,7 @@ else:
     col = terminal.Color()
     col = terminal.Color()
     if not options.count:
     if not options.count:
         str = 'No commits found to process - please use -c flag'
         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
     # Read the metadata from the commits
     if options.count:
     if options.count: