【问题标题】:During 'bazel build', when is `target.runfiles` directory properly set up?在“bazel build”期间,何时正确设置了“target.runfiles”目录?
【发布时间】:2018-01-19 22:30:06
【问题描述】:

对于 cc_binary(或 py_binary、sh_binary),bazel 何时创建其运行文件目录并正确设置所有符号链接?

  • 它是在 cc_binary 构建之后,并且在任何将此 cc_binary 作为输入的规则之前创建的,或者
  • 它是在所有目标的整个构建过程完成后创建的吗?

我正在尝试编写自定义规则以将 cc_binary 的 runfiles 目录中的内容打包到 tarball 中。此自定义规则将 cc_binary 及其运行文件中的所有目标作为输入。如果在构建 cc_binary 之后正确设置了 runfiles 目录,那么我只需要直接打包这个目录。如果没有,我可能需要在我的自定义规则中自己设置一个 tmp runfiles 目录。

另外,这种行为是否保证在未来的版本中保留?

非常感谢!

【问题讨论】:

    标签: bazel


    【解决方案1】:

    Bazel 不保证任何订购;它只保证在构建结束时,二进制文件和运行文件树都应该在那里。

    如果您希望在构建完这两个操作后执行操作,则需要同时依赖二进制文件及其runfiles manifest。但是,这并不能保证运行文件树会在打包操作规则所在的沙箱中。

    认为可能会从 ctx.actions.run(input_manifests=)ctx.resolve_command 制作一些东西来做到这一点,尽管目前它非常神秘。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 2022-07-05
      相关资源
      最近更新 更多