diff options
author | Ludovic Courtès <ludo@gnu.org> | 2012-06-01 23:29:55 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2012-06-01 23:30:14 +0200 |
commit | 69f90f5c81419b55a4de0fd8324356f9116d9f74 (patch) | |
tree | dc3b243f8eff4004d29dcbeb7fa6f348772d4d46 /guix/derivations.scm | |
parent | 341c6fdd824bfdaa97ea024cafc741efe9a62060 (diff) | |
download | gnu-guix-69f90f5c81419b55a4de0fd8324356f9116d9f74.tar gnu-guix-69f90f5c81419b55a4de0fd8324356f9116d9f74.tar.gz |
Use libchop for cryptographic hashes and related.
* guix/derivations.scm (sha256): Rewrite using libchop's
`bytevector-hash'.
(derivation-hash): Add docstring.
Diffstat (limited to 'guix/derivations.scm')
-rw-r--r-- | guix/derivations.scm | 31 |
1 files changed, 7 insertions, 24 deletions
diff --git a/guix/derivations.scm b/guix/derivations.scm index d0e90a9952..9bdcdacf1f 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -24,6 +24,10 @@ #:use-module (rnrs bytevectors) #:use-module (ice-9 match) #:use-module (ice-9 rdelim) + #:use-module (guix store) + #:use-module ((chop hash) + #:select (bytevector-hash + hash-method/sha256)) #:export (derivation? derivation-outputs derivation-inputs @@ -184,32 +188,11 @@ that form." (display ")" port)))) (define (sha256 bv) - "Return the SHA256 of BV as an string of hexadecimal digits." - ;; XXX: Poor programmer's implementation that uses Coreutils. - (let ((in (pipe)) - (out (pipe)) - (pid (primitive-fork))) - (if (= 0 pid) - (begin ; child - (close (cdr in)) - (close (car out)) - (close 0) - (close 1) - (dup2 (fileno (car in)) 0) - (dup2 (fileno (cdr out)) 1) - (execlp "sha256sum" "sha256sum")) - (begin ; parent - (close (car in)) - (close (cdr out)) - (put-bytevector (cdr in) bv) - (close (cdr in)) ; EOF - (let ((line (car (string-tokenize (read-line (car out)))))) - (close (car out)) - (and (and=> (status:exit-val (cdr (waitpid pid))) - zero?) - line)))))) + "Return the SHA256 of BV as a bytevector." + (bytevector-hash hash-method/sha256 bv)) (define (derivation-hash drv) ; `hashDerivationModulo' in derivations.cc + "Return the hash of DRV, modulo its fixed-output inputs, as a bytevector." (match drv (($ <derivation> ((_ . ($ <derivation-output> path (? symbol? hash-algo) (? string? hash))))) |