bitbake-devel.lists.openembedded.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] event: add bb.event.ParseError
@ 2023-04-10  9:19 mingli.yu
  2023-04-10  9:43 ` [bitbake-devel] " Frédéric Martinsons
  2023-04-11 16:50 ` Richard Purdie
  0 siblings, 2 replies; 5+ messages in thread
From: mingli.yu @ 2023-04-10  9:19 UTC (permalink / raw)
  To: bitbake-devel

From: Mingli Yu <mingli.yu@windriver.com>

Add bb.event.ParseError to let error-report can catch this kind of error.

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
 lib/bb/cooker.py | 6 ++++--
 lib/bb/event.py  | 8 ++++++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 1797a1d4..206f8ffb 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -2223,7 +2223,7 @@ class CookerParser(object):
 
             self.results = itertools.chain(self.results, self.parse_generator())
 
-    def shutdown(self, clean=True):
+    def shutdown(self, clean=True, eventmsg=""):
         if not self.toparse:
             return
         if self.haveshutdown:
@@ -2238,6 +2238,8 @@ class CookerParser(object):
 
             bb.event.fire(event, self.cfgdata)
         else:
+            if eventmsg:
+                bb.event.fire(bb.event.ParseError(eventmsg), self.cfgdata)
             bb.error("Parsing halted due to errors, see error messages above")
 
         # Cleanup the queue before call process.join(), otherwise there might be
@@ -2355,7 +2357,7 @@ class CookerParser(object):
         except bb.parse.ParseError as exc:
             self.error += 1
             logger.error(str(exc))
-            self.shutdown(clean=False)
+            self.shutdown(clean=False, eventmsg=str(exc))
             return False
         except bb.data_smart.ExpansionError as exc:
             self.error += 1
diff --git a/lib/bb/event.py b/lib/bb/event.py
index 37cc630c..72393829 100644
--- a/lib/bb/event.py
+++ b/lib/bb/event.py
@@ -856,3 +856,11 @@ class FindSigInfoResult(Event):
     def __init__(self, result):
         Event.__init__(self)
         self.result = result
+
+class ParseError(Event):
+    """
+    Event to indicate parse failed
+    """
+    def __init__(self, msg):
+        Event.__init__(self)
+        self._msg = msg
-- 
2.25.1



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

* Re: [bitbake-devel] [PATCH] event: add bb.event.ParseError
  2023-04-10  9:19 [PATCH] event: add bb.event.ParseError mingli.yu
@ 2023-04-10  9:43 ` Frédéric Martinsons
  2023-04-11 16:50 ` Richard Purdie
  1 sibling, 0 replies; 5+ messages in thread
From: Frédéric Martinsons @ 2023-04-10  9:43 UTC (permalink / raw)
  To: Yu, Mingli; +Cc: bitbake-devel

