@@ -6,6 +6,7 @@ load("@capnp-cpp//src/capnp:cc_capnp_library.bzl", "cc_capnp_library")
6
6
load ("//:build/capnp_embed.bzl" , "capnp_embed" )
7
7
load ("//:build/js_file.bzl" , "js_file" )
8
8
load ("//:build/pyodide_bucket.bzl" , "PYODIDE_PACKAGE_BUCKET_URL" )
9
+ load ("//:build/python_metadata.bzl" , "PYTHON_LOCKFILES" )
9
10
load ("//:build/wd_ts_bundle.bzl" , "wd_ts_bundle" )
10
11
11
12
copy_file (
@@ -35,7 +36,19 @@ capnp_embed(
35
36
copy_file (
36
37
name = "pyodide_extra_capnp_file" ,
37
38
src = "pyodide_extra.capnp" ,
39
+ out = "generated/pyodide_extra_tmpl.capnp" ,
40
+ )
41
+
42
+ expand_template (
43
+ name = "pyodide_extra_expand_template@rule" ,
38
44
out = "generated/pyodide_extra.capnp" ,
45
+ substitutions = {
46
+ "%PACKAGE_LOCKS" : "," .join ([
47
+ "(packageDate = \" " + package_date + "\" , lock = embed \" pyodide-lock_" + package_date + ".json\" )"
48
+ for package_date in PYTHON_LOCKFILES .keys ()
49
+ ]),
50
+ },
51
+ template = "generated/pyodide_extra_tmpl.capnp" ,
39
52
)
40
53
41
54
capnp_embed (
@@ -44,21 +57,17 @@ capnp_embed(
44
57
deps = ["pyodide_extra_capnp_file" ],
45
58
)
46
59
47
- capnp_embed (
48
- name = "pyodide_lock_file_embed" ,
49
- src = "generated/pyodide-lock.json" ,
50
- deps = ["pyodide-lock.js@rule" ],
51
- )
52
-
53
60
cc_capnp_library (
54
61
name = "pyodide_extra_capnp" ,
55
62
srcs = ["generated/pyodide_extra.capnp" ],
56
63
visibility = ["//visibility:public" ],
57
64
deps = [
58
65
":pyodide_extra_file_embed" ,
59
- ":pyodide_lock_file_embed" ,
60
66
":pyodide_packages_archive_embed" ,
61
67
":python_entrypoint_file_embed" ,
68
+ ] + [
69
+ ":pyodide_lock_" + package_date + "_file_embed"
70
+ for package_date in PYTHON_LOCKFILES .keys ()
62
71
],
63
72
)
64
73
@@ -74,11 +83,23 @@ copy_file(
74
83
out = "generated/python_stdlib.zip" ,
75
84
)
76
85
77
- copy_file (
78
- name = "pyodide-lock.js@rule" ,
79
- src = "@pyodide-lock.json//file" ,
80
- out = "generated/pyodide-lock.json" ,
81
- )
86
+ [
87
+ copy_file (
88
+ name = "pyodide-lock_" + package_date + ".json@copy_file_rule" ,
89
+ src = "@pyodide-lock_" + package_date + ".json//file" ,
90
+ out = "generated/pyodide-lock_" + package_date + ".json" ,
91
+ )
92
+ for package_date , package_lock_sha in PYTHON_LOCKFILES .items ()
93
+ ]
94
+
95
+ [
96
+ capnp_embed (
97
+ name = "pyodide_lock_" + package_date + "_file_embed" ,
98
+ src = "generated/pyodide-lock_" + package_date + ".json" ,
99
+ deps = ["pyodide-lock_" + package_date + ".json@copy_file_rule" ],
100
+ )
101
+ for package_date , package_lock_sha in PYTHON_LOCKFILES .items ()
102
+ ]
82
103
83
104
# pyodide.asm.js patches
84
105
# TODO: all of these should be fixed by linking our own Pyodide or by upstreaming.
@@ -235,15 +256,13 @@ wd_ts_bundle(
235
256
import_name = "pyodide" ,
236
257
internal_data_modules = INTERNAL_DATA_MODULES ,
237
258
internal_json_modules = [
238
- "generated/pyodide-lock.json" ,
239
259
"generated/pyodide-bucket.json" ,
240
260
],
241
261
internal_modules = INTERNAL_MODULES ,
242
262
js_deps = [
243
263
"generated/emscriptenSetup" ,
244
264
"pyodide.asm.wasm@rule" ,
245
265
"python_stdlib.zip@rule" ,
246
- "pyodide-lock.js@rule" ,
247
266
"pyodide-bucket.json@rule" ,
248
267
],
249
268
lint = False ,
@@ -279,7 +298,6 @@ genrule(
279
298
":pyodide-internal_generated_emscriptenSetup.js" ,
280
299
":pyodide-internal_generated_pyodide.asm.wasm" ,
281
300
":pyodide-internal_generated_python_stdlib.zip" ,
282
- ":pyodide-internal_generated_pyodide-lock.json" ,
283
301
":pyodide-internal_generated_pyodide-bucket.json" ,
284
302
],
285
303
outs = ["pyodide.capnp.bin" ],
0 commit comments