Hi,

I encountered an issue with `do_config` when using `devtool modify` on 
`u-boot-imx`.

```
[...]
| cp: cannot stat 
'[...]/u-boot-imx/2024.04/build/imx8mp_wl400s_defconfig/.config': No such file 
or directory
| WARNING: exit code 1 from a shell command.
ERROR: Task 
([...]/sources/poky/../meta-freescale/recipes-bsp/u-boot/u-boot-imx_2024.04.bb:do_configure)
 failed with exit code '1'
NOTE: Tasks Summary: Attempted 963 tasks of which 962 didn't need to be rerun 
and 1 failed.
Summary: 1 task failed:
[...]/sources/poky/../meta-freescale/recipes-bsp/u-boot/u-boot-imx_2024.04.bb:do_configure
Summary: There was 1 ERROR message, returning a non-zero exit code
```

The issue seems to originate from the following lines in 
`workspace/appends/u-boot-imx_2024.04.bbappend`:

```
do_configure:append() {
if [ ${@oe.types.boolean(d.getVar("KCONFIG_CONFIG_ENABLE_MENUCONFIG"))} = True 
]; then
cp ${KCONFIG_CONFIG_ROOTDIR}/.config ${S}/.config.baseline
ln -sfT ${KCONFIG_CONFIG_ROOTDIR}/.config ${S}/.config.new
fi
}
```

For some reason `KCONFIG_CONFIG_ROOTDIR` does not point to the correct 
directory. It gets its value in `uboot-config.bbclass`:

```
if len(ubootconfig) == 1:
d.setVar('KCONFIG_CONFIG_ROOTDIR', os.path.join(d.getVar("B"), 
d.getVar("UBOOT_MACHINE").strip()))
```

So the main issue is that B gets expanded in this expression, and then later B 
gets changed by `externalsrc.bbclass`. `d.getVar("B", False)` does not solve 
the issue, however the following change does

```
diff --git a/meta/classes-recipe/uboot-config.bbclass 
b/meta/classes-recipe/uboot-config.bbclass
index e55fc38b7c..28d5545b27 100644
--- a/meta/classes-recipe/uboot-config.bbclass
+++ b/meta/classes-recipe/uboot-config.bbclass
@@ -141,7 +141,7 @@ python () {
raise bb.parse.SkipRecipe("The selected UBOOT_CONFIG key %s has no match in 
%s." % (ubootconfig, ubootconfigflags.keys()))

if len(ubootconfig) == 1:
-                d.setVar('KCONFIG_CONFIG_ROOTDIR', os.path.join(d.getVar("B"), 
d.getVar("UBOOT_MACHINE").strip()))
+                d.setVar('KCONFIG_CONFIG_ROOTDIR', os.path.join("${B}", 
d.getVar("UBOOT_MACHINE").strip()))
else:
# Disable menuconfig for multiple configs
d.setVar('KCONFIG_CONFIG_ENABLE_MENUCONFIG', "false")
```

I'm not sure that this is the correct way to fix this problem though. But if it 
is I'm happy to send a patch.

Kind regards
Marcus
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#64152): https://lists.yoctoproject.org/g/yocto/message/64152
Mute This Topic: https://lists.yoctoproject.org/mt/109254298/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to