在 'bazel build' 期间,`target.runfiles` 目录何时正确设置?

During 'bazel build', when is `target.runfiles` directory properly set up?

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

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

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

非常感谢!

Bazel 不保证任何顺序;它所保证的是,到构建结束时,二进制文件和运行文件树都应该在那里。

如果你想在这两个都被构建之后执行一个动作,你需要同时依赖二进制文件和它的 runfiles manifest。但是,这并不能保证运行文件树将位于打包操作规则所在的沙箱中。

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