diff options
author | Florian Klink <flokli@flokli.de> | 2023-05-14T18·21+0300 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-05-24T16·04+0000 |
commit | 63047449d7ac5d92a50c67b5f14b0cce0da5ba81 (patch) | |
tree | 990ae774d14885297cd67b5931c0226af0d50ab1 /tvix/cli/src | |
parent | ad6b6b14db9c5e0a0b025687db5f387a4e6ee6a7 (diff) |
feat(tvix/cli): use TvixStoreIO instead of NixCompatIO r/6193
This switches tvix-cli over from using `NixCompatIO` to `TvixStoreIO`. For now, we simply instantiate in-memory services instead of getting fancy with constructors inside tvix-store, but long-term, we might want to support some URI syntax, to make this configurable at runtime. nixpkgs eval tests might be fine (and fast!) with a purely in-memory backend, but other usages might involve talking to a local tvix-store over gRPC (using the gRPC client, either unix domain socket or even further away remote), or running tvix-store in "embedded" mode (using another client than the gRPC client). Change-Id: I509afd3dc5ce3f2d52b0fb7067748fab820e26ab Reviewed-on: https://cl.tvl.fyi/c/depot/+/8572 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/cli/src')
-rw-r--r-- | tvix/cli/src/main.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tvix/cli/src/main.rs b/tvix/cli/src/main.rs index 9a81cff50863..c588472592cf 100644 --- a/tvix/cli/src/main.rs +++ b/tvix/cli/src/main.rs @@ -14,6 +14,9 @@ use known_paths::KnownPaths; use rustyline::{error::ReadlineError, Editor}; use tvix_eval::observer::{DisassemblingObserver, TracingObserver}; use tvix_eval::{Builtin, Value}; +use tvix_store::blobservice::MemoryBlobService; +use tvix_store::directoryservice::MemoryDirectoryService; +use tvix_store::pathinfoservice::MemoryPathInfoService; #[derive(Parser)] struct Args { @@ -63,9 +66,23 @@ fn interpret(code: &str, path: Option<PathBuf>, args: &Args, explain: bool) -> b let known_paths: Rc<RefCell<KnownPaths>> = Default::default(); eval.strict = args.strict; + + let blob_service = MemoryBlobService::default(); + let directory_service = MemoryDirectoryService::default(); + let path_info_service = MemoryPathInfoService::default(); + let nar_calculation_service = tvix_store::nar::NonCachingNARCalculationService::new( + blob_service.clone(), + directory_service.clone(), + ); + eval.io_handle = Box::new(tvix_io::TvixIO::new( known_paths.clone(), - nix_compat::NixCompatIO::new(), + tvix_store::TvixStoreIO::new( + blob_service, + directory_service, + path_info_service, + nar_calculation_service, + ), )); // bundle fetchurl.nix (used in nixpkgs) by resolving <nix> to |