For Java we use the value in the config file so it doesn't need to be in the PATH. For python, all our tools should launch via scripts that check for EMSDK_PYTHON so having python in the PATH for emsdk users should not be needed. The motivation for this is that we don't want to clobber any existing python or java versions that users might already have in their PATH. This is the easy part of #705.
115 lines
4.3 KiB
PowerShell
115 lines
4.3 KiB
PowerShell
# This test installs emsdk and activates the latest toolchain using `--system` or `--permanent` flags,
|
|
# and checks if the environment variables and PATH are correctly updated. Set $env:SYSTEM_FLAG and $env:PERMANENT_FLAG to test each.
|
|
# If no flag is provided the process/shell values are tested. See the CI file for an example.
|
|
|
|
refreshenv
|
|
|
|
$repo_root = [System.IO.Path]::GetDirectoryName((resolve-path "$PSScriptRoot"))
|
|
|
|
$PATH_USER_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "User")
|
|
$PATH_MACHINE_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Machine")
|
|
$PATH_Process_BEFORE = [System.Environment]::GetEnvironmentVariable("PATH", "Process")
|
|
|
|
|
|
try {
|
|
|
|
& "$repo_root/emsdk.ps1" install latest
|
|
|
|
$esc = '--%'
|
|
& "$repo_root/emsdk.ps1" activate latest $esc $env:PERMANENT_FLAG $env:SYSTEM_FLAG
|
|
|
|
if ($env:SYSTEM_FLAG) {
|
|
$env_type = "Machine"
|
|
}
|
|
elseif ($env:PERMANENT_FLAG) {
|
|
$env_type = "User"
|
|
} else {
|
|
$env_type = "Process"
|
|
}
|
|
|
|
$EMSDK = [System.Environment]::GetEnvironmentVariable("EMSDK", $env_type)
|
|
$EM_CONFIG = [System.Environment]::GetEnvironmentVariable("EM_CONFIG", $env_type)
|
|
$EMSDK_NODE = [System.Environment]::GetEnvironmentVariable("EMSDK_NODE", $env_type)
|
|
$EMSDK_PYTHON = [System.Environment]::GetEnvironmentVariable("EMSDK_PYTHON", $env_type)
|
|
$JAVA_HOME = [System.Environment]::GetEnvironmentVariable("JAVA_HOME", $env_type)
|
|
$EM_CACHE = [System.Environment]::GetEnvironmentVariable("EM_CACHE", $env_type)
|
|
$PATH = [System.Environment]::GetEnvironmentVariable("PATH", $env_type)
|
|
|
|
if (!$EMSDK) {
|
|
throw "EMSDK is not set for the user"
|
|
}
|
|
if (!$EM_CONFIG) {
|
|
throw "EM_CONFIG is not set for the user"
|
|
}
|
|
if (!$EMSDK_NODE) {
|
|
throw "EMSDK_NODE is not set for the user"
|
|
}
|
|
if (!$JAVA_HOME) {
|
|
throw "JAVA_HOME is not set for the user"
|
|
}
|
|
if (!$EMSDK_PYTHON) {
|
|
throw "EMSDK_PYTHON is not set for the user"
|
|
}
|
|
if (!$EM_CACHE) {
|
|
throw "EM_CACHE is not set for the user"
|
|
}
|
|
|
|
|
|
$path_split = $PATH.Split(';')
|
|
|
|
$EMSDK_Path = $path_split | Where-Object { $_ -like "$repo_root*" }
|
|
if (!$EMSDK_Path) {
|
|
throw "No path is added!"
|
|
}
|
|
$EMSDK_NODE_Path = $path_split | Where-Object { $_ -like "$repo_root\node*" }
|
|
if (!$EMSDK_NODE_Path) {
|
|
throw "$repo_root\\node is not added to path."
|
|
}
|
|
|
|
$EMSDK_UPSTREAM_Path = $path_split | Where-Object { $_ -like "$repo_root\upstream\emscripten*" }
|
|
if (!$EMSDK_UPSTREAM_Path) {
|
|
throw "$repo_root\\upstream\emscripten is not added to path."
|
|
}
|
|
|
|
|
|
}
|
|
finally {
|
|
# Recover pre-split PATH
|
|
refreshenv
|
|
|
|
[Environment]::SetEnvironmentVariable("Path", $PATH_USER_BEFORE, "User")
|
|
try {
|
|
[Environment]::SetEnvironmentVariable("Path", $PATH_MACHINE_BEFORE, "Machine")
|
|
}
|
|
catch {}
|
|
|
|
[Environment]::SetEnvironmentVariable("Path", $PATH_Process_BEFORE, "Process")
|
|
|
|
# Recover pre activation env variables
|
|
[Environment]::SetEnvironmentVariable("EMSDK", $null, "User")
|
|
[Environment]::SetEnvironmentVariable("EM_CONFIG", $null, "User")
|
|
[Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "User")
|
|
[Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "User")
|
|
[Environment]::SetEnvironmentVariable("JAVA_HOME", $null, "User")
|
|
[Environment]::SetEnvironmentVariable("EM_CACHE", $null, "User")
|
|
|
|
try {
|
|
[Environment]::SetEnvironmentVariable("EMSDK", $null, "Machine")
|
|
[Environment]::SetEnvironmentVariable("EM_CONFIG", $null, "Machine")
|
|
[Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Machine")
|
|
[Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Machine")
|
|
[Environment]::SetEnvironmentVariable("JAVA_HOME", $null, "Machine")
|
|
[Environment]::SetEnvironmentVariable("EM_CACHE", $null, "Machine")
|
|
} catch {}
|
|
|
|
|
|
[Environment]::SetEnvironmentVariable("EMSDK", $null, "Process")
|
|
[Environment]::SetEnvironmentVariable("EM_CONFIG", $null, "Process")
|
|
[Environment]::SetEnvironmentVariable("EMSDK_NODE", $null, "Process")
|
|
[Environment]::SetEnvironmentVariable("EMSDK_PYTHON", $null, "Process")
|
|
[Environment]::SetEnvironmentVariable("JAVA_HOME", $null, "Process")
|
|
[Environment]::SetEnvironmentVariable("EM_CACHE", $null, "Process")
|
|
|
|
refreshenv
|
|
}
|