mirror of
https://github.com/microsoft/vscode.git
synced 2026-10-10 12:42:25 +01:00
* build: finish sandbox Node setup automatically (Written by Copilot) Select the verified Node runtime on the sandbox existing executable PATH, continue native header setup under that runtime, and cache completion using the selected Node version rather than the old hook process version. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test: cover unattended sandbox Node handoff (Written by Copilot) Verify startup runs native preinstall under the selected executable and records success in the same invocation, without manual environment recovery. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * build: reuse container flags in cloud sandboxes (Written by Copilot) Use the existing Chromium shared-memory workaround for Linux Cloud Sandbox launches. Live probes confirmed the 64 MB shared-memory mount fills during module loading and the existing flag restores the workbench without protocol changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
95 lines
2.8 KiB
Bash
Executable File
95 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; }
|
|
ROOT=$(dirname "$(dirname "$(realpath "$0")")")
|
|
else
|
|
ROOT=$(dirname "$(dirname "$(readlink -f $0)")")
|
|
# If the script is running in Docker using the WSL2 engine, powershell.exe won't exist
|
|
if grep -qi Microsoft /proc/version && type powershell.exe > /dev/null 2>&1; then
|
|
IN_WSL=true
|
|
fi
|
|
fi
|
|
|
|
function code() {
|
|
cd "$ROOT"
|
|
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
NAME=`node -p "require('./product.json').nameLong"`
|
|
EXE_NAME=`node -p "require('./product.json').nameShort"`
|
|
CODE="./.build/electron/$NAME.app/Contents/MacOS/$EXE_NAME"
|
|
else
|
|
NAME=`node -p "require('./product.json').applicationName"`
|
|
CODE=".build/electron/$NAME"
|
|
fi
|
|
|
|
# Get electron, compile, built-in extensions
|
|
if [[ -z "${VSCODE_SKIP_PRELAUNCH}" ]]; then
|
|
node build/lib/preLaunch.ts
|
|
fi
|
|
|
|
# Manage built-in extensions
|
|
if [[ "$1" == "--builtin" ]]; then
|
|
exec "$CODE" build/builtin
|
|
return
|
|
fi
|
|
|
|
# Configuration
|
|
export NODE_ENV=development
|
|
export VSCODE_DEV=1
|
|
export VSCODE_CLI=1
|
|
export ELECTRON_ENABLE_STACK_DUMPING=1
|
|
export ELECTRON_ENABLE_LOGGING=1
|
|
|
|
DISABLE_TEST_EXTENSION="--disable-extension=vscode.vscode-api-tests"
|
|
if [[ "$@" == *"--extensionTestsPath"* ]]; then
|
|
DISABLE_TEST_EXTENSION=""
|
|
fi
|
|
|
|
# Launch Code
|
|
exec "$CODE" . $DISABLE_TEST_EXTENSION "$@"
|
|
}
|
|
|
|
function code-wsl()
|
|
{
|
|
HOST_IP=$(echo "" | powershell.exe -noprofile -Command "& {(Get-NetIPAddress | Where-Object {\$_.InterfaceAlias -like '*WSL*' -and \$_.AddressFamily -eq 'IPv4'}).IPAddress | Write-Host -NoNewline}")
|
|
export DISPLAY="$HOST_IP:0"
|
|
|
|
# in a wsl shell
|
|
ELECTRON="$ROOT/.build/electron/Code - OSS.exe"
|
|
if [ -f "$ELECTRON" ]; then
|
|
local CWD=$(pwd)
|
|
cd $ROOT
|
|
export WSLENV=ELECTRON_RUN_AS_NODE/w:VSCODE_DEV/w:$WSLENV
|
|
local WSL_EXT_ID="ms-vscode-remote.remote-wsl"
|
|
local WSL_EXT_WLOC=$(echo "" | VSCODE_DEV=1 ELECTRON_RUN_AS_NODE=1 "$ROOT/.build/electron/Code - OSS.exe" "out/cli.js" --locate-extension $WSL_EXT_ID)
|
|
cd $CWD
|
|
if [ -n "$WSL_EXT_WLOC" ]; then
|
|
# replace \r\n with \n in WSL_EXT_WLOC
|
|
local WSL_CODE=$(wslpath -u "${WSL_EXT_WLOC%%[[:cntrl:]]}")/scripts/wslCode-dev.sh
|
|
$WSL_CODE "$ROOT" "$@"
|
|
exit $?
|
|
else
|
|
echo "Remote WSL not installed, trying to run VSCode in WSL."
|
|
fi
|
|
fi
|
|
}
|
|
|
|
if [ "$IN_WSL" == "true" ] && [ -z "$DISPLAY" ]; then
|
|
code-wsl "$@"
|
|
elif [ -f /mnt/wslg/versions.txt ]; then
|
|
code --disable-gpu "$@"
|
|
elif [ -f /.dockerenv ] || { [[ "$OSTYPE" == "linux"* ]] && [ -n "${GITHUB_ENVIRONMENT_ID:-}" ]; }; then
|
|
# Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1263267
|
|
# Chromium does not release shared memory when streaming scripts
|
|
# which might exhaust the available resources in the container environment
|
|
# leading to failed script loading.
|
|
code --disable-dev-shm-usage "$@"
|
|
else
|
|
code "$@"
|
|
fi
|
|
|
|
exit $?
|