[oe] openembedded / dpkg-buildpackage hybrid
Chris Larson
clarson at kergoth.com
Wed Nov 24 14:19:22 UTC 2010
On Wed, Nov 24, 2010 at 7:05 AM, Chris Larson <clarson at kergoth.com> wrote:
> On Wed, Nov 24, 2010 at 2:52 AM, Esben Haabendal
> <esbenhaabendal at gmail.com> wrote:
>> Chris Larson <clarson at kergoth.com> writes:
>>
>>> ... Right now the OE sysroot (where files are shared
>>> between dependencies) is global, rather than per-recipe, and if
>>> multiple versions of something get yanked into a build, they'll step
>>> all over one another in that sysroot. We've discussed possibly moving
>>> to per-recipe sysroots in the past, constructing them on demand based
>>> upon what that recipe requires, but we're not there yet, ...
>>
>> If I may be so bold, why is OE not going in that direction full speed?
>> We seem to (at best) to be on a very long detour...
>
> There are many people using OE, with widely varying priorities, and
> there are *many* things that need to be fixed / improved in both
> bitbake and OE.
>
>> It "just" requires rethinking that way DEPENDS is handled, which will
>> end up being much more like RDEPENDS is done now. A recipe depends on a
>> number of "items". Items are provided by packages, and packages can
>> (recursively) depend on other items. When constructing the runqueue,
>> the task that sets the stage depends on the task that packages stage
>> packages on all recipes that provides any of the (recursively) needed
>> packages.
>
> I threw together a prototype of per recipe staging areas, with caching
> of the areas for recipes with equivalent dependency trees at one time,
> but it was suboptimal, depended on other branches that no longer
> exist, and it just hasn't been a top priority for anyone to get this
> to happen. It may help if you consider that most people working on OE
> just want to *use* it to get their work done. There are very few who
> delve into the core of OE, much less bitbake.
>
>> Looking at build dependencies just makes so much more sense IMHO, and a
>> lot of issues that OE has/is fighting goes away. No more race
>> situations with a common stage dir, and no more problems with -initial,
>> -intermediate recipes. It even opens up for more flexible build
>> dependency handling, but that is another side of it.
>>
>> For anyone interested, I have something like the above (based on OE) at
>> http://www.gitorious.org/~esben/oe-lite/esbens-core
>>
>> The entire runqueue code is rewritten from scratch, using an in-memory
>> sqlite database, but the concept could just as well be done based on a
>> truckload of Python dicts and lists, if this is more to ones liking ;-)
>> The interesting code with regards to this subject is in lib/oelite
>
> This sounds very interesting to me. Personally, I think our overuse
> of lists/dicts/etc is just one big code smell -- Primitive Obsession
> -- but then, I'm no expert on object oriented design, or design in
> general. My python is improving, but there's still plenty of room to
> go. I'll take a look at your code. I'm always open to seeing bitbake
> improvements. As I said above, there's a serious shortage of people
> willing to improve it at this time.
>
>> It uses standard bitbake, but OE classes are heavily modified, and a
>> number of basic OE features are completely missing (but this is not
>> related to the per-receipe style staging).
>>
>> So have a look if you like, or just skip it as it cannot easily be merged into
>> OpenEmbedded as it is now.
Have you taken a look at the work Richard Purdie has done on bitbake
for Poky/Yocto? It isn't refactoring the way you've done, but it does
rework how packaged staging is used. It implements per-task metadata
checksumming (based upon my oe signatures code) and task level output
archiving for populate_sysroot, to be used to short-circuit its build
in subsequent runs. Conceptually its an interesting tactic, and I
think metadata checksumming is going to be critical going forward, to
improving our build reproducibility.
--
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics
More information about the Openembedded-devel
mailing list