[oe] [RFC] Layers, PRINC and bbappends
Koen Kooi
koen at dominion.thruhere.net
Thu May 16 06:31:33 UTC 2013
Op 15 mei 2013, om 16:44 heeft Paul Eggleton <paul.eggleton at linux.intel.com> het volgende geschreven:
> Hi Koen,
>
> On Tuesday 14 May 2013 09:36:02 Koen Kooi wrote:
>> What triggered PR going backwards this time was a BSP removing its netbase
>> bbappend because it wasn't needed anymore. That's great, I hate netbase
>> bbappends since they tend to be ifupdown specific and don't work as
>> intended with connman/NM/netctl/etc. Long story short:
>>
>> ERROR: Package version for package netbase-dbg went backwards which would
>> break package feeds from (0:5.0-r3.1 to 0:5.0-r1.2) ERROR: Package version
>> for package netbase-staticdev went backwards which would break package
>> feeds from (0:5.0-r3.1 to 0:5.0-r1.2) ERROR: Package version for package
>> netbase-dev went backwards which would break package feeds from (0:5.0-r3.1
>> to 0:5.0-r1.2) ERROR: Package version for package netbase-doc went
>> backwards which would break package feeds from (0:5.0-r3.1 to 0:5.0-r1.2)
>> ERROR: Package version for package netbase-locale went backwards which
>> would break package feeds from (0:5.0-r3.1 to 0:5.0-r1.2) ERROR: Package
>> version for package netbase went backwards which would break package feeds
>> from (0:5.0-r3.1 to 0:5.0-r1.2)
>>
>> To avoid things like that in the future I have a few recommendations I'd
>> like to get feedback on:
>>
>> 1) For a given BSP split it in multiple layers:
>> a) One 'core' BSP layer with only:
>> o Bootloader
>> o Kernel
>> o Tooling to build bootloader/kernel/image
>> b) One BSP layer with bbappends for shadow/netbase/xorg-conf/etc
>> c) One or more layers with bbappends for libav/clutter/etc[2]
>
> I don't like this. This will mean effectively 3x the number of BSP layers, with
> independent testing effectively expected for the different combinations; I don't
> think this will be practical. It's fine for distros with pre-supplied lists of
> layers but lots of users are assembling their own layer stacks and this is
> just going to add pain for them.
The flip side is that adding BSP layers becomes a lot safer. I don't mind adding layers. Adding layers is easy. Removing layers is pretty much impossible, though.
> It's probably time we looked seriously at more effective analysis tools for
> examining what a layer is actually doing. We now have the variable history in
> bitbake which means that pinpointing a change to a variable down to the
> specific line in the file that made the change is now possible; we should be
> able to build upon this to provide tools that determine when e.g. BSP layers
> are doing things that affect builds for other machines.
>
> Of course, getting maintainers to deal with these issues is another problem,
> but identifying them in the first place would help a lot.
Yes, layer maintainers are proving to be the weak link is the layer system.
>> 2) *Never* use PRINC in type b) bbappends
>>
>> 3) Avoid PRINC in general
>
> Do we even need PRINC at all any more? I realise we have PRINC values around
> in bbappends that we can't easily drop without causing the problem you
> mentioned.
If PRSERV would work reliably we wouldn't need it. But even with the current flaky PRSERV PRINC is causing more problems than it's supposed to solve.
>> 4) make buildhistory.bbclass mandatory in OE-core
>
> Buildhistory does have some overhead as you know, which is why it's not on by
> default. I wonder if we could move the version going backwards check to
> package.bbclass or package QA, instead making it read the previous values from
> pkgdata. I'm not sure if sstate would get in the way in that the previous set
> of files might already be removed by the time it got to do_package; this would
> need to be investigated. Even if that is the case it might be that we can work
> around it.
I personally think the overhead is worth it, but as you say, moving bits to package.bbclass (and maybe using a sqlite db) would be very good as well.
>> During the last TSC meeting we discussed that there is currently no way to
>> force maintainers to behave. I think the most we can do is have clear
>> guidelines on the OE side and enforce those during the "Yocto Project
>> Compatible" process.
>
> Being more specific in the Yocto Project Compatible process requirements might
> help; I wasn't involved in developing that process so I can't really comment
> more than that. That wouldn't help with other layers in the OE community that
> aren't put through that process however.
>
> I think we need to improve the documentation we have about what is and what is
> not appropriate in a BSP layer. Most of the time it's not that maintainers are
> too lazy or deliberately setting out to force values, it's that they don't
> know they're doing anything wrong because we haven't documented all of the
> best practices anywhere. There was recently a question on this very mailing
> list about what constitute distro policy settings in the context of what
> shouldn't go into a BSP layer; the response has been a resounding "".
>
>> And have the layer index orange/red flag layers that
>> do stupid things. Come to think of it, that would actually be the most
>> visible way to go, having wikipedia style warning banners on the offending
>> layers.
>
> I think that's reasonable as long as maintainers can understand the problem.
> We'd need to be notifying maintainers directly about specifically what they are
> doing wrong and how to fix it; just putting a warning in the index isn't enough
> IMO. The layer index does record maintainer information and regularly reads
> layer metadata, so we have the infrastructure to do this now, just not the
> specific tools.
My thinking was that adding such a banner would email the maintainers of that layer. That still assumes that the layer maintainer actually reads email, which I don't think is true for a lot of layers :/
regards,
Koen
More information about the Openembedded-devel
mailing list