diff --git a/emsdk.py b/emsdk.py index e457be8..5545423 100644 --- a/emsdk.py +++ b/emsdk.py @@ -1848,8 +1848,12 @@ class Tool(object): if getattr(self, 'custom_install_script', None) == 'emscripten_npm_install': # upstream tools have hardcoded paths that are not stored in emsdk_manifest.json registry install_path = 'upstream' if 'releases-upstream' in self.version else 'fastcomp' - if not emscripten_npm_install(self, os.path.join(emsdk_path(), install_path, 'emscripten')): - exit_with_error('post-install step failed: emscripten_npm_install') + emscripten_dir = os.path.join(emsdk_path(), install_path, 'emscripten') + # Older versions of the sdk did not include the node_modules directory + # and require `npm ci` to be run post-install + if not os.path.exists(os.path.join(emscripten_dir, 'node_modules')): + if not emscripten_npm_install(self, emscripten_dir): + exit_with_error('post-install step failed: emscripten_npm_install') print("Done installing SDK '" + str(self) + "'.") return True diff --git a/test/test.py b/test/test.py index c78858d..bd21154 100755 --- a/test/test.py +++ b/test/test.py @@ -205,6 +205,10 @@ int main() { # TODO; test on latest as well check_call(upstream_emcc + ' hello_world.c') + def test_closure(self): + # Specificlly test with `--closure` so we know that node_modules is working + check_call(upstream_emcc + ' hello_world.c --closure=1') + def test_specific_old(self): print('test specific release (old, using sdk-* notation)') run_emsdk('install sdk-fastcomp-1.38.31-64bit')