diff options
author | Florian Klink <flokli@flokli.de> | 2024-03-14T11·50+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2024-03-14T16·52+0000 |
commit | 43c851bc841bccc65ffddab7205783c43f25417f (patch) | |
tree | 74249d4df9d5c82f5e12b345a62728bbeaed157f /tvix/nix-compat/src/derivation/mod.rs | |
parent | 35f636b68482d8c84939b4707514a48416557bb4 (diff) |
refactor(nix-compat/store_path): take [u8;32] for outer fingerprint r/7691
The outer fingerprint used for store path calculation is always a sha256 digest. This includes both input and output-addressed store paths. We used a NixHash here, which can also represent other hash types, and that had a bunch of annoyances: - Whenever we had the bytes, we had to wrap them in a NixHash::Sha256(). - Things like AtermWriteable had to be implemented on NixHash, even though we then had an assertion it was only called in the NixHash::Sha256 case. Change-Id: Ic895503d9b071800d2e52ae057666f44bd0ab9d6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/11142 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: John Ericson <git@johnericson.me> Reviewed-by: picnoir picnoir <picnoir@alternativebit.fr>
Diffstat (limited to 'tvix/nix-compat/src/derivation/mod.rs')
-rw-r--r-- | tvix/nix-compat/src/derivation/mod.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/tvix/nix-compat/src/derivation/mod.rs b/tvix/nix-compat/src/derivation/mod.rs index 848f1a31ff36..9a7dd04c11c4 100644 --- a/tvix/nix-compat/src/derivation/mod.rs +++ b/tvix/nix-compat/src/derivation/mod.rs @@ -178,8 +178,8 @@ impl Derivation { /// /// This is called `hashDerivationModulo` in nixcpp. /// - /// It returns a [NixHash], created by calculating the sha256 digest of - /// the derivation ATerm representation, except that: + /// It returns the sha256 digest of the derivation ATerm representation, + /// except that: /// - any input derivation paths have beed replaced "by the result of a /// recursive call to this function" and that /// - for fixed-output derivations the special @@ -190,16 +190,16 @@ impl Derivation { /// this function to provide a lookup function to lookup these calculation /// results of parent derivations at `fn_get_derivation_or_fod_hash` (by /// drv path). - pub fn derivation_or_fod_hash<F>(&self, fn_get_derivation_or_fod_hash: F) -> NixHash + pub fn derivation_or_fod_hash<F>(&self, fn_get_derivation_or_fod_hash: F) -> [u8; 32] where - F: Fn(&StorePathRef) -> NixHash, + F: Fn(&StorePathRef) -> [u8; 32], { // Fixed-output derivations return a fixed hash. // Non-Fixed-output derivations return the sha256 digest of the ATerm // notation, but with all input_derivation paths replaced by a recursive // call to this function. // We use fn_get_derivation_or_fod_hash here, so callers can precompute this. - NixHash::Sha256(self.fod_digest().unwrap_or({ + self.fod_digest().unwrap_or({ // For each input_derivation, look up the // derivation_or_fod_hash, and replace the derivation path with // it's HEXLOWER digest. @@ -216,7 +216,7 @@ impl Derivation { hasher.update(self.to_aterm_bytes_with_replacements(&input_derivations)); hasher.finalize().into() - })) + }) } /// This calculates all output paths of a Derivation and updates the struct. @@ -238,7 +238,7 @@ impl Derivation { pub fn calculate_output_paths( &mut self, name: &str, - derivation_or_fod_hash: &NixHash, + derivation_or_fod_hash: &[u8; 32], ) -> Result<(), DerivationError> { // The fingerprint and hash differs per output for (output_name, output) in self.outputs.iter_mut() { |