Skip to content

Commit d398306

Browse files
committed
Pyodide bzlmod: Use root_module_direct_deps to avoid duplication
1 parent e89e219 commit d398306

File tree

3 files changed

+31
-64
lines changed

3 files changed

+31
-64
lines changed

build/deps/dep_pyodide.bzl

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,34 +3,40 @@ load("//:build/python_metadata.bzl", "BUNDLE_VERSION_INFO", "PYODIDE_VERSIONS",
33

44
def _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

1315
def _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

2833
VENDOR_R2 = "https://pub-25a5b2f2f1b84655b185a505c7a3ad23.r2.dev/"
2934

3035
def _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 = """
3541
filegroup(
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

4552
PYODIDE_CAPN_BIN = "https://pyodide-capnp-bin.edgeworker.net/"
4653

4754
def _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

5665
def 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

111124
def _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

114131
pyodide = module_extension(implementation = _impl)

build/deps/python.MODULE.bazel

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -20,55 +20,4 @@ pip.parse(
2020
use_repo(pip, "py_deps", "v8_python_deps")
2121

2222
pyodide = use_extension("//build/deps:dep_pyodide.bzl", "pyodide")
23-
24-
[
25-
use_repo(
26-
pyodide,
27-
repo.format(version = version),
28-
)
29-
for repo in [
30-
"beautifulsoup4_src_{version}",
31-
"fastapi_src_{version}",
32-
"pyodide-{version}",
33-
"python-workers-runtime-sdk_src_{version}",
34-
"shapely_src_{version}",
35-
]
36-
for version in [
37-
"0.26.0a2",
38-
"0.28.2",
39-
"development",
40-
]
41-
# Exclusions: some packages are absent in some versions
42-
if repo.format(version = version) not in [
43-
"pyodide-development",
44-
"shapely_src_0.26.0a2",
45-
]
46-
]
47-
48-
[
49-
use_repo(
50-
pyodide,
51-
repo.format(version = version),
52-
)
53-
for repo in [
54-
"all_pyodide_wheels_{version}",
55-
"pyodide-lock_{version}.json",
56-
]
57-
for version in [
58-
"20240829.4",
59-
"20250808",
60-
]
61-
]
62-
63-
use_repo(
64-
pyodide,
65-
"pyodide-snapshot-baseline-4569679fb.bin",
66-
"pyodide-snapshot-baseline-61eedf943.bin",
67-
"pyodide-snapshot-ew-py-package-snapshot_fastapi-v2.bin",
68-
"pyodide-snapshot-ew-py-package-snapshot_numpy-v2.bin",
69-
"pyodide-snapshot-package_snapshot_fastapi-a6ccb56fe.bin",
70-
"pyodide-snapshot-package_snapshot_numpy-60c9cb28e.bin",
71-
"pyodide-snapshot-snapshot_a6b652a95810783f5078b9a5dbd4a07c30718acb4ff724e82c25db7353dd7f2d.bin",
72-
"pyodide_0.26.0a2_2024-03-01_75.capnp.bin",
73-
"pyodide_0.28.2_2025-01-16_6.capnp.bin",
74-
)
23+
use_repo(pyodide, "beautifulsoup4_src_0.26.0a2", "beautifulsoup4_src_0.28.2", "beautifulsoup4_src_development", "fastapi_src_0.26.0a2", "fastapi_src_0.28.2", "fastapi_src_development", "pyodide-0.26.0a2", "pyodide-0.28.2", "pyodide-snapshot-baseline-4569679fb.bin", "pyodide-snapshot-baseline-61eedf943.bin", "pyodide-snapshot-ew-py-package-snapshot_fastapi-v2.bin", "pyodide-snapshot-ew-py-package-snapshot_numpy-v2.bin", "pyodide-snapshot-package_snapshot_fastapi-a6ccb56fe.bin", "pyodide-snapshot-package_snapshot_numpy-60c9cb28e.bin", "pyodide-snapshot-snapshot_a6b652a95810783f5078b9a5dbd4a07c30718acb4ff724e82c25db7353dd7f2d.bin", "pyodide_0.26.0a2_2024-03-01_75.capnp.bin", "pyodide_0.28.2_2025-01-16_6.capnp.bin", "pyodide_dev.capnp.bin", "python-workers-runtime-sdk_src_0.26.0a2", "python-workers-runtime-sdk_src_0.28.2", "python-workers-runtime-sdk_src_development", "scipy_src_0.26.0a2", "shapely_src_0.28.2", "shapely_src_development")

build/python_metadata.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# After updating this file, make sure to run "bazel mod tidy"
12
load("@aspect_bazel_lib//lib:base64.bzl", "base64")
23
load("@aspect_bazel_lib//lib:strings.bzl", "chr")
34
load("//:build/python/packages_20240829_4.bzl", "PACKAGES_20240829_4")

0 commit comments

Comments
 (0)