aboutsummaryrefslogtreecommitdiff
path: root/guix-build-coordinator/agent.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-04-23 18:27:38 +0100
committerChristopher Baines <mail@cbaines.net>2020-04-23 19:30:55 +0100
commitd1020a834a09a76cd5c98fe81ebad2968b193872 (patch)
treea6f623c9a8d012f50ecc0d06ccc733a951f2dfd0 /guix-build-coordinator/agent.scm
parent78287e9cc4a8c8f000ccb6e6e5641180274e0e8e (diff)
downloadbuild-coordinator-d1020a834a09a76cd5c98fe81ebad2968b193872.tar
build-coordinator-d1020a834a09a76cd5c98fe81ebad2968b193872.tar.gz
Send over some metadata from the agent for each output
This will hopefully make it easier to create narinfo files for the outputs. I think all of this information can be derived from the nar, but I'm not sure how to do that, so maybe this can eventually be removed.
Diffstat (limited to 'guix-build-coordinator/agent.scm')
-rw-r--r--guix-build-coordinator/agent.scm37
1 files changed, 27 insertions, 10 deletions
diff --git a/guix-build-coordinator/agent.scm b/guix-build-coordinator/agent.scm
index a528143..ec4860d 100644
--- a/guix-build-coordinator/agent.scm
+++ b/guix-build-coordinator/agent.scm
@@ -26,6 +26,7 @@
#:use-module (web http)
#:use-module (guix store)
#:use-module (guix derivations)
+ #:use-module (guix base32)
#:use-module (guix-build-coordinator utils)
#:use-module (guix-build-coordinator agent-messaging http)
#:export (run-agent))
@@ -145,13 +146,29 @@
(define (post-build uuid coordinator-uri password
build-id derivation)
- (for-each
- (match-lambda
- ((output-name . output)
- (submit-output coordinator-uri uuid password
- build-id output-name
- (derivation-output-path output))))
- (derivation-outputs (read-derivation-from-file derivation)))
-
- (submit-build-result coordinator-uri uuid password build-id
- '((result . success))))
+ (let ((output-details
+ (map
+ (match-lambda
+ ((output-name . output)
+ (submit-output coordinator-uri uuid password
+ build-id output-name
+ (derivation-output-path output))
+
+ (let ((path-info (with-store store
+ (query-path-info
+ store
+ (derivation-output-path output)))))
+ `((name . ,output-name)
+ (hash . ,(bytevector->nix-base32-string
+ (path-info-hash path-info)))
+ (size . ,(path-info-nar-size path-info))
+ (references . ,(list->vector
+ (map basename
+ (path-info-references path-info))))))))
+
+ (derivation-outputs (read-derivation-from-file derivation)))))
+
+ (submit-build-result
+ coordinator-uri uuid password build-id
+ `((result . success)
+ (outputs . ,(list->vector output-details))))))