[bitbake-devel] [PATCH 6/7] bitbake: event: adding events to allow bbclasses to push custom info

Damian, Alexandru alexandru.damian at intel.com
Mon Sep 16 13:56:32 UTC 2013


On Mon, Sep 16, 2013 at 2:46 PM, Richard Purdie <
richard.purdie at linuxfoundation.org> wrote:

> On Mon, 2013-09-16 at 14:33 +0100, Alex DAMIAN wrote:
> > From: Alexandru DAMIAN <alexandru.damian at intel.com>
> >
> > We add a new event that will be triggered by the
> > package-building class, containing the information
> > about the currently built package.
> >
> > Adding an event that will passi information about the
> > content of each package file that gets built.
> >
> > Knotty UI will ignore these events by default.
> >
> > Maybe a mechanism for using a single generic event is in order ?
> >
> > Signed-off-by: Alexandru DAMIAN <alexandru.damian at intel.com>
> > ---
> >  bitbake/lib/bb/event.py     | 16 ++++++++++++++++
> >  bitbake/lib/bb/ui/knotty.py |  2 ++
> >  2 files changed, 18 insertions(+)
> >
> > diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py
> > index 67cfcea..7dd9236 100644
> > --- a/bitbake/lib/bb/event.py
> > +++ b/bitbake/lib/bb/event.py
> > @@ -589,6 +589,22 @@ class PackageInfo(Event):
> >          Event.__init__(self)
> >          self._pkginfolist = pkginfolist
> >
> > +class SinglePackageInfo(Event):
> > +    """
> > +    Single Package Information sent on emit_pkgdata
> > +    """
> > +    def __init__(self, data):
> > +        Event.__init__(self)
> > +        self._data = data
> > +
> > +class PackageFileSizes(Event):
> > +    """
> > +    Event that contains information about the file sizes contained in a
> package.
> > +    """
> > +    def __init__(self, data):
> > +        Event.__init__(self)
> > +        self._data = data
> > +
> >  class SanityCheck(Event):
> >      """
>
> Your explanation in the commit message isn't as detailed as it could
> be.
>
> I'm guessing but I suspect the problem we have is that the event cannot
> be rebuilt on the other side of an XMLRPC connection without having the
> event class in a common namespace?
>
> This is therefore a hack to allow the event to exist in all the client
> side namespaces.
>

[Alex] Yep, this is an ugly hack.


>
> Ideally we should really have an API which allows the classes themselves
> to declare their event formats and not require adding to event.py every
> time a new piece of code/event is added.
>

[Alex] I would favor a single "GenericEvent" that will take a set of
defined parameters,
that would allow "subclassing" at runtime - sort of introspection if you
will.

Something like this:

class GenericInfo(Event):
    def __init__(self, type, data):
        Event.__init__(self)
        self._type = type
        self._data = data

with a call like

bb.event.fire(bb.event.GenericInfo("PackageInfo", pkginfolist), e.data)

the UI handlers / anybody would subscribe to GenericInfo events,
and the processing code would look like:

if isinstance(event, bb.event.GenericInfo):
    if event._type == "PackageInfo":
         savePackageInfo(event)
    elif event._type == "PackageFileSizes":
        ....


What do you think ?


>
> Presumably there is some change required to OE-Core in order for this
> get used to?
>

The code using the e

>
> Is the PackageFileSizes not contained in the other event data?
>

[Alex] Not  that I could find.

>
> I appreciate we allowed PackageInfo in but I didn't like it at the time,
> I like it even less now I see we're just going to keep doing this :(.
>
> >      Event to issue sanity check
> > diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
> > index 0211b50..03baa75 100644
> > --- a/bitbake/lib/bb/ui/knotty.py
> > +++ b/bitbake/lib/bb/ui/knotty.py
> > @@ -477,6 +477,8 @@ def main(server, eventHandler, params, tf =
> TerminalFilter):
> >
> >              # ignore
> >              if isinstance(event, (bb.event.BuildBase,
> > +                                  bb.event.PackageFileSizes,
> > +                                  bb.event.SinglePackageInfo,
> >                                    bb.event.StampUpdate,
> >                                    bb.event.ConfigParsed,
> >                                    bb.event.RecipeParsed,
>
>
> Given the event masking that is now in knotty, do we need to do this?
> Can't we remove this block?
>

[Alex] Yep, it should get removed. I refrained from doing so since it
wasn't deleted
when the subscription code got merged in.


> Cheers,
>
> Richard
>
>
>


-- 
Alex Damian
Yocto Project
SSG / OTC
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20130916/eef9ff65/attachment-0002.html>


More information about the bitbake-devel mailing list