[PATCH] meta: Remove overrides from kernel filename selection

5 views
Skip to first unread message

Anton Mikanovich

unread,
May 28, 2026, 9:56:40 AMMay 28
to isar-...@googlegroups.com, Anton Mikanovich, Felix Moessbauer
Because of the override processing logic values set by overrides can be
changed only by overrides. It makes redifinition of KERNEL_FILE value
made by simple assignment be ignored, which was already broken for the
rpi-arm64-v8 machine.

Rebuild selection logic to be done in bitbake.conf without overrides.
Keep KERNEL_FILE redifinition for the rpi targets as an example of its
usage for the downstreams.

Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
Signed-off-by: Felix Moessbauer <felix.mo...@siemens.com>
---
meta/classes-recipe/linux-kernel.bbclass | 3 ---
meta/conf/bitbake.conf | 5 +----
2 files changed, 1 insertion(+), 7 deletions(-)

diff --git a/meta/classes-recipe/linux-kernel.bbclass b/meta/classes-recipe/linux-kernel.bbclass
index 55ea6d63..e4ae356d 100644
--- a/meta/classes-recipe/linux-kernel.bbclass
+++ b/meta/classes-recipe/linux-kernel.bbclass
@@ -211,9 +211,6 @@ def get_kernel_arch(d):

KERNEL_ARCH ??= "${@get_kernel_arch(d)}"

-# set KERNEL_FILE without depending on package arch used in bitbake.conf
-KERNEL_FILE:forcevariable = "${@ 'vmlinux' if d.getVar('KERNEL_ARCH') in ['mipsel', 'riscv', 'arm64'] else 'vmlinuz'}"
-
KERNEL_CONFIG_FRAGMENTS ?= ""

def config_fragments(d):
diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
index 08c525d9..6db10eb3 100644
--- a/meta/conf/bitbake.conf
+++ b/meta/conf/bitbake.conf
@@ -65,10 +65,7 @@ SCHROOT_HOST_DIR = "${DEPLOY_DIR}/schroot-host/${HOST_DISTRO}-${HOST_ARCH}_${DIS
SCHROOT_TARGET_DIR = "${DEPLOY_DIR}/schroot-target/${DISTRO}-${DISTRO_ARCH}"
SDKCHROOT_DIR = "${DEPLOY_DIR_SDKCHROOT}/${BPN}-${DISTRO}-${MACHINE}"
CACHE = "${TMPDIR}/cache"
-KERNEL_FILE ?= "vmlinuz"
-KERNEL_FILE:mipsel ?= "vmlinux"
-KERNEL_FILE:riscv64 ?= "vmlinux"
-KERNEL_FILE:arm64 ?= "vmlinux"
+KERNEL_FILE ?= "${@ 'vmlinux' if d.getVar('DISTRO_ARCH') in ['mipsel', 'riscv64', 'arm64'] else 'vmlinuz'}"

MACHINEOVERRIDES ?= "${MACHINE}"
DISTROOVERRIDES ?= "${DISTRO}"
--
2.34.1

MOESSBAUER, Felix

unread,
May 28, 2026, 10:20:46 AMMay 28
to ami...@ilbers.de, isar-...@googlegroups.com
On Thu, 2026-05-28 at 16:56 +0300, Anton Mikanovich wrote:
> Because of the override processing logic values set by overrides can be
> changed only by overrides. It makes redifinition of KERNEL_FILE value
> made by simple assignment be ignored, which was already broken for the
> rpi-arm64-v8 machine.
>
> Rebuild selection logic to be done in bitbake.conf without overrides.
> Keep KERNEL_FILE redifinition for the rpi targets as an example of its
> usage for the downstreams.
>
> Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
> Signed-off-by: Felix Moessbauer <felix.mo...@siemens.com>
> ---
> meta/classes-recipe/linux-kernel.bbclass | 3 ---
> meta/conf/bitbake.conf | 5 +----
> 2 files changed, 1 insertion(+), 7 deletions(-)
>
> diff --git a/meta/classes-recipe/linux-kernel.bbclass b/meta/classes-recipe/linux-kernel.bbclass
> index 55ea6d63..e4ae356d 100644
> --- a/meta/classes-recipe/linux-kernel.bbclass
> +++ b/meta/classes-recipe/linux-kernel.bbclass
> @@ -211,9 +211,6 @@ def get_kernel_arch(d):
>
> KERNEL_ARCH ??= "${@get_kernel_arch(d)}"
>
> -# set KERNEL_FILE without depending on package arch used in bitbake.conf
> -KERNEL_FILE:forcevariable = "${@ 'vmlinux' if d.getVar('KERNEL_ARCH') in ['mipsel', 'riscv', 'arm64'] else 'vmlinuz'}"