[-- Attachment #1: Type: text/plain, Size: 2271 bytes --]

On Mon, 10 Apr 2023 at 11:19, Yu, Mingli <mingli.yu@eng.windriver.com>
wrote:

> From: Mingli Yu <mingli.yu@windriver.com>
>
> Add bb.event.ParseError to let error-report can catch this kind of error.
>
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> ---
>  lib/bb/cooker.py | 6 ++++--
>  lib/bb/event.py  | 8 ++++++++
>  2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
> index 1797a1d4..206f8ffb 100644
> --- a/lib/bb/cooker.py
> +++ b/lib/bb/cooker.py
> @@ -2223,7 +2223,7 @@ class CookerParser(object):
>
>              self.results = itertools.chain(self.results,
> self.parse_generator())
>
> -    def shutdown(self, clean=True):
> +    def shutdown(self, clean=True, eventmsg=""):
>          if not self.toparse:
>              return
>          if self.haveshutdown:
> @@ -2238,6 +2238,8 @@ class CookerParser(object):
>
>              bb.event.fire(event, self.cfgdata)
>          else:
> +            if eventmsg:
> +                bb.event.fire(bb.event.ParseError(eventmsg), self.cfgdata)
>              bb.error("Parsing halted due to errors, see error messages
> above")
>
>          # Cleanup the queue before call process.join(), otherwise there
> might be
> @@ -2355,7 +2357,7 @@ class CookerParser(object):
>          except bb.parse.ParseError as exc:
>              self.error += 1
>              logger.error(str(exc))
> -            self.shutdown(clean=False)
> +            self.shutdown(clean=False, eventmsg=str(exc))
>              return False
>          except bb.data_smart.ExpansionError as exc:
>              self.error += 1
> diff --git a/lib/bb/event.py b/lib/bb/event.py
> index 37cc630c..72393829 100644
> --- a/lib/bb/event.py
> +++ b/lib/bb/event.py
> @@ -856,3 +856,11 @@ class FindSigInfoResult(Event):
>      def __init__(self, result):
>          Event.__init__(self)
>          self.result = result
> +
> +class ParseError(Event):
> +    """
> +    Event to indicate parse failed
> +    """
> +    def __init__(self, msg):
> +        Event.__init__(self)
> +        self._msg = msg
> --
> 2.25.1
>
>
Can't we just use super ?
super().__init__() instead of Event.__init__(self)
I didn't find a reference but I think it is a more pythonic way of calling
parent class.

[-- Attachment #2: Type: text/html, Size: 3163 bytes --]

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

* Re: [bitbake-devel] [PATCH] event: add bb.event.ParseError
  2023-04-10  9:19 [PATCH] event: add bb.event.ParseError mingli.yu
  2023-04-10  9:43 ` [bitbake-devel] " Frédéric Martinsons
@ 2023-04-11 16:50 ` Richard Purdie
  2023-04-12  2:42   ` Yu, Mingli
  1 sibling, 1 reply; 5+ messages in thread
From: Richard Purdie @ 2023-04-11 16:50 UTC (permalink / raw)
  To: Yu, Mingli, bitbake-devel

On Mon, 2023-04-10 at 17:19 +0800, Yu, Mingli wrote:
> From: Mingli Yu <mingli.yu@windriver.com>
> 
> Add bb.event.ParseError to let error-report can catch this kind of error.
> 
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> ---
>  lib/bb/cooker.py | 6 ++++--
>  lib/bb/event.py  | 8 ++++++++
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
> index 1797a1d4..206f8ffb 100644
> --- a/lib/bb/cooker.py
> +++ b/lib/bb/cooker.py
> @@ -2223,7 +2223,7 @@ class CookerParser(object):
>  
>              self.results = itertools.chain(self.results, self.parse_generator())
>  
> -    def shutdown(self, clean=True):
> +    def shutdown(self, clean=True, eventmsg=""):
>          if not self.toparse:
>              return
>          if self.haveshutdown:
> @@ -2238,6 +2238,8 @@ class CookerParser(object):
>  
>              bb.event.fire(event, self.cfgdata)
>          else:
> +            if eventmsg:
> +                bb.event.fire(bb.event.ParseError(eventmsg), self.cfgdata)
>              bb.error("Parsing halted due to errors, see error messages above")

Shouldn't this always fire the event even if there is no specific error
message?

Cheers,

Richard



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

* Re: [bitbake-devel] [PATCH] event: add bb.event.ParseError
  2023-04-11 16:50 ` Richard Purdie
@ 2023-04-12  2:42   ` Yu, Mingli
  2023-04-12  6:58     ` Richard Purdie
  0 siblings, 1 reply; 5+ messages in thread
From: Yu, Mingli @ 2023-04-12  2:42 UTC (permalink / raw)
  To: Richard Purdie, Yu, Mingli, bitbake-devel

Hi Richard,

On 4/12/23 00:50, Richard Purdie wrote:
> CAUTION: This email comes from a non Wind River email account!
> Do not click links or open attachments unless you recognize the sender and know the content is safe.
> 
> On Mon, 2023-04-10 at 17:19 +0800, Yu, Mingli wrote:
>> From: Mingli Yu <mingli.yu@windriver.com>
>>
>> Add bb.event.ParseError to let error-report can catch this kind of error.
>>
>> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
>> ---
>>   lib/bb/cooker.py | 6 ++++--
>>   lib/bb/event.py  | 8 ++++++++
>>   2 files changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
>> index 1797a1d4..206f8ffb 100644
>> --- a/lib/bb/cooker.py
>> +++ b/lib/bb/cooker.py
>> @@ -2223,7 +2223,7 @@ class CookerParser(object):
>>
>>               self.results = itertools.chain(self.results, self.parse_generator())
>>
>> -    def shutdown(self, clean=True):
>> +    def shutdown(self, clean=True, eventmsg=""):
>>           if not self.toparse:
>>               return
>>           if self.haveshutdown:
>> @@ -2238,6 +2238,8 @@ class CookerParser(object):
>>
>>               bb.event.fire(event, self.cfgdata)
>>           else:
>> +            if eventmsg:
>> +                bb.event.fire(bb.event.ParseError(eventmsg), self.cfgdata)
>>               bb.error("Parsing halted due to errors, see error messages above")
> 
> Shouldn't this always fire the event even if there is no specific error
> message?

There are many kinds of exception here and each exception will call 
shudown function, but we only catch bb.parse.ParseError exception and 
pass eventmsg to shudown function when it is bb.parse.ParseError. So 
checking eventmsg in shutdown function should be okay.

except bb.parse.ParseError as exc:
             self.error += 1
             logger.error(str(exc))
             self.shutdown(clean=False, eventmsg=str(exc))
             return False

Thanks,

> 
> Cheers,
> 
> Richard
> 


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

* Re: [bitbake-devel] [PATCH] event: add bb.event.ParseError
  2023-04-12  2:42   ` Yu, Mingli
@ 2023-04-12  6:58     ` Richard Purdie
  0 siblings, 0 replies; 5+ messages in thread
From: Richard Purdie @ 2023-04-12  6:58 UTC (permalink / raw)
  To: Yu, Mingli, Yu, Mingli, bitbake-devel

On Wed, 2023-04-12 at 10:42 +0800, Yu, Mingli wrote:
> Hi Richard,
> 
> On 4/12/23 00:50, Richard Purdie wrote:
> > CAUTION: This email comes from a non Wind River email account!
> > Do not click links or open attachments unless you recognize the sender and know the content is safe.
> > 
> > On Mon, 2023-04-10 at 17:19 +0800, Yu, Mingli wrote:
> > > From: Mingli Yu <mingli.yu@windriver.com>
> > > 
> > > Add bb.event.ParseError to let error-report can catch this kind of error.
> > > 
> > > Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> > > ---
> > >   lib/bb/cooker.py | 6 ++++--
> > >   lib/bb/event.py  | 8 ++++++++
> > >   2 files changed, 12 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
> > > index 1797a1d4..206f8ffb 100644
> > > --- a/lib/bb/cooker.py
> > > +++ b/lib/bb/cooker.py
> > > @@ -2223,7 +2223,7 @@ class CookerParser(object):
> > > 
> > >               self.results = itertools.chain(self.results, self.parse_generator())
> > > 
> > > -    def shutdown(self, clean=True):
> > > +    def shutdown(self, clean=True, eventmsg=""):
> > >           if not self.toparse:
> > >               return
> > >           if self.haveshutdown:
> > > @@ -2238,6 +2238,8 @@ class CookerParser(object):
> > > 
> > >               bb.event.fire(event, self.cfgdata)
> > >           else:
> > > +            if eventmsg:
> > > +                bb.event.fire(bb.event.ParseError(eventmsg), self.cfgdata)
> > >               bb.error("Parsing halted due to errors, see error messages above")
> > 
> > Shouldn't this always fire the event even if there is no specific error
> > message?
> 
> There are many kinds of exception here and each exception will call 
> shudown function, but we only catch bb.parse.ParseError exception and 
> pass eventmsg to shudown function when it is bb.parse.ParseError. So 
> checking eventmsg in shutdown function should be okay.
> 
> except bb.parse.ParseError as exc:
>              self.error += 1
>              logger.error(str(exc))
>              self.shutdown(clean=False, eventmsg=str(exc))
>              return False

I don't mean to call it totally unconditionally, only in the same cases
as we show the bb.error()

Cheers,

Richard


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

end of thread, other threads:[~2023-04-12  6:58 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-10  9:19 [PATCH] event: add bb.event.ParseError mingli.yu
2023-04-10  9:43 ` [bitbake-devel] " Frédéric Martinsons
2023-04-11 16:50 ` Richard Purdie
2023-04-12  2:42   ` Yu, Mingli
2023-04-12  6:58     ` Richard Purdie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).