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:
Florian Klink 2023-03-04 03:25:19 +01:00 committed by tazjin
parent c2a681eaff
commit 1f9b582239
2 changed files with 14 additions and 6 deletions

View file

@ -1,4 +1,7 @@
use crate::store_path::{self, StorePath};
use crate::{
nixhash::NixHash,
store_path::{self, StorePath},
};
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
use std::collections::{BTreeMap, BTreeSet};
@ -100,7 +103,7 @@ impl Derivation {
/// This is: `text:`,
/// all d.InputDerivations and d.InputSources (sorted, separated by 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 `:`,
/// the storeDir, followed by a `:`,
/// the name of a derivation,
@ -135,9 +138,11 @@ impl Derivation {
derivation_hasher.finalize()
};
let h = NixHash::new(crate::nixhash::HashAlgo::Sha256, aterm_digest.to_vec());
s.push_str(&format!(
"sha256:{:x}:{}:{}.drv",
aterm_digest,
"{}:{}:{}.drv",
h.to_nix_hash_string(),
store_path::STORE_DIR,
name,
));

View file

@ -1,5 +1,6 @@
use crate::derivation::DerivationError;
use crate::nixbase32;
use crate::nixhash::NixHash;
use crate::store_path::{self, StorePath};
use sha2::{Digest, Sha256};
@ -67,9 +68,11 @@ pub fn path_with_references<S: AsRef<str>, I: IntoIterator<Item = S>, C: AsRef<[
hasher.finalize()
};
let h = NixHash::new(crate::nixhash::HashAlgo::Sha256, content_digest.to_vec());
s.push_str(&format!(
":sha256:{:x}:{}:{}",
content_digest,
":{}:{}:{}",
h.to_nix_hash_string(),
store_path::STORE_DIR,
name
));