Re: [OE-core] [PATCH 1/3] uboot-config: fix devtool modify with kernel-fitimage

Richard Purdie
2024-09-03T08:21:18Z

On Mon, 2024-09-02 at 22:31 +0200, Adrian Freihofer via lists.openembedded.org wrote:
> From: Adrian Freihofer <adrian.freihofer@siemens.com>
>
> How to reproduce:
> - UBOOT_CONFIG must be used. With UBOOT_MACHINE it works fine.
>   A simple example based on oe-core is to modify the
>   beaglebone-yocto.conf file like this:
>   -UBOOT_MACHINE = "am335x_evm_defconfig"
>   +UBOOT_CONFIG = "foo"
>   +UBOOT_CONFIG[foo] = "am335x_evm_defconfig"
> - A build configuration which inherits the kernel-fitimage.bbclass is
>   needed. For example:
>   MACHINE = "beaglebone-yocto"
>   KERNEL_IMAGETYPE = "Image"
>   KERNEL_IMAGETYPES += " fitImage "
>   KERNEL_CLASSES = " kernel-fitimage "
>
> devtool modify linux-yocto
> devtool build linux-yocto
> ...
> > cp: cannot stat '.../linux-yocto-6.6.21+git/am335x_evm_defconfig/.config':
>   No such file or directory
> > WARNING: .../linux-yocto/6.6.21+git/temp/run.do_configure.2081673:172 exit 1
>   from 'cp .../linux-yocto-6.6.21+git/am335x_evm_defconfig/.config
>   .../build/workspace/sources/linux-yocto/.config.baseline'
>
> The reason for this problem is that the uboot-config.bbclass sets the
> variable KCONFIG_CONFIG_ROOTDIR to a path that makes sense for u-boot,
> but not for other recipes. However, the kernel-fitimage.bbclasse, for
> example, inherits the uboot-config.bbclass, which brings the
> u-boot-specific path into the kernel build context.
>
> This change removes the uboot-specific KCONFIG_CONFIG_ROOTDIR path from
> recipes other than u-boot itself.
>
> Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com>
> ---
>  meta/classes-recipe/uboot-config.bbclass | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/meta/classes-recipe/uboot-config.bbclass b/meta/classes-recipe/uboot-config.bbclass
> index e55fc38b7c7..09001997d3d 100644
> --- a/meta/classes-recipe/uboot-config.bbclass
> +++ b/meta/classes-recipe/uboot-config.bbclass
> @@ -101,9 +101,9 @@ python () {
>      # The "doc" varflag is special, we don't want to see it here
>      ubootconfigflags.pop('doc', None)
>      ubootconfig = (d.getVar('UBOOT_CONFIG') or "").split()
> +    PN = d.getVar("PN")

Convention says uppercase strings are constants in python. I'd prefer
this to be something like recipename, particularly as the access isn't
immediately around the variable definition. This is mainly to try and
retain code consistency.

Cheers,

Richard