Shall we remove the forcevariable override as well? At least in isar
this was the last remaining user.

> -
> KERNEL_CONFIG_FRAGMENTS ?= ""
>
> def config_fragments(d):
> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
> index 08c525d9..6db10eb3 100644
> --- a/meta/conf/bitbake.conf
> +++ b/meta/conf/bitbake.conf
> @@ -65,10 +65,7 @@ SCHROOT_HOST_DIR = "${DEPLOY_DIR}/schroot-host/${HOST_DISTRO}-${HOST_ARCH}_${DIS
> SCHROOT_TARGET_DIR = "${DEPLOY_DIR}/schroot-target/${DISTRO}-${DISTRO_ARCH}"
> SDKCHROOT_DIR = "${DEPLOY_DIR_SDKCHROOT}/${BPN}-${DISTRO}-${MACHINE}"
> CACHE = "${TMPDIR}/cache"
> -KERNEL_FILE ?= "vmlinuz"
> -KERNEL_FILE:mipsel ?= "vmlinux"
> -KERNEL_FILE:riscv64 ?= "vmlinux"
> -KERNEL_FILE:arm64 ?= "vmlinux"
> +KERNEL_FILE ?= "${@ 'vmlinux' if d.getVar('DISTRO_ARCH') in ['mipsel', 'riscv64', 'arm64'] else 'vmlinuz'}"

Thanks, that's how I envisioned it.

Felix

Anton Mikanovich

unread,
May 28, 2026, 10:24:01 AMMay 28
to MOESSBAUER, Felix, isar-...@googlegroups.com
It looks like something already existing when it's usage was added here.
That's why I didn't delete the override itself.

Anton Mikanovich

unread,
Jun 8, 2026, 2:13:31 AM (6 days ago) Jun 8
to isar-...@googlegroups.com, Felix Moessbauer
28.05.2026 16:56, Anton Mikanovich wrote:
> Because of the override processing logic values set by overrides can be
> changed only by overrides. It makes redifinition of KERNEL_FILE value
> made by simple assignment be ignored, which was already broken for the
> rpi-arm64-v8 machine.
>
> Rebuild selection logic to be done in bitbake.conf without overrides.
> Keep KERNEL_FILE redifinition for the rpi targets as an example of its
> usage for the downstreams.
>
> Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
> Signed-off-by: Felix Moessbauer <felix.mo...@siemens.com>
Applied to next.

Jan Kiszka

unread,
Jun 8, 2026, 2:26:30 AM (6 days ago) Jun 8
to MOESSBAUER, Felix, ami...@ilbers.de, isar-...@googlegroups.com
forcevariable is a generic OE concept that we should continue to
support. Our downstream users may expect it to work as before.

But this removal above likely reintroduces the bug it fixed in
fc99297b40eb. Did you actually check against that case? Sorry, seen this
too late, but reading the git history is what I would have expected. And
if you did, you must refer to it, explaining why a revert is fine.

So, this should have likely NOT be merged...

Jan

