summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-10-28 22:42:36 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-10-28 23:28:04 +0200
commit1a988dd15362844b1fb112708d2b7bdd9d8ea653 (patch)
tree5bc54f68c74221ba0171094d1e880c86069cb45e
parentfb6fa0720400d8fa7d9ae29d02c2db58a57a6c8a (diff)
downloadrebel-1a988dd15362844b1fb112708d2b7bdd9d8ea653.tar
rebel-1a988dd15362844b1fb112708d2b7bdd9d8ea653.zip
Pass target directory for download archives from driver to runner
-rw-r--r--crates/common/src/types.rs11
-rw-r--r--crates/driver/src/driver.rs1
-rw-r--r--crates/runner/src/paths.rs1
-rw-r--r--crates/runner/src/task.rs10
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<P1: AsRef<Path>, P2: AsRef<Path>>(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 } => {