-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
oe-init-build-env: generate .vscode from template
Provide a reasonable default configuration for VSCode and the yocto.bitbake extension. The generated default configuration is generic and minimal. It's mostly supposed to prevent VSCode from OOM exceptions if the build directory is in the scope of the indexer plugins of VSCode. But it also configures the yocto-bitbake plugin to just work without manual user interaction. The configuration is only generated if VSCode is installed. Currently, VSCode is one of many popular editors for Yocto/OE. Removing the check would mean that the configuration would be generated by e.g. oe-selftest or for users not using VSCode. If it should prove useful, the check can be removed later. Customization for other layers is possible. A layer might provide it's own oe-setup-build-env script which calls the oe-setup-vscode script from poky with different folders. But it's also possible to override the oe-setup-vscode script by another layer with a custom implementation. (From OE-Core rev: 48829be7ab2edcbc2e4473f81cdaf35889d63f9c) Signed-off-by: Adrian Freihofer <[email protected]> Signed-off-by: Richard Purdie <[email protected]>
- Loading branch information
Showing
2 changed files
with
99 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
#!/bin/sh | ||
|
||
usage() { | ||
echo "$0 <OEINIT> <BUILDDIR>" | ||
echo " OEINIT: path to directory where the .vscode folder is" | ||
echo " BUILDDIR: directory passed to the oe-init-setup-env script" | ||
} | ||
|
||
if [ "$#" -ne 2 ]; then | ||
usage | ||
exit 1 | ||
fi | ||
|
||
OEINIT=$(readlink -f "$1") | ||
BUILDDIR=$(readlink -f "$2") | ||
VSCODEDIR=$OEINIT/.vscode | ||
|
||
if [ ! -d "$OEINIT" ] || [ ! -d "$BUILDDIR" ]; then | ||
echo "$OEINIT and/or $BUILDDIR directories are not present." | ||
exit 1 | ||
fi | ||
|
||
VSCODE_SETTINGS=$VSCODEDIR/settings.json | ||
ws_builddir="$(echo "$BUILDDIR" | sed -e "s|$OEINIT|\${workspaceFolder}|g")" | ||
|
||
# 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.pathToEnvScript": "\${workspaceFolder}/oe-init-build-env", | ||
"bitbake.pathToBuildFolder": "$ws_builddir", | ||
"bitbake.commandWrapper": "", | ||
"bitbake.workingDirectory": "\${workspaceFolder}", | ||
"files.exclude": { | ||
"**/.git/**": true, | ||
"**/_build/**": true, | ||
"**/buildhistory/**": true, | ||
"**/cache/**": true, | ||
"**/downloads/**": true, | ||
"**/node_modules/**": true, | ||
"**/oe-logs/**": true, | ||
"**/oe-workdir/**": true, | ||
"**/sstate-cache/**": true, | ||
"**/tmp*/**": true, | ||
"**/workspace/attic/**": true, | ||
"**/workspace/sources/**": true | ||
}, | ||
"files.watcherExclude": { | ||
"**/.git/**": true, | ||
"**/_build/**": true, | ||
"**/buildhistory/**": true, | ||
"**/cache/**": true, | ||
"**/downloads/**": true, | ||
"**/node_modules/**": true, | ||
"**/oe-logs/**": true, | ||
"**/oe-workdir/**": true, | ||
"**/sstate-cache/**": true, | ||
"**/tmp*/**": true, | ||
"**/workspace/attic/**": true, | ||
"**/workspace/sources/**": true | ||
}, | ||
"python.analysis.exclude": [ | ||
"**/_build/**", | ||
"**/.git/**", | ||
"**/buildhistory/**", | ||
"**/cache/**", | ||
"**/downloads/**", | ||
"**/node_modules/**", | ||
"**/oe-logs/**", | ||
"**/oe-workdir/**", | ||
"**/sstate-cache/**", | ||
"**/tmp*/**", | ||
"**/workspace/attic/**", | ||
"**/workspace/sources/**" | ||
] | ||
} | ||
EOMsettings | ||
|
||
|
||
# Ask the user if the yocto-bitbake extension should be installed | ||
VSCODE_EXTENSIONS=$VSCODEDIR/extensions.json | ||
cat <<EOMextensions > "$VSCODE_EXTENSIONS" | ||
{ | ||
"recommendations": [ | ||
"yocto-project.yocto-bitbake" | ||
] | ||
} | ||
EOMextensions | ||
|
||
echo "You had no $VSCODEDIR configuration." | ||
echo "These configuration files have therefore been created for you." |