annotate third_party/emsdk/scripts/create_release.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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
3 import argparse
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
4 import json
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
5 import os
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
6 import re
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
7 import subprocess
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
8 import sys
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
9 from collections import OrderedDict
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
10
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
11 script_dir = os.path.dirname(os.path.abspath(__file__))
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
12 root_dir = os.path.dirname(script_dir)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
13 sys.path.append(root_dir)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
14
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
15 import emsdk # noqa
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
16
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 def version_key(version_string):
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
19 parts = re.split('[.-]', version_string)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
20 key = [[int(part) for part in parts[:3]], -len(parts), parts[3:]]
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
21 return key
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 main():
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
25 if subprocess.check_output(['git', 'status', '--porcelain'], cwd=root_dir).strip():
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
26 print('tree is not clean')
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
27 sys.exit(1)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
28
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
29 parser = argparse.ArgumentParser()
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
30 parser.add_argument('-r', '--release-hash')
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
31 parser.add_argument('-a', '--asserts-hash')
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
32 parser.add_argument('-v', '--new-version')
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
33 parser.add_argument('--gh-action', action='store_true')
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
34 options = parser.parse_args()
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
35
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
36 release_info = emsdk.load_releases_info()
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
37 if options.new_version:
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
38 new_version = options.new_version
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
39 else:
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
40 new_version = version_key(release_info['aliases']['latest'])[0]
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
41 new_version[-1] += 1
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
42 new_version = '.'.join(str(part) for part in new_version)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
43
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
44 asserts_hash = None
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
45 if options.release_hash:
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
46 new_hash = options.release_hash
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
47 asserts_hash = options.asserts_hash
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
48 else:
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
49 new_hash = emsdk.get_emscripten_releases_tot()
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 print('Creating new release: %s -> %s' % (new_version, new_hash))
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
52 release_info['releases'][new_version] = new_hash
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
53 if asserts_hash:
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
54 asserts_name = new_version + '-asserts'
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
55 release_info['releases'][asserts_name] = asserts_hash
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
56
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
57 releases = [(k, v) for k, v in release_info['releases'].items()]
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
58 releases.sort(key=lambda pair: version_key(pair[0]))
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 release_info['releases'] = OrderedDict(reversed(releases))
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
61 release_info['aliases']['latest'] = new_version
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 with open(os.path.join(root_dir, 'emscripten-releases-tags.json'), '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
64 f.write(json.dumps(release_info, indent=2))
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
65 f.write('\n')
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
66
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
67 subprocess.check_call(
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
68 [sys.executable, os.path.join(script_dir, 'update_bazel_workspace.py')],
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
69 cwd=root_dir)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
70
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
71 branch_name = 'version_' + new_version
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
72
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
73 if options.gh_action: # For GitHub Actions workflows
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(os.environ['GITHUB_ENV'], 'a') 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(f'RELEASE_VERSION={new_version}')
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
76 else: # Local use
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
77 # Create a new git branch
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
78 subprocess.check_call(['git', 'checkout', '-b', branch_name, 'origin/main'], cwd=root_dir)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
79
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
80 # Create auto-generated changes to the new git branch
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
81 subprocess.check_call(['git', 'add', '-u', '.'], cwd=root_dir)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
82 subprocess.check_call(['git', 'commit', '-m', new_version], cwd=root_dir)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
83 print('New release created in branch: `%s`' % branch_name)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
84
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
85 # Push new branch to origin
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
86 subprocess.check_call(['git', 'push', 'origin', branch_name], cwd=root_dir)
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
87
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
88 return 0
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
89
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
90
8d17f6e6e290 [ThirdParty] Added emsdk bazel rules that can be supported by bazel 9.0.0
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
91 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
92 sys.exit(main())