Avoid exporting EM_CONFIG for modern SDK versions
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
```
diff --git a/docker/Dockerfile b/docker/Dockerfile
index cf2cd4c..bc201e1 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -64,7 +64,6 @@
# 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}"
diff --git a/emsdk.py b/emsdk.py
index 499f14d..c26426b 100644
--- a/emsdk.py
+++ b/emsdk.py
@@ -2676,7 +2676,6 @@
# 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 @@
# 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 @@
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 @@
'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)
diff --git a/test/test.py b/test/test.py
index deb7240..f9766d0 100755
--- a/test/test.py
+++ b/test/test.py
@@ -10,9 +10,9 @@
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'
diff --git a/test/test_activation.ps1 b/test/test_activation.ps1
index 1aa0a97..6d38ffc 100644
--- a/test/test_activation.ps1
+++ b/test/test_activation.ps1
@@ -28,7 +28,6 @@
}
$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 @@
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 @@
# 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 @@
[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")
diff --git a/test/test_path_preservation.ps1 b/test/test_path_preservation.ps1
index b894954..1547949 100644
--- a/test/test_path_preservation.ps1
+++ b/test/test_path_preservation.ps1
@@ -123,14 +123,12 @@
# 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 @@
[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")