public inbox for openembedded-core@lists.openembedded.org
 help / color / mirror / Atom feed
From: Ryan Eatmon <reatmon@ti.com>
To: Bruce Ashfield <bruce.ashfield@gmail.com>
Cc: Andreas Helbech Kleist <andreaskleist@gmail.com>,
	<openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] [kirkstone][PATCH 3/3] kernel: make LOCALVERSION consistent between recipes
Date: Thu, 22 Feb 2024 16:46:52 -0600	[thread overview]
Message-ID: <b6288054-4032-48a0-ac6e-f021aa71b95e@ti.com> (raw)
In-Reply-To: <CADkTA4NqBZafroO5qVQ9ATM1_xNidxkwmkVTPb9msDhGiooceA@mail.gmail.com>



On 2/22/2024 3:56 PM, Bruce Ashfield wrote:
> On Thu, Feb 22, 2024 at 4:51 PM Ryan Eatmon via lists.openembedded.org
> <reatmon=ti.com@lists.openembedded.org> wrote:
>>
>>
>>
>> On 2/22/2024 4:35 AM, Andreas Helbech Kleist wrote:
>>> From: Bruce Ashfield <bruce.ashfield@gmail.com>
>>>
>>> The initial fix for localversion setting in 6.3+ broke older
>>> recipes and also broke recipes setting localversion in a kernel
>>> recipe, as make-mod-scripts (and other locations) can trigger
>>> a regeneration of files and don't have access to the variable.
>>>
>>> Moving the setting of this variable to the global namespace
>>> doesn't make sense, so we follow the example of the kernel-abiversion
>>> and save a kernel-localversion to the build artifacts.
>>>
>>> Recipes that may regenerate scripts/dynamic files, must
>>> depend on the do_shared_workedir of the kernel and use the helper
>>> function to read the file storing the localversion.
>>>
>>> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
>>> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
>>>
>>> cherry-picked from master b378eec156998eea55ba61e59103cb34fab0d07c
>>>
>>> Signed-off-by: Andreas Helbech Kleist <andreaskleist@gmail.com>
>>
>> I'm not sure what is going on with our meta-ti testing.  This set of
>> changes causes the same issue we were seeing before.  Plus, now that I'm
>> looking into it deeper, I'm seeing a breakage in master related to these
>> same patches on there.  Not sure why the changes were not caught in our
>> testing on master back when the patches were accepted there...  Clearly
>> I need some better checks on the images as part of our QC process...
>>
>> I need to figure out how to fix the issue on master and see if the same
>> change can be applied to these patches on kirkstone.  I'll try and get
>> all this done as quickly as I can.
> 
> Please make sure to copy me directly, both as the maintainer of the
> parts of core in question and the author of the patches.
> 
> We've had no reports of issues since any of these went in, and they
> aren't exactly a recent change. Which obviously means there's
> potentially something different in the environment or the kernel
> recipes.
> 
> If you get a set of reproducing steps with linux-yocto and core, I
> can lend a hand with any fixes.
> 
> Bruce

This may not be an issue with these patches per se.  It may be an issue 
with our kernel recipes in meta-ti.  But since kirkstone is our primary 
release vector right now, it is breaking us to accept these patches onto 
kirkstone.  I fully acknowledge that this might solely a TI issue.  And 
now that we are aware of the issue we are going to work very very hard 
to find a solution as quickly as we can.

As soon as we have an understanding of how to recreate the issue outside 
of our recipe we will definitely share with this thread.


