diff options
author | Ludovic Courtès <ludo@gnu.org> | 2014-03-14 17:16:10 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2014-03-14 17:16:10 +0100 |
commit | 11e7a6cf4612b83f3fe3ecfcce3e7c0b21ecf953 (patch) | |
tree | 929ef045e3f5be4e938a58b09d700052afe142e9 | |
parent | 1a8ea0a1885ca5fff85eb00fc79d6c6bcd47818a (diff) | |
download | guix-11e7a6cf4612b83f3fe3ecfcce3e7c0b21ecf953.tar guix-11e7a6cf4612b83f3fe3ecfcce3e7c0b21ecf953.tar.gz |
store: Add 'hash-part->path'.
* guix/store.scm (hash-part->path): New procedure.
* tests/store.scm ("hash-part->path"): New test.
-rw-r--r-- | guix/store.scm | 13 | ||||
-rw-r--r-- | tests/store.scm | 7 |
2 files changed, 19 insertions, 1 deletions
diff --git a/guix/store.scm b/guix/store.scm index 909ef195de..58f7e36762 100644 --- a/guix/store.scm +++ b/guix/store.scm @@ -57,6 +57,7 @@ set-build-options valid-path? query-path-hash + hash-part->path add-text-to-store add-to-store build-derivations @@ -501,6 +502,18 @@ encoding conversion errors." "Return the SHA256 hash of PATH as a bytevector." 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 ;; A memoizing version of `add-to-store', to avoid repeated RPCs with ;; the very same arguments during a given session. diff --git a/tests/store.scm b/tests/store.scm index 8a25c7353b..78023a423d 100644 --- a/tests/store.scm +++ b/tests/store.scm @@ -87,7 +87,12 @@ (%store-prefix) "/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" (let ((p (add-text-to-store %store "random-text" (random-text)))) |