diff --git a/crates/loader/src/lib.rs b/crates/loader/src/lib.rs index 86e625d79..9b5d5f72b 100644 --- a/crates/loader/src/lib.rs +++ b/crates/loader/src/lib.rs @@ -30,10 +30,11 @@ pub(crate) const MAX_FILE_LOADING_CONCURRENCY: usize = 16; pub async fn from_file( manifest_path: impl AsRef, files_mount_strategy: FilesMountStrategy, + cache_root: Option, ) -> Result { let path = manifest_path.as_ref(); let app_root = parent_dir(path)?; - let loader = LocalLoader::new(&app_root, files_mount_strategy).await?; + let loader = LocalLoader::new(&app_root, files_mount_strategy, cache_root).await?; loader.load_file(path).await } diff --git a/crates/loader/src/local.rs b/crates/loader/src/local.rs index e0114c166..ddea5ab7a 100644 --- a/crates/loader/src/local.rs +++ b/crates/loader/src/local.rs @@ -25,14 +25,18 @@ pub struct LocalLoader { } impl LocalLoader { - pub async fn new(app_root: &Path, files_mount_strategy: FilesMountStrategy) -> Result { + pub async fn new( + app_root: &Path, + files_mount_strategy: FilesMountStrategy, + cache_root: Option, + ) -> Result { let app_root = app_root .canonicalize() .with_context(|| format!("Invalid manifest dir `{}`", app_root.display()))?; Ok(Self { app_root, files_mount_strategy, - cache: Cache::new(None).await?, + cache: Cache::new(cache_root).await?, // Limit concurrency to avoid hitting system resource limits file_loading_permits: Semaphore::new(crate::MAX_FILE_LOADING_CONCURRENCY), }) diff --git a/crates/loader/tests/ui.rs b/crates/loader/tests/ui.rs index 8dc80d285..2debf2820 100644 --- a/crates/loader/tests/ui.rs +++ b/crates/loader/tests/ui.rs @@ -49,6 +49,7 @@ fn run_test(input: &Path, normalizer: &mut Normalizer) -> Result let locked = spin_loader::from_file( input, spin_loader::FilesMountStrategy::Copy(files_mount_root), + None, ) .await .map_err(|err| format!("{err:?}"))?; diff --git a/crates/oci/src/client.rs b/crates/oci/src/client.rs index ffa1ce86c..8bdb58a43 100644 --- a/crates/oci/src/client.rs +++ b/crates/oci/src/client.rs @@ -81,6 +81,7 @@ impl Client { let locked = spin_loader::from_file( manifest_path, FilesMountStrategy::Copy(working_dir.path().into()), + None, ) .await?; diff --git a/src/commands/up.rs b/src/commands/up.rs index 05bfe88c9..a36e10d5a 100644 --- a/src/commands/up.rs +++ b/src/commands/up.rs @@ -334,7 +334,7 @@ impl UpCommand { } else { FilesMountStrategy::Copy(working_dir.join("assets")) }; - spin_loader::from_file(&manifest_path, files_mount_strategy) + spin_loader::from_file(&manifest_path, files_mount_strategy, None) .await .with_context(|| format!("Failed to load manifest from {manifest_path:?}")) }