The OpenEmbedded build infrastructure now has a fairly sane event handling core. The following are the events which get fired at appropriate points during the build process: TaskStarted: TaskFailed: TaskSucceeded: The task status event classes have a 'task' attribute, which is simply a string containing the task to which this event applies. They also have a 'data' attribute, which contains the environment data of the package in question. PkgStarted: PkgSucceeded: PkgFailed: The package build status event classes are a bit higher level. That is, they reflect the overall build status of a given package as a whole, without the task level breakdown. The 'package' attribute is a string which contains the package which failed, in the usual form (i.e. content/glibc-2.3.1-r0). UnsatisfiedDep: This event is triggered by oemake whenever an unsatisfied dependency is encountered on a package we're attempting to build. It will remove the package from the build, and every package that directly or indirectly depends on the package that encountered this problem. Handling: Any .oe or .oeclass can register an event handler. It is simply 'addhandler [ ...]'. The variable in question must be flagged as a block of python code, and, due to the way in which it spawns the code, must be indented by an extra tab. See the base.oeclass for our base event handler as an example. TODO: RecursiveDep MultipleProviders Add 'log' data to the task and package builds, which contains the stdout and stderr of the task/package which succeeded/failed, so that email notifications of failures can include the build log.