首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用[bazel] restricted_to属性

使用[bazel] restricted_to属性
EN

Stack Overflow用户
提问于 2017-07-28 19:39:53
回答 1查看 1.1K关注 0票数 1

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

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

为了使这个问题更加复杂,cpu类型在我们的

代码语言:javascript
复制
/tools/cpp/CROSSTOOL file (cpu=armhf-debian).

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

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-31 19:09:15

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

要使用restricted_to,您需要定义几条环境规则,以及一个包含它们的environment_group,然后指定测试限制在哪个环境中,最后始终使用“-塔吉特_环境”标志来指定当前环境组。看起来是这样的:

代码语言:javascript
复制
environment(name = "x86")
environment(name = "ppc")
environment_group(
  name = "cpus",
  defaults = [":x86"],
  environments = [
    ":x86",
    ":ppc",
  ])

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

然后,您可以按如下方式运行测试:

代码语言:javascript
复制
bazel test --target_environment=//:ppc //:test

去做环境检查。

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

使用当前支持的代码禁用测试的更好方法是使用config_setting并进行选择,如下所示:

代码语言:javascript
复制
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“标志获得一个值。通过更改select中包含的文件,您可以控制每个cpu设置在测试中包含哪些文件。

显然,这些不一定是在同一个包中,而且通常的Bazel可见性规则也适用。有关config_setting的示例,请参阅Bazel的config_setting,在select中使用Bazel的示例为src/test/cpp/BUILD

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45381217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档