[dunfell,1.46,1/3] command: Ensure exceptions inheriting from BBHandledException are visible

Message ID 80348b68a34b7ec45a0496a4af7f2ae0c26488f0.1638136822.git.steve@sakoman.com
State Accepted, archived
Commit 80348b68a34b7ec45a0496a4af7f2ae0c26488f0
Headers show
Series [dunfell,1.46,1/3] command: Ensure exceptions inheriting from BBHandledException are visible | expand

Commit Message

Steve Sakoman Nov. 28, 2021, 10:02 p.m. UTC
From: Richard Purdie <richard.purdie@linuxfoundation.org>

Previous changes allowed BBHandledException to be detected but not exceptions
which inherit from it. Fix this. The code really needs totally reworking
to preserve the exceptions.

[YOCTO #14054]

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ef762d92df6c2554c6248e80212f984d9ec4c651)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
---
 lib/bb/command.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Patch

diff --git a/lib/bb/command.py b/lib/bb/command.py
index 6abf3866..07128027 100644
--- a/lib/bb/command.py
+++ b/lib/bb/command.py
@@ -74,8 +74,12 @@  class Command:
                 result = command_method(self, commandline)
             except CommandError as exc:
                 return None, exc.args[0]
-            except (Exception, SystemExit):
+            except (Exception, SystemExit) as exc:
                 import traceback
+                if isinstance(exc, bb.BBHandledException):
+                    # We need to start returning real exceptions here. Until we do, we can't
+                    # tell if an exception is an instance of bb.BBHandledException
+                    return None, "bb.BBHandledException()\n" + traceback.format_exc()
                 return None, traceback.format_exc()
             else:
                 return result, None