weather: Exit with non-zero when coverage is below 100%.
* guix/scripts/weather.scm (report-server-coverage): Return the coverage ratio. (guix-weather): Exit if and only if each server's coverage is 1.master
parent
10b99ddf45
commit
be764b47ad
|
@ -10809,8 +10809,11 @@ guix weather @var{options}@dots{} [@var{packages}@dots{}]
|
|||
When @var{packages} is omitted, @command{guix weather} checks the availability
|
||||
of substitutes for @emph{all} the packages, or for those specified with
|
||||
@option{--manifest}; otherwise it only considers the specified packages. It
|
||||
is also possible to query specific system types with @option{--system}. The
|
||||
available options are listed below.
|
||||
is also possible to query specific system types with @option{--system}.
|
||||
@command{guix weather} exits with a non-zero code when the fraction of
|
||||
available substitutes is below 100%.
|
||||
|
||||
The available options are listed below.
|
||||
|
||||
@table @code
|
||||
@item --substitute-urls=@var{urls}
|
||||
|
|
|
@ -178,7 +178,8 @@ about the derivations queued, as is the case with Hydra."
|
|||
(define* (report-server-coverage server items
|
||||
#:key display-missing?)
|
||||
"Report the subset of ITEMS available as substitutes on SERVER.
|
||||
When DISPLAY-MISSING? is true, display the list of missing substitutes."
|
||||
When DISPLAY-MISSING? is true, display the list of missing substitutes.
|
||||
Return the coverage ratio, an exact number between 0 and 1."
|
||||
(define MiB (* (expt 2 20) 1.))
|
||||
|
||||
(format #t (G_ "looking for ~h store items on ~a...~%")
|
||||
|
@ -267,7 +268,11 @@ are queued~%")
|
|||
(when (and display-missing? (not (null? missing)))
|
||||
(newline)
|
||||
(format #t (G_ "Substitutes are missing for the following items:~%"))
|
||||
(format #t "~{ ~a~%~}" missing)))))
|
||||
(format #t "~{ ~a~%~}" missing))
|
||||
|
||||
;; Return the coverage ratio.
|
||||
(let ((total (length items)))
|
||||
(/ (- total (length missing)) total)))))
|
||||
|
||||
|
||||
;;;
|
||||
|
@ -538,16 +543,20 @@ SERVER. Display information for packages with at least THRESHOLD dependents."
|
|||
(lambda (system)
|
||||
(package-outputs packages system))
|
||||
systems))))))
|
||||
(for-each (lambda (server)
|
||||
(exit
|
||||
(every (lambda (server)
|
||||
(define coverage
|
||||
(report-server-coverage server items
|
||||
#:display-missing?
|
||||
(assoc-ref opts 'display-missing?))
|
||||
(match (assoc-ref opts 'coverage)
|
||||
(#f #f)
|
||||
(threshold
|
||||
(report-package-coverage server packages systems
|
||||
#:threshold threshold))))
|
||||
urls)))))
|
||||
(assoc-ref opts 'display-missing?)))
|
||||
(match (assoc-ref opts 'coverage)
|
||||
(#f #f)
|
||||
(threshold
|
||||
(report-package-coverage server packages systems
|
||||
#:threshold threshold)))
|
||||
|
||||
(= 1 coverage))
|
||||
urls))))))
|
||||
|
||||
;;; Local Variables:
|
||||
;;; eval: (put 'let/time 'scheme-indent-function 1)
|
||||
|
|
Reference in New Issue