Mercurial
annotate third_party/emsdk/scripts/update_bazel_workspace.py @ 279:b3b547563ec7
Add Google connector service and agent wiki
Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code.
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 17 Aug 2026 22:22:36 -0700 |
| 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()) |