refactor(tvix/nix-compat): drop is_derivation in build_store_path
This only added a suffix to the input argument, if build_store_path was building the path of a Derivation. As we need to also add the `.drv` suffix to the name we pass into text_hash_string inside calculate_derivation_path, we can simply add the suffix there and drop the parameter from build_store_path. Change-Id: Icd5343dd1458f112b9296b389e81ce2ebdd16a9f Reviewed-on: https://cl.tvl.fyi/c/depot/+/8365 Autosubmit: flokli <flokli@flokli.de> Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
This commit is contained in:
parent
971080c912
commit
6454769eef
2 changed files with 7 additions and 12 deletions
|
@ -85,7 +85,7 @@ impl Derivation {
|
|||
/// The text_hash_string is then passed to the build_store_path function.
|
||||
pub fn calculate_derivation_path(&self, name: &str) -> Result<StorePath, DerivationError> {
|
||||
// append .drv to the name
|
||||
let name_with_suffix = &format!("{}.drv", name);
|
||||
let name = &format!("{}.drv", name);
|
||||
|
||||
// collect the list of paths from input_sources and input_derivations
|
||||
// into a (sorted, guaranteed by BTreeSet) list of references
|
||||
|
@ -97,9 +97,9 @@ impl Derivation {
|
|||
inputs
|
||||
};
|
||||
|
||||
let text_hash_str = &text_hash_string(name_with_suffix, self.to_aterm_string(), references);
|
||||
let text_hash_str = &text_hash_string(name, self.to_aterm_string(), references);
|
||||
|
||||
utils::build_store_path(true, text_hash_str, name)
|
||||
utils::build_store_path(text_hash_str, name)
|
||||
}
|
||||
|
||||
/// Returns the FOD digest, if the derivation is fixed-output, or None if
|
||||
|
@ -250,7 +250,7 @@ impl Derivation {
|
|||
output_path_name,
|
||||
));
|
||||
let abs_store_path =
|
||||
utils::build_store_path(false, &fp, &output_path_name)?.to_absolute_path();
|
||||
utils::build_store_path(&fp, &output_path_name)?.to_absolute_path();
|
||||
|
||||
output.path = abs_store_path.clone();
|
||||
self.environment
|
||||
|
|
|
@ -28,7 +28,6 @@ fn compress_hash(input: &[u8], output_size: usize) -> Vec<u8> {
|
|||
/// The string is hashed with sha256, its digest is compressed to 20 bytes, and
|
||||
/// nixbase32-encoded (32 characters)
|
||||
pub(super) fn build_store_path(
|
||||
is_derivation: bool,
|
||||
fingerprint: &str,
|
||||
name: &str,
|
||||
) -> Result<StorePath, DerivationError> {
|
||||
|
@ -38,11 +37,7 @@ pub(super) fn build_store_path(
|
|||
hasher.finalize()
|
||||
};
|
||||
let compressed = compress_hash(&digest, 20);
|
||||
if is_derivation {
|
||||
StorePath::from_string(format!("{}-{}.drv", nixbase32::encode(&compressed), name).as_str())
|
||||
} else {
|
||||
StorePath::from_string(format!("{}-{}", nixbase32::encode(&compressed), name,).as_str())
|
||||
}
|
||||
.map_err(|_e| DerivationError::InvalidOutputName(name.to_string()))
|
||||
// Constructing the StorePath can only fail if the passed output name was
|
||||
// invalid, so map errors to a [DerivationError::InvalidOutputName].
|
||||
|
@ -56,5 +51,5 @@ pub fn path_with_references<S: AsRef<str>, I: IntoIterator<Item = S>, C: AsRef<[
|
|||
references: I,
|
||||
) -> Result<StorePath, DerivationError> {
|
||||
let text_hash_str = text_hash_string(name, content, references);
|
||||
build_store_path(false, &text_hash_str, name)
|
||||
build_store_path(&text_hash_str, name)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue