Skip to content

Commit a9e1f8e

Browse files
committed
Allow emscripten-releases-tags/aliases to work be used without SDK deps
This change means that aliases such as `latest` and `3.10.2` can be used to install jsut the emscipten-releases packages and not the full SDK with all the dependencies. This allows uses who do not want to install dependencies such as node, python or java to still use this package. These packages were already available to install on their own via their full names such as: ``` $ ./emsdk install releases-upstream-48ce0b44015d0182fc8c27aa9fbc0a4474b55982-64bi ``` Now these base packages can also be install via: ``` $ ./emsdk install latest-base ``` Fixes: #1142
1 parent 32fba7b commit a9e1f8e

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

emsdk.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2323,11 +2323,17 @@ def load_file_index_list(filename):
23232323
def load_releases_info():
23242324
if not hasattr(load_releases_info, 'cached_info'):
23252325
try:
2326-
text = open(sdk_path('emscripten-releases-tags.json'), 'r').read()
2327-
load_releases_info.cached_info = json.loads(text)
2326+
with open(sdk_path('emscripten-releases-tags.json')) as f:
2327+
text = f.read()
2328+
info = json.loads(text)
23282329
except Exception as e:
23292330
print('Error parsing emscripten-releases-tags.json!')
23302331
exit_with_error(str(e))
2332+
for key, value in dict(info['aliases']).items():
2333+
info['aliases'][key + '-base'] = value + '-base'
2334+
for key, value in dict(info['releases']).items():
2335+
info['releases'][key + '-base'] = value + '-base'
2336+
load_releases_info.cached_info = info
23312337

23322338
return load_releases_info.cached_info
23332339

@@ -2817,8 +2823,12 @@ def expand_sdk_name(name, activating):
28172823
elif '-fastcomp' in fullname:
28182824
fullname = fullname.replace('-fastcomp', '')
28192825
backend = 'fastcomp'
2820-
version = fullname.replace('sdk-', '').replace('releases-', '').replace('-64bit', '').replace('tag-', '')
2821-
sdk = 'sdk-' if not name.startswith('releases-') else ''
2826+
version = name
2827+
for pattern in ('sdk-', 'releases-', '-64bit', 'tag-', '-base'):
2828+
version = version.replace(pattern, '')
2829+
sdk_prefix = 'sdk-'
2830+
if name.startswith('releases-') or name.endswith('-base'):
2831+
sdk_prefix = ''
28222832
releases_info = load_releases_info()['releases']
28232833
release_hash = get_release_hash(version, releases_info)
28242834
if release_hash:
@@ -2830,7 +2840,7 @@ def expand_sdk_name(name, activating):
28302840
backend = 'upstream'
28312841
else:
28322842
backend = 'fastcomp'
2833-
full_name = '%sreleases-%s-%s-64bit' % (sdk, backend, release_hash)
2843+
full_name = '%sreleases-%s-%s-64bit' % (sdk_prefix, backend, release_hash)
28342844
print("Resolving SDK version '%s' to '%s'" % (version, full_name))
28352845
return full_name
28362846

@@ -2839,7 +2849,7 @@ def expand_sdk_name(name, activating):
28392849
backend = 'upstream'
28402850
global extra_release_tag
28412851
extra_release_tag = version
2842-
return '%sreleases-%s-%s-64bit' % (sdk, backend, version)
2852+
return '%sreleases-%s-%s-64bit' % (sdk_prefix, backend, version)
28432853

28442854
return name
28452855

test/test.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,12 @@ def test_install_tool(self):
286286
# Test that its possible to install emscripten as tool instead of SDK
287287
checked_call_with_output(emsdk + ' install releases-upstream-77b065ace39e6ab21446e13f92897f956c80476a', unexpected='Installing SDK')
288288

289+
def test_install_alias(self):
290+
# 3.1.18 is 49d45744895c7d7e28acd94a385d7ee361653b4a
291+
run_emsdk('install 3.1.18-base')
292+
checked_call_with_output(emsdk + ' install install 3.1.18-base', unexpected='Installing SDK')
293+
checked_call_with_output(emsdk + ' install install releases-upstream-49d45744895c7d7e28acd94a385d7ee361653b4a', unexpected='already downloaded, skipping', unexpected='Downloading:')
294+
289295
def test_activate_missing(self):
290296
run_emsdk('install latest')
291297
failing_call_with_output(emsdk + ' activate 2.0.1', expected="error: tool is not installed and therefore cannot be activated: 'releases-upstream-13e29bd55185e3c12802bc090b4507901856b2ba-64bit'")

0 commit comments

Comments
 (0)