Skip to content

Commit 1abac11

Browse files
committed
harden a little bit
1 parent f5b1d08 commit 1abac11

File tree

4 files changed

+23
-10
lines changed

4 files changed

+23
-10
lines changed

python/private/bzlmod/pip.bzl

+9
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ def _create_whl_repos(module_ctx, pip_attr, whl_map, whl_overrides):
208208
)
209209

210210
major_minor = _major_minor_version(pip_attr.python_version)
211+
default_major_minor = _major_minor_version(DEFAULT_PYTHON_VERSION)
211212
whl_map[hub_name].setdefault(whl_name, []).append(
212213
whl_alias(
213214
repo = repo_name,
@@ -216,6 +217,14 @@ def _create_whl_repos(module_ctx, pip_attr, whl_map, whl_overrides):
216217
config_setting = Label("//python/config_settings:is_python_" + major_minor),
217218
),
218219
)
220+
if default_major_minor == major_minor:
221+
whl_map[hub_name][whl_name].append(
222+
whl_alias(
223+
repo = repo_name,
224+
version = major_minor,
225+
config_setting = "//conditions:default",
226+
),
227+
)
219228

220229
def _pip_impl(module_ctx):
221230
"""Implementation of a class tag that creates the pip hub and corresponding pip spoke whl repositories.

python/private/bzlmod/pip_repository.bzl

-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ def _pip_repository_impl(rctx):
3131
key: [whl_alias(**v) for v in json.decode(values)]
3232
for key, values in rctx.attr.whl_map.items()
3333
},
34-
default_version = rctx.attr.default_version,
3534
)
3635
for path, contents in aliases.items():
3736
rctx.file(path, contents)

python/private/render_pkg_aliases.bzl

+4-4
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def _render_whl_library_alias(
6868

6969
if default:
7070
# Attempt setting it but continue if already exists
71-
selects.setdefault("//conditions:default", default)
71+
selects.setdefault(_CONDITIONS_DEFAULT, default)
7272

7373
return render.alias(
7474
name = name,
@@ -88,13 +88,13 @@ def _render_common_aliases(*, name, aliases, default_version = None):
8888
if aliases:
8989
versions = sorted([a.version for a in aliases if a.version])
9090
has_default = len([a.config_setting for a in aliases if a.config_setting == _CONDITIONS_DEFAULT]) == 1
91-
default_version_aliases = [a for a in aliases if a.version == default_version]
91+
default_version_aliases = [a for a in aliases if a.version == default_version or a.config_setting == _CONDITIONS_DEFAULT]
9292
if not has_default and len(default_version_aliases) > 1:
9393
fail(
9494
(
9595
"BUG: expected to have a single alias for the default version, but got multiple: '{}'. " +
96-
"Add the 'whl_alias(config_setting = \"//conditions:default\", ...)' setting explicitly."
97-
).format(default_version_aliases),
96+
"Add the 'whl_alias(config_setting = {}, ...)' setting explicitly."
97+
).format(default_version_aliases, repr(_CONDITIONS_DEFAULT)),
9898
)
9999

100100
if has_default:

tests/pip_hub_repository/render_pkg_aliases/render_pkg_aliases_test.bzl

+10-5
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,8 @@ def _test_bzlmod_aliases_with_default(env):
164164
actual = render_pkg_aliases(
165165
aliases = {
166166
"bar-baz": [
167-
whl_alias(version = "3.2", repo = "pypi_32_bar_baz", config_setting = "//:my_config_setting"),
167+
whl_alias(version = "3.2", repo = "pypi_32_bar_baz", config_setting = "//:my_config_setting_32"),
168+
whl_alias(version = "3.1", repo = "pypi_31_bar_baz", config_setting = "//:my_config_setting_31"),
168169
whl_alias(version = "3.2", repo = "pypi_32_bar_baz", config_setting = "//conditions:default"),
169170
],
170171
},
@@ -183,7 +184,8 @@ alias(
183184
name = "pkg",
184185
actual = select(
185186
{
186-
"//:my_config_setting": "@pypi_32_bar_baz//:pkg",
187+
"//:my_config_setting_31": "@pypi_31_bar_baz//:pkg",
188+
"//:my_config_setting_32": "@pypi_32_bar_baz//:pkg",
187189
"//conditions:default": "@pypi_32_bar_baz//:pkg",
188190
},
189191
),
@@ -193,7 +195,8 @@ alias(
193195
name = "whl",
194196
actual = select(
195197
{
196-
"//:my_config_setting": "@pypi_32_bar_baz//:whl",
198+
"//:my_config_setting_31": "@pypi_31_bar_baz//:whl",
199+
"//:my_config_setting_32": "@pypi_32_bar_baz//:whl",
197200
"//conditions:default": "@pypi_32_bar_baz//:whl",
198201
},
199202
),
@@ -203,7 +206,8 @@ alias(
203206
name = "data",
204207
actual = select(
205208
{
206-
"//:my_config_setting": "@pypi_32_bar_baz//:data",
209+
"//:my_config_setting_31": "@pypi_31_bar_baz//:data",
210+
"//:my_config_setting_32": "@pypi_32_bar_baz//:data",
207211
"//conditions:default": "@pypi_32_bar_baz//:data",
208212
},
209213
),
@@ -213,7 +217,8 @@ alias(
213217
name = "dist_info",
214218
actual = select(
215219
{
216-
"//:my_config_setting": "@pypi_32_bar_baz//:dist_info",
220+
"//:my_config_setting_31": "@pypi_31_bar_baz//:dist_info",
221+
"//:my_config_setting_32": "@pypi_32_bar_baz//:dist_info",
217222
"//conditions:default": "@pypi_32_bar_baz//:dist_info",
218223
},
219224
),

0 commit comments

Comments
 (0)