From 899b09872bd7c4af4d1c9c73f7b26d268af276eb Mon Sep 17 00:00:00 2001 From: Trent Nelson Date: Sat, 10 Jul 2021 13:50:55 -0600 Subject: [PATCH] storage-proto: Rework source generation --- storage-proto/.gitignore | 1 - storage-proto/README.md | 2 +- storage-proto/build.rs | 26 +++++++------------ .../{src => proto}/confirmed_block.proto | 0 .../{src => proto}/transaction_by_addr.proto | 0 storage-proto/src/convert.rs | 8 +++--- 6 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 storage-proto/.gitignore rename storage-proto/{src => proto}/confirmed_block.proto (100%) rename storage-proto/{src => proto}/transaction_by_addr.proto (100%) diff --git a/storage-proto/.gitignore b/storage-proto/.gitignore deleted file mode 100644 index 65d7bf492b..0000000000 --- a/storage-proto/.gitignore +++ /dev/null @@ -1 +0,0 @@ -proto/ diff --git a/storage-proto/README.md b/storage-proto/README.md index 7dc760e011..c9f13b1707 100644 --- a/storage-proto/README.md +++ b/storage-proto/README.md @@ -2,4 +2,4 @@ The `solana-storage-proto` structs used in `src/convert.rs` and elsewhere are auto-generated from protobuf definitions on build. To update these structs, -simply make the desired edits to `src/*.proto` files. +simply make the desired edits to `proto/*.proto` files. diff --git a/storage-proto/build.rs b/storage-proto/build.rs index 426813f733..dd64c828d8 100644 --- a/storage-proto/build.rs +++ b/storage-proto/build.rs @@ -1,24 +1,16 @@ fn main() -> Result<(), std::io::Error> { - let manifest_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")); - - let out_dir = manifest_dir.join("proto"); - let proto_files = manifest_dir.join("src"); - - std::fs::create_dir_all(out_dir.clone())?; - - println!("Protobuf directory: {}", proto_files.display()); - println!("output directory: {}", out_dir.display()); + let proto_base_path = std::path::PathBuf::from("proto"); + let proto_files = ["confirmed_block.proto", "transaction_by_addr.proto"]; + let mut protos = Vec::new(); + for proto_file in &proto_files { + let proto = proto_base_path.join(proto_file); + println!("cargo::rerun-if-changed={}", proto.display()); + protos.push(proto); + } tonic_build::configure() .build_client(true) .build_server(false) .format(true) - .out_dir(&out_dir) - .compile( - &[ - proto_files.join("confirmed_block.proto"), - proto_files.join("transaction_by_addr.proto"), - ], - &[proto_files], - ) + .compile(&protos, &[proto_base_path]) } diff --git a/storage-proto/src/confirmed_block.proto b/storage-proto/proto/confirmed_block.proto similarity index 100% rename from storage-proto/src/confirmed_block.proto rename to storage-proto/proto/confirmed_block.proto diff --git a/storage-proto/src/transaction_by_addr.proto b/storage-proto/proto/transaction_by_addr.proto similarity index 100% rename from storage-proto/src/transaction_by_addr.proto rename to storage-proto/proto/transaction_by_addr.proto diff --git a/storage-proto/src/convert.rs b/storage-proto/src/convert.rs index 7460bdf0e3..7a7e3d1b6e 100644 --- a/storage-proto/src/convert.rs +++ b/storage-proto/src/convert.rs @@ -23,15 +23,15 @@ use { pub mod generated { include!(concat!( - env!("CARGO_MANIFEST_DIR"), - concat!("/proto/solana.storage.confirmed_block.rs") + env!("OUT_DIR"), + "/solana.storage.confirmed_block.rs" )); } pub mod tx_by_addr { include!(concat!( - env!("CARGO_MANIFEST_DIR"), - concat!("/proto/solana.storage.transaction_by_addr.rs") + env!("OUT_DIR"), + "/solana.storage.transaction_by_addr.rs" )); }