diff third_party/emsdk/scripts/update_node.py @ 179:8d17f6e6e290

[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
author MrJuneJune <me@mrjunejune.com>
date Thu, 22 Jan 2026 21:23:17 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/third_party/emsdk/scripts/update_node.py	Thu Jan 22 21:23:17 2026 -0800
@@ -0,0 +1,62 @@
+#!/usr/bin/env python3
+# Copyright 2020 The Emscripten Authors.  All rights reserved.
+# Emscripten is available under two separate licenses, the MIT license and the
+# University of Illinois/NCSA Open Source License.  Both these licenses can be
+# found in the LICENSE file.
+
+"""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 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'
+base = f'https://nodejs.org/dist/v{version}/'
+upload_base = 'gs://webassembly/emscripten-releases-builds/deps/'
+
+suffixes = [
+    '-win-x64.zip',
+    '-win-arm64.zip',
+    '-darwin-x64.tar.gz',
+    '-darwin-arm64.tar.gz',
+    '-linux-x64.tar.xz',
+    '-linux-arm64.tar.xz',
+    '-linux-s390x.tar.gz',
+]
+
+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:
+      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)