Re: [OE-core][kirkstone 7/8] kernel: fix localversion in v6.3+

Ryan Eatmon
2024-02-16T01:20:46Z

With this patch in place we are seeing a breakage on our kernel builds.
This patch was cherry picked from master, but the next patch on this
file in master removes the LOCALVERSION setting...

https://git.openembedded.org/openembedded-core/commit/meta/classes-recipe/kernel-arch.bbclass?h=master-next&id=b378eec156998eea55ba61e59103cb34fab0d07c

There is a disconnect here. Why did we change kirkstone, a stable LTS
version with a partial patch series based on master?

On 2/12/2024 7:54 AM, Steve Sakoman wrote:
> From: Bruce Ashfield <bruce.ashfield@gmail.com>
>
> During testing of the v6.4 reference kernel, it was noticed that
> on-target modules no longer matched the magic value of the running
> kernel.
>
> This was due to a different localversion in the cross built kernel
> and the scripts / resources created on target.
>
> This was due to changes in the setlocalversion script introduced
> in the v6.3 series.
>
> The .scmversion file is no longer used (or packaged) to inhibit
> the addition of a "+" (through querying of the git status of the
> kernel) or the setting of a local version.
>
> We recently introduced the KERNEL_LOCALVERSION variable to allow
> recipes to place a value in .scmversion, so we extend the use of
> that variable to kernel-arch.bbclass and use it to set the
> exported variable LOCALVERSION.
>
> We must do it at the kernel-arch level, as the variable must be
> exported in any kernel build to ensure that setlocalversion always
> correctly sets the localversion.
>
> Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
>
> Cherry-picked from master 765b13b7305c8d2f222cfc66d77c02e6a088c691
>
> Signed-off-by: Andreas Helbech Kleist <andreaskleist@gmail.com>
> Signed-off-by: Steve Sakoman <steve@sakoman.com>
> ---
> meta/classes/kernel-arch.bbclass | 7 +++++++
> meta/classes/kernel.bbclass | 10 ++++++++--
> 2 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes/kernel-arch.bbclass b/meta/classes/kernel-arch.bbclass
> index 4cd08b96fb..0a79dea0af 100644
> --- a/meta/classes/kernel-arch.bbclass
> +++ b/meta/classes/kernel-arch.bbclass
> @@ -66,3 +66,10 @@ 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 5951347361..940f1a3cf4 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -418,7 +418,7 @@ do_compile_kernelmodules() {
> if (grep -q -i -e '^CONFIG_MODULES=y$' ${B}/.config); then
> oe_runmake -C ${B} ${PARALLEL_MAKE} modules ${KERNEL_EXTRA_ARGS}
>
> - # Module.symvers gets updated during the
> + # Module.symvers gets updated during the
> # building of the kernel modules. We need to
> # update this in the shared workdir since some
> # external kernel modules has a dependency on
> @@ -635,7 +635,13 @@ kernel_do_configure() {
> # $ scripts/setlocalversion . => +
> # $ make kernelversion => 2.6.37
> # $ make kernelrelease => 2.6.37+
> - touch ${B}/.scmversion ${S}/.scmversion
> + # See kernel-arch.bbclass for post v6.3 removal of the extra
> + # + in localversion. .scmversion is no longer used, and the
> + # variable LOCALVERSION must be used
> + if [ ! -e ${B}/.scmversion -a ! -e ${S}/.scmversion ]; then
> + echo ${KERNEL_LOCALVERSION} > ${B}/.scmversion
> + echo ${KERNEL_LOCALVERSION} > ${S}/.scmversion
> + fi
>
> if [ "${S}" != "${B}" ] && [ -f "${S}/.config" ] && [ ! -f "${B}/.config" ]; then
> mv "${S}/.config" "${B}/.config"
>
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#195328): https://lists.openembedded.org/g/openembedded-core/message/195328
> Mute This Topic: https://lists.openembedded.org/mt/104311283/6551054
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [reatmon@ti.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>

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