@@ -3,34 +3,40 @@ load("//:build/python_metadata.bzl", "BUNDLE_VERSION_INFO", "PYODIDE_VERSIONS",
33
44def _pyodide_core (* , version , sha256 , ** _kwds ):
55 # Use @workerd prefix on build_file so we can use this from edgeworker too
6+ name = "pyodide-%s" % version
67 http_archive (
7- name = "pyodide-%s" % version ,
8+ name = name ,
89 build_file = "@workerd//:build/BUILD.pyodide" ,
910 sha256 = sha256 ,
1011 urls = ["https://github.com/pyodide/pyodide/releases/download/%s/pyodide-core-%s.tar.bz2" % (version , version )],
1112 )
13+ return [name ]
1214
1315def _pyodide_packages (* , tag , lockfile_hash , all_wheels_hash , ** _kwds ):
16+ lock_name = "pyodide-lock_%s.json" % tag
1417 http_file (
15- name = "pyodide-lock_%s.json" % tag ,
18+ name = lock_name ,
1619 sha256 = lockfile_hash ,
1720 url = "https://github.com/cloudflare/pyodide-build-scripts/releases/download/%s/pyodide-lock.json" % tag ,
1821 )
1922
2023 # Use @workerd prefix on build_file so we can use this from edgeworker too
24+ archive_name = "all_pyodide_wheels_%s" % tag
2125 http_archive (
22- name = "all_pyodide_wheels_%s" % tag ,
26+ name = archive_name ,
2327 build_file = "@workerd//:build/BUILD.all_pyodide_wheels" ,
2428 sha256 = all_wheels_hash ,
2529 urls = ["https://github.com/cloudflare/pyodide-build-scripts/releases/download/%s/all_wheels.zip" % tag ],
2630 )
31+ return [lock_name , archive_name ]
2732
2833VENDOR_R2 = "https://pub-25a5b2f2f1b84655b185a505c7a3ad23.r2.dev/"
2934
3035def _py_vendor_test_deps (version , name , sha256 , abi , ** _kwds ):
3136 pyver = "-" + abi .replace ("." , "" ) if abi else ""
37+ archive_name = name + "_src_" + version
3238 http_archive (
33- name = name + "_src_" + version ,
39+ name = archive_name ,
3440 build_file_content = """
3541filegroup(
3642 name = "all_srcs",
@@ -41,29 +47,33 @@ filegroup(
4147 sha256 = sha256 ,
4248 url = VENDOR_R2 + name + pyver + "-vendored-for-ew-testing.zip" ,
4349 )
50+ return [archive_name ]
4451
4552PYODIDE_CAPN_BIN = "https://pyodide-capnp-bin.edgeworker.net/"
4653
4754def _capnp_bundle (id = None , integrity = None , ** _kwds ):
4855 if not id or not integrity :
4956 return
57+ name = "pyodide_%s.capnp.bin" % id
5058 http_file (
51- name = "pyodide_%s.capnp.bin" % id ,
59+ name = name ,
5260 integrity = integrity ,
53- url = PYODIDE_CAPN_BIN + "pyodide_%s.capnp.bin" % id ,
61+ url = PYODIDE_CAPN_BIN + name ,
5462 )
63+ return [name ]
5564
5665def dep_pyodide ():
66+ deps = []
5767 for info in PYODIDE_VERSIONS :
58- _pyodide_core (** info )
68+ deps += _pyodide_core (** info )
5969
6070 for info in BUNDLE_VERSION_INFO .values ():
61- _capnp_bundle (** info )
71+ deps += _capnp_bundle (** info )
6272 for pkg in info ["vendored_packages_for_tests" ].values ():
63- _py_vendor_test_deps (version = info ["name" ], ** pkg )
73+ deps += _py_vendor_test_deps (version = info ["name" ], ** pkg )
6474
6575 for info in PYTHON_LOCKFILES :
66- _pyodide_packages (** info )
76+ deps += _pyodide_packages (** info )
6777
6878 # Accumulator to de-duplicate generated http_file rules.
6979 gen_http_file = {}
@@ -102,13 +112,20 @@ def dep_pyodide():
102112 for ver in BUNDLE_VERSION_INFO .values ():
103113 _snapshot_http_files (** ver )
104114 for snapshot , info in gen_http_file .items ():
115+ name = "pyodide-snapshot-" + snapshot
105116 http_file (
106- name = "pyodide-snapshot-" + snapshot ,
117+ name = name ,
107118 integrity = info .integrity ,
108119 url = info .url ,
109120 )
121+ deps .append (name )
122+ return deps
110123
111124def _impl (module_ctx ):
112- dep_pyodide ()
125+ deps = dep_pyodide ()
126+ return module_ctx .extension_metadata (
127+ root_module_direct_deps = deps ,
128+ root_module_direct_dev_deps = [],
129+ )
113130
114131pyodide = module_extension (implementation = _impl )
0 commit comments