diff options
author | Florian Klink <flokli@flokli.de> | 2023-01-16T14·25+0100 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-01-16T16·45+0000 |
commit | 95cad95b9333214df90d6002e51c7ae34910fa7e (patch) | |
tree | 71a9d7dddbad123a1ccbf68beb94da145d2e2280 | |
parent | f6b4abac358c176cf5f686fed4f2e597e6b73704 (diff) |
feat(tvix/derivation): make input_sources a BTreeSet r/5667
These need to be sorted anyways, so let's use the correct data structure for it. Change-Id: I009c9989d7647dc1df716170f3680c981db6e4b2 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7846 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su>
-rw-r--r-- | tvix/derivation/src/derivation.rs | 7 | ||||
-rw-r--r-- | tvix/derivation/src/validate.rs | 10 | ||||
-rw-r--r-- | tvix/derivation/src/write.rs | 2 |
3 files changed, 5 insertions, 14 deletions
diff --git a/tvix/derivation/src/derivation.rs b/tvix/derivation/src/derivation.rs index d1f46de8c5ee..1e2605f5b931 100644 --- a/tvix/derivation/src/derivation.rs +++ b/tvix/derivation/src/derivation.rs @@ -22,7 +22,7 @@ pub struct Derivation { pub input_derivations: BTreeMap<String, BTreeSet<String>>, #[serde(rename = "inputSrcs")] - pub input_sources: Vec<String>, + pub input_sources: BTreeSet<String>, pub outputs: BTreeMap<String, Output>, @@ -111,15 +111,14 @@ impl Derivation { let mut hasher = Sha256::new(); // collect the list of paths from input_sources and input_derivations - // into a sorted list, and join them by : + // into a (sorted, guaranteed by BTreeSet) list, and join them by : hasher.update(write::TEXT_COLON); - let concat_inputs: Vec<String> = { + let concat_inputs: BTreeSet<String> = { let mut inputs = self.input_sources.clone(); let input_derivation_keys: Vec<String> = self.input_derivations.keys().cloned().collect(); inputs.extend(input_derivation_keys); - inputs.sort(); inputs }; diff --git a/tvix/derivation/src/validate.rs b/tvix/derivation/src/validate.rs index 5335f43636d3..e225bd2fdb07 100644 --- a/tvix/derivation/src/validate.rs +++ b/tvix/derivation/src/validate.rs @@ -61,16 +61,8 @@ impl Derivation { } // Validate all input_sources - for (i, input_source) in self.input_sources.iter().enumerate() { + for input_source in self.input_sources.iter() { StorePath::from_absolute_path(input_source)?; - - if i > 0 && self.input_sources[i - 1] >= *input_source { - bail!( - "invalid input source order: {} < {}", - input_source, - self.input_sources[i - 1], - ); - } } // validate platform diff --git a/tvix/derivation/src/write.rs b/tvix/derivation/src/write.rs index af8f50d9b104..daca5ece2194 100644 --- a/tvix/derivation/src/write.rs +++ b/tvix/derivation/src/write.rs @@ -118,7 +118,7 @@ pub fn write_input_derivations( pub fn write_input_sources( writer: &mut impl Write, - input_sources: &[String], + input_sources: &BTreeSet<String>, ) -> Result<(), fmt::Error> { writer.write_char(COMMA)?; |