From a35dadf9f0c7c98d2ae8761428936a0b9d30489e Mon Sep 17 00:00:00 2001 From: Vincent Ambo Date: Fri, 13 Jan 2023 20:19:48 +0300 Subject: refactor(tvix/derivation): use BTreeSet for derivation outputs When constructing derivations inside builtins.derivationStrict, we'd have to very frequently check whether certain outputs have already been inserted into the derivation inputs. Using a set type is much easier, especially as this has to be ordered and the source data that is being inserted also comes from a set, which might let us pass this more efficiently in the future. Note that the validate function no longer checks the order of the entries, as that is now guaranteed by the type. Change-Id: I2fbb984facba3e668075f6f8df8992092368c63d Reviewed-on: https://cl.tvl.fyi/c/depot/+/7826 Tested-by: BuildkiteCI Reviewed-by: flokli --- tvix/derivation/src/validate.rs | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) (limited to 'tvix/derivation/src/validate.rs') diff --git a/tvix/derivation/src/validate.rs b/tvix/derivation/src/validate.rs index eda0457ae564..5335f43636d3 100644 --- a/tvix/derivation/src/validate.rs +++ b/tvix/derivation/src/validate.rs @@ -50,21 +50,13 @@ impl Derivation { ); } - for (i, output_name) in output_names.iter().enumerate() { + for output_name in output_names.iter() { if output_name.is_empty() { bail!( "output name entry for {} may not be empty", input_derivation_path ) } - // if i is at least 1, peek at the previous element to ensure output_names are sorted. - if i > 0 && (output_names[i - 1] >= *output_name) { - bail!( - "invalid input derivation output order: {} < {}", - output_name, - output_names[i - 1], - ); - } } } -- cgit 1.4.1