about summary refs log tree commit diff
path: root/tvix/glue/src/tvix_store_io.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2024-01-16T11·14+0200
committerflokli <flokli@flokli.de>2024-01-18T14·30+0000
commit501827db59eb9e67ef9c637483efa5a0e5d09c06 (patch)
tree67789854b7b4984685fad4f40295a523cf0e09cf /tvix/glue/src/tvix_store_io.rs
parent12ae96cff2e925f502cee8afb4f8dcf54aba27d8 (diff)
refactor(tvix/glue): add BuildService to TvixStoreIO r/7411
TvixStoreIO triggers builds whenever IO into a not-yet-built store path
is requested, if it knows how to build that path.

Change-Id: If30e9db6be2f2a30cbc9d0576f357f3ecfa0d35a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10645
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/glue/src/tvix_store_io.rs')
-rw-r--r--tvix/glue/src/tvix_store_io.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/tvix/glue/src/tvix_store_io.rs b/tvix/glue/src/tvix_store_io.rs
index bac0d5e3d3a5..c72b5d108504 100644
--- a/tvix/glue/src/tvix_store_io.rs
+++ b/tvix/glue/src/tvix_store_io.rs
@@ -9,6 +9,7 @@ use std::{
 };
 use tokio::io::AsyncReadExt;
 use tracing::{error, instrument, warn};
+use tvix_build::buildservice::BuildService;
 use tvix_eval::{EvalIO, FileType, StdIO};
 
 use tvix_castore::{
@@ -41,6 +42,8 @@ pub struct TvixStoreIO {
     directory_service: Arc<dyn DirectoryService>,
     path_info_service: Arc<dyn PathInfoService>,
     std_io: StdIO,
+    #[allow(dead_code)]
+    build_service: Arc<dyn BuildService>,
     tokio_handle: tokio::runtime::Handle,
     pub(crate) known_paths: RefCell<KnownPaths>,
 }
@@ -50,6 +53,7 @@ impl TvixStoreIO {
         blob_service: Arc<dyn BlobService>,
         directory_service: Arc<dyn DirectoryService>,
         path_info_service: Arc<dyn PathInfoService>,
+        build_service: Arc<dyn BuildService>,
         tokio_handle: tokio::runtime::Handle,
     ) -> Self {
         Self {
@@ -57,6 +61,7 @@ impl TvixStoreIO {
             directory_service,
             path_info_service,
             std_io: StdIO {},
+            build_service,
             tokio_handle,
             known_paths: Default::default(),
         }
@@ -292,6 +297,7 @@ mod tests {
     use std::{path::Path, rc::Rc, sync::Arc};
 
     use tempfile::TempDir;
+    use tvix_build::buildservice::DummyBuildService;
     use tvix_castore::{
         blobservice::{BlobService, MemoryBlobService},
         directoryservice::{DirectoryService, MemoryDirectoryService},
@@ -314,12 +320,14 @@ mod tests {
             blob_service.clone(),
             directory_service.clone(),
         ));
+
         let runtime = tokio::runtime::Runtime::new().unwrap();
 
         let io = Rc::new(TvixStoreIO::new(
             blob_service.clone(),
             directory_service.clone(),
             path_info_service,
+            Arc::<DummyBuildService>::default(),
             runtime.handle().clone(),
         ));
         let mut eval = tvix_eval::Evaluation::new(io.clone() as Rc<dyn EvalIO>, true);