From 24f8ed2e6b2d6843c25f49357c07ee3000f061e1 Mon Sep 17 00:00:00 2001 From: Adrian Freihofer Date: Mon, 6 Oct 2025 00:00:33 +0200 Subject: devtool: ide_sdk: pass BITBAKEDIR to oe-init-build-env This fixes an issue where the generated install_and_deploy script is unable to find the bitbake directory when run outside of the build environment. This happens if the oe-selftest suite runs in a bitbake environment that is bootstrapped by bitbake-setup. oe-selftest -r devtool.DevtoolIdeSdkTests.test_devtool_ide_sdk_none_qemu AssertionError: Command '.../build-st/workspace/ide-sdk/cmake-example/ scripts/install_and_deploy_cmake-example-cortexa57' returned non-zero exit status 1: Error: The bitbake directory (/tmp/devtoolqakq7kzgeo/bitbake) does not exist! Please ensure a copy of bitbake exists at this location or specify an alternative path on the command line . /tmp/devtoolqakq7kzgeo/core-copy/oe-init-build-env /home/adrian/bitbake-builds/poky-master-poky-with-sstate-distro_poky-altcfg-machine_qemuarm64/build-st failed Another reason this issue occurs with oe-selftests is that devtool tests assume the full poky git repository is available. The setUpModule function clones layer repositories, which for poky includes bitbake. However, when using separate git repositories for bitbake and openembedded-core, the bitbake directory is not preserved during layer copying. While copying layers to allow modification during tests makes sense, copying bitbake is less beneficial. Referring to the original bitbake location is preferable, but cleaning up the devtool tests is not part of this change. (From OE-Core rev: e233292008cd4ea0c0726b07b773e6a7868011d8) Signed-off-by: Adrian Freihofer Signed-off-by: Richard Purdie --- scripts/lib/devtool/ide_sdk.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'scripts/lib/devtool/ide_sdk.py') diff --git a/scripts/lib/devtool/ide_sdk.py b/scripts/lib/devtool/ide_sdk.py index ccb6cfbc61..d9b54f7991 100755 --- a/scripts/lib/devtool/ide_sdk.py +++ b/scripts/lib/devtool/ide_sdk.py @@ -286,6 +286,7 @@ class RecipeModified: self.b = None self.base_libdir = None self.bblayers = None + self.bitbakepath = None self.bpn = None self.d = None self.debug_build = None @@ -346,6 +347,7 @@ class RecipeModified: self.b = recipe_d.getVar('B') self.base_libdir = recipe_d.getVar('base_libdir') self.bblayers = recipe_d.getVar('BBLAYERS').split() + self.bitbakepath = recipe_d.getVar('BITBAKEPATH') self.bpn = recipe_d.getVar('BPN') self.cxx = recipe_d.getVar('CXX') self.d = recipe_d.getVar('D') @@ -712,11 +714,11 @@ class RecipeModified: """Generate a script which does install and deploy""" cmd_lines = ['#!/bin/sh'] - # . oe-init-build-env $BUILDDIR + # . oe-init-build-env $BUILDDIR $BITBAKEDIR # Using 'set' to pass the build directory to oe-init-build-env in sh syntax cmd_lines.append('cd "%s" || { echo "cd %s failed"; exit 1; }' % ( self.oe_init_dir, self.oe_init_dir)) - cmd_lines.append('set ' + self.topdir) + cmd_lines.append('set %s %s' % (self.topdir, self.bitbakepath.rstrip('/bin'))) cmd_lines.append('. "%s" || { echo ". %s %s failed"; exit 1; }' % ( self.oe_init_build_env, self.oe_init_build_env, self.topdir)) -- cgit v1.2.3-54-g00ecf