'Yocto Dunfell - glibc do_stash_locale failed in multilib enabled environment
Yocto build failed in glibc. Build failed in do_stash_locale with below error.
ERROR: lib64-glibc-2.31+gitAUTOINC+1094741224-r0 do_stash_locale: The recipe lib64-glibc is trying to install files into a shared area when those files already exist. Those files and their manifest location are:
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/SUPPORTED
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/sotruss
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/xtrace
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/scripts/mtrace
(matched in manifest-aarch64-glibc.stash_locale)
/mnt/********/workspace/********/build-********/tmp/sysroots-components/aarch64/glibc-stash-locale/usr/share/info/libc.info
(matched in manifest-aarch64-glibc.stash_locale)
.....
Here in the build, we have enabled multilib because of:
- 64bit Machine (aarch64), Kernel needs to build using 64bit toolchain.
- 32bit userspace application, so mulitlib enabled.
- Also we have to run a couple of 64bit applications as well, so multilib:lib64 is also used.
So here our configuration is:
require conf/machine/include/tune-cortexa53.inc
require conf/multilib.conf
MULTILIBS = "multilib:lib32 multilib:lib64"
DEFAULTTUNE_virtclass-multilib-lib32 = "armv7at-neon"
IMAGE_INSTALL_append = " lib32-glib-2.0 lib32-bash"
DEFAULTTUNE = "cortexa53"
DEFAULTTUNE_virtclass-multilib-lib64 = "armv8a"
Here we are building final target as lib32-xxxxx-image and 64 bit application included in the image recipe as IMAGE_INSTALL_append += " lib64-xxxxx".
When we do fresh build without any sstate cache, the build failed in glibc do_stash_locale. It would be very helpful if some pointers gets on this?
Solution 1:[1]
I found a solution by adding the required recipes into NON_MULTILIB_RECIPES so for those packages , mlprefix will removed and use default toolchain to build it.
So here:
- Define multilib:lib32 for building userspace applications using 32bit toolchain.
- For apps required 64bit toolchain, add those recipes into NON_MULTILIB_RECIPES += " xxxx yyyy "
So here no need to add both 32 and 64bit multilibs here as default tune is 64bit.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Vysakh A V |
