Skip to content

Commit

Permalink
Allow single constraint config setting to be used as modifier
Browse files Browse the repository at this point in the history
Summary: For buck1 compatibility reasons, single constraint setting config settings are everywhere in the repo. For example, `ovr_config//os:linux` is a config setting for constraint `ovr_config//os/constraints:linux`. Allow single-constraint config settings to be used as modifiers as wel so we can specify `ovr_config//os:linux` as a modifier

Reviewed By: stepancheg

Differential Revision: D51292953

fbshipit-source-id: 6da6b4993c6fa2d3d700f1f5126f25d9d5c94b58
  • Loading branch information
Scott Cao authored and facebook-github-bot committed Nov 16, 2023
1 parent c4ae802 commit af486d4
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion cfg/experimental/common.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,15 @@ def get_modifier_info(
selector = modifier_selector_info,
)
if isinstance(modifier, str):
constraint_value_info = refs[modifier][ConstraintValueInfo]
modifier_info = refs[modifier]
if ConstraintValueInfo in modifier_info:
# In practice, every target with a ConstraintValueInfo also has a ConfigurationInfo,
# so this is just a small optimization for targets with ConstraintValueInfo.
constraint_value_info = modifier_info[ConstraintValueInfo]
return constraint_value_info.setting.label, constraint_value_info
cfg_info = modifier_info[ConfigurationInfo]
asserts.true(len(cfg_info.constraints) == 1, "Modifier should only be a single constraint value. Found multiple in `{}`".format(modifier))
constraint_value_info = list(cfg_info.constraints.values())[0]
return constraint_value_info.setting.label, constraint_value_info
fail("Internal error: Found unexpected modifier `{}` type `{}`".format(modifier, type(modifier)))

Expand Down

0 comments on commit af486d4

Please sign in to comment.