【问题标题】:Pass named arguments in args field in py_binary在 py_binary 的 args 字段中传递命名参数
【发布时间】:2023-03-27 09:19:01
【问题描述】:

假设我有一个 py_binary :

py_binary(
    name = "mock",
    srcs = ["mock.py"],
    args = [
        "$(location @mockref//mockpackage)",
    ],
    data = [
        "@mockref//:mockfile",
    ],
    deps = [
        requirement("somerequirement"),
    ],
)

如果 mock.py 使用参数解析器接受名为 --somearg 的命令行参数,如何在不传递 bazel build 命令中的参数的情况下通过 bazel 文件中的 args 字段传递此参数?

【问题讨论】:

    标签: python-3.x bazel starlark


    【解决方案1】:

    args 属性仅与bazel run 命令一起使用:

    https://docs.bazel.build/versions/main/be/common-definitions.html#binary.args

    要将二进制文件作为构建的一部分运行,通常您会使用genrule 或自定义 Starlark 规则。比如:

    genrule(
      name = "gen_mock_output",
      outs = ["mock_output"],
      exec_tools = [":mock"],
      cmd = "$(location :mock) --output $@",
    )
    

    然后您将构建 genrule 的输出:
    bazel build mock_output

    或者使用 genrule 的输出作为另一个目标的输入

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      相关资源
      最近更新 更多