我已经设置了bazel来构建一些CLI工具,执行各种数据库维护任务。每个工具都是一个py_binary
或cc_binary
目标,通过命令行调用并传入某个数据文件的路径:它会处理该文件并将结果存储在数据库中。
现在,我需要创建一个依赖包,其中包含数据文件和shell脚本,用于调用这些CLI工具以执行特定于应用程序的数据库操作。
然而,似乎没有办法从只包含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 工具包中,因为存在多个特定于应用程序的包,这些包不能混合使用。