feat(wfe-buildkit-protos): generate full BuildKit gRPC API (tonic 0.14)
New crate generating Rust gRPC stubs from the official BuildKit proto files (git submodule from moby/buildkit). Control service, LLB definitions, session protocols, and source policy. tonic 0.14 / prost 0.14.
This commit is contained in:
58
wfe-buildkit-protos/build.rs
Normal file
58
wfe-buildkit-protos/build.rs
Normal file
@@ -0,0 +1,58 @@
|
||||
use std::path::PathBuf;
|
||||
|
||||
fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let buildkit_root = PathBuf::from("vendor/buildkit");
|
||||
|
||||
// Use Go-style import paths so protoc sees each file only once
|
||||
let proto_dir = PathBuf::from("proto");
|
||||
let go_prefix = "github.com/moby/buildkit";
|
||||
|
||||
let proto_files: Vec<PathBuf> = vec![
|
||||
// Core control service (Solve, Status, ListWorkers, etc.)
|
||||
"api/services/control/control.proto",
|
||||
// Types
|
||||
"api/types/worker.proto",
|
||||
// Solver / LLB definitions
|
||||
"solver/pb/ops.proto",
|
||||
// Source policy
|
||||
"sourcepolicy/pb/policy.proto",
|
||||
// Session protocols
|
||||
"session/auth/auth.proto",
|
||||
"session/filesync/filesync.proto",
|
||||
"session/secrets/secrets.proto",
|
||||
"session/sshforward/ssh.proto",
|
||||
"session/upload/upload.proto",
|
||||
"session/exporter/exporter.proto",
|
||||
// Utilities
|
||||
"util/apicaps/pb/caps.proto",
|
||||
"util/stack/stack.proto",
|
||||
]
|
||||
.into_iter()
|
||||
.map(|p| proto_dir.join(go_prefix).join(p))
|
||||
.collect();
|
||||
|
||||
println!(
|
||||
"cargo:warning=Compiling {} buildkit proto files",
|
||||
proto_files.len()
|
||||
);
|
||||
|
||||
let mut prost_config = prost_build::Config::new();
|
||||
prost_config.include_file("mod.rs");
|
||||
|
||||
tonic_prost_build::configure()
|
||||
.build_server(false)
|
||||
.compile_with_config(
|
||||
prost_config,
|
||||
&proto_files,
|
||||
// Include paths for import resolution:
|
||||
// 1. The vendor dir inside buildkit (for Go-style github.com/... imports)
|
||||
// 2. The buildkit root itself (for relative imports)
|
||||
// 3. Our proto/ dir (for google/rpc/status.proto)
|
||||
&[
|
||||
// proto/ has symlinks that resolve Go-style github.com/... imports
|
||||
PathBuf::from("proto"),
|
||||
],
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user