summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crates/common/src/types.rs1
-rw-r--r--crates/driver/src/driver.rs1
-rw-r--r--crates/runner/src/paths.rs1
-rw-r--r--crates/runner/src/task.rs4
4 files changed, 5 insertions, 2 deletions
diff --git a/crates/common/src/types.rs b/crates/common/src/types.rs
index f45d1dd..0dad60c 100644
--- a/crates/common/src/types.rs
+++ b/crates/common/src/types.rs
@@ -37,6 +37,7 @@ pub enum Dependency {
pub struct Task {
pub label: String,
pub command: String,
+ pub workdir: String,
pub inherit: Vec<LayerHash>,
pub depends: HashSet<Dependency>,
pub outputs: HashMap<String, String>,
diff --git a/crates/driver/src/driver.rs b/crates/driver/src/driver.rs
index 3927291..d7106c3 100644
--- a/crates/driver/src/driver.rs
+++ b/crates/driver/src/driver.rs
@@ -294,6 +294,7 @@ impl<'ctx> Driver<'ctx> {
let task = Task {
label: format!("{:#}", task_ref),
command,
+ workdir: paths::TASK_WORKDIR.to_string(),
inherit: inherit_chain,
depends: task_deps,
outputs: task_output,
diff --git a/crates/runner/src/paths.rs b/crates/runner/src/paths.rs
index 660021c..738cb54 100644
--- a/crates/runner/src/paths.rs
+++ b/crates/runner/src/paths.rs
@@ -60,7 +60,6 @@ pub const TASK_STATE_WORK_SUBDIR: &str = "work";
pub const TASK_BUILDDIR: &str = "build";
pub const TASK_TASKDIR: &str = "build/task";
-pub const TASK_WORKDIR: &str = "build/work";
pub const TASK_RUN: &str = "run";
diff --git a/crates/runner/src/task.rs b/crates/runner/src/task.rs
index a909d22..47fa9e4 100644
--- a/crates/runner/src/task.rs
+++ b/crates/runner/src/task.rs
@@ -44,12 +44,14 @@ fn input_hash(task: &Task) -> InputHash {
#[derive(Debug, Serialize)]
struct HashInput<'a> {
pub command: &'a str,
+ pub workdir: &'a str,
pub inherit: &'a [LayerHash],
pub depends: HashMap<DependencyHash, &'a Dependency>,
pub outputs: &'a HashMap<String, String>,
}
let input = HashInput {
command: &task.command,
+ workdir: &task.workdir,
inherit: &task.inherit,
depends: task
.depends
@@ -83,7 +85,7 @@ fn init_task(input_hash: &InputHash, task: &Task) -> Result<fs::Mount> {
std::fs::write(&runfile, &task.command)
.with_context(|| format!("Failed to write {}", runfile))?;
- let mount_target = paths::join(&[&task_tmp_dir, paths::TASK_WORKDIR]);
+ let mount_target = paths::join(&[&task_tmp_dir, &task.workdir]);
let mount = if task.inherit.is_empty() {
fs::mount(task_layer_dir, &mount_target, None, MsFlags::MS_BIND, None)
.with_context(|| format!("Failed to bind mount to {:?}", mount_target))?