Allow filtering package derivations based on build server builds
This means you can query for derivations where builds exist or don't exist on a given build server. I think this will come in useful when submitting builds from a Guix Data Service instance.
This commit is contained in:
parent
40035bcf9a
commit
6d403cbc8d
3 changed files with 80 additions and 0 deletions
|
|
@ -191,6 +191,8 @@ ORDER BY systems.system DESC,
|
|||
targets
|
||||
minimum-builds
|
||||
maximum-builds
|
||||
build-from-build-servers
|
||||
no-build-from-build-servers
|
||||
limit-results
|
||||
after-name
|
||||
(include-builds? #t)
|
||||
|
|
@ -238,6 +240,30 @@ ORDER BY systems.system DESC,
|
|||
) <= "
|
||||
(number->string maximum-builds)))
|
||||
'())
|
||||
,@(map
|
||||
(lambda (build-server-id)
|
||||
(string-append
|
||||
"
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM builds
|
||||
WHERE builds.derivation_output_details_set_id =
|
||||
derivations_by_output_details_set.derivation_output_details_set_id
|
||||
AND builds.build_server_id = " (number->string build-server-id) "
|
||||
)"))
|
||||
(or build-from-build-servers '()))
|
||||
,@(map
|
||||
(lambda (build-server-id)
|
||||
(string-append
|
||||
"
|
||||
NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM builds
|
||||
WHERE builds.derivation_output_details_set_id =
|
||||
derivations_by_output_details_set.derivation_output_details_set_id
|
||||
AND builds.build_server_id = " (number->string build-server-id) "
|
||||
)"))
|
||||
(or no-build-from-build-servers '()))
|
||||
,@(cond
|
||||
((eq? build-status #f) '())
|
||||
((eq? build-status 'failing)
|
||||
|
|
@ -382,6 +408,8 @@ ORDER BY derivations.file_name
|
|||
targets
|
||||
minimum-builds
|
||||
maximum-builds
|
||||
build-from-build-servers
|
||||
no-build-from-build-servers
|
||||
limit-results
|
||||
after-name
|
||||
(include-builds? #t)
|
||||
|
|
@ -429,6 +457,30 @@ ORDER BY derivations.file_name
|
|||
) <= "
|
||||
(number->string maximum-builds)))
|
||||
'())
|
||||
,@(map
|
||||
(lambda (build-server-id)
|
||||
(string-append
|
||||
"
|
||||
EXISTS(
|
||||
SELECT 1
|
||||
FROM builds
|
||||
WHERE builds.derivation_output_details_set_id =
|
||||
derivations_by_output_details_set.derivation_output_details_set_id
|
||||
AND builds.build_server_id = " (number->string build-server-id) "
|
||||
)"))
|
||||
(or build-from-build-servers '()))
|
||||
,@(map
|
||||
(lambda (build-server-id)
|
||||
(string-append
|
||||
"
|
||||
NOT EXISTS(
|
||||
SELECT 1
|
||||
FROM builds
|
||||
WHERE builds.derivation_output_details_set_id =
|
||||
derivations_by_output_details_set.derivation_output_details_set_id
|
||||
AND builds.build_server_id = " (number->string build-server-id) "
|
||||
)"))
|
||||
(or no-build-from-build-servers '()))
|
||||
,@(cond
|
||||
((eq? build-status #f) '())
|
||||
((eq? build-status 'failing)
|
||||
|
|
|
|||
|
|
@ -206,6 +206,10 @@
|
|||
(target ,parse-target #:multi-value)
|
||||
(maximum_builds ,parse-number)
|
||||
(minimum_builds ,parse-number)
|
||||
(build_from_build_server ,parse-number
|
||||
#:multi-value)
|
||||
(no_build_from_build_server ,parse-number
|
||||
#:multi-value)
|
||||
(build_status ,parse-derivation-build-status)
|
||||
(field ,identity #:multi-value
|
||||
#:default ("system" "target" "builds"))
|
||||
|
|
@ -1053,6 +1057,10 @@
|
|||
#:targets (assq-ref query-parameters 'target)
|
||||
#:maximum-builds (assq-ref query-parameters 'maximum_builds)
|
||||
#:minimum-builds (assq-ref query-parameters 'minimum_builds)
|
||||
#:build-from-build-servers (assq-ref query-parameters
|
||||
'build_from_build_server)
|
||||
#:no-build-from-build-servers (assq-ref query-parameters
|
||||
'no_build_from_build_server)
|
||||
#:build-status (and=> (assq-ref query-parameters
|
||||
'build_status)
|
||||
string->symbol)
|
||||
|
|
@ -1066,6 +1074,10 @@
|
|||
#:targets (assq-ref query-parameters 'target)
|
||||
#:maximum-builds (assq-ref query-parameters 'maximum_builds)
|
||||
#:minimum-builds (assq-ref query-parameters 'minimum_builds)
|
||||
#:build-from-build-servers (assq-ref query-parameters
|
||||
'build_from_build_server)
|
||||
#:no-build-from-build-servers (assq-ref query-parameters
|
||||
'no_build_from_build_server)
|
||||
#:build-status (and=> (assq-ref query-parameters
|
||||
'build_status)
|
||||
string->symbol)
|
||||
|
|
|
|||
|
|
@ -1548,6 +1548,12 @@ figure {
|
|||
("Failing" . "failing")
|
||||
("Unknown" . "unknown")))
|
||||
|
||||
(define build-server-options
|
||||
(map (match-lambda
|
||||
((id . url)
|
||||
(cons url id)))
|
||||
build-server-urls))
|
||||
|
||||
(define field-options
|
||||
(map
|
||||
(lambda (field)
|
||||
|
|
@ -1606,6 +1612,16 @@ figure {
|
|||
,(form-horizontal-control
|
||||
"Maximum builds" query-parameters
|
||||
#:help-text "Only show derivations with a maximum number of known builds.")
|
||||
,(form-horizontal-control
|
||||
"Build from build server" query-parameters
|
||||
#:options build-server-options
|
||||
#:help-text ""
|
||||
#:font-family "monospace")
|
||||
,(form-horizontal-control
|
||||
"No build from build server" query-parameters
|
||||
#:options build-server-options
|
||||
#:help-text ""
|
||||
#:font-family "monospace")
|
||||
,(form-horizontal-control
|
||||
"Build status" query-parameters
|
||||
#:allow-selecting-multiple-options #f
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue