[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