The kernel being built should match what the recipe claims it is building. This function ensures that happens for anyone using LINUX_VERSION as they should. As it will likely break outside kernels not using LINUX_VERSION, only enable the function for linux-yocto for now.
Signed-off-by: California Sullivan <california.l.sulli...@intel.com> --- I'm not absolutely sure this is the correct path to solve the issue. This patch relies on LINUX_VERSION being set which isn't a guarantee. There is probably a more general solution that I'm not thinking of. meta/classes/kernel.bbclass | 21 +++++++++++++++++++++ meta/recipes-kernel/linux/linux-yocto.inc | 1 + 2 files changed, 22 insertions(+) diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass index db42744..ac2611f 100644 --- a/meta/classes/kernel.bbclass +++ b/meta/classes/kernel.bbclass @@ -330,6 +330,27 @@ kernel_do_install() { } do_install[prefuncs] += "package_get_auto_pr" +# Must be ran some time after do_kernel_checkout or else Makefile won't be in ${S}/Makefile +do_kernel_version_sanity_check() { + # The Makefile determines the kernel version shown at runtime + # Don't use KERNEL_VERSION because the headers it grabs the version from aren't generated until do_compile + VERSION=$(grep "^VERSION =" ${S}/Makefile | sed s/.*=\ //) + PATCHLEVEL=$(grep "^PATCHLEVEL =" ${S}/Makefile | sed s/.*=\ //) + SUBLEVEL=$(grep "^SUBLEVEL =" ${S}/Makefile | sed s/.*=\ //) + + # If SUBLEVEL is zero or doesn't exist we ignore it as VERSION.PATCHLEVEL is normal + if [ -n "${SUBLEVEL}" ] && [ "${SUBLEVEL}" != "0" ]; then + if [ "${VERSION}.${PATCHLEVEL}.${SUBLEVEL}" != "${LINUX_VERSION}" ]; then + bbfatal "LINUX_VERSION (${LINUX_VERSION}) does not match kernel being built (${VERSION}.${PATCHLEVEL}.${SUBLEVEL}).\nTo fix this correct the LINUX_VERSION variable in your kernel recipe." + fi + else + if [ "${VERSION}.${PATCHLEVEL}" != "${LINUX_VERSION}" ]; then + bbfatal "LINUX_VERSION (${LINUX_VERSION}) does not match kernel being built (${VERSION}.${PATCHLEVEL}).\nTo fix this correct the LINUX_VERSION variable in your kernel recipe." + fi + fi + exit 0 +} + addtask shared_workdir after do_compile before do_compile_kernelmodules addtask shared_workdir_setscene diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc index 98a48ec..d979662 100644 --- a/meta/recipes-kernel/linux/linux-yocto.inc +++ b/meta/recipes-kernel/linux/linux-yocto.inc @@ -55,6 +55,7 @@ do_install_append(){ } # extra tasks +addtask kernel_version_sanity_check after do_kernel_checkout before do_compile addtask kernel_link_images after do_compile before do_install addtask validate_branches before do_patch after do_kernel_checkout addtask kernel_configcheck after do_configure before do_compile -- 2.5.5 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core