[bitbake-devel] Couple of nasty bitbake issues

Richard Purdie richard.purdie at linuxfoundation.org
Thu Jun 16 13:54:10 UTC 2011


We have two nasty bitbake issues I've found:

a) Our event handlers don't behave quite as you'd expect due to the use
of global namespace.

Basically, if you *ever* register an eventhandler, even in an optional
class like native or nativesdk, your will always subsequently get called
for any event.

This means a handler in native.bbclass will see parsing events for a
recipe which doesn't use it. The problem comes from ast.py:

    all_handlers = {}
    for var in bb.data.getVar('__BBHANDLERS', d) or []:
        # try to add the handler
        handler = bb.data.getVar(var, d)
        bb.event.register(var, handler)

Since we register the handlers but never un-register them or only call
the ones which the current recipe uses.

I can work around this for now but we really should fix this.

b) The none server is totally broken for logging during parsing. Trying
to cram two combine two pieces of code into one main loop turns out not
to work so well.

The first problem is that any events coming from the sub processes
forked off during parallel parsing don't get sent to the server/UI. I
know this has been commented on by various people, this is the root
cause. I was able to fix that by borrowing queue code from the process
server, so far so good.

The problem then is the logger, since the logger in the UI uses the same
namespace and setup as the one in the server. The one in the server is
supposed to fire() events, the one in the UI is then meant to write them
to the console. Trying to do both things in the same process goes
horribly wrong. I have a hacky fix where each event is just seen twice
but it doesn't look like an easy problem to solve. I'm unable to find an
easy way to setup two loggers in parallel copying the config from one to
the other which is ideally what is needed.

I like the none server as its simple to debug. At present its looking
like it might be too ugly to fix this though. My hacks are:

http://git.yoctoproject.org/cgit.cgi/poky-contrib/commit/?h=rpurdie/ml&id=a3a130b3c6ca760066ca830eb46fa472ecb84c88

Cheers,

Richard









More information about the bitbake-devel mailing list