public inbox for isar-users@googlegroups.com
 help / color / mirror / Atom feed
From: "'Jan Kiszka' via isar-users" <isar-users@googlegroups.com>
To: "Moessbauer,
	Felix (FT RPD CED OES-DE)" <felix.moessbauer@siemens.com>,
	"isar-users@googlegroups.com" <isar-users@googlegroups.com>
Subject: Re: [PATCH 5/5] kernel: use architecture specific names for kernels
Date: Fri, 14 Aug 2026 12:51:28 +0200	[thread overview]
Message-ID: <54549f17-4538-4f76-b04a-f25b1ce4da6e@siemens.com> (raw)
In-Reply-To: <d9f8fb50a4df33e7ebf674a4a751bc55c6ab61f2.camel@siemens.com>

On 14.08.26 09:01, Moessbauer, Felix (FT RPD CED OES-DE) wrote:
> On Thu, 2026-08-13 at 21:08 +0200, Jan Kiszka wrote:
>> On 13.08.26 20:46, Moessbauer, Felix (FT RPD CED OES-DE) wrote:
>>> On Thu, 2026-08-13 at 19:47 +0200, Jan Kiszka wrote:
>>>> On 13.08.26 18:45, Felix Moessbauer wrote:
>>>>> The kernel source packages are architecture specific. By that, we also
>>>>> have to encode the architecture in the KERNEL_NAME, if that is not
>>>>> already implicitly the case (e.g. when building a kernel for a specific
>>>>> machine).
>>>>>
>>>>> For the kernel recipes which are generic (like mainline and cip), we
>>>>> simply extend the PN with -${DISTRO_ARCH}, so bitbake can find the
>>>>> dependency and instanciate an architecture specific variant.
>>>>>
>>>>> By that, we also need to adapt the default in test_per_kernel, which
>>>>> explicitly builds the module for the kernel that corresponds to the
>>>>> multiconfig target.
>>>>>
>>>>> Signed-off-by: Felix Moessbauer <felix.moessbauer@siemens.com>
>>>>> ---
>>>>>  RECIPE-API-CHANGELOG.md                        | 18 ++++++++++++++++++
>>>>>  meta-isar/conf/machine/beagleplay.conf         |  2 +-
>>>>>  meta-isar/conf/machine/de0-nano-soc.conf       |  2 +-
>>>>>  meta-isar/conf/machine/hikey.conf              |  2 +-
>>>>>  meta-isar/conf/machine/qemuamd64-cip.conf      |  2 +-
>>>>>  meta-isar/conf/machine/sifive-fu540.conf       |  2 +-
>>>>>  meta-isar/conf/machine/stm32mp15x.conf         |  2 +-
>>>>>  .../linux/linux-cip_4.4.166-cip29.bb           |  2 ++
>>>>>  .../linux/linux-mainline_6.12.85.bb            |  2 ++
>>>>>  testsuite/citest.py                            |  2 +-
>>>>>  10 files changed, 29 insertions(+), 7 deletions(-)
>>>>>
>>>>> diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md
>>>>> index 2db05169..c13a3b3f 100644
>>>>> --- a/RECIPE-API-CHANGELOG.md
>>>>> +++ b/RECIPE-API-CHANGELOG.md
>>>>> @@ -1175,6 +1175,24 @@ DPKG_ARCH ?= "${DISTRO_ARCH}"
>>>>>  
>>>>>  Firmware packages are an exception because they are built for only one architecture.
>>>>>  
>>>>> +### Kernel source packages are architecture specific
>>>>> +
>>>>> +Kernel source packages have always contained architecture-specific content, but
>>>>
>>>> See my comment on the cover letter: architecture or even
>>>> machine-specific content.
>>>
>>> This does not invalidate this statement. It just means there could be
>>> even more differences. Anyways, just a cover letter ;)
>>>
>>>>
>>>>> +this was not previously enforced. As a result, builds for multiple architectures
>>>>> +could publish different source packages with the same name and version.
>>>>> +
>>>>> +Generic kernel recipes can append `${DISTRO_ARCH}` to `PN`, to provide the
>>>>> +kernel for all architectures.
>>>>> +
>>>>> +```
>>>>> +PN .= "-${DISTRO_ARCH}"
>>>>> +```
>>>>> +
>>>>> +For a kernel built for only one target, the name may remain unchanged. When
>>>>> +building multiple instances of a kernel selected by the same `KERNEL_NAME`, use
>>>>> +`${DISTRO_ARCH}` in the name for architecture-specific kernels, or `${MACHINE}`
>>>>> +for machine-specific kernels.
>>>>> +
>>>>
>>>> This is not written like a recipe API change. This way, it looks like
>>>> something that belongs into the user manual, kernel section, as it
>>>> provides guidance on how to model that special case. You need to
>>>> explain, when this is now required while it was not before.
>>>>
>>>> But I would rather suggest modelling that more transparently, via
>>>> PROVIDES: The KERNEL_NAME should remain "mainline", e.g., and the
>>>> recipes should PROVIDE that generic name while actually building
>>>> "mainline-$DISTRO_ARCH".
>>>
>>> And this is exactly what "option 2" from [1] proposes, which I tried
>>> and which does not work for two reasons:
>>>
>>> 1. on bitbake side, the provides and depends need to be fiddled through
>>> the multiarch classes (-native), which I did not manage to implement.
>>> For the kernel it worked, but not for the module recipes. It also gets
>>> super messy on multiconfig builds with two different kernels (e.g. a
>>> hardened one for the image and a "open" one for the installer).
>>>
>>> 2. We need provides on the debian package names as well, but resolving
>>> multiple provides in the dependency install stages (sbuild and rootfs
>>> install) is tricky, as we already know from other tries in this
>>> direction.
>>
>> Let's better address the root cause: needless templating, rather than
>> build-time config selection (provided we have no problems with native
>> kbuild packages vs. configs).
> 
> Having it arch specific is required anyways as we have the arch-
> specific build dependency to linux-image-
> ${KERNEL_NAME_PROVIDED}:${DISTRO_ARCH} for the kbuild target.
> 

