From cd041b268e9af4918a696f9f6f2b04e51a2d0599 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 4 May 2017 16:40:00 +0200 Subject: store: Add store path computation procedures. * guix/derivations.scm (compressed-hash, store-path) (output-path, fixed-output-path): Move to... * guix/store.scm: ... here. --- guix/derivations.scm | 52 ---------------------------------------------------- 1 file changed, 52 deletions(-) (limited to 'guix/derivations.scm') diff --git a/guix/derivations.scm b/guix/derivations.scm index d5e0f453e2..9aaab05ecb 100644 --- a/guix/derivations.scm +++ b/guix/derivations.scm @@ -76,7 +76,6 @@ derivation-name derivation-output-names fixed-output-derivation? - fixed-output-path offloadable-derivation? substitutable-derivation? substitution-oracle @@ -614,20 +613,6 @@ list of name/path pairs of its outputs." ;;; Derivation primitive. ;;; -(define (compressed-hash bv size) ; `compressHash' - "Given the hash stored in BV, return a compressed version thereof that fits -in SIZE bytes." - (define new (make-bytevector size 0)) - (define old-size (bytevector-length bv)) - (let loop ((i 0)) - (if (= i old-size) - new - (let* ((j (modulo i size)) - (o (bytevector-u8-ref new j))) - (bytevector-u8-set! new j - (logxor o (bytevector-u8-ref bv i))) - (loop (+ 1 i)))))) - (define derivation-path->base16-hash (mlambda (file) "Return a string containing the base16 representation of the hash of the @@ -674,43 +659,6 @@ derivation at FILE." ;; character. (sha256 (derivation->bytevector drv))))))) -(define (store-path type hash name) ; makeStorePath - "Return the store path for NAME/HASH/TYPE." - (let* ((s (string-append type ":sha256:" - (bytevector->base16-string hash) ":" - (%store-prefix) ":" name)) - (h (sha256 (string->utf8 s))) - (c (compressed-hash h 20))) - (string-append (%store-prefix) "/" - (bytevector->nix-base32-string c) "-" - name))) - -(define (output-path output hash name) ; makeOutputPath - "Return an output path for OUTPUT (the name of the output as a string) of -the derivation called NAME with hash HASH." - (store-path (string-append "output:" output) hash - (if (string=? output "out") - name - (string-append name "-" output)))) - -(define* (fixed-output-path name hash - #:key - (output "out") - (hash-algo 'sha256) - (recursive? #t)) - "Return an output path for the fixed output OUTPUT defined by HASH of type -HASH-ALGO, of the derivation NAME. RECURSIVE? has the same meaning as for -'add-to-store'." - (if (and recursive? (eq? hash-algo 'sha256)) - (store-path "source" hash name) - (let ((tag (string-append "fixed:" output ":" - (if recursive? "r:" "") - (symbol->string hash-algo) ":" - (bytevector->base16-string hash) ":"))) - (store-path (string-append "output:" output) - (sha256 (string->utf8 tag)) - name)))) - (define* (derivation store name builder args #:key (system (%current-system)) (env-vars '()) -- cgit v1.2.3