aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-02-26 23:14:28 +0100
committerLudovic Courtès <ludo@gnu.org>2016-02-26 23:35:29 +0100
commit22572d56cb3da5b176b5b5697d4e8e71067eab74 (patch)
treeef1cdb100716ff5d58c9ae6f75db4e198fd647ba
parentacb01e37466a1d3fff81f10e00fe15a4ef20e2db (diff)
downloadpatches-22572d56cb3da5b176b5b5697d4e8e71067eab74.tar
patches-22572d56cb3da5b176b5b5697d4e8e71067eab74.tar.gz
store: 'path-info-deriver' is #f when there is no deriver.
* guix/store.scm (read-path-info): Use #f when we get the empty string for DERIVER. * guix/scripts/publish.scm (narinfo-string): Adjust accordingly. * tests/store.scm ("path-info-deriver"): New test.
-rw-r--r--guix/scripts/publish.scm2
-rw-r--r--guix/store.scm6
-rw-r--r--tests/store.scm15
3 files changed, 20 insertions, 3 deletions
diff --git a/guix/scripts/publish.scm b/guix/scripts/publish.scm
index 5306afcf07..46292131d7 100644
--- a/guix/scripts/publish.scm
+++ b/guix/scripts/publish.scm
@@ -164,7 +164,7 @@ References: ~a~%"
store-path url hash size references))
;; Do not render a "Deriver" or "System" line if we are rendering
;; info for a derivation.
- (info (if (string-null? deriver)
+ (info (if (not deriver)
base-info
(catch 'system-error
(lambda ()
diff --git a/guix/store.scm b/guix/store.scm
index 3d6cff4c21..8746d3c2d6 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -242,14 +242,16 @@
(define-record-type <path-info>
(path-info deriver hash references registration-time nar-size)
path-info?
- (deriver path-info-deriver)
+ (deriver path-info-deriver) ;string | #f
(hash path-info-hash)
(references path-info-references)
(registration-time path-info-registration-time)
(nar-size path-info-nar-size))
(define (read-path-info p)
- (let ((deriver (read-store-path p))
+ (let ((deriver (match (read-store-path p)
+ ("" #f)
+ (x x)))
(hash (base16-string->bytevector (read-string p)))
(refs (read-store-path-list p))
(registration-time (read-int p))
diff --git a/tests/store.scm b/tests/store.scm
index 9d651ce5a9..de070eab23 100644
--- a/tests/store.scm
+++ b/tests/store.scm
@@ -856,6 +856,21 @@
(string->utf8
(call-with-output-string (cut write-file item <>))))))))
+(test-assert "path-info-deriver"
+ (let* ((b (add-text-to-store %store "build" "echo $foo > $out" '()))
+ (s (add-to-store %store "bash" #t "sha256"
+ (search-bootstrap-binary "bash"
+ (%current-system))))
+ (d (derivation %store "the-thing"
+ s `("-e" ,b)
+ #:env-vars `(("foo" . ,(random-text)))
+ #:inputs `((,b) (,s))))
+ (o (derivation->output-path d)))
+ (and (build-derivations %store (list d))
+ (not (path-info-deriver (query-path-info %store b)))
+ (string=? (derivation-file-name d)
+ (path-info-deriver (query-path-info %store o))))))
+
(test-end "store")