On 05/09/2013 10:23 AM, Chris Larson wrote:
On Wed, May 8, 2013 at 7:14 PM, Robert Yang <liezhi.y...@windriver.com>wrote:

On 05/08/2013 08:03 PM, Mike Looijmans wrote:

On 05/08/2013 11:06 AM, Robert Yang wrote:

The bb.fatal() is defined as:

def fatal(*args):
      logger.critical(''.join(args))
      sys.exit(1)

So anything after bb.fatal() in the same code block doesn't have any
effect, e.g.:

      bb.fatal("%s_%s: %s" % (var, pkg, e))
      raise e

The "raise e" should be removed.


Just some random thoughts that occurred to me when I read this:


Hi Mike, thanks for your comments, but the "raise sys.exit(1)" doesn't
raise
anything, e.g.:

import sys

def fatal():
         sys.exit(1)

try:
         raise fatal()
except Exception as e:
         raise e

I think that the "raise fatal()" equals to "fatal()" here.


He didn't say raise sys.exit(1), he said sys.exit(1) is equivalent to raise
SystemExit(1), which it is.


Hi Chris, thanks, if I understand correctly, what you mean is that change the
definition of bb.fatal() to let it can raise the exception "e" (not only change
the "sys.exit(1)" to "raise SystemExit(1)"), something like:

def fatal(e, *args):
    logger.critical(''.join(args))
    try:
        if e:
            raise e # if there is e
    finally:
        # but this one will flush the previous "raise e"
        raise SystemExit(1)

it seems that this doesn't work (or do we have other ways to make it work that I
don't know?) or make much differences.

and not all the bb.fatal() has an exception, e.g.:

bb.fatal("No OUTSPECFILE")

we need change all the current bb.fatal()'s usage, is it worth ?

// Robert







_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core

Reply via email to