From ceb2c0ba895554c7cabb0ac20d3a80ea2aba1ab1 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 2 Jan 2023 14:37:08 +0100 Subject: chore(tvix/store): make importable This allows other crates to import tvix_store. Rename the bin crate to tvix-store-bin, to avoid having multiple crates with the same name (https://github.com/rust-lang/cargo/issues/6313) Change-Id: I857768d6115640dbf102e79ed03e8474090df2fe Reviewed-on: https://cl.tvl.fyi/c/depot/+/7728 Tested-by: BuildkiteCI Reviewed-by: tazjin --- tvix/Cargo.lock | 2 +- tvix/Cargo.nix | 13 +++++++------ tvix/store/Cargo.toml | 5 ++++- tvix/store/default.nix | 7 ++++++- tvix/store/src/lib.rs | 10 ++++++++++ tvix/store/src/main.rs | 24 +++++++----------------- 6 files changed, 35 insertions(+), 26 deletions(-) create mode 100644 tvix/store/src/lib.rs diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock index 7a20c720aeb3..56e568559ffd 100644 --- a/tvix/Cargo.lock +++ b/tvix/Cargo.lock @@ -2223,7 +2223,7 @@ dependencies = [ ] [[package]] -name = "tvix-store" +name = "tvix-store-bin" version = "0.1.0" dependencies = [ "anyhow", diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix index 361a0a3ee033..d96632e05351 100644 --- a/tvix/Cargo.nix +++ b/tvix/Cargo.nix @@ -103,10 +103,10 @@ rec { # File a bug if you depend on any for non-debug work! debug = internal.debugCrate { inherit packageId; }; }; - "tvix-store" = rec { - packageId = "tvix-store"; + "tvix-store-bin" = rec { + packageId = "tvix-store-bin"; build = internal.buildRustCrateWithFeatures { - packageId = "tvix-store"; + packageId = "tvix-store-bin"; }; # Debug support which might change between releases. @@ -6641,13 +6641,13 @@ rec { ]; }; - "tvix-store" = rec { - crateName = "tvix-store"; + "tvix-store-bin" = rec { + crateName = "tvix-store-bin"; version = "0.1.0"; edition = "2021"; crateBin = [ { - name = "tvix-store"; + name = "tvix-store-bin"; path = "src/main.rs"; requiredFeatures = [ ]; } @@ -6658,6 +6658,7 @@ rec { if (lib.versionOlder builtins.nixVersion "2.4pre20211007") then lib.cleanSourceWith { filter = sourceFilter; src = ./store; } else ./store; + libName = "tvix_store"; dependencies = [ { name = "anyhow"; diff --git a/tvix/store/Cargo.toml b/tvix/store/Cargo.toml index 111667cd74d1..abbd9b0dcbcd 100644 --- a/tvix/store/Cargo.toml +++ b/tvix/store/Cargo.toml @@ -1,8 +1,11 @@ [package] -name = "tvix-store" +name = "tvix-store-bin" version = "0.1.0" edition = "2021" +[lib] +name = "tvix_store" + [dependencies] anyhow = "1.0.68" blake3 = { version = "1.3.1", features = ["rayon", "std"] } diff --git a/tvix/store/default.nix b/tvix/store/default.nix index 68b529e723b1..65289cacc87c 100644 --- a/tvix/store/default.nix +++ b/tvix/store/default.nix @@ -11,7 +11,7 @@ let protobufDep = prev: (prev.nativeBuildInputs or [ ]) ++ [ pkgs.protobuf ]; in -depot.tvix.crates.workspaceMembers.tvix-store.build.override { +depot.tvix.crates.workspaceMembers.tvix-store-bin.build.override { # Ensure protobuf dependencies are available. # TODO: figure out a way to embed this directly in the //tvix # crate2nix config. @@ -28,6 +28,11 @@ depot.tvix.crates.workspaceMembers.tvix-store.build.override { PROTO_ROOT = protoRoot; nativeBuildInputs = protobufDep prev; }; + + tvix-store-bin = prev: { + PROTO_ROOT = protoRoot; + nativeBuildInputs = protobufDep prev; + }; }; runTests = true; diff --git a/tvix/store/src/lib.rs b/tvix/store/src/lib.rs new file mode 100644 index 000000000000..de1cd6557331 --- /dev/null +++ b/tvix/store/src/lib.rs @@ -0,0 +1,10 @@ +pub mod nixbase32; +pub mod nixpath; +pub mod proto; + +pub mod dummy_blob_service; +pub mod dummy_directory_service; +pub mod dummy_path_info_service; + +#[cfg(test)] +mod tests; diff --git a/tvix/store/src/main.rs b/tvix/store/src/main.rs index 0ba49e3bfd4c..0ad1857db6bc 100644 --- a/tvix/store/src/main.rs +++ b/tvix/store/src/main.rs @@ -1,24 +1,14 @@ -use crate::proto::blob_service_server::BlobServiceServer; -use crate::proto::directory_service_server::DirectoryServiceServer; -use crate::proto::path_info_service_server::PathInfoServiceServer; +use tvix_store::proto::blob_service_server::BlobServiceServer; +use tvix_store::proto::directory_service_server::DirectoryServiceServer; +use tvix_store::proto::path_info_service_server::PathInfoServiceServer; #[cfg(feature = "reflection")] -use crate::proto::FILE_DESCRIPTOR_SET; +use tvix_store::proto::FILE_DESCRIPTOR_SET; use clap::Parser; use tonic::{transport::Server, Result}; use tracing::{info, Level}; -mod dummy_blob_service; -mod dummy_directory_service; -mod dummy_path_info_service; -mod nixbase32; -mod nixpath; -mod proto; - -#[cfg(test)] -mod tests; - #[derive(Parser)] #[command(author, version, about, long_about = None)] struct Cli { @@ -44,9 +34,9 @@ async fn main() -> Result<(), Box> { let mut server = Server::builder(); - let blob_service = dummy_blob_service::DummyBlobService {}; - let directory_service = dummy_directory_service::DummyDirectoryService {}; - let path_info_service = dummy_path_info_service::DummyPathInfoService {}; + let blob_service = tvix_store::dummy_blob_service::DummyBlobService {}; + let directory_service = tvix_store::dummy_directory_service::DummyDirectoryService {}; + let path_info_service = tvix_store::dummy_path_info_service::DummyPathInfoService {}; let mut router = server .add_service(BlobServiceServer::new(blob_service)) -- cgit 1.4.1