Mercurial
annotate third_party/emsdk/scripts/update_bazel_workspace.py @ 182:d6ab5921fedc
Merging in changes I had on my mac related to JSON parser and MPC endpoints.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Fri, 23 Jan 2026 21:09:49 -0800 |
| parents | 8d17f6e6e290 |
| children |
| rev | line source |
|---|---|
|
179
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python3 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
2 # This script will update emsdk/bazel/revisions.bzl to the latest version of |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
3 # emscripten. It reads emsdk/emscripten-releases-tags.json to get the latest |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
4 # version number. Then, it downloads the prebuilts for that version and computes |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
5 # the sha256sum for the archive. It then puts all this information into the |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
6 # emsdk/bazel/revisions.bzl file. |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
7 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
8 import hashlib |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
9 import json |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
10 import os |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
11 import re |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
12 import sys |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
13 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
14 import requests |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
15 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
16 STORAGE_URL = 'https://storage.googleapis.com/webassembly/emscripten-releases-builds' |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
17 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
18 EMSDK_ROOT = os.path.dirname(os.path.dirname(__file__)) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
19 RELEASES_TAGS_FILE = EMSDK_ROOT + '/emscripten-releases-tags.json' |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
20 BAZEL_REVISIONS_FILE = EMSDK_ROOT + '/bazel/revisions.bzl' |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
21 BAZEL_MODULE_FILE = EMSDK_ROOT + '/bazel/MODULE.bazel' |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
22 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
23 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
24 def get_latest_info(): |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
25 with open(RELEASES_TAGS_FILE) as f: |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
26 info = json.load(f) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
27 latest = info['aliases']['latest'] |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
28 return latest, info['releases'][latest] |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
29 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
30 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
31 def get_sha(platform, archive_fmt, latest_hash, arch_suffix=''): |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
32 r = requests.get(f'{STORAGE_URL}/{platform}/{latest_hash}/wasm-binaries{arch_suffix}.{archive_fmt}') |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
33 r.raise_for_status() |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
34 print(f'Fetching {r.url}') |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
35 h = hashlib.new('sha256') |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
36 for chunk in r.iter_content(chunk_size=1024): |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
37 h.update(chunk) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
38 return h.hexdigest() |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
39 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
40 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
41 def revisions_item(version, latest_hash): |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
42 return f'''\ |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
43 "{version}": struct( |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
44 hash = "{latest_hash}", |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
45 sha_linux = "{get_sha('linux', 'tar.xz', latest_hash)}", |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
46 sha_linux_arm64 = "{get_sha('linux', 'tar.xz', latest_hash, '-arm64')}", |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
47 sha_mac = "{get_sha('mac', 'tar.xz', latest_hash)}", |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
48 sha_mac_arm64 = "{get_sha('mac', 'tar.xz', latest_hash, '-arm64')}", |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
49 sha_win = "{get_sha('win', 'zip', latest_hash)}", |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
50 ), |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
51 ''' |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
52 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
53 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
54 def insert_revision(item): |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
55 with open(BAZEL_REVISIONS_FILE) as f: |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
56 lines = f.readlines() |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
57 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
58 lines.insert(lines.index('EMSCRIPTEN_TAGS = {\n') + 1, item) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
59 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
60 with open(BAZEL_REVISIONS_FILE, 'w') as f: |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
61 f.write(''.join(lines)) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
62 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
63 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
64 def update_module_version(version): |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
65 with open(BAZEL_MODULE_FILE) as f: |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
66 content = f.read() |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
67 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
68 pattern = r'(module\(\s*name = "emsdk",\s*version = )"\d+.\d+.\d+",\n\)' |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
69 # Verify that the pattern exists in the input since re.sub will |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
70 # will succeed either way. |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
71 assert re.search(pattern, content) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
72 content = re.sub(pattern, fr'\1"{version}",\n)', content) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
73 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
74 with open(BAZEL_MODULE_FILE, 'w') as f: |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
75 f.write(content) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
76 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
77 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
78 def main(): |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
79 version, latest_hash = get_latest_info() |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
80 update_module_version(version) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
81 item = revisions_item(version, latest_hash) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
82 print('inserting item:') |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
83 print(item) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
84 insert_revision(item) |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
85 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
86 |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
87 if __name__ == '__main__': |
|
8d17f6e6e290
[ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
88 sys.exit(main()) |