15
15
"Python toolchain module extensions for use with bzlmod"
16
16
17
17
load ("@bazel_features//:features.bzl" , "bazel_features" )
18
- load ("//python:versions.bzl" , "PLATFORMS" , "TOOL_VERSIONS" )
18
+ load ("//python:versions.bzl" , "DEFAULT_RELEASE_BASE_URL" , " PLATFORMS" , "TOOL_VERSIONS" )
19
19
load (":python_repositories.bzl" , "python_register_toolchains" )
20
20
load (":pythons_hub.bzl" , "hub_repo" )
21
21
load (":repo_utils.bzl" , "repo_utils" )
@@ -143,11 +143,12 @@ def _python_impl(module_ctx):
143
143
toolchain_name ,
144
144
toolchain_attr ,
145
145
module = mod ,
146
+ # Extra kwargs to the underlying python_register_toolchains methods
147
+ base_url = python_tools .base_url ,
146
148
ignore_root_user_error = ignore_root_user_error ,
149
+ tool_versions = python_tools .available_versions ,
147
150
# TODO @aignas 2024-08-08: allow to modify these values via the bzlmod extension
148
151
# distutils_content = None,
149
- # register_toolchains = True,
150
- tool_versions = python_tools .available_versions ,
151
152
)
152
153
global_toolchain_versions [toolchain_version ] = toolchain_info
153
154
if debug_info :
@@ -260,6 +261,7 @@ def _process_tag_classes(mod):
260
261
arg_structs = []
261
262
seen_versions = {}
262
263
available_versions = TOOL_VERSIONS
264
+ base_url = DEFAULT_RELEASE_BASE_URL
263
265
264
266
for tag in mod .tags .toolchain :
265
267
arg_structs .append (_create_toolchain_attrs_struct (tag = tag , toolchain_tag_count = len (mod .tags .toolchain )))
@@ -284,10 +286,12 @@ def _process_tag_classes(mod):
284
286
}
285
287
286
288
for tag in mod .tags .override :
289
+ base_url = tag .base_url
287
290
available_versions = {
288
291
v : available_versions [v ]
289
292
for v in tag .available_python_versions
290
293
}
294
+ break
291
295
292
296
register_all = False
293
297
for tag in mod .tags .rules_python_private_testing :
@@ -303,8 +307,9 @@ def _process_tag_classes(mod):
303
307
])
304
308
305
309
return struct (
306
- registrations = arg_structs ,
307
310
available_versions = available_versions ,
311
+ base_url = base_url ,
312
+ registrations = arg_structs ,
308
313
)
309
314
310
315
def _create_toolchain_attrs_struct (* , tag = None , python_version = None , toolchain_tag_count = None ):
@@ -407,6 +412,11 @@ _override = tag_class(
407
412
mandatory = True ,
408
413
doc = "The list of available python tool versions to use. Must be in `X.Y.Z` format." ,
409
414
),
415
+ "base_url" : attr .string_list (
416
+ mandatory = False ,
417
+ doc = "The base URL to be used when downloading toolchains." ,
418
+ default = DEFAULT_RELEASE_BASE_URL ,
419
+ ),
410
420
},
411
421
)
412
422
0 commit comments