path: root/meta/classes
diff options
authorPaul Eggleton <paul.eggleton@linux.intel.com>2016-05-09 16:43:31 +1200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-05-20 10:20:21 +0100
commit2e66f57febe85a63ce2ab98eaf6318d47eb60939 (patch)
tree5288b9ccd2fc5128f986e5f5ba55d0cfc5108a83 /meta/classes
parent3f1d813e7183750b5189ae1ee99fd2f0bdeacac7 (diff)
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> Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'meta/classes')
1 files changed, 14 insertions, 0 deletions
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 75450ce1a0..c5355cf37e 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -326,6 +326,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 . => +