Skip to content

Commit e53168e

Browse files
Googlerluispadron
authored andcommitted
Remove //command_line_option:cpu usage in transition_support
NOTE: manual updates to use apple_support flags Cherry-pick: 0d7c9fb
1 parent 8f68de9 commit e53168e

2 files changed

Lines changed: 65 additions & 68 deletions

File tree

apple/internal/transition_support.bzl

Lines changed: 41 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,22 @@ _IOS_ARCH_TO_64_BIT_WATCHOS = {
7272
"arm64": "arm64_32",
7373
}
7474

75+
_IOS_PLATFORM_TO_ENV_ARCH = {
76+
Label("@build_bazel_apple_support//platforms:ios_arm64"): "arm64",
77+
Label("@build_bazel_apple_support//platforms:ios_arm64e"): "arm64e",
78+
Label("@build_bazel_apple_support//platforms:ios_sim_arm64"): "sim_arm64",
79+
Label("@build_bazel_apple_support//platforms:ios_x86_64"): "x86_64",
80+
}
81+
82+
_WATCHOS_PLATFORM_TO_ENV_ARCH = {
83+
Label("@build_bazel_apple_support//platforms:watchos_arm64_32"): "arm64_32",
84+
Label("@build_bazel_apple_support//platforms:watchos_arm64"): "arm64",
85+
Label("@build_bazel_apple_support//platforms:watchos_armv7k"): "armv7k",
86+
Label("@build_bazel_apple_support//platforms:watchos_device_arm64"): "device_arm64",
87+
Label("@build_bazel_apple_support//platforms:watchos_device_arm64e"): "device_arm64e",
88+
Label("@build_bazel_apple_support//platforms:watchos_x86_64"): "x86_64",
89+
}
90+
7591
# Set the default architecture for all platforms as 64-bit Intel.
7692
# TODO(b/246375874): Consider changing the default when a build is invoked from an Apple Silicon
7793
# Mac. The --host_cpu command line option is not guaranteed to reflect the actual host device that
@@ -95,26 +111,11 @@ def _platform_specific_cpu_setting_name(platform_type):
95111
fail("ERROR: Unknown platform type: {}".format(platform_type))
96112
return flag
97113

