【发布时间】:2022-01-02 01:31:25
【问题描述】:
我是 Bazel 的新手。我有一个用 Bazel 构建的项目。 但是一些源文件是预先编码生成的,然后用 Bazel 编译它们。 现在我可以独立运行 bash 脚本并运行 bazel 命令:
.
|-- project
| |-- BUILD (will depend on temp_output:codegen)
| |-- scripts
| | |-- codegen.sh (read config.yaml and generate codegen.cpp/hpp and a BUILD.bazel)
| |-- config
| | |-- config.yaml
| |-- temp_output
| | |-- codegen.cpp (not existed before running codegen.sh)
| | |-- codegen.hpp (not existed before running codegen.sh)
| | |-- BAZEL.build (not existed before running codegen.sh)
|-- WORKSPACE
$ ./scripts/codegen.sh
$ bazel build :project
codegen.sh 中做了什么:
- 阅读 config.yaml,其中包含一些其他 WORKSPACE 路径和名称。
- 查询该 WORKSPACE 中的目标。
- 创建 cpp/hpp 文件以包含一些头文件。
- 创建一个新的 BUILD 文件,添加依赖这些目标。
我的目标是将 bash 脚本嵌入到 bazel 系统中。我尝试使用规则 + action.run。但失败的原因是:
- 沙盒目录不可读写。
- 在沙盒中找不到输入文件。
有什么奇特的方法可以做到这一点吗?或者有什么可以参考的例子?
【问题讨论】:
标签: bash bazel bazel-rules