[oe] [RFC] Layers, PRINC and bbappends

Paul Eggleton paul.eggleton at linux.intel.com
Wed May 15 14:44:53 UTC 2013


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.

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.

> 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.

> 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.

> 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.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre




More information about the Openembedded-devel mailing list