98-
def _environment_arch_from_cpu(*, cpu_value, platform_prefix):
99-
"""Returns a specific platform's environment arch if found from the `--cpu` command line option.
100-
101-
Args:
102-
cpu_value: String found from an incoming `--cpu` value.
103-
platform_prefix: The platform prefix to search for within the incoming `--cpu` string.
104-
105-
Returns:
106-
The value following the platform_prefix if it was found in the incoming `--cpu` value, which
107-
is expected to be a valid environment arch, or `None`.
108-
"""
109-
if cpu_value.startswith(platform_prefix):
110-
return cpu_value[len(platform_prefix):]
111-
return None
112-
113-
def _watchos_environment_archs_from_ios(*, cpu_value, minimum_os_version, settings):
114+
def _watchos_environment_archs_from_ios(*, platform, minimum_os_version, settings):
114115
"""Returns a set of watchOS environment archs based on incoming iOS archs.
115116
116117
Args:
117-
cpu_value: String found from an incoming `--cpu` value.
118+
platform: Value of the `--platforms` flag.
118119
minimum_os_version: A string coming directly from a rule's `minimum_os_version` attribute.
119120
settings: A dictionary whose set of keys is defined by the inputs parameter, typically from
120121
the settings argument found on the implementation function of the current Starlark
@@ -127,10 +128,7 @@ def _watchos_environment_archs_from_ios(*, cpu_value, minimum_os_version, settin
127128
environment_archs = []
128129
ios_archs = settings[_platform_specific_cpu_setting_name("ios")]
129130
if not ios_archs:
130-
ios_arch = _environment_arch_from_cpu(
131-
cpu_value = cpu_value,
132-
platform_prefix = "ios_",
133-
)
131+
ios_arch = _IOS_PLATFORM_TO_ENV_ARCH.get(platform, None)
134132
if ios_arch:
135133
ios_archs = [ios_arch]
136134
if ios_archs:
@@ -162,27 +160,22 @@ def _environment_archs(platform_type, minimum_os_version, settings):
162160
"""
163161
environment_archs = settings[_platform_specific_cpu_setting_name(platform_type)]
164162
if not environment_archs:
165-
cpu_value = settings["//command_line_option:cpu"]
163+
platform = settings["//command_line_option:platforms"][0]
166164
if platform_type == "ios":
167-
# Legacy handling to interpret the --cpu as an iOS environment arch.
168-
ios_arch = _environment_arch_from_cpu(
169-
cpu_value = cpu_value,
170-
platform_prefix = "ios_",
171-
)
165+
# Get the iOS environment arch based on the --platforms flag.
166+
ios_arch = _IOS_PLATFORM_TO_ENV_ARCH.get(platform, None)
172167
if ios_arch:
173168
environment_archs = [ios_arch]
174169
if platform_type == "watchos":
175-
# Interpret the --cpu as a watchOS environment arch; often will be set by a transition.
176-
watchos_arch = _environment_arch_from_cpu(
177-
cpu_value = cpu_value,
178-
platform_prefix = "watchos_",
179-
)
170+
# Use --platforms to determine the watchOS environment arch; often will be set by
171+
# a transition.
172+
watchos_arch = _WATCHOS_PLATFORM_TO_ENV_ARCH.get(platform, None)
180173
if watchos_arch:
181174
environment_archs = [watchos_arch]
182175
else:
183176
# If not found, generate watchOS archs via incoming iOS environment arch(s).
184177
environment_archs = _watchos_environment_archs_from_ios(
185-
cpu_value = cpu_value,
178+
platform = platform,
186179
minimum_os_version = minimum_os_version,
187180
settings = settings,
188181
)
@@ -219,55 +212,40 @@ def _cpu_string(*, environment_arch, platform_type, settings = {}):
219212
ios_cpus = settings["//command_line_option:ios_multi_cpus"]
220213
if ios_cpus:
221214
return "ios_{}".format(ios_cpus[0])
222-
cpu_value = settings["//command_line_option:cpu"]
223-
if cpu_value.startswith("ios_"):
224-
return cpu_value
225-
if cpu_value == "darwin_arm64":
226-
return "ios_sim_arm64"
215+
env_arch = _IOS_PLATFORM_TO_ENV_ARCH.get(
216+
settings["//command_line_option:platforms"][0],
217+
None,
218+
)
219+
if env_arch:
220+
return "ios_{}".format(env_arch)
227221
return "ios_x86_64"
228-
if platform_type == "visionos":
229-
if environment_arch:
230-
return "visionos_{}".format(environment_arch)
231-
visionos_cpus = settings["//command_line_option:visionos_cpus"]
232-
if visionos_cpus:
233-
return "visionos_{}".format(visionos_cpus[0])
234-
cpu_value = settings["//command_line_option:cpu"]
235-
if cpu_value.startswith("visionos_"):
236-
return cpu_value
237-
return "visionos_sim_arm64"
238222
if platform_type == "macos":
239223
if environment_arch:
240224
return "darwin_{}".format(environment_arch)
241225
macos_cpus = settings["//command_line_option:macos_cpus"]
242226
if macos_cpus:
243227
return "darwin_{}".format(macos_cpus[0])
244-
cpu_value = settings["//command_line_option:cpu"]
245-
if cpu_value.startswith("darwin_"):
246-
return cpu_value
247228
return "darwin_x86_64"
248229
if platform_type == "tvos":
249230
if environment_arch:
250231
return "tvos_{}".format(environment_arch)
251232
tvos_cpus = settings["//command_line_option:tvos_cpus"]
252233
if tvos_cpus:
253234
return "tvos_{}".format(tvos_cpus[0])
254-
cpu_value = settings["//command_line_option:cpu"]
255-
if cpu_value.startswith("tvos_"):
256-
return cpu_value
257-
if cpu_value == "darwin_arm64":
258-
return "tvos_sim_arm64"
259235
return "tvos_x86_64"
236+
if platform_type == "visionos":
237+
if environment_arch:
238+
return "visionos_{}".format(environment_arch)
239+
visionos_cpus = settings["//command_line_option:visionos_cpus"]
240+
if visionos_cpus:
241+
return "visionos_{}".format(visionos_cpus[0])
242+
return "visionos_sim_arm64"
260243
if platform_type == "watchos":
261244
if environment_arch:
262245
return "watchos_{}".format(environment_arch)
263246
watchos_cpus = settings["//command_line_option:watchos_cpus"]
264247
if watchos_cpus:
265248
return "watchos_{}".format(watchos_cpus[0])
266-
cpu_value = settings["//command_line_option:cpu"]
267-
if cpu_value.startswith("watchos_"):
268-
return cpu_value
269-
if cpu_value == "darwin_arm64":
270-
return "watchos_arm64"
271249
return "watchos_x86_64"
272250

