Avoid exporting EM_CONFIG for modern SDK versions (#1110)
Newer versions of emscipten, starting all the way back in 1.39.13, can automatically locate the `.emscripten` config file that emsdk creates so there is no need for the explicit EM_CONFIG environment variable. Its redundant and adds unnessary noisce/complexity. Really, adding emcc to the PATH is all the is needed these days. One nice thing about this change is that it allows folks to run whichever emcc they want to and have it just work, even if they have configured emsdk. Without this change, if I activate emsdk and I run `some/other/emcc` then emsdk's `EM_CONFIG` will still be present and override the configuration embedded in `some/other/emcc`. e.g. in the same shell, with emsdk activated, I can run both these commands and have them both just work as expected. ``` $ emcc --version $ /path/to/my/emcc --version ```
This commit is contained in:
@@ -64,7 +64,6 @@ COPY --from=stage_build /emsdk /emsdk
|
||||
# This will let use tools offered by this image inside other Docker images
|
||||
# (sub-stages) or with custom / no entrypoint
|
||||
ENV EMSDK=/emsdk \
|
||||
EM_CONFIG=/emsdk/.emscripten \
|
||||
EMSDK_NODE=/emsdk/node/14.18.2_64bit/bin/node \
|
||||
PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/upstream/bin:/emsdk/node/14.18.2_64bit/bin:${PATH}"
|
||||
|
||||
|
||||
8
emsdk.py
8
emsdk.py
@@ -2676,7 +2676,6 @@ def get_env_vars_to_add(tools_to_activate, system, user):
|
||||
|
||||
# A core variable EMSDK points to the root of Emscripten SDK directory.
|
||||
env_vars_to_add += [('EMSDK', to_unix_path(emsdk_path()))]
|
||||
env_vars_to_add += [('EM_CONFIG', os.path.normpath(dot_emscripten_path()))]
|
||||
|
||||
for tool in tools_to_activate:
|
||||
config = tool.activated_config()
|
||||
@@ -2692,6 +2691,9 @@ def get_env_vars_to_add(tools_to_activate, system, user):
|
||||
# https://github.com/emscripten-core/emscripten/pull/11091
|
||||
# - Default to embedded cache also started in 1.39.16
|
||||
# https://github.com/emscripten-core/emscripten/pull/11126
|
||||
# - Emscripten supports automatically locating the embedded
|
||||
# config in 1.39.13:
|
||||
# https://github.com/emscripten-core/emscripten/pull/10935
|
||||
#
|
||||
# Since setting EM_CACHE in the environment effects the entire machine
|
||||
# we want to avoid this except when installing these older emscripten
|
||||
@@ -2700,6 +2702,8 @@ def get_env_vars_to_add(tools_to_activate, system, user):
|
||||
if version < [1, 39, 16]:
|
||||
em_cache_dir = os.path.join(config['EMSCRIPTEN_ROOT'], 'cache')
|
||||
env_vars_to_add += [('EM_CACHE', em_cache_dir)]
|
||||
if version < [1, 39, 13]:
|
||||
env_vars_to_add += [('EM_CONFIG', os.path.normpath(dot_emscripten_path()))]
|
||||
|
||||
envs = tool.activated_environment()
|
||||
for env in envs:
|
||||
@@ -2764,7 +2768,7 @@ def construct_env_with_vars(env_vars_to_add):
|
||||
'EMSDK_NUM_CORES', 'EMSDK_NOTTY', 'EMSDK_KEEP_DOWNLOADS'])
|
||||
env_keys_to_add = set(pair[0] for pair in env_vars_to_add)
|
||||
for key in os.environ:
|
||||
if key.startswith('EMSDK_') or key.startswith('EM_CACHE'):
|
||||
if key.startswith('EMSDK_') or key in ('EM_CACHE', 'EM_CONFIG'):
|
||||
if key not in env_keys_to_add and key not in ignore_keys:
|
||||
info('Clearing existing environment variable: %s' % key)
|
||||
env_string += unset_env(key)
|
||||
|
||||
@@ -10,9 +10,9 @@ import unittest
|
||||
WINDOWS = sys.platform.startswith('win')
|
||||
MACOS = sys.platform == 'darwin'
|
||||
|
||||
assert 'EM_CONFIG' in os.environ, "emsdk should be activated before running this script"
|
||||
emconfig = os.path.abspath('.emscripten')
|
||||
assert os.path.exists(emconfig)
|
||||
|
||||
emconfig = os.environ['EM_CONFIG']
|
||||
upstream_emcc = os.path.join('upstream', 'emscripten', 'emcc')
|
||||
fastcomp_emcc = os.path.join('fastcomp', 'emscripten', 'emcc')
|
||||
emsdk = './emsdk'
|
||||
|
||||
@@ -28,7 +28,6 @@ try {
|
||||
}
|
||||
|
||||
$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)
|
||||
@@ -37,9 +36,6 @@ try {
|
||||
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"
|
||||
}
|
||||
@@ -83,14 +79,12 @@ finally {
|
||||
|
||||
# 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")
|
||||
|
||||
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")
|
||||
@@ -98,7 +92,6 @@ finally {
|
||||
|
||||
|
||||
[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")
|
||||
|
||||
@@ -123,14 +123,12 @@ finally {
|
||||
|
||||
# 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")
|
||||
|
||||
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")
|
||||
@@ -138,7 +136,6 @@ finally {
|
||||
|
||||
|
||||
[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")
|
||||
|
||||
Reference in New Issue
Block a user