gpt4 book ai didi

c++ - [bazel] restricted_to 属性的使用

转载 作者:行者123 更新时间:2023-11-30 02:24:24 26 4
gpt4 key购买 nike

我正在尝试使用 bazel restricted_to 属性进行测试。

我希望测试只在特定的 cpu = build 上运行。

为了让这更复杂一些,cpu 类型在我们的

中定义
/tools/cpp/CROSSTOOL file (cpu=armhf-debian).

我没能猜到 restricted_to 参数的语法(我的第一个猜测是//cpu:armhf-debian,它只是在寻找一个cpu包)

有什么建议吗?

最佳答案

关于 restricted_to 及其适用的其他规则(environment 和 environment_group)的文档并不多。这主要是因为它们所针对的用例非常特定于 Google 的存储库设置,我们正在用更灵活的系统替换它们。

要使用restricted_to,你需要定义几个环境规则,一个environment_group来包含它们,然后指定测试被限制在哪个环境,最后总是使用“--target_environment”标志来指定当前环境团体。这看起来像这样:

environment(name = "x86")
environment(name = "ppc")
environment_group(
name = "cpus",
defaults = [":x86"],
environments = [
":x86",
":ppc",
])

cc_test(
name = "test",
other config
restricted_to = [":ppc"],)

然后您可以这样运行测试:

bazel test --target_environment=//:ppc //:test

获取环境检查。

这不是很有用,因为运行测试的人还必须记住正确设置“--target_environment”。

使用当前支持的代码禁用测试的更好方法是使用 config_setting 和 select,如下所示:

config_setting(
name = "k8",
values = {"cpu": "k8"})
config_setting(
name = "ppc",
values = {"cpu":, "ppc")

cc_test(
name = "test",
other config
srcs = [other sources] +
select({
"//:x86": ["x86_test_src.cpp"],
"//:ppc": ["ppc_test_src.cpp"],
"//conditions:default": ["default_test_src.cpp"],
})

config_setting 将采用基于当前“--cpu”标志的值。通过更改选择中包含的文件,您可以控制每个 cpu 设置的测试中包含哪些文件。

显然,这些不必位于同一个包中,通常的 Bazel 可见性规则适用。参见 Bazel 的 src/BUILD以 config_setting 为例,src/test/cpp/BUILD有关在选择中使用它的示例。

我们正在努力开发平台,这是描述和查询 Bazel 执行环境的更好方式,我们将确保在准备好供人们测试时发布文档和博客文章。

关于c++ - [bazel] restricted_to 属性的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45381217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com