273251
fail("ERROR: Unknown platform type: {}".format(platform_type))
@@ -492,7 +470,7 @@ _apple_rule_common_transition_inputs = [
492470
build_settings_labels.use_tree_artifacts_outputs,
493471
] + _CPU_TO_DEFAULT_PLATFORM_FLAG.values()
494472
_apple_rule_base_transition_inputs = _apple_rule_common_transition_inputs + [
495-
"//command_line_option:cpu",
473+
"//command_line_option:platforms",
496474
"//command_line_option:ios_multi_cpus",
497475
"//command_line_option:macos_cpus",
498476
"//command_line_option:tvos_cpus",
@@ -502,9 +480,6 @@ _apple_platforms_rule_base_transition_inputs = _apple_rule_base_transition_input
502480
"//command_line_option:apple_platforms",
503481
"//command_line_option:incompatible_enable_apple_toolchain_resolution",
504482
]
505-
_apple_platform_transition_inputs = _apple_platforms_rule_base_transition_inputs + [
506-
"//command_line_option:platforms",
507-
]
508483
_apple_rule_base_transition_outputs = [
509484
build_settings_labels.building_apple_bundle,
510485
build_settings_labels.use_tree_artifacts_outputs,
@@ -748,7 +723,7 @@ def _apple_platform_split_transition_impl(settings, attr):
748723

749724
_apple_platform_split_transition = transition(
750725
implementation = _apple_platform_split_transition_impl,
751-
inputs = _apple_platform_transition_inputs,
726+
inputs = _apple_platforms_rule_base_transition_inputs,
752727
outputs = _apple_rule_base_transition_outputs,
753728
)
754729

test/starlark_tests/rules/apple_verification_test.bzl

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,27 @@ _supports_visionos = hasattr(apple_common.platform_type, "visionos")
4545
_CUSTOM_BUILD_SETTINGS = build_settings_labels.all_labels + [
4646
]
4747

48+
_CPU_TO_PLATFORM = {
49+
"darwin_x86_64": "@build_bazel_apple_support//platforms:darwin_x86_64",
50+
"darwin_arm64": "@build_bazel_apple_support//platforms:darwin_arm64",
51+
"darwin_arm64e": "@build_bazel_apple_support//platforms:darwin_arm64e",
52+
"ios_x86_64": "@build_bazel_apple_support//platforms:ios_x86_64",
53+
"ios_arm64": "@build_bazel_apple_support//platforms:ios_arm64",
54+
"ios_sim_arm64": "@build_bazel_apple_support//platforms:ios_sim_arm64",
55+
"ios_arm64e": "@build_bazel_apple_support//platforms:ios_arm64e",
56+
"tvos_sim_arm64": "@build_bazel_apple_support//platforms:tvos_sim_arm64",
57+
"tvos_arm64": "@build_bazel_apple_support//platforms:tvos_arm64",
58+
"tvos_x86_64": "@build_bazel_apple_support//platforms:tvos_x86_64",
59+
"visionos_arm64": "@build_bazel_apple_support//platforms:visionos_arm64",
60+
"visionos_sim_arm64": "@build_bazel_apple_support//platforms:visionos_sim_arm64",
61+
"watchos_armv7k": "@build_bazel_apple_support//platforms:watchos_armv7k",
62+
"watchos_arm64": "@build_bazel_apple_support//platforms:watchos_arm64",
63+
"watchos_device_arm64": "@build_bazel_apple_support//platforms:watchos_device_arm64",
64+
"watchos_device_arm64e": "@build_bazel_apple_support//platforms:watchos_device_arm64e",
65+
"watchos_arm64_32": "@build_bazel_apple_support//platforms:watchos_arm64_32",
66+
"watchos_x86_64": "@build_bazel_apple_support//platforms:watchos_x86_64",
67+
}
68+
4869
def _apple_verification_transition_impl(settings, attr):
4970
"""Implementation of the apple_verification_transition transition."""
5071

@@ -58,9 +79,10 @@ def _apple_verification_transition_impl(settings, attr):
5879
Internal Error: A verification test should only specify `apple_platforms` or `cpus`, but not both.
5980
""")
6081

82+
apple_cpu = getattr(attr, "apple_cpu", "darwin_x86_64")
6183
output_dictionary = {
6284
"//command_line_option:apple_platforms": [],
63-
"//command_line_option:cpu": getattr(attr, "apple_cpu", "darwin_x86_64"),
85+
"//command_line_option:platforms": _CPU_TO_PLATFORM[apple_cpu if apple_cpu else "darwin_x86_64"],
6486
"//command_line_option:macos_cpus": "x86_64",
6587
"//command_line_option:compilation_mode": attr.compilation_mode,
6688
"//command_line_option:objc_enable_binary_stripping": getattr(attr, "objc_enable_binary_stripping") if hasattr(attr, "objc_enable_binary_stripping") else False,
@@ -134,7 +156,7 @@ apple_verification_transition = transition(
134156
"//command_line_option:features",
135157
] + _CUSTOM_BUILD_SETTINGS,
136158
outputs = [
137-
"//command_line_option:cpu",
159+
"//command_line_option:platforms",
138160
"//command_line_option:ios_multi_cpus",
139161
"//command_line_option:macos_cpus",
140162
"//command_line_option:tvos_cpus",

0 commit comments

Comments
 (0)