>> -
>> KERNEL_CONFIG_FRAGMENTS ?= ""
>>
>> def config_fragments(d):
>> diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf
>> index 08c525d9..6db10eb3 100644
>> --- a/meta/conf/bitbake.conf
>> +++ b/meta/conf/bitbake.conf
>> @@ -65,10 +65,7 @@ SCHROOT_HOST_DIR = "${DEPLOY_DIR}/schroot-host/${HOST_DISTRO}-${HOST_ARCH}_${DIS
>> SCHROOT_TARGET_DIR = "${DEPLOY_DIR}/schroot-target/${DISTRO}-${DISTRO_ARCH}"
>> SDKCHROOT_DIR = "${DEPLOY_DIR_SDKCHROOT}/${BPN}-${DISTRO}-${MACHINE}"
>> CACHE = "${TMPDIR}/cache"
>> -KERNEL_FILE ?= "vmlinuz"
>> -KERNEL_FILE:mipsel ?= "vmlinux"
>> -KERNEL_FILE:riscv64 ?= "vmlinux"
>> -KERNEL_FILE:arm64 ?= "vmlinux"
>> +KERNEL_FILE ?= "${@ 'vmlinux' if d.getVar('DISTRO_ARCH') in ['mipsel', 'riscv64', 'arm64'] else 'vmlinuz'}"
>
> Thanks, that's how I envisioned it.
>
> Felix
>
>>
>> MACHINEOVERRIDES ?= "${MACHINE}"
>> DISTROOVERRIDES ?= "${DISTRO}"
>> --
>> 2.34.1
>


--
Siemens AG, Foundational Technologies
Linux Expert Center

Anton Mikanovich

unread,
Jun 8, 2026, 2:43:52 AM (6 days ago) Jun 8
to Jan Kiszka, MOESSBAUER, Felix, isar-...@googlegroups.com
I've tried to build native kernels and it looks like everything is fine.
Unfortunately fc99297 do not mention any real targets and don't have a test
case, so I can't be 100% sure it isn't broken.

Jan Kiszka

unread,
Jun 8, 2026, 3:34:53 AM (6 days ago) Jun 8
to Anton Mikanovich, MOESSBAUER, Felix, isar-...@googlegroups.com
Did you check the resuling KERNEL_FILE for, say, riscv in case of
building -native? If that is still correct, would be good to leave a
reasoning behind, why.

Jan

Jan Kiszka

unread,
Jun 8, 2026, 4:14:04 AM (6 days ago) Jun 8
to Anton Mikanovich, MOESSBAUER, Felix, isar-...@googlegroups.com
So, the patch is fine, though only by luck, not by analysis:

Overrides work per PACKAGE_ARCH, and the -native package for a kernel
has HOST_DISTRO_ARCH here. That is why the old logic needed that fix-up.
The new one uses DISTRO_ARCH, thus is not affected by the -native
differences.

BTW, my patch had a bug: KERNEL_ARCH = mips, not mipsel. That is now
auto-fixed as well

MOESSBAUER, Felix

unread,
Jun 8, 2026, 5:25:42 AM (6 days ago) Jun 8
to Kiszka, Jan, ami...@ilbers.de, isar-...@googlegroups.com

What is HOST_DISTRO_ARCH, I can't find this in any commit? Is that
HOST_ARCH?

Thanks for the analysis. Still, I'm wondering what exactly must be
built to expose this? Is a simple kernel crosscompile for riscv
sufficient?

Felix

Jan Kiszka

unread,
Jun 8, 2026, 5:57:41 AM (6 days ago) Jun 8
to Moessbauer, Felix (FT RPD CED OES-DE), amikan, isar-...@googlegroups.com
My AI must have hallucinated this: HOST_ARCH.

> Thanks for the analysis. Still, I'm wondering what exactly must be
> built to expose this? Is a simple kernel crosscompile for riscv
> sufficient?

I built over fc99297b40eb0ac4b741926fa399d9b5eaaaf825^
linux-starfive-native, and KERNEL_FILE was vmlinu*z*.
Reply all
Reply to author
Forward
0 new messages