summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2021-09-02 21:06:04 +0200
committerMatthias Schiffer <mschiffer@universe-factory.net>2021-09-02 23:47:46 +0200
commitc479435ded1a8cfbe31a4b7d196228bde8ab9bc7 (patch)
treec7b5b1963a67482dc609b57609d0fb024371cb6c
parentd7d5e6acf6586138ca6f9793817f5690cfa6ae25 (diff)
downloadrebel-c479435ded1a8cfbe31a4b7d196228bde8ab9bc7.tar
rebel-c479435ded1a8cfbe31a4b7d196228bde8ab9bc7.zip
runner: pass input hash to runner
Reuse the input hash computed by the executor instead of introducing a different definition of "input hash" in the runner.
-rw-r--r--src/executor.rs1
-rw-r--r--src/runner.rs1
-rw-r--r--src/runner/runc/run.rs11
3 files changed, 5 insertions, 8 deletions
diff --git a/src/executor.rs b/src/executor.rs
index 186cea5..926756e 100644
--- a/src/executor.rs
+++ b/src/executor.rs
@@ -165,6 +165,7 @@ impl<'a> Executor<'a> {
let task = runner::Task {
id: task_ref.clone(),
run: run.clone(),
+ input_hash,
inherit: inherit.clone(),
depends: self.task_deps_with_actions(&task_def),
env: self.env.clone(),
diff --git a/src/runner.rs b/src/runner.rs
index eadcc21..f36f65d 100644
--- a/src/runner.rs
+++ b/src/runner.rs
@@ -9,6 +9,7 @@ use crate::types::*;
pub struct Task {
pub id: TaskRef,
pub run: String,
+ pub input_hash: InputHash,
pub inherit: Vec<InputHash>,
pub depends: HashMap<OutputHash, TaskAction>,
pub env: HashMap<String, String>,
diff --git a/src/runner/runc/run.rs b/src/runner/runc/run.rs
index b414019..8881f94 100644
--- a/src/runner/runc/run.rs
+++ b/src/runner/runc/run.rs
@@ -18,7 +18,7 @@ use crate::{
runner,
types::*,
unshare,
- util::{self, cjson, tar, ToIOResult},
+ util::{self, tar, ToIOResult},
};
use super::spec;
@@ -72,11 +72,7 @@ fn init_task() -> Result<(), Error> {
Ok(())
}
-fn task_hash(task: &runner::Task) -> StringHash {
- StringHash(cjson::digest::<sha2::Sha256, _>(task).unwrap().into())
-}
-
-fn tmp_filename(hash: &StringHash) -> PathBuf {
+fn tmp_filename(hash: &InputHash) -> PathBuf {
Path::new("build/state/tmp/output").join(format!("{}.tar", hash))
}
@@ -112,8 +108,7 @@ fn unpack_dependencies(task: &runner::Task) -> Result<(), Error> {
}
fn collect_output(task: runner::Task) -> Result<OutputHash, io::Error> {
- let input_hash = task_hash(&task);
- let filename = tmp_filename(&input_hash);
+ let filename = tmp_filename(&task.input_hash);
let file = util::unix::create_as(
&filename,
Some(unshare::BUILD_UID),