diff options
| author | Remo Senekowitsch <remo@buenzli.dev> | 2024-06-12 17:45:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-12 16:45:38 +0100 |
| commit | 9fa223eaaf0eda4e5f76621dc6d457417afb8b54 (patch) | |
| tree | 8327137d550f5aacdd6c05bc89eed3afca3387dd /crates/atuin-daemon/build.rs | |
| parent | chore: remove unnecessary proto import (#2120) (diff) | |
| download | atuin-9fa223eaaf0eda4e5f76621dc6d457417afb8b54.zip | |
chore(build): compile protobufs with protox (#2122)
* chore(build): compile protobufs with protox
protox is a pure-rust implementation of the protobuf compiler.
Therefore, it can be managed by cargo.
This removes the implicit dependency on protoc being available
in the environment for the build.
* fix(build): replace copypasta in build script
The paths passed to `compile` aren't actually used by the build.
`skip_protoc_run` prevents that.
That's why a clean build succeeds even with this mistake.
However, the paths are passed to a `cargo:rerun-if-changed` directive.
So this mistake would've caused a failed incremental build if the
protobuf definitions were changed.
Diffstat (limited to 'crates/atuin-daemon/build.rs')
| -rw-r--r-- | crates/atuin-daemon/build.rs | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/crates/atuin-daemon/build.rs b/crates/atuin-daemon/build.rs index 95118f6f..37721249 100644 --- a/crates/atuin-daemon/build.rs +++ b/crates/atuin-daemon/build.rs @@ -1,4 +1,17 @@ -fn main() -> Result<(), Box<dyn std::error::Error>> { - tonic_build::compile_protos("./proto/history.proto")?; - Ok(()) +use std::{env, fs, path::PathBuf}; + +use protox::prost::Message; + +fn main() -> std::io::Result<()> { + let file_descriptors = protox::compile(["history.proto"], ["./proto/"]).unwrap(); + + let file_descriptor_path = PathBuf::from(env::var_os("OUT_DIR").expect("OUT_DIR not set")) + .join("file_descriptor_set.bin"); + fs::write(&file_descriptor_path, file_descriptors.encode_to_vec()).unwrap(); + + tonic_build::configure() + .build_server(true) + .file_descriptor_set_path(&file_descriptor_path) + .skip_protoc_run() + .compile(&["history.proto"], &["."]) } |
