【发布时间】:2018-11-25 23:19:01
【问题描述】:
我设置了 bazel 来构建许多 CLI 工具来执行各种数据库维护任务。每一个都是一个py_binary 或cc_binary 目标,从命令行调用并带有某个数据文件的路径:它处理该文件并将结果存储在数据库中。
现在,我需要创建一个依赖包,其中包含调用这些 CLI 工具来执行特定于应用程序的数据库操作的数据文件和 shell 脚本。
但是,似乎没有办法从仅包含 sh_binary 目标和数据文件的新包中依赖现有的 py_binary 或 cc_binary 目标。尝试这样做会导致如下错误:
ERROR: /workspace/shbin/BUILD.bazel:5:12: in deps attribute of sh_binary rule //shbin:run: py_binary rule '//pybin:counter' is misplaced here (expected sh_library)
有没有办法使用 sh_binary 从 shell 脚本调用/依赖现有的 bazel 二进制目标?
我在这里实现了一个完整的例子: https://github.com/psigen/bazel-mixed-binaries
注意事项:
我不能使用py_library 和cc_library 代替py_binary 和cc_binary。这是因为 (a) 我需要混合使用两种语言来处理我的数据文件,并且 (b) 这些工具来自已经设计好的上游存储库作为 CLI 工具。
我也无法将所有数据文件放入 CLI 工具包中——有多个特定于应用程序的包,它们不能混合使用。
【问题讨论】:
标签: bazel