diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-09-02 21:06:04 +0200 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2021-09-02 23:47:46 +0200 |
commit | c479435ded1a8cfbe31a4b7d196228bde8ab9bc7 (patch) | |
tree | c7b5b1963a67482dc609b57609d0fb024371cb6c | |
parent | d7d5e6acf6586138ca6f9793817f5690cfa6ae25 (diff) | |
download | rebel-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.rs | 1 | ||||
-rw-r--r-- | src/runner.rs | 1 | ||||
-rw-r--r-- | src/runner/runc/run.rs | 11 |
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), |