diff options
-rw-r--r-- | guix-data-service/model/derivation.scm | 33 | ||||
-rw-r--r-- | guix-data-service/web/revision/html.scm | 16 |
2 files changed, 44 insertions, 5 deletions
diff --git a/guix-data-service/model/derivation.scm b/guix-data-service/model/derivation.scm index ca21525..9cb6ec6 100644 --- a/guix-data-service/model/derivation.scm +++ b/guix-data-service/model/derivation.scm @@ -108,8 +108,19 @@ (define (select-derivations-by-revision-name-and-version conn revision-commit-hash name version) (define query " -SELECT derivations.system, package_derivations.target, derivations.file_name, - latest_build_status.status +SELECT derivations.system, + package_derivations.target, + derivations.file_name, + JSON_AGG( + json_build_object( + 'build_server_id', builds.build_server_id, + 'status', latest_build_status.status, + 'timestamp', latest_build_status.timestamp, + 'build_for_equivalent_derivation', + builds.derivation_file_name != derivations.file_name + ) + ORDER BY latest_build_status.timestamp + ) FROM derivations INNER JOIN package_derivations ON derivations.id = package_derivations.derivation_id @@ -124,6 +135,8 @@ INNER JOIN derivations_by_output_details_set LEFT OUTER JOIN builds ON derivations_by_output_details_set.derivation_output_details_set_id = builds.derivation_output_details_set_id +LEFT OUTER JOIN build_servers + ON builds.build_server_id = build_servers.id LEFT OUTER JOIN ( SELECT DISTINCT ON (build_id) * FROM build_status @@ -133,11 +146,25 @@ LEFT OUTER JOIN ( WHERE guix_revisions.commit = $1 AND packages.name = $2 AND packages.version = $3 +GROUP BY derivations.system, + package_derivations.target, + derivations.file_name ORDER BY derivations.system DESC, package_derivations.target DESC, derivations.file_name") - (exec-query conn query (list revision-commit-hash name version))) + (map (match-lambda + ((system target file-name builds-json) + (list system + target + file-name + (filter (lambda (build) + (assoc-ref build "status")) + (vector->list + (json-string->scm builds-json)))))) + (exec-query conn + query + (list revision-commit-hash name version)))) (define* (select-derivations-in-revision conn commit-hash diff --git a/guix-data-service/web/revision/html.scm b/guix-data-service/web/revision/html.scm index 6007425..c50c487 100644 --- a/guix-data-service/web/revision/html.scm +++ b/guix-data-service/web/revision/html.scm @@ -237,13 +237,25 @@ (tbody ,@(map (match-lambda - ((system target file-name status) + ((system target file-name builds) `(tr (td (samp ,system)) (td (samp ,target)) (td (a (@ (href ,file-name)) ,(display-store-item-short file-name))) - (td ,(build-status-span status))))) + (td + (ul + (@ (class "list-inline")) + ,@(map (lambda (build) + `(li + (a (@ (href + ,(simple-format + #f "/build-server/~A/build?derivation_file_name=~A" + (assoc-ref build "build_server_id") + file-name))) + ,(build-status-span + (assoc-ref build "status"))))) + builds)))))) derivations))))) (div (@ (class "row")) |