All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Exception handling fixes
@ 2012-09-07 15:22 Paul Eggleton
  2012-09-07 15:22 ` [PATCH 1/2] fetch2: fix malformed URL causing a useless traceback Paul Eggleton
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Paul Eggleton @ 2012-09-07 15:22 UTC (permalink / raw)
  To: bitbake-devel

The following changes (against Poky, but apply cleanly with -p2 against
bitbake master) are available in the git repository at:

  git://git.yoctoproject.org/poky-contrib paule/bb-brokenexcept
  http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=paule/bb-brokenexcept

Paul Eggleton (2):
  fetch2: fix malformed URL causing a useless traceback
  cooker: fix handling of exceptions during exception handling

 bitbake/lib/bb/cooker.py          |    9 +++++++--
 bitbake/lib/bb/fetch2/__init__.py |    4 ++--
 2 files changed, 9 insertions(+), 4 deletions(-)

-- 
1.7.9.5




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] fetch2: fix malformed URL causing a useless traceback
  2012-09-07 15:22 [PATCH 0/2] Exception handling fixes Paul Eggleton
@ 2012-09-07 15:22 ` Paul Eggleton
  2012-09-07 15:22 ` [PATCH 2/2] cooker: fix handling of exceptions during exception handling Paul Eggleton
  2012-09-10 12:14 ` [PATCH 0/2] Exception handling fixes Richard Purdie
  2 siblings, 0 replies; 4+ messages in thread
From: Paul Eggleton @ 2012-09-07 15:22 UTC (permalink / raw)
  To: bitbake-devel

The implementation of NoMethodError and MalformedUrl was broken - if you
just set self.args in an exception class to a string it treats it as a
list and then fails later on with a TypeError due to the number of
arguments not matching up.

This nasty exception during exception handling was breaking the normal
exception flow (fixed separately), which meant that if you had a
malformed URL or invalid protocol in SRC_URI you would get the
following:

ERROR: Command execution failed: Traceback (most recent call last):
  File "/home/user/poky/poky/bitbake/lib/bb/command.py", line 84, in runAsyncCommand
    self.cooker.updateCache()
  File "/home/user/poky/poky/bitbake/lib/bb/cooker.py", line 1207, in updateCache
    if not self.parser.parse_next():
  File "/home/user/poky/poky/bitbake/lib/bb/cooker.py", line 1694, in parse_next
    logger.error('Unable to parse %s', value.recipe,
AttributeError: 'exceptions.TypeError' object has no attribute 'recipe'

A specific fix for [YOCTO #2977].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 bitbake/lib/bb/fetch2/__init__.py |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py
index fae1add..37f7d75 100644
--- a/bitbake/lib/bb/fetch2/__init__.py
+++ b/bitbake/lib/bb/fetch2/__init__.py
@@ -54,7 +54,7 @@ class MalformedUrl(BBFetchException):
          msg = "The URL: '%s' is invalid and cannot be interpreted" % url
          self.url = url
          BBFetchException.__init__(self, msg)
-         self.args = url
+         self.args = (url,)
 
 class FetchError(BBFetchException):
     """General fetcher exception when something happens incorrectly"""
@@ -87,7 +87,7 @@ class NoMethodError(BBFetchException):
          msg = "Could not find a fetcher which supports the URL: '%s'" % url
          self.url = url
          BBFetchException.__init__(self, msg)
-         self.args = url
+         self.args = (url,)
 
 class MissingParameterError(BBFetchException):
     """Exception raised when a fetch method is missing a critical parameter in the url"""
-- 
1.7.9.5




^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] cooker: fix handling of exceptions during exception handling
  2012-09-07 15:22 [PATCH 0/2] Exception handling fixes Paul Eggleton
  2012-09-07 15:22 ` [PATCH 1/2] fetch2: fix malformed URL causing a useless traceback Paul Eggleton
@ 2012-09-07 15:22 ` Paul Eggleton
  2012-09-10 12:14 ` [PATCH 0/2] Exception handling fixes Richard Purdie
  2 siblings, 0 replies; 4+ messages in thread
From: Paul Eggleton @ 2012-09-07 15:22 UTC (permalink / raw)
  To: bitbake-devel

If an exception occurs during handling another exception we were
getting a useless traceback such as the following, after which
BitBake froze:

ERROR: Command execution failed: Traceback (most recent call last):
  File "/home/user/poky/poky/bitbake/lib/bb/command.py", line 84, in runAsyncCommand
    self.cooker.updateCache()
  File "/home/user/poky/poky/bitbake/lib/bb/cooker.py", line 1207, in updateCache
    if not self.parser.parse_next():
  File "/home/user/poky/poky/bitbake/lib/bb/cooker.py", line 1694, in parse_next
    logger.error('Unable to parse %s', value.recipe,
AttributeError: 'exceptions.TypeError' object has no attribute 'recipe'

Fix this to print an actual traceback of the exception and exit
gracefully (well, as gracefully as possible under the circumstances).

The general fix for [YOCTO #2977].

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 bitbake/lib/bb/cooker.py |    9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 1b3bb84..19173ae 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1691,8 +1691,13 @@ class CookerParser(object):
         except Exception as exc:
             self.error += 1
             etype, value, tb = sys.exc_info()
-            logger.error('Unable to parse %s', value.recipe,
-                         exc_info=(etype, value, exc.traceback))
+            if hasattr(value, "recipe"):
+                logger.error('Unable to parse %s', value.recipe,
+                            exc_info=(etype, value, exc.traceback))
+            else:
+                # Most likely, an exception occurred during raising an exception
+                import traceback
+                logger.error('Exception during parse: %s' % traceback.format_exc())
             self.shutdown(clean=False)
             return False
 
-- 
1.7.9.5




^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] Exception handling fixes
  2012-09-07 15:22 [PATCH 0/2] Exception handling fixes Paul Eggleton
  2012-09-07 15:22 ` [PATCH 1/2] fetch2: fix malformed URL causing a useless traceback Paul Eggleton
  2012-09-07 15:22 ` [PATCH 2/2] cooker: fix handling of exceptions during exception handling Paul Eggleton
@ 2012-09-10 12:14 ` Richard Purdie
  2 siblings, 0 replies; 4+ messages in thread
From: Richard Purdie @ 2012-09-10 12:14 UTC (permalink / raw)
  To: Paul Eggleton; +Cc: bitbake-devel

On Fri, 2012-09-07 at 16:22 +0100, Paul Eggleton wrote:
> The following changes (against Poky, but apply cleanly with -p2 against
> bitbake master) are available in the git repository at:
> 
>   git://git.yoctoproject.org/poky-contrib paule/bb-brokenexcept
>   http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=paule/bb-brokenexcept
> 
> Paul Eggleton (2):
>   fetch2: fix malformed URL causing a useless traceback
>   cooker: fix handling of exceptions during exception handling

Merged to master, thanks.

Richard




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-09-10 12:27 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-07 15:22 [PATCH 0/2] Exception handling fixes Paul Eggleton
2012-09-07 15:22 ` [PATCH 1/2] fetch2: fix malformed URL causing a useless traceback Paul Eggleton
2012-09-07 15:22 ` [PATCH 2/2] cooker: fix handling of exceptions during exception handling Paul Eggleton
2012-09-10 12:14 ` [PATCH 0/2] Exception handling fixes Richard Purdie

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.