Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace uses of cfg = "host" with cfg = "exec" #15922

Merged
merged 1 commit into from
Jul 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions site/docs/creating-workers.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,12 +167,13 @@ level of the build, this might be the attribute definition:
"worker": attr.label(
default = Label("//work:worker"),
executable = True,
cfg = "host",
cfg = "exec",
)
```

`cfg = "host"` indicates that the worker should be built to run on your host
platform.
`cfg = "exec"` indicates that the worker should be built to run on your
execution platform rather than on the target platform (i.e., the worker is used
as tool during the build).

### Work action requirements

Expand Down
2 changes: 1 addition & 1 deletion site/docs/skylark/aspects.md
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ demonstrates how you could pass in a tool to an aspect:
'_protoc' : attr.label(
default = Label('//tools:protoc'),
executable = True,
cfg = "host"
cfg = "exec"
)
}
...
Expand Down
2 changes: 1 addition & 1 deletion src/embedded_tools.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ embedded_tools = rule(
"out": attr.output(mandatory = True),
"tool": attr.label(
executable = True,
cfg = "host",
cfg = "exec",
allow_files = True,
default = Label("//src:create_embedded_tools_sh"),
),
Expand Down
2 changes: 1 addition & 1 deletion src/main/res/winsdk_toolchain.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ windows_resource_compiler_toolchain = rule(
"rc_exe": attr.label(
allow_files = True,
executable = True,
cfg = "host",
cfg = "exec",
doc = "Label of the resource compiler (or a wrapper script)",
),
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ dependencies here.
"Xwatchconversion": attr.bool(default = False, doc = "Don't delete temporary lexers generated from combined grammars."),
"_tool": attr.label(
executable = True,
cfg = "host",
cfg = "exec",
),
},
)
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ A list of dependencies.
doc = "The location of the tool to use.",
allow_files = True,
default = Label("//foo/bar/baz:target"),
cfg = "host",
cfg = "exec",
executable = True,
),
"out": attr.output(
Expand Down
2 changes: 1 addition & 1 deletion src/test/py/bazel/bazel_windows_cpp_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -861,7 +861,7 @@ def testCcCompileWithTreeArtifactAsSource(self):
' attrs = {',
' "_tool": attr.label(',
' executable = True,',
' cfg = "host",',
' cfg = "exec",',
' allow_files = True,',
' default = Label("//:genccs"),',
' )',
Expand Down
2 changes: 1 addition & 1 deletion src/test/py/bazel/bazel_windows_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ def testRunPowershellInAction(self):
' "out": attr.output(mandatory = True),',
' "tool": attr.label(',
' executable = True,',
' cfg = "host",',
' cfg = "exec",',
' allow_files = True,',
' default = Label("//:write.bat"),',
' ),',
Expand Down
2 changes: 1 addition & 1 deletion src/test/py/bazel/native_test.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ exe_test = rule(
attrs = {
"src": attr.label(
allow_single_file = True,
cfg = "host",
cfg = "exec",
executable = True,
),
},
Expand Down
203 changes: 203 additions & 0 deletions src/test/shell/bazel/apple/apple_common.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
#!/bin/bash
#
# Copyright 2022 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Common Bash functions to test Apple rules in Bazel.
#

function make_starlark_apple_binary_rule_in() {
local dir="$1"; shift

# All of the attributes below, except for `stamp`, are required as part of the
# implied contract of `apple_common.link_multi_arch_binary` since it asks for
# attributes directly from the rule context. As these requirements are changed
# from implied attributes to function arguments, they can be removed.
cat >> "${dir}/starlark_apple_binary.bzl" <<EOF
def _starlark_apple_binary_impl(ctx):
link_result = apple_common.link_multi_arch_binary(
ctx = ctx,
stamp = ctx.attr.stamp,
)
processed_binary = ctx.actions.declare_file(
'{}_lipobin'.format(ctx.label.name)
)
lipo_inputs = [output.binary for output in link_result.outputs]
if len(lipo_inputs) > 1:
apple_env = {}
xcode_config = ctx.attr._xcode_config[apple_common.XcodeVersionConfig]
apple_env.update(apple_common.apple_host_system_env(xcode_config))
apple_env.update(
apple_common.target_apple_env(
xcode_config,
ctx.fragments.apple.single_arch_platform,
),
)
args = ctx.actions.args()
args.add('-create')
args.add_all(lipo_inputs)
args.add('-output', processed_binary)
ctx.actions.run(
arguments = [args],
env = apple_env,
executable = '/usr/bin/lipo',
execution_requirements = xcode_config.execution_info(),
inputs = lipo_inputs,
outputs = [processed_binary],
)
else:
ctx.actions.symlink(
target_file = lipo_inputs[0],
output = processed_binary,
)
return [
DefaultInfo(files = depset([processed_binary])),
OutputGroupInfo(**link_result.output_groups),
link_result.debug_outputs_provider,
]

starlark_apple_binary = rule(
attrs = {
"_child_configuration_dummy": attr.label(
cfg = apple_common.multi_arch_split,
default = Label("@bazel_tools//tools/cpp:current_cc_toolchain"),
),
"_xcode_config": attr.label(
default = configuration_field(
fragment = "apple",
name = "xcode_config_label",
),
),
"_xcrunwrapper": attr.label(
cfg = "exec",
default = Label("@bazel_tools//tools/objc:xcrunwrapper"),
executable = True,
),
"binary_type": attr.string(default = "executable"),
"bundle_loader": attr.label(),
"deps": attr.label_list(
cfg = apple_common.multi_arch_split,
),
"dylibs": attr.label_list(),
"linkopts": attr.string_list(),
"minimum_os_version": attr.string(),
"platform_type": attr.string(),
"stamp": attr.int(default = -1, values = [-1, 0, 1]),
},
fragments = ["apple", "objc", "cpp"],
implementation = _starlark_apple_binary_impl,
outputs = {
# Provided for compatibility with apple_binary tests only.
"lipobin": "%{name}_lipobin",
},
)
EOF
}

function make_starlark_apple_static_library_rule_in() {
local dir="$1"; shift

# All of the attributes below are required as part of the implied contract of
# `apple_common.link_multi_arch_static_library` since it asks for attributes
# directly from the rule context. As these requirements are changed from
# implied attributes to function arguments, they can be removed.
cat >> "${dir}/starlark_apple_static_library.bzl" <<EOF
def _starlark_apple_static_library_impl(ctx):
if not hasattr(apple_common.platform_type, ctx.attr.platform_type):
fail('Unsupported platform type \"{}\"'.format(ctx.attr.platform_type))
link_result = apple_common.link_multi_arch_static_library(ctx = ctx)
processed_library = ctx.actions.declare_file(
'{}_lipo.a'.format(ctx.label.name)
)
files_to_build = [processed_library]
runfiles = ctx.runfiles(
files = files_to_build,
collect_default = True,
collect_data = True,
)
lipo_inputs = [output.library for output in link_result.outputs]
if len(lipo_inputs) > 1:
apple_env = {}
xcode_config = ctx.attr._xcode_config[apple_common.XcodeVersionConfig]
apple_env.update(apple_common.apple_host_system_env(xcode_config))
apple_env.update(
apple_common.target_apple_env(
xcode_config,
ctx.fragments.apple.single_arch_platform,
),
)
args = ctx.actions.args()
args.add('-create')
args.add_all(lipo_inputs)
args.add('-output', processed_library)
ctx.actions.run(
arguments = [args],
env = apple_env,
executable = '/usr/bin/lipo',
execution_requirements = xcode_config.execution_info(),
inputs = lipo_inputs,
outputs = [processed_library],
)
else:
ctx.actions.symlink(
target_file = lipo_inputs[0],
output = processed_library,
)
providers = [
DefaultInfo(files = depset(files_to_build), runfiles = runfiles),
link_result.objc,
link_result.output_groups,
]
return providers

starlark_apple_static_library = rule(
_starlark_apple_static_library_impl,
attrs = {
'_child_configuration_dummy': attr.label(
cfg = apple_common.multi_arch_split,
default = Label("@bazel_tools//tools/cpp:current_cc_toolchain"),
),
'_xcode_config': attr.label(
default = configuration_field(
fragment = "apple",
name = "xcode_config_label",
),
),
'_xcrunwrapper': attr.label(
executable = True,
cfg = 'exec',
default = Label("@bazel_tools//tools/objc:xcrunwrapper"),
),
'additional_linker_inputs': attr.label_list(
allow_files = True,
),
'avoid_deps': attr.label_list(
cfg = apple_common.multi_arch_split,
default = [],
),
'deps': attr.label_list(
cfg = apple_common.multi_arch_split,
),
'linkopts': attr.string_list(),
'platform_type': attr.string(),
'minimum_os_version': attr.string(),
},
outputs = {
'lipo_archive': '%{name}_lipo.a',
},
cfg = apple_common.apple_crosstool_transition,
fragments = ['apple', 'objc', 'cpp',],
)
EOF
}
2 changes: 1 addition & 1 deletion src/test/shell/bazel/bazel_rules_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ out_rule = rule(_out_rule, attrs = {
"_hello_bin": attr.label(
default = ":hello_bin",
executable = True,
cfg = "host",
cfg = "exec",
),
})
EOF
Expand Down
4 changes: 2 additions & 2 deletions src/test/shell/bazel/cc_integration_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -700,11 +700,11 @@ def _tree_art_impl(ctx):
tree_art_rule = rule(implementation = _tree_art_impl,
attrs = {
"_makes_tree" : attr.label(allow_single_file = True,
cfg = "host",
cfg = "exec",
executable = True,
default = "//${package}:makes_tree_artifacts.sh"),
"_write" : attr.label(allow_single_file = True,
cfg = "host",
cfg = "exec",
executable = True,
default = "//${package}:write.sh")})

Expand Down
Loading