refactor(nix-compat): use StorePathRef for hash derivation modulo
Rather than passing strings around, use a StorePathRef. This makes things a bit more typesafe, and more aligned with what we want to do in b/264. Change-Id: Ib7080addf27e7f1a9c8da1d8aaa66744468e3b5a Reviewed-on: https://cl.tvl.fyi/c/depot/+/10633 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
parent
c8114810c9
commit
e2c79e39f0
4 changed files with 34 additions and 30 deletions
|
|
@ -1,4 +1,6 @@
|
|||
use crate::store_path::{self, build_ca_path, build_output_path, build_text_path, StorePath};
|
||||
use crate::store_path::{
|
||||
self, build_ca_path, build_output_path, build_text_path, StorePath, StorePathRef,
|
||||
};
|
||||
use bstr::BString;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sha2::{Digest, Sha256};
|
||||
|
|
@ -162,7 +164,7 @@ impl Derivation {
|
|||
/// drv path).
|
||||
pub fn derivation_or_fod_hash<F>(&self, fn_get_derivation_or_fod_hash: F) -> NixHash
|
||||
where
|
||||
F: Fn(&str) -> NixHash,
|
||||
F: Fn(&StorePathRef) -> NixHash,
|
||||
{
|
||||
// Fixed-output derivations return a fixed hash.
|
||||
// Non-Fixed-output derivations return a hash of the ATerm notation, but with all
|
||||
|
|
@ -178,10 +180,13 @@ impl Derivation {
|
|||
// derivation_or_fod_hash, and replace the derivation path with it's HEXLOWER
|
||||
// digest.
|
||||
// This is not the [NixHash::to_nix_hash_string], but without the sha256: prefix).
|
||||
for (drv_path, output_names) in &self.input_derivations {
|
||||
for (drv_path_str, output_names) in &self.input_derivations {
|
||||
// parse drv_path to StorePathRef
|
||||
let drv_path = StorePathRef::from_absolute_path(drv_path_str.as_bytes())
|
||||
.expect("invalid input derivation path");
|
||||
replaced_input_derivations.insert(
|
||||
data_encoding::HEXLOWER
|
||||
.encode(fn_get_derivation_or_fod_hash(drv_path).digest_as_bytes()),
|
||||
.encode(fn_get_derivation_or_fod_hash(&drv_path).digest_as_bytes()),
|
||||
output_names.clone(),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue