about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-01-15T16·43+0200
committerclbot <clbot@tvl.fyi>2024-01-15T18·25+0000
commit4fb4fc263d31e207f0fc842f17e98ca276094e00 (patch)
tree08941afd4ff3c8d62768980f94a80a9a1b019ab8
parent9fd15ba506c86cd4c1d84aa43d5f3767e02761db (diff)
feat(tvix/build): add BuildService trait r/7383
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 <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
-rw-r--r--tvix/Cargo.lock1
-rw-r--r--tvix/Cargo.nix4
-rw-r--r--tvix/build/Cargo.toml1
-rw-r--r--tvix/build/src/buildservice/dummy.rs19
-rw-r--r--tvix/build/src/buildservice/mod.rs12
-rw-r--r--tvix/build/src/lib.rs1
6 files changed, 38 insertions, 0 deletions
diff --git a/tvix/Cargo.lock b/tvix/Cargo.lock
index 4ce2993cb5c6..95cc50a4072b 100644
--- a/tvix/Cargo.lock
+++ b/tvix/Cargo.lock
@@ -3291,6 +3291,7 @@ dependencies = [
  "tonic 0.10.2",
  "tonic-build",
  "tonic-reflection",
+ "tracing",
  "tvix-castore",
 ]
 
diff --git a/tvix/Cargo.nix b/tvix/Cargo.nix
index d3947281dcd0..a67738397f66 100644
--- a/tvix/Cargo.nix
+++ b/tvix/Cargo.nix
@@ -10247,6 +10247,10 @@ rec {
             optional = true;
           }
           {
+            name = "tracing";
+            packageId = "tracing";
+          }
+          {
             name = "tvix-castore";
             packageId = "tvix-castore";
           }
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<Build> {
+        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<Build>;
+}
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;