>>
>>
>>
>>> ---
>>>    meta/classes/kernel-arch.bbclass                   |  8 --------
>>>    meta/classes/kernel.bbclass                        | 14 ++++++++++++++
>>>    meta/classes/kernelsrc.bbclass                     |  1 +
>>>    meta/classes/linux-kernel-base.bbclass             | 11 +++++++++++
>>>    meta/classes/module-base.bbclass                   |  1 +
>>>    .../make-mod-scripts/make-mod-scripts_1.0.bb       |  3 +++
>>>    6 files changed, 30 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/meta/classes/kernel-arch.bbclass b/meta/classes/kernel-arch.bbclass
>>> index 0a79dea0af..62c8211621 100644
>>> --- a/meta/classes/kernel-arch.bbclass
>>> +++ b/meta/classes/kernel-arch.bbclass
>>> @@ -65,11 +65,3 @@ KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} -fuse-ld=bfd ${DE
>>>    KERNEL_LD = "${CCACHE}${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}"
>>>    KERNEL_AR = "${CCACHE}${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}"
>>>    TOOLCHAIN ?= "gcc"
>>> -
>>> -# 6.3+ requires the variable LOCALVERSION to be set to not get a "+" in
>>> -# the local version. Having it empty means nothing will be added, and any
>>> -# value will be appended to the local kernel version. This replaces the
>>> -# use of .scmversion file for setting a localversion without using
>>> -# the CONFIG_LOCALVERSION option.
>>> -KERNEL_LOCALVERSION ??= ""
>>> -export LOCALVERSION ?= "${KERNEL_LOCALVERSION}"
>>> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
>>> index 940f1a3cf4..96e41b5192 100644
>>> --- a/meta/classes/kernel.bbclass
>>> +++ b/meta/classes/kernel.bbclass
>>> @@ -541,6 +541,7 @@ do_shared_workdir () {
>>>        #
>>>
>>>        echo "${KERNEL_VERSION}" > $kerneldir/${KERNEL_PACKAGE_NAME}-abiversion
>>> +     echo "${KERNEL_LOCALVERSION}" > $kerneldir/${KERNEL_PACKAGE_NAME}-localversion
>>>
>>>        # Copy files required for module builds
>>>        cp System.map $kerneldir/System.map-${KERNEL_VERSION}
>>> @@ -630,6 +631,19 @@ python check_oldest_kernel() {
>>>    check_oldest_kernel[vardepsexclude] += "OLDEST_KERNEL KERNEL_VERSION"
>>>    do_configure[prefuncs] += "check_oldest_kernel"
>>>
>>> +KERNEL_LOCALVERSION ??= ""
>>> +
>>> +# 6.3+ requires the variable LOCALVERSION to be set to not get a "+" in
>>> +# the local version. Having it empty means nothing will be added, and any
>>> +# value will be appended to the local kernel version. This replaces the
>>> +# use of .scmversion file for setting a localversion without using
>>> +# the CONFIG_LOCALVERSION option.
>>> +#
>>> +# Note: This class saves the value of localversion to a file
>>> +# so other recipes like make-mod-scripts can restore it via the
>>> +# helper function get_kernellocalversion_file
>>> +export LOCALVERSION="${KERNEL_LOCALVERSION}"
>>> +
>>>    kernel_do_configure() {
>>>        # fixes extra + in /lib/modules/2.6.37+
>>>        # $ scripts/setlocalversion . => +
>>> diff --git a/meta/classes/kernelsrc.bbclass b/meta/classes/kernelsrc.bbclass
>>> index a951ba3325..a79bf18b09 100644
>>> --- a/meta/classes/kernelsrc.bbclass
>>> +++ b/meta/classes/kernelsrc.bbclass
>>> @@ -5,6 +5,7 @@ do_patch[depends] += "virtual/kernel:do_shared_workdir"
>>>    do_patch[noexec] = "1"
>>>    do_package[depends] += "virtual/kernel:do_populate_sysroot"
>>>    KERNEL_VERSION = "${@get_kernelversion_file("${STAGING_KERNEL_BUILDDIR}")}"
>>> +LOCAL_VERSION = "${@get_kernellocalversion_file("${STAGING_KERNEL_BUILDDIR}")}"
>>>
>>>    inherit linux-kernel-base
>>>
>>> diff --git a/meta/classes/linux-kernel-base.bbclass b/meta/classes/linux-kernel-base.bbclass
>>> index 73a6fe36d9..0e2a4a4abe 100644
>>> --- a/meta/classes/linux-kernel-base.bbclass
>>> +++ b/meta/classes/linux-kernel-base.bbclass
>>> @@ -33,6 +33,17 @@ def get_kernelversion_file(p):
>>>        except IOError:
>>>            return None
>>>
>>> +def get_kernellocalversion_file(p):
>>> +    fn = p + '/kernel-localversion'
>>> +
>>> +    try:
>>> +        with open(fn, 'r') as f:
>>> +            return f.readlines()[0].strip()
>>> +    except IOError:
>>> +        return ""
>>> +
>>> +    return ""
>>> +
>>>    def linux_module_packages(s, d):
>>>        suffix = ""
>>>        return " ".join(map(lambda s: "kernel-module-%s%s" % (s.lower().replace('_', '-').replace('@', '+'), suffix), s.split()))
>>> diff --git a/meta/classes/module-base.bbclass b/meta/classes/module-base.bbclass
>>> index 27bd69ff33..5b2fde8144 100644
>>> --- a/meta/classes/module-base.bbclass
>>> +++ b/meta/classes/module-base.bbclass
>>> @@ -14,6 +14,7 @@ export CROSS_COMPILE = "${TARGET_PREFIX}"
>>>    export KBUILD_OUTPUT = "${STAGING_KERNEL_BUILDDIR}"
>>>
>>>    export KERNEL_VERSION = "${@oe.utils.read_file('${STAGING_KERNEL_BUILDDIR}/kernel-abiversion')}"
>>> +export LOCALVERSION = "${@oe.utils.read_file('${STAGING_KERNEL_BUILDDIR}/kernel-localversion')}"
>>>    KERNEL_OBJECT_SUFFIX = ".ko"
>>>
>>>    # kernel modules are generally machine specific
>>> diff --git a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
>>> index f6f47cfff5..8727d003f9 100644
>>> --- a/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
>>> +++ b/meta/recipes-kernel/make-mod-scripts/make-mod-scripts_1.0.bb
>>> @@ -21,6 +21,9 @@ DEPENDS += "gmp-native"
>>>    EXTRA_OEMAKE = " HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}" HOSTCPP="${BUILD_CPP}""
>>>    EXTRA_OEMAKE += " HOSTCXX="${BUILD_CXX} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CROSS_COMPILE=${TARGET_PREFIX}"
>>>
>>> +KERNEL_LOCALVERSION = "${@get_kernellocalversion_file("${STAGING_KERNEL_BUILDDIR}")}"
>>> +export LOCALVERSION="${KERNEL_LOCALVERSION}"
>>> +
>>>    # Build some host tools under work-shared.  CC, LD, and AR are probably
>>>    # not used, but this is the historical way of invoking "make scripts".
>>>    #
>>
>> --
>> Ryan Eatmon                reatmon@ti.com
>> -----------------------------------------
>> Texas Instruments, Inc.  -  LCPD  -  MGTS
>>
>> -=-=-=-=-=-=-=-=-=-=-=-
>> Links: You receive all messages sent to this group.
>> View/Reply Online (#196043): https://lists.openembedded.org/g/openembedded-core/message/196043
>> Mute This Topic: https://lists.openembedded.org/mt/104505983/1050810
>> Group Owner: openembedded-core+owner@lists.openembedded.org
>> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [bruce.ashfield@gmail.com]
>> -=-=-=-=-=-=-=-=-=-=-=-
>>
> 
> 

-- 
Ryan Eatmon                reatmon@ti.com
-----------------------------------------
Texas Instruments, Inc.  -  LCPD  -  MGTS


  reply	other threads:[~2024-02-22 22:47 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-22 10:35 [kirkstone][PATCH 0/3] kernel: Backport v6.3+ localversion fixes Andreas Helbech Kleist
2024-02-22 10:35 ` [kirkstone][PATCH 1/3] kernel.bbclass: introduce KERNEL_LOCALVERSION Andreas Helbech Kleist
2024-02-22 10:35 ` [kirkstone][PATCH 2/3] kernel: fix localversion in v6.3+ Andreas Helbech Kleist
2024-02-22 10:35 ` [kirkstone][PATCH 3/3] kernel: make LOCALVERSION consistent between recipes Andreas Helbech Kleist
2024-02-22 21:51   ` Ryan Eatmon
2024-02-22 21:56     ` [OE-core] " Bruce Ashfield
2024-02-22 22:46       ` Ryan Eatmon [this message]
     [not found]       ` <17B650DBED7FC1F0.14827@lists.openembedded.org>
2024-02-23 17:11         ` Ryan Eatmon

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=b6288054-4032-48a0-ac6e-f021aa71b95e@ti.com \
    --to=reatmon@ti.com \
    --cc=andreaskleist@gmail.com \
    --cc=bruce.ashfield@gmail.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