feat(tvix/nix-compat/derivation): make use of NixPath in some places
Some of these strings are actually just the nix hash representation of the hash calculated earlier. There's another one passed around via calculate_drv_replacement_str, but that's left for a followup. Change-Id: Id99a2a926a980d679eb49c34ee6a36bf224699b0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8218 Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: flokli <flokli@flokli.de>
This commit is contained in:
parent
c2a681eaff
commit
1f9b582239
2 changed files with 14 additions and 6 deletions
|
@ -1,4 +1,7 @@
|
||||||
use crate::store_path::{self, StorePath};
|
use crate::{
|
||||||
|
nixhash::NixHash,
|
||||||
|
store_path::{self, StorePath},
|
||||||
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
use std::collections::{BTreeMap, BTreeSet};
|
use std::collections::{BTreeMap, BTreeSet};
|
||||||
|
@ -100,7 +103,7 @@ impl Derivation {
|
||||||
/// This is: `text:`,
|
/// This is: `text:`,
|
||||||
/// all d.InputDerivations and d.InputSources (sorted, separated by a `:`),
|
/// all d.InputDerivations and d.InputSources (sorted, separated by a `:`),
|
||||||
/// a `:`,
|
/// a `:`,
|
||||||
/// a `sha256:`, followed by the sha256 digest of the ATerm representation (hex-encoded)
|
/// the nix string representation of the sha256 sum of the ATerm representation
|
||||||
/// a `:`,
|
/// a `:`,
|
||||||
/// the storeDir, followed by a `:`,
|
/// the storeDir, followed by a `:`,
|
||||||
/// the name of a derivation,
|
/// the name of a derivation,
|
||||||
|
@ -135,9 +138,11 @@ impl Derivation {
|
||||||
derivation_hasher.finalize()
|
derivation_hasher.finalize()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let h = NixHash::new(crate::nixhash::HashAlgo::Sha256, aterm_digest.to_vec());
|
||||||
|
|
||||||
s.push_str(&format!(
|
s.push_str(&format!(
|
||||||
"sha256:{:x}:{}:{}.drv",
|
"{}:{}:{}.drv",
|
||||||
aterm_digest,
|
h.to_nix_hash_string(),
|
||||||
store_path::STORE_DIR,
|
store_path::STORE_DIR,
|
||||||
name,
|
name,
|
||||||
));
|
));
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::derivation::DerivationError;
|
use crate::derivation::DerivationError;
|
||||||
use crate::nixbase32;
|
use crate::nixbase32;
|
||||||
|
use crate::nixhash::NixHash;
|
||||||
use crate::store_path::{self, StorePath};
|
use crate::store_path::{self, StorePath};
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
|
|
||||||
|
@ -67,9 +68,11 @@ pub fn path_with_references<S: AsRef<str>, I: IntoIterator<Item = S>, C: AsRef<[
|
||||||
hasher.finalize()
|
hasher.finalize()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let h = NixHash::new(crate::nixhash::HashAlgo::Sha256, content_digest.to_vec());
|
||||||
|
|
||||||
s.push_str(&format!(
|
s.push_str(&format!(
|
||||||
":sha256:{:x}:{}:{}",
|
":{}:{}:{}",
|
||||||
content_digest,
|
h.to_nix_hash_string(),
|
||||||
store_path::STORE_DIR,
|
store_path::STORE_DIR,
|
||||||
name
|
name
|
||||||
));
|
));
|
||||||
|
|
Loading…
Reference in a new issue