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