From c14a2b289d2dd2fc2240e8ae226fadfa957fc587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Wed, 3 Jul 2019 22:36:56 +0200 Subject: 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 rather than a file name. Use 'mlambdaq' instead of 'mlambda'. (derivation/masked-inputs): Adjust accordingly. (invalidate-derivation-caches!): Likewise. --- guix/derivations.scm | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) (limited to 'guix/derivations.scm') 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." (($ outputs inputs sources system builder args env-vars) (let ((inputs (map (match-lambda - (($ (= derivation-file-name path) - sub-drvs) - (let ((hash (derivation-path->base16-hash path))) + (($ 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 . ;; (hash-clear! %derivation-cache) -- cgit v1.2.3