about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-01-16T14·25+0100
committerclbot <clbot@tvl.fyi>2023-01-16T16·45+0000
commit95cad95b9333214df90d6002e51c7ae34910fa7e (patch)
tree71a9d7dddbad123a1ccbf68beb94da145d2e2280
parentf6b4abac358c176cf5f686fed4f2e597e6b73704 (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.rs7
-rw-r--r--tvix/derivation/src/validate.rs10
-rw-r--r--tvix/derivation/src/write.rs2
3 files changed, 5 insertions, 14 deletions
diff --git a/tvix/derivation/src/derivation.rs b/tvix/derivation/src/derivation.rs
index d1f46de8c5..1e2605f5b9 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 5335f43636..e225bd2fdb 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 af8f50d9b1..daca5ece21 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)?;