2 个版本
使用旧的 Rust 2015
0.1.1 | 2017 年 4 月 27 日 |
---|---|
0.1.0 | 2017 年 4 月 27 日 |
#696 在 Cargo 插件
77KB
1K SLoC
cargo-raze
为 cargo 依赖生成 bazel 规则。
这个工具是实验性的,不能保证它一定能工作。它在当前仓库中的一个示例中工作。它是作为一个峰值项目来测试一个工具实现的可能工作流程。
使用模式
生成 WORKSPACE 内容
示例调用(在一个包含 Cargo.toml+Cargo.lock 的目录中)
cargo install raze
cargo raze --overrides log-0.3.7:@custom-log//log:log --generate
一个 generate
调用会在 ./raze.WORKSPACE
中生成一系列新的 new_http_archive
调用,可以包含在仓库的 WORKSPACE 文件中,以自动包含所选的 crate,并生成构建规则。提供了一个 overrides
标志,允许用户用自己的定义规则覆盖所选依赖项的引用。当自动生成的构建规则编译失败时,这是一个有用的功能。通常,具有复杂系统库依赖项或以有趣方式利用 build.rs
的规则将需要自定义覆盖。以这种方式进行的覆盖需要可以从您的 WORKSPACE 访问,这意味着它们不能存在于根 WORKSPACE 中。
不建议用户手动编辑生成的规则,因为这些编辑将需要在 generate
重新运行时持久化。
将 vendoring 放入 ./raze/ 或其他目录
示例调用(在一个包含 Cargo.toml+Cargo.lock 的目录中)
cargo install raze
cargo raze --overrides log-0.3.7:@custom-log//log:log --vendor ./raze
一个 vendor
调用会在一个选定的目录中生成完整的源代码,包括 BUILD 文件。这些规则与正常源代码的功能相同。提供了一个 override
功能来防止将某些依赖项 vendoring,而是使用用户自定义的依赖项。如果依赖项以某种新颖的方式利用 build.rs
,则通常需要这样做。
支持的功能
- 在 vendored 源格式或 WORKSPACE 格式中生成构建规则
- Vendored: acmcarther/raze-manual-example
- WORKSPACE: acmcarther/raze-autogen-example
- 环境特定于
raze
运行的平台 - 功能标志传播
- 依赖项覆盖
未来功能
- 平台检测(当前平台被硬编码为通用Linux)。
- 目标平台规范,而不是当前系统平台
- Cargo.toml中直接指定的包的
alias
规则 - (可能)延迟构建文件生成,以延迟特定平台的依赖项解析。
- (可能)生成
build.rs
代理规则,而不是在build_dependencies存在时强制使用--override
。
依赖项
~42MB
~765K SLoC