[OE-core] [PATCH V2 1/1] kernel.bbclass: Add kernel_version_sanity_check function
Cal Sullivan
california.l.sullivan at intel.com
Wed Sep 21 16:27:19 UTC 2016
Yes, the PV is set incorrectly here. In b5e7625, the kernel's source was
updated to 4.1.32 for genericx86-64, but the LINUX_VERSION variable
(which is used to set PV) was not.
---
Cal
On 09/20/2016 08:11 PM, Robert Yang wrote:
>
> Hi,
>
> There is an error on autobuilder related to this patch:
>
> http://autobuilder.yocto.io:8010/builders/nightly-x86-64-lsb/builds/60/steps/BuildImages_1/logs/stdio
>
>
> // Robert
>
> On 09/17/2016 07:48 AM, California Sullivan wrote:
>> The kernel being built should match what the recipe claims it is
>> building. This function ensures that happens by comparing the version
>> information in the kernel's Makefile to the PV the recipe is using.
>>
>> v2 changes:
>> * Match against PV instead of LINUX_VERSION
>> * Match against EXTRAVERSION as well (e.g., -rc4)
>> * Cleaned up version string building
>>
>> Fixes [YOCTO #6767].
>>
>> Signed-off-by: California Sullivan <california.l.sullivan at intel.com>
>> ---
>> meta/classes/kernel.bbclass | 30
>> ++++++++++++++++++++++++++++++
>> meta/recipes-kernel/linux/linux-yocto.inc | 1 +
>> 2 files changed, 31 insertions(+)
>>
>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>> index a6112e8..f894795 100644
>> --- a/meta/classes/kernel.bbclass
>> +++ b/meta/classes/kernel.bbclass
>> @@ -327,6 +327,36 @@ kernel_do_install() {
>> }
>> do_install[prefuncs] += "package_get_auto_pr"
>>
>> +# Must be ran no earlier than 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/.*=\ *//)
>> + EXTRAVERSION=$(grep "^EXTRAVERSION =" ${S}/Makefile | sed s/.*=\
>> *//)
>> +
>> + # Build a string for regex and a plain version string
>> + reg="^${VERSION}\.${PATCHLEVEL}"
>> + vers="${VERSION}.${PATCHLEVEL}"
>> + if [ -n "${SUBLEVEL}" ]; then
>> + # Ignoring a SUBLEVEL of zero is fine
>> + if [ "${SUBLEVEL}" = "0" ]; then
>> + reg="${reg}(\.${SUBLEVEL})?"
>> + else
>> + reg="${reg}\.${SUBLEVEL}"
>> + vers="${vers}.${SUBLEVEL}"
>> + fi
>> + fi
>> + vers="${vers}${EXTRAVERSION}"
>> + reg="${reg}${EXTRAVERSION}"
>> +
>> + if [ -z `echo ${PV} | grep -E "${reg}"` ]; then
>> + bbfatal "Package Version (${PV}) does not match of kernel
>> being built (${vers}). Please update the PV variable to match the
>> kernel source."
>> + 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
>>
More information about the Openembedded-core
mailing list