store: Add 'hash-part->path'.
* guix/store.scm (hash-part->path): New procedure. * tests/store.scm ("hash-part->path"): New test.master
parent
1a8ea0a188
commit
11e7a6cf46
|
@ -57,6 +57,7 @@
|
||||||
set-build-options
|
set-build-options
|
||||||
valid-path?
|
valid-path?
|
||||||
query-path-hash
|
query-path-hash
|
||||||
|
hash-part->path
|
||||||
add-text-to-store
|
add-text-to-store
|
||||||
add-to-store
|
add-to-store
|
||||||
build-derivations
|
build-derivations
|
||||||
|
@ -501,6 +502,18 @@ encoding conversion errors."
|
||||||
"Return the SHA256 hash of PATH as a bytevector."
|
"Return the SHA256 hash of PATH as a bytevector."
|
||||||
base16)
|
base16)
|
||||||
|
|
||||||
|
(define hash-part->path
|
||||||
|
(let ((query-path-from-hash-part
|
||||||
|
(operation (query-path-from-hash-part (string hash))
|
||||||
|
#f
|
||||||
|
store-path)))
|
||||||
|
(lambda (server hash-part)
|
||||||
|
"Return the store path whose hash part is HASH-PART (a nix-base32
|
||||||
|
string). Raise an error if no such path exists."
|
||||||
|
;; This RPC is primarily used by Hydra to reply to HTTP GETs of
|
||||||
|
;; /HASH.narinfo.
|
||||||
|
(query-path-from-hash-part server hash-part))))
|
||||||
|
|
||||||
(define add-text-to-store
|
(define add-text-to-store
|
||||||
;; A memoizing version of `add-to-store', to avoid repeated RPCs with
|
;; A memoizing version of `add-to-store', to avoid repeated RPCs with
|
||||||
;; the very same arguments during a given session.
|
;; the very same arguments during a given session.
|
||||||
|
|
|
@ -87,7 +87,12 @@
|
||||||
(%store-prefix)
|
(%store-prefix)
|
||||||
"/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7/bin/guile")))))
|
"/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7/bin/guile")))))
|
||||||
|
|
||||||
(test-skip (if %store 0 10))
|
(test-skip (if %store 0 11))
|
||||||
|
|
||||||
|
(test-assert "hash-part->path"
|
||||||
|
(let ((p (add-text-to-store %store "hello" "hello, world")))
|
||||||
|
(equal? (hash-part->path %store (store-path-hash-part p))
|
||||||
|
p)))
|
||||||
|
|
||||||
(test-assert "dead-paths"
|
(test-assert "dead-paths"
|
||||||
(let ((p (add-text-to-store %store "random-text" (random-text))))
|
(let ((p (add-text-to-store %store "random-text" (random-text))))
|
||||||
|
|
Reference in New Issue