Conceptually, that is the point here, the sources can provide all what
is needed for all architectures without templating. They would simply
have to unroll, e.g., the templated

Package: linux-kbuild-${KERNEL_NAME_PROVIDED}-${DISTRO_ARCH}-cross

for all compatible archs and select what is actually built via profiles.

> But AFAIK it does not necessarily be machine specific, if all needed
> defconfigs are present in the image. However, currently we modify the

But only then. Most kernels that are built by isar are very
machine-specific due to their configs. The kernels we have in meta-isar
and isar-cip-core are the special cases. When defining a mitigation, we
need to keep that in mind so that 99% of the users are not suffering
from such 1%.

> debian/isar/configure isar part to in inject the KERNEL_DEFCONFIG (in
> dpkg_configure_kernel), which again binds the source package to a
> DEFCONFIG.
> 
> To split this, we would have to move this sed-replace to the dpkg-
> buildpackage / sbuild part and switch defconfigs based on pre-set build
> profiles. That's tricky and even further diverges from how debian is
> doing it.

Debian is special as they build only few kernels, and then only from
very generic configs. We want to keep drop-in compatibility on binary
package level, for sure, but we cannot emulate their build process for
the customized kernels Isar enables.

> 
> I prefer a slight API break over over-complicated magics. Let's just
> follow how Debian is doing it: encode your specifics into the package
> name (source package, binary packages), controlled by the KERNEL_NAME.

This is just like the issue with false-sharing around multiconfig (once
stamps of
https://github.com/ilbers/isar/blob/master/meta/classes-global/isar-events.bbclass):
How will Isar support users that do not care about that, do not realize
what is making their kernel specific, and do not encode that into the
KERNEL_NAME because it was also not needed so far?

> 
> If you know your kernel is only architecture specific, name it -
> ${DISTRO_ARCH}. If it is machine specific, name it -${MACHINE}.
> 
> Keep in mind, that just renaming the source package just shifts the
> issue. Then we likely get conflicts on the binary packages.

I'm still a bigger fan of either properly addressing the root cause or
working around it internally. Any warm recommendations will not help
when there is no tooling to reveal real problems early enough.

Jan

-- 
Siemens AG, Foundational Technologies
Linux Expert Center

-- 
You received this message because you are subscribed to the Google Groups "isar-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to isar-users+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/isar-users/54549f17-4538-4f76-b04a-f25b1ce4da6e%40siemens.com.

  reply	other threads:[~2026-08-14 10:51 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-13 16:44 [PATCH 0/5] Fix single-name single-content rule for kernel packages 'Felix Moessbauer' via isar-users
2026-08-13 16:44 ` [PATCH 1/5] testsuite: make test_libc_dev_deploy KERNEL_NAME agnostic 'Felix Moessbauer' via isar-users
2026-08-13 16:44 ` [PATCH 2/5] kernel: bind x86_64_defconfig to amd64 architecture instead of machine 'Felix Moessbauer' via isar-users
2026-08-13 16:44 ` [PATCH 3/5] kernel: make source package architecture specific 'Felix Moessbauer' via isar-users
2026-08-13 16:44 ` [PATCH 4/5] kernel: move common parts of linux-mainline to inc 'Felix Moessbauer' via isar-users
2026-08-13 16:45 ` [PATCH 5/5] kernel: use architecture specific names for kernels 'Felix Moessbauer' via isar-users
2026-08-13 17:47   ` 'Jan Kiszka' via isar-users
2026-08-13 18:46     ` 'MOESSBAUER, Felix' via isar-users
2026-08-13 19:08       ` 'Jan Kiszka' via isar-users
2026-08-14  7:01         ` 'MOESSBAUER, Felix' via isar-users
2026-08-14 10:51           ` 'Jan Kiszka' via isar-users [this message]
2026-08-13 17:45 ` [PATCH 0/5] Fix single-name single-content rule for kernel packages 'Jan Kiszka' via isar-users
2026-08-13 17:50   ` 'Jan Kiszka' via isar-users
2026-08-13 18:06     ` 'Jan Kiszka' via isar-users

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=54549f17-4538-4f76-b04a-f25b1ce4da6e@siemens.com \
    --to=isar-users@googlegroups.com \
    --cc=felix.moessbauer@siemens.com \
    --cc=jan.kiszka@siemens.com \
    /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