aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2015-12-02 12:54:08 +1300
committerPaul Eggleton <paul.eggleton@linux.intel.com>2016-05-09 16:18:56 +1200
commit35665d96131a41adc73cd9149f0d21d23e796714 (patch)
tree03242b1731fc53c1e381ad5187af955ce8a8755a
parent70c1d666bc298198cf1607f52cc4d20afef978b3 (diff)
downloadopenembedded-core-contrib-35665d96131a41adc73cd9149f0d21d23e796714.tar.gz
openembedded-core-contrib-35665d96131a41adc73cd9149f0d21d23e796714.tar.bz2
openembedded-core-contrib-35665d96131a41adc73cd9149f0d21d23e796714.zip
classes/kernel: check OLDEST_KERNEL at configure time
If the kernel being built is older than OLDEST_KERNEL and we're building with glibc, then the C library we're building is probably not going to be compatible with the kernel and we should warn the user. (This is easier to do here rather than when building glibc, because we don't necessarily have the information we need to determine the kernel version there, whereas we do here.) Fixes [YOCTO #8653]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
-rw-r--r--meta/classes/kernel.bbclass14
1 files changed, 14 insertions, 0 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index fa0864c2753..af88cc0c61b 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -330,6 +330,20 @@ sysroot_stage_all () {
KERNEL_CONFIG_COMMAND ?= "oe_runmake_call -C ${S} O=${B} oldnoconfig || yes '' | oe_runmake -C ${S} O=${B} oldconfig"
+python check_oldest_kernel() {
+ oldest_kernel = d.getVar('OLDEST_KERNEL', True)
+ kernel_version = d.getVar('KERNEL_VERSION', True)
+ tclibc = d.getVar('TCLIBC', True)
+ if tclibc == 'glibc':
+ kernel_version = kernel_version.split('-', 1)[0]
+ if oldest_kernel and kernel_version:
+ if bb.utils.vercmp_string(kernel_version, oldest_kernel) < 0:
+ bb.warn('%s: OLDEST_KERNEL is "%s" but the version of the kernel you are building is "%s" - therefore %s as built may not be compatible with this kernel. Either set OLDEST_KERNEL to an older version, or build a newer kernel.' % (d.getVar('PN', True), oldest_kernel, kernel_version, tclibc))
+}
+
+check_oldest_kernel[vardepsexclude] += "OLDEST_KERNEL KERNEL_VERSION"
+do_configure[prefuncs] += "check_oldest_kernel"
+
kernel_do_configure() {
# fixes extra + in /lib/modules/2.6.37+
# $ scripts/setlocalversion . => +