From 4fb4fc263d31e207f0fc842f17e98ca276094e00 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 15 Jan 2024 18:43:15 +0200 Subject: feat(tvix/build): add BuildService trait Also provide a dummy implementation that just fails on any build that's requested. Change-Id: I0df743a730c5331ec9ce6e97a966abe18ce067f5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10627 Autosubmit: flokli Reviewed-by: raitobezarius Tested-by: BuildkiteCI --- tvix/build/Cargo.toml | 1 + tvix/build/src/buildservice/dummy.rs | 19 +++++++++++++++++++ tvix/build/src/buildservice/mod.rs | 12 ++++++++++++ tvix/build/src/lib.rs | 1 + 4 files changed, 33 insertions(+) create mode 100644 tvix/build/src/buildservice/dummy.rs create mode 100644 tvix/build/src/buildservice/mod.rs (limited to 'tvix/build') diff --git a/tvix/build/Cargo.toml b/tvix/build/Cargo.toml index 7b1594abc384..2782128db301 100644 --- a/tvix/build/Cargo.toml +++ b/tvix/build/Cargo.toml @@ -10,6 +10,7 @@ prost = "0.12.1" thiserror = "1.0.56" tonic = "0.10.2" tvix-castore = { path = "../castore" } +tracing = "0.1.37" [dependencies.tonic-reflection] optional = true diff --git a/tvix/build/src/buildservice/dummy.rs b/tvix/build/src/buildservice/dummy.rs new file mode 100644 index 000000000000..d20444755e73 --- /dev/null +++ b/tvix/build/src/buildservice/dummy.rs @@ -0,0 +1,19 @@ +use tonic::async_trait; +use tracing::instrument; + +use super::BuildService; +use crate::proto::{Build, BuildRequest}; + +#[derive(Default)] +pub struct DummyBuildService {} + +#[async_trait] +impl BuildService for DummyBuildService { + #[instrument(skip(self), ret, err)] + async fn do_build(&self, _request: BuildRequest) -> std::io::Result { + Err(std::io::Error::new( + std::io::ErrorKind::Other, + "builds are not supported with DummyBuildService", + )) + } +} diff --git a/tvix/build/src/buildservice/mod.rs b/tvix/build/src/buildservice/mod.rs new file mode 100644 index 000000000000..cd0b7eb5d70f --- /dev/null +++ b/tvix/build/src/buildservice/mod.rs @@ -0,0 +1,12 @@ +use tonic::async_trait; + +use crate::proto::{Build, BuildRequest}; + +mod dummy; +pub use dummy::DummyBuildService; + +#[async_trait] +pub trait BuildService: Send + Sync { + /// TODO: document + async fn do_build(&self, request: BuildRequest) -> std::io::Result; +} diff --git a/tvix/build/src/lib.rs b/tvix/build/src/lib.rs index febacec69e03..b173657e431c 100644 --- a/tvix/build/src/lib.rs +++ b/tvix/build/src/lib.rs @@ -1 +1,2 @@ +pub mod buildservice; pub mod proto; -- cgit 1.4.1