feat(tvix/derivation): make input_sources a BTreeSet
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>
This commit is contained in:
parent
f6b4abac35
commit
95cad95b93
3 changed files with 5 additions and 14 deletions
|
@ -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
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)?;
|
||||
|
||||
|
|
Loading…
Reference in a new issue