Reputation: 337
I have a problem starting from the rocko upgrade and related to the Recipe-specific Sysroots introduced in Yocto 2.3
Our project uses cmake. So our recipe has:
DEPENDS = "cmake-native [...]"
So cmake
ends up in build/tmp/work/cortexa5hf-neon-poky-linux-gnueabi/component/1.0-r0/recipe-sysroot-native/usr/bin/cmake
So when building inside yocto everything is ok.
When we build outside yocto, we use the cross-toolchain generated and populated within the Build Directory:
$ bitbake meta-ide-toolchain
and then source the environment:
$ source build/tmp/environment-setup-cortexa5hf-neon-poky-linux-gnueabi
On rocko OECORE_NATIVE_SYSROOT is set to [...]/build/tmp/work/cortexa5hf-neon-poky-linux-gnueabi/meta-ide-support/1.0-r3/recipe-sysroot-native - which doesn't have cmake:
$ which cmake
$
So no cmake was found...
And on Krogoth it was build/tmp/sysroots/x86_64-linux - cmake is there:
$ which cmake
<full path>/build/tmp/sysroots/x86_64-linux/usr/bin/cmake
How to correctly setup a toolchain derived from the build directory in order to build outside Yocto ?
Upvotes: 1
Views: 3300
Reputation: 337
I ended up not to use meta-ide-support
, but instead I've added the support of generating the toolchain to my own recipe (my component): that is my final intention, to be able to also build my component outside Yocto.
So when I do a bitbake my-component
beside building the component, the toolchain necessary to build the component outside Yocto is also generated.
In my recipe I've added some of the code from the meta-ide-support
:
inherit toolchain-scripts
do_populate_ide_support () {
toolchain_create_tree_env_script
}
addtask populate_ide_support before do_build after do_install
And now when I build my recipe I also get a environment-setup script in the build/tmp/
directory - same location as the meta-ide-toolchain
used before.
Now everything is setup correctly:
OECORE_NATIVE_SYSROOT is set to [...]/build/tmp/work/cortexa5hf-neon-poky-linux-gnueabi/component/1.0/recipe-sysroot-native
Upvotes: 0