From 1a988dd15362844b1fb112708d2b7bdd9d8ea653 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Thu, 28 Oct 2021 22:42:36 +0200 Subject: Pass target directory for download archives from driver to runner --- crates/common/src/types.rs | 11 +++++++++-- crates/driver/src/driver.rs | 1 + crates/runner/src/paths.rs | 1 - crates/runner/src/task.rs | 10 ++++++---- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/crates/common/src/types.rs b/crates/common/src/types.rs index 51f9209..f45d1dd 100644 --- a/crates/common/src/types.rs +++ b/crates/common/src/types.rs @@ -22,8 +22,15 @@ impl Display for TaskID { #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq, Hash)] #[serde(rename_all = "snake_case")] pub enum Dependency { - Fetch { name: String, sha256: StringHash }, - Task { output: ArchiveHash, path: String }, + Fetch { + name: String, + target_dir: String, + sha256: StringHash, + }, + Task { + output: ArchiveHash, + path: String, + }, } #[derive(Clone, Debug, Deserialize, Serialize)] diff --git a/crates/driver/src/driver.rs b/crates/driver/src/driver.rs index 75aff02..9c55597 100644 --- a/crates/driver/src/driver.rs +++ b/crates/driver/src/driver.rs @@ -51,6 +51,7 @@ impl<'ctx> CompletionState<'ctx> { .with_context(|| { format!("Failed to evaluate fetch filename for task {}", task) })?, + target_dir: paths::TASK_DLDIR.to_string(), sha256: *sha256, }) }) diff --git a/crates/runner/src/paths.rs b/crates/runner/src/paths.rs index e436948..15e1f14 100644 --- a/crates/runner/src/paths.rs +++ b/crates/runner/src/paths.rs @@ -59,7 +59,6 @@ pub const TASK_STATE_LAYER_SUBDIR: &str = "layer"; pub const TASK_STATE_WORK_SUBDIR: &str = "work"; pub const TASK_BUILDDIR: &str = "build"; -pub const TASK_DLDIR: &str = "build/downloads"; pub const TASK_TASKDIR: &str = "build/task"; pub const TASK_WORKDIR: &str = "build/work"; diff --git a/crates/runner/src/task.rs b/crates/runner/src/task.rs index f045d00..fd640ad 100644 --- a/crates/runner/src/task.rs +++ b/crates/runner/src/task.rs @@ -167,18 +167,20 @@ fn unpack_dependency, P2: AsRef>(filename: P1, dest: P2) - fn unpack_dependencies(input_hash: &InputHash, task: &Task) -> Result<()> { let task_tmp_dir = paths::task_tmp_dir(input_hash); - let downloads_dir = paths::join(&[&task_tmp_dir, paths::TASK_DLDIR]); let depends_dir = paths::join(&[&task_tmp_dir, paths::TASK_TMP_DEPENDS_SUBDIR]); - fs::mkdir(&downloads_dir)?; fs::mkdir(&depends_dir)?; for dep in &task.depends { match dep { - Dependency::Fetch { name, .. } => { + Dependency::Fetch { + name, target_dir, .. + } => { + let path = paths::join(&[&task_tmp_dir, &target_dir]); + fs::mkdir(&path)?; fs::copy( paths::join(&[paths::DOWNLOADS_DIR, name]), - paths::join(&[&downloads_dir, name]), + paths::join(&[&path, name]), )?; } Dependency::Task { output, path } => { -- cgit v1.2.3