Update Node.js to v24.19.0 Update the version of Node.js shipped with emsdk to the latest LTS (v24.19.0) using unmodified upstream archives. - Update emsdk_manifest.json node versions and SDK defaults to use node-24.18.1-64bit with OS-specific activated_*_windows overrides. - Simplify scripts/update_node.py to download and upload unmodified upstream archives without repackaging Windows zips. Fixes: #1758
diff --git a/docker/Dockerfile b/docker/Dockerfile index 05ef3b9..2b0c7a0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile
@@ -69,7 +69,7 @@ # using `--entrypoint /bin/bash` in CLI). # This corresponds to the env variables set during: `source ./emsdk_env.sh` ENV EMSDK=/emsdk -ENV PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/22.16.0_64bit/bin:${PATH}" +ENV PATH="/emsdk:/emsdk/upstream/emscripten:/emsdk/node/24.19.0_64bit/bin:${PATH}" # ------------------------------------------------------------------------------
diff --git a/emsdk_manifest.json b/emsdk_manifest.json index af3ad3c..0733f56 100644 --- a/emsdk_manifest.json +++ b/emsdk_manifest.json
@@ -217,36 +217,42 @@ { "id": "node", - "version": "24.7.0", + "version": "24.19.0", "bitness": 64, "arch": "x86_64", - "url_windows": "node-v24.7.0-win-x64.zip", - "url_macos": "node-v24.7.0-darwin-x64.tar.gz", - "url_linux": "node-v24.7.0-linux-x64.tar.xz", + "url_windows": "node-v24.19.0-win-x64.zip", + "url_macos": "node-v24.19.0-darwin-x64.tar.gz", + "url_linux": "node-v24.19.0-linux-x64.tar.xz", "activated_path": "%installation_dir%/bin", + "activated_path_windows": "%installation_dir%", "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + "activated_cfg": "NODE_JS='%installation_dir%/bin/node'", + "activated_cfg_windows": "NODE_JS='%installation_dir%/node.exe'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node", + "activated_env_windows": "EMSDK_NODE=%installation_dir%/node.exe" }, { "id": "node", - "version": "24.7.0", + "version": "24.19.0", "arch": "arm64", "bitness": 64, - "url_windows": "node-v24.7.0-win-arm64.zip", - "url_macos": "node-v24.7.0-darwin-arm64.tar.gz", - "url_linux": "node-v24.7.0-linux-arm64.tar.xz", + "url_windows": "node-v24.19.0-win-arm64.zip", + "url_macos": "node-v24.19.0-darwin-arm64.tar.gz", + "url_linux": "node-v24.19.0-linux-arm64.tar.xz", "activated_path": "%installation_dir%/bin", + "activated_path_windows": "%installation_dir%", "activated_path_skip": "node", - "activated_cfg": "NODE_JS='%installation_dir%/bin/node%.exe%'", - "activated_env": "EMSDK_NODE=%installation_dir%/bin/node%.exe%" + "activated_cfg": "NODE_JS='%installation_dir%/bin/node'", + "activated_cfg_windows": "NODE_JS='%installation_dir%/node.exe'", + "activated_env": "EMSDK_NODE=%installation_dir%/bin/node", + "activated_env_windows": "EMSDK_NODE=%installation_dir%/node.exe" }, { "id": "node-big-endian-crosscompile", - "version": "24.7.0", + "version": "24.19.0", "arch": "x86_64", "bitness": 64, - "url_linux": "node-v24.7.0-linux-s390x.tar.gz", + "url_linux": "node-v24.19.0-linux-s390x.tar.gz", "activated_path": "%installation_dir%/bin", "activated_path_skip": "node", "activated_cfg": "NODE_JS_TEST=['qemu-s390x', '-L', '/usr/s390x-linux-gnu/', '%installation_dir%/bin/node']" @@ -672,19 +678,19 @@ { "version": "main", "bitness": 64, - "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], + "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-24.19.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], "os": "windows" }, { "version": "main", "bitness": 64, - "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], + "uses": ["python-3.13.3-64bit", "llvm-git-main-64bit", "node-24.19.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], "os": "macos" }, { "version": "main", "bitness": 64, - "uses": ["llvm-git-main-64bit", "node-22.16.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], + "uses": ["llvm-git-main-64bit", "node-24.19.0-64bit", "emscripten-main-64bit", "binaryen-main-64bit"], "os": "linux" }, { @@ -696,14 +702,14 @@ { "version": "releases-%releases-tag%", "bitness": 64, - "uses": ["node-22.16.0-64bit", "releases-%releases-tag%-64bit"], + "uses": ["node-24.19.0-64bit", "releases-%releases-tag%-64bit"], "os": "linux", "custom_install_script": "sdk_post_install" }, { "version": "releases-%releases-tag%", "bitness": 64, - "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], + "uses": ["node-24.19.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], "os": "macos", "arch": "x86_64", "custom_install_script": "sdk_post_install" @@ -711,7 +717,7 @@ { "version": "releases-%releases-tag%", "bitness": 64, - "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], + "uses": ["node-24.19.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], "os": "macos", "arch": "arm64", "custom_install_script": "sdk_post_install" @@ -719,7 +725,7 @@ { "version": "releases-%releases-tag%", "bitness": 64, - "uses": ["node-22.16.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], + "uses": ["node-24.19.0-64bit", "python-3.13.3-64bit", "releases-%releases-tag%-64bit"], "os": "windows", "custom_install_script": "sdk_post_install" }
diff --git a/scripts/update_node.py b/scripts/update_node.py index d3babd1..d066cde 100755 --- a/scripts/update_node.py +++ b/scripts/update_node.py
@@ -6,24 +6,18 @@ """Updates the node binaries that we cache store at http://storage.google.com/webassembly. - -For the windows version we also alter the directory layout to add the 'bin' -directory. """ +import argparse import os -import shutil import subprocess -import sys import urllib.request -from zip import unzip_cmd, zip_cmd - # When adjusting this version, visit # https://github.com/nodejs/node/blob/v24.x/BUILDING.md#platform-list # to verify minimum supported OS versions. Replace "v24.x" in the URL # with the version field. -version = '24.7.0' +version = '24.19.0' base = f'https://nodejs.org/dist/v{version}/' upload_base = 'gs://webassembly/emscripten-releases-builds/deps/' @@ -37,26 +31,26 @@ '-linux-s390x.tar.gz', ] -for suffix in suffixes: + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--upload', action='store_true', help='Upload binaries to Google Cloud Storage') + args = parser.parse_args() + + for suffix in suffixes: filename = 'node-v%s%s' % (version, suffix) download_url = base + filename print('Downloading: ' + download_url) urllib.request.urlretrieve(download_url, filename) - if '-win-' in suffix: - subprocess.check_call([*unzip_cmd(), filename]) - dirname = os.path.splitext(os.path.basename(filename))[0] - shutil.move(dirname, 'bin') - os.mkdir(dirname) - shutil.move('bin', dirname) - os.remove(filename) - subprocess.check_call([*zip_cmd(), filename, dirname]) - shutil.rmtree(dirname) - - if '--upload' in sys.argv: + if args.upload: upload_url = upload_base + filename print('Uploading: ' + upload_url) cmd = ['gsutil', 'cp', '-n', filename, upload_url] print(' '.join(cmd)) subprocess.check_call(cmd) os.remove(filename) + + +if __name__ == '__main__': + main()
diff --git a/test/test.py b/test/test.py index 73a1365..f72cb31 100755 --- a/test/test.py +++ b/test/test.py
@@ -265,9 +265,9 @@ # Test the normal tools like node don't re-download on re-install print('another install must re-download') - checked_call_with_output(emsdk + ' uninstall node-22.16.0-64bit') - checked_call_with_output(emsdk + ' install node-22.16.0-64bit', expected='Downloading:', unexpected='already installed') - checked_call_with_output(emsdk + ' install node-22.16.0-64bit', unexpected='Downloading:', expected='already installed') + checked_call_with_output(emsdk + ' uninstall node-24.19.0-64bit') + checked_call_with_output(emsdk + ' install node-24.19.0-64bit', expected='Downloading:', unexpected='already installed') + checked_call_with_output(emsdk + ' install node-24.19.0-64bit', unexpected='Downloading:', expected='already installed') def test_tot_upstream(self): print('test update-tags')