Skip to content

Commit e34ac8f

Browse files
committed
fix incorrect transition outputs computation
1 parent e11caf3 commit e34ac8f

File tree

4 files changed

+16
-10
lines changed

4 files changed

+16
-10
lines changed

python/private/builders.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ def _TransitionBuilder(implementation = None, inputs = None, outputs = None, **k
217217
implementation = _Optional(implementation),
218218
inputs = _SetBuilder(inputs),
219219
outputs = _SetBuilder(outputs),
220-
kwargs = kwargs,
220+
extra_kwargs = kwargs,
221221
build = lambda *a, **k: _TransitionBuilder_build(self, *a, **k),
222222
)
223223
return self
@@ -227,7 +227,7 @@ def _TransitionBuilder_build(self):
227227
implementation = self.implementation.get(),
228228
inputs = self.inputs.build(),
229229
outputs = self.outputs.build(),
230-
**self.kwargs
230+
**self.extra_kwargs
231231
)
232232

233233
def _SetBuilder(initial = None):

python/private/py_executable.bzl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,12 +1775,8 @@ def create_executable_rule_builder(implementation, **kwargs):
17751775
] + _CC_TOOLCHAINS,
17761776
cfg = builders.TransitionBuilder(
17771777
implementation = _transition_executable_impl,
1778-
inputs = [
1779-
_PYTHON_VERSION_FLAG,
1780-
],
1781-
outputs = [
1782-
_PYTHON_VERSION_FLAG,
1783-
],
1778+
inputs = [_PYTHON_VERSION_FLAG],
1779+
outputs = [_PYTHON_VERSION_FLAG],
17841780
),
17851781
**kwargs
17861782
)

tests/support/sh_py_run_test.bzl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@ load("//python/private:toolchain_types.bzl", "TARGET_TOOLCHAIN_TYPE") # buildif
2626
load("//tests/support:support.bzl", "VISIBLE_FOR_TESTING")
2727

2828
def _perform_transition_impl(input_settings, attr, base_impl):
29-
settings = base_impl(input_settings, attr) | dict(input_settings)
29+
settings = {k: input_settings[k] for k in _RECONFIG_INHERITED_OUTPUTS if k in input_settings}
30+
settings.update(base_impl(input_settings, attr))
31+
3032
settings[VISIBLE_FOR_TESTING] = True
3133
settings["//command_line_option:build_python_zip"] = attr.build_python_zip
3234
if attr.bootstrap_impl:
@@ -46,6 +48,7 @@ _RECONFIG_OUTPUTS = _RECONFIG_INPUTS + [
4648
"//command_line_option:build_python_zip",
4749
VISIBLE_FOR_TESTING,
4850
]
51+
_RECONFIG_INHERITED_OUTPUTS = [v for v in _RECONFIG_OUTPUTS if v in _RECONFIG_INPUTS]
4952

5053
_RECONFIG_ATTRS = {
5154
"bootstrap_impl": attr.string(),

tests/toolchains/python_toolchain_test.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import pathlib
44
import sys
55
import unittest
6+
import pprint
67

78
from python.runfiles import runfiles
89

@@ -18,7 +19,13 @@ def test_expected_toolchain_matches(self):
1819
settings = json.loads(pathlib.Path(settings_path).read_text())
1920

2021
expected = "python_{}".format(expect_version.replace(".", "_"))
21-
self.assertIn(expected, settings["toolchain_label"], str(settings))
22+
msg = (
23+
"Expected toolchain not found\n" +
24+
f"Expected toolchain label to contain: {expected}\n" +
25+
"Actual build settings:\n" +
26+
pprint.pformat(settings)
27+
)
28+
self.assertIn(expected, settings["toolchain_label"], msg)
2229

2330
actual = "{v.major}.{v.minor}.{v.micro}".format(v=sys.version_info)
2431
self.assertEqual(actual, expect_version)

0 commit comments

Comments
 (0)