@@ -4,6 +4,7 @@ load("@bazel_skylib//rules:expand_template.bzl", "expand_template")
44load ("@bazel_skylib//rules:write_file.bzl" , "write_file" )
55load ("//:build/capnp_embed.bzl" , "capnp_embed" )
66load ("//:build/js_file.bzl" , "js_file" )
7+ load ("//:build/python_metadata.bzl" , "PYODIDE_VERSIONS" , "PYTHON_LOCKFILES" )
78load ("//:build/wd_ts_bundle.bzl" , "wd_ts_bundle" )
89
910def _out_name (src ):
@@ -43,15 +44,28 @@ def copy_and_capnp_embed(src, version = None, out_name = None):
4344 deps = [out_name + "@copy" ],
4445 )
4546
46- def python_bundle (version , pyodide_asm_wasm = None , pyodide_asm_js = None , python_stdlib_zip = None , emscripten_setup_override = None ):
47+ def python_bundles (overrides = {}):
48+ srcs = [_python_bundle_helper (info , overrides ) for info in PYODIDE_VERSIONS ]
49+ native .filegroup (
50+ name = "python_bundles" ,
51+ srcs = srcs + [":bundle_version_info" ],
52+ )
53+
54+ def _python_bundle_helper (info , overrides ):
55+ version = info ["version" ]
56+ override = overrides .get (version , {})
57+ return _python_bundle (version , ** override )
58+
59+ def _python_bundle (version , * , pyodide_asm_wasm = None , pyodide_asm_js = None , python_stdlib_zip = None , emscripten_setup_override = None ):
60+ pyodide_package = "@pyodide-%s//" % version
4761 if not pyodide_asm_wasm :
48- pyodide_asm_wasm = "@pyodide// :pyodide/pyodide.asm.wasm"
62+ pyodide_asm_wasm = pyodide_package + " :pyodide/pyodide.asm.wasm"
4963
5064 if not pyodide_asm_js :
51- pyodide_asm_js = "@pyodide// :pyodide/pyodide.asm.js"
65+ pyodide_asm_js = pyodide_package + " :pyodide/pyodide.asm.js"
5266
5367 if not python_stdlib_zip :
54- python_stdlib_zip = "@pyodide// :pyodide/python_stdlib.zip"
68+ python_stdlib_zip = pyodide_package + " :pyodide/python_stdlib.zip"
5569
5670 copy_and_capnp_embed ("python-entrypoint.js" , version = version )
5771
@@ -243,8 +257,9 @@ def python_bundle(version, pyodide_asm_wasm = None, pyodide_asm_js = None, pytho
243257 out_dir = _out_path ("" , version ),
244258 )
245259
260+ pyodide_cappn_bin_rule = "pyodide.capnp.bin@rule@" + version
246261 native .genrule (
247- name = "pyodide.capnp.bin@rule@" + version ,
262+ name = pyodide_cappn_bin_rule ,
248263 srcs = [
249264 ":pyodide@%s.capnp" % version ,
250265 "//src/workerd/jsg:modules.capnp" ,
@@ -287,3 +302,4 @@ def python_bundle(version, pyodide_asm_wasm = None, pyodide_asm_js = None, pytho
287302 tools = ["@capnp-cpp//src/capnp:capnp_tool" ],
288303 visibility = ["//visibility:public" ],
289304 )
305+ return pyodide_cappn_bin_rule
0 commit comments