#zksync #protobuf #build #proto #blockchain #descriptor #consensus

build zksync_protobuf_build

ZKsync 协议一致 protobuf 代码生成器

11个版本

0.1.0-rc.112024年8月16日
0.1.0-rc.102024年8月12日
0.1.0-rc.42024年7月24日

#756 in 魔法豆

Download history 5901/week @ 2024-07-05 3137/week @ 2024-07-12 7287/week @ 2024-07-19 13858/week @ 2024-07-26 9096/week @ 2024-08-02 8868/week @ 2024-08-09 13343/week @ 2024-08-16

46,726 每月下载量
用于 55 个crate (8 直接)

MIT/Apache

40KB
717

从proto文件生成Rust代码。

从$CARGO_MANIFEST_DIR/<input_root>目录递归收集protobuf文件。相应的"cargo:rerun-if-changed=..."行打印到stdout,因此当proto文件更改时,运行此函数的构建脚本将重新运行。生成一个Rust文件并存储在$OUT_DIR/<input_root>/gen.rs文件。

将protobuf文件编译成一个存储在$OUT_DIR/<input_root>/gen.binpb的protobuf描述符。此外,还会打印到stdout的"PROTOBUF_DESCRIPTOR="行。这可以用来在构建过程中收集所有描述符,如下所示

  1. 将仓库检查到一个新的目录,然后运行"cargo build --all-targets"。我们需要它是新鲜的,以便包含protobuf的每个crate在cargo缓存中只有一个构建。
  2. 使用grep通过所有target/debug/build/*/output文件查找所有"PROTOBUF_DESCRIPTOR=..."行,并简单地通过连接合并描述符文件。

注意,你可以为此仓库的两个版本运行此程序,并通过运行"buf breaking <after.binpb> --against <before.binpb>"查找破坏性更改,其中before.binpb和after.binpb是这两个版本中连接的描述符。

预计proto文件不是自包含的 - 要从不同的crate导入proto文件,您需要将它们指定为Config.dependencies中的依赖项。在同一个crate中不可能依赖于不同的proto包(因为这些是从同一个构建脚本同时构建的)。

依赖项

~11–22MB
~293K SLoC