[OE-core] RFC: Maintain backwards compatibility or not for module-base.bbclass

Peter Kjellerstedt peter.kjellerstedt at axis.com
Thu Jan 16 13:58:31 UTC 2014


Background: Back in September, Richard made a commit to 
linux-libc-headers.inc describing why one should not fork the 
linux-libc-headers recipe:

http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=babbf7a46acaefd9b36031483cafce053f607e66

As a result I created a local bbclass for our layer called 
kernel-headers, which provides a recipe with kernel headers 
that match the actually used version of the Linux kernel.
This was needed for packages that need to access hardware 
specific features that are not present in the generic kernel 
headers provided by linux-libc-headers.

My intention for this class was that it should be generic 
enough to be able to upstream it to OE Core.

Now, the other day a colleague of mine had a build failure due 
to this class. It turned out that even though the class adds a 
dependency on virtual/kernel and then uses the files that are 
installed to ${STAGING_KERNEL_DIR} when running oe_runmake 
headers_install, the command could fail because the 
${STAGING_KERNEL_DIR}/scripts was not populated. After asking 
Richard about this, I learned that this is due to problems 
with the sstate cache and not knowing whether a 32 bit host or 
a 64 bit host was used to generate the files. Thus I also 
learned that the scripts are actually built as a result of 
building modules.

Since I did not want my class to depend on modules having been 
built, I looked into modules.bbclass and modules-base.bbclass. 
There I found the function do_make_scripts() which is 
responsible for building  the kernel scripts. However, the 
current setup doesn't lend itself very well to use the 
modules-base.bbclass for something other than modules.

My idea then was to break this part out into a separate class, 
kernel-scripts, which I did. You can find both the 
kernel-scripts and kernel-headers classes here: 

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=pkj/kernel-headers

When I showed this to Richard he noted that my change was not 
backwards compatible (as I no longer provide the 
do_make_scripts() function from the module-base.bbclass). 
However, there is nothing besides module.bbclass in OE Core 
and meta-oe that use the module-base.bbclass.

Anyway, I made a modified version that does maintain backwards 
compatibility for module-base.bbclass here:

http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=pkj/kernel-headers-backwards-compatible

This time Richard complained about the extra class 
(kernel-scripts-base.bbclass), and noted that there was no 
way to win... He then suggested that I take the question of 
whether we need to maintain backwards compatibility for 
modules-base.bbclass to the mailing list.

So, here I am now. I do not know who else use the 
do_make_scripts() function from module-base.bbclass and in what 
way, and whether restructuring the functionality into the new 
kernel-scripts.bbclass without maintaining backwards 
compatibility would be a problem. If you know anything about 
this, please let me know.

Any comments appreciated.

//Peter




More information about the Openembedded-core mailing list