From: California Sullivan <california.l.sullivan@intel.com>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH RFC 1/1] kernel.bbclass: Add kernel_version_sanity_check function
Date: Tue, 16 Aug 2016 22:25:01 -0700 [thread overview]
Message-ID: <1471411501-3523-1-git-send-email-california.l.sullivan@intel.com> (raw)
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.sullivan@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
next reply other threads:[~2016-08-17 2:27 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-17 5:25 California Sullivan [this message]
2016-08-24 21:56 ` [PATCH RFC 1/1] kernel.bbclass: Add kernel_version_sanity_check function Burton, Ross
2016-08-25 4:04 ` Bruce Ashfield
2016-08-25 14:54 ` Bruce Ashfield
2016-08-29 21:00 ` Cal Sullivan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1471411501-3523-1-git-send-email-california.l.sullivan@intel.com \
--to=california.l.sullivan@intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox