| #!/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." |