aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-07-03 22:36:56 +0200
committerLudovic Courtès <ludo@gnu.org>2019-07-03 23:44:19 +0200
commitc14a2b289d2dd2fc2240e8ae226fadfa957fc587 (patch)
treeeb35554470ab77dddfaec2c1e53d52f884008cf8
parent1653b23564b7de02440820d07ed067318ebf13b4 (diff)
downloadguix-c14a2b289d2dd2fc2240e8ae226fadfa957fc587.tar.gz
guix-c14a2b289d2dd2fc2240e8ae226fadfa957fc587.zip
derivations: Avoid another call to 'read-derivation-from-file'.
This is a followup to 5cf4b26d52bcea382d98fb4becce89be9ee37b55. * guix/derivations.scm (derivation-path->base16-hash): Rename to... (derivation-base16-hash): ... this, and take a <derivation> rather than a file name. Use 'mlambdaq' instead of 'mlambda'. (derivation/masked-inputs): Adjust accordingly. (invalidate-derivation-caches!): Likewise.
-rw-r--r--guix/derivations.scm17
1 files changed, 7 insertions, 10 deletions
diff --git a/guix/derivations.scm b/guix/derivations.scm
index 4e969cb1a0..8ce96ce62a 100644
--- a/guix/derivations.scm
+++ b/guix/derivations.scm
@@ -652,12 +652,10 @@ list of name/path pairs of its outputs."
;;; Derivation primitive.
;;;
-(define derivation-path->base16-hash
- (mlambda (file)
- "Return a string containing the base16 representation of the hash of the
-derivation at FILE."
- (bytevector->base16-string
- (derivation-hash (read-derivation-from-file file)))))
+(define derivation-base16-hash
+ (mlambdaq (drv)
+ "Return a string containing the base16 representation of the hash of DRV."
+ (bytevector->base16-string (derivation-hash drv))))
(define (derivation/masked-inputs drv)
"Assuming DRV is a regular derivation (not fixed-output), replace the file
@@ -666,9 +664,8 @@ name of each input with that input's hash."
(($ <derivation> outputs inputs sources
system builder args env-vars)
(let ((inputs (map (match-lambda
- (($ <derivation-input> (= derivation-file-name path)
- sub-drvs)
- (let ((hash (derivation-path->base16-hash path)))
+ (($ <derivation-input> drv sub-drvs)
+ (let ((hash (derivation-base16-hash drv)))
(make-derivation-input hash sub-drvs))))
inputs)))
(make-derivation outputs
@@ -886,7 +883,7 @@ long-running processes that know what they're doing. Use with care!"
;; Typically this is meant to be used by Cuirass and Hydra, which can clear
;; caches when they start evaluating packages for another architecture.
(invalidate-memoization! derivation->bytevector)
- (invalidate-memoization! derivation-path->base16-hash)
+ (invalidate-memoization! derivation-base16-hash)
;; FIXME: Comment out to work around <https://bugs.gnu.org/36487>.
;; (hash-clear! %derivation-cache)