diff mbox series

[1/2] oe-setup-vscode: improve bitbake-setup compatibility

Message ID 20251224150805.3312684-2-adrian.freihofer@siemens.com
State New
Headers show
Series oe-setup-vscode: improve bitbake-setup compatibility | expand

Commit Message

AdrianF Dec. 24, 2025, 3:07 p.m. UTC
From: Adrian Freihofer <adrian.freihofer@siemens.com>

VSCode searches for the .vscode/settings.json file in the workspace
folder and its parent folders. Or the other way round, VSCode needs to
be started in a folder which contains the .vscode/settings.json file.
With bitbake-setup the .vscode/settings.json file created by
oe-setup-vscode is located for example in
bitbake-builds/poky-master/layers/oe-init-build-env-dir/.vscode/settings.json.

Layers looks like this:
  bitbake
  logs
  meta-yocto
  oe-init-build-env-dir -> openembedded-core
  .oe-layers.json
  oe-scripts -> openembedded-core/scripts
  openembedded-core
  setup-build -> openembedded-core/scripts/oe-setup-build
  yocto-docs

Since oe-init-build-env-dir is a sym-link to openembedded-core the
.vscode folder is effectively located in openembedded-core/.vscode.

Starting VSCode in oe-init-build-env-dir picks up the settings.json
file correctly but the VSCode Bitake plugin cannot find bitbake. Bitbake
is located in a folder at the same level as openembedded-core. So the
path to bitbake is not anymore workspaceFolder/bitbake but ../bitbake
relative to the workspace folder.
To fix this, we now dynamically determine the actual location of
bitbake by using `which bitbake` and adjusting the
bitbake.pathToBitbakeFolder setting accordingly.

This minimal fix makes VSCode usable without running into issues with
OOM exceptions due to indexing the build folder or bitbake not found
errors.

But the user experience is still much worse than with the simple poky
layout. Only the openembedded-core layer is visible in the workspace
folder. The other layers are not visible which means this setup is not
really usable yet. The .vscode/settings.json file is created at the
wrong path. This should be improved in future iterations.

Signed-off-by: Adrian Freihofer <adrian.freihofer@siemens.com>
---
 scripts/oe-setup-vscode | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/scripts/oe-setup-vscode b/scripts/oe-setup-vscode
index b8642780d5..6818641d42 100755
--- a/scripts/oe-setup-vscode
+++ b/scripts/oe-setup-vscode
@@ -22,13 +22,14 @@  fi
 
 VSCODE_SETTINGS=$VSCODEDIR/settings.json
 ws_builddir="$(echo "$BUILDDIR" | sed -e "s|$OEINIT|\${workspaceFolder}|g")"
+bb_dir="$(dirname "$(which bitbake)" | sed 's|/bin$||')"
 
 # If BUILDDIR is in scope of VSCode ensure VSCode does not try to index the build folder.
 # This would lead to a busy CPU and finally to an OOM exception.
 mkdir -p "$VSCODEDIR"
 cat <<EOMsettings > "$VSCODE_SETTINGS"
 {
-    "bitbake.pathToBitbakeFolder": "\${workspaceFolder}/bitbake",
+    "bitbake.pathToBitbakeFolder": "$bb_dir",
     "bitbake.pathToEnvScript": "\${workspaceFolder}/oe-init-build-env",
     "bitbake.pathToBuildFolder": "$ws_builddir",
     "bitbake.commandWrapper": "",