From 11e7a6cf4612b83f3fe3ecfcce3e7c0b21ecf953 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Fri, 14 Mar 2014 17:16:10 +0100 Subject: store: Add 'hash-part->path'. * guix/store.scm (hash-part->path): New procedure. * tests/store.scm ("hash-part->path"): New test. --- guix/store.scm | 13 +++++++++++++ tests/store.scm | 7 ++++++- 2 files changed, 19 insertions(+), 1 deletion(-) 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)))) -- cgit v1.2.3