summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-12 18:10:26 +0100
committerLudovic Courtès <ludo@gnu.org>2020-03-12 18:32:16 +0100
commit71bb485541328cdce214ada44be998570571bf36 (patch)
tree33cd5f5e7ca628443d2bc0de44ae100d0aae3128
parente0dbed64c530916ab600f193f5f6f6ad6177f7b3 (diff)
downloadguix-71bb485541328cdce214ada44be998570571bf36.tar.gz
weather: Add '--display-missing'.
* guix/scripts/weather.scm (report-server-coverage): Add
 #:display-missing? and honor it.
(show-help, %options): Add "--display-missing".
(guix-weather): Pass #:display-missing? to 'report-server-coverage'.
* doc/guix.texi (Invoking guix weather): Document it.
-rw-r--r--doc/guix.texi3
-rw-r--r--guix/scripts/weather.scm22
2 files changed, 21 insertions, 4 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index 4f8f7cfb2a..ca21857a31 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10860,6 +10860,9 @@ likewise for @code{qgpgme} and the 46 packages that depend on it.
 If you are a Guix developer, or if you are taking care of this build farm,
 you'll probably want to have a closer look at these packages: they may simply
 fail to build.
+
+@item --display-missing
+Display the list of store items for which substitutes are missing.
 @end table
 
 @node Invoking guix processes
diff --git a/guix/scripts/weather.scm b/guix/scripts/weather.scm
index 629844768a..60915d3451 100644
--- a/guix/scripts/weather.scm
+++ b/guix/scripts/weather.scm
@@ -175,8 +175,10 @@ about the derivations queued, as is the case with Hydra."
       #f                                          ;no derivation information
       (lset-intersection string=? queued items)))
 
-(define (report-server-coverage server items)
-  "Report the subset of ITEMS available as substitutes on SERVER."
+(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."
   (define MiB (* (expt 2 20) 1.))
 
   (format #t (G_ "looking for ~h store items on ~a...~%")
@@ -260,7 +262,12 @@ are queued~%")
                                system
                                (* (throughput builds build-timestamp)
                                   3600.))))
-                    (histogram build-system cons '() latest)))))))
+                    (histogram build-system cons '() latest))))
+
+      (when (and display-missing? (not (null? missing)))
+        (newline)
+        (format #t (G_ "Substitutes are missing for the following items:~%"))
+        (format #t "~{  ~a~%~}" missing)))))
 
 
 ;;;
@@ -281,6 +288,8 @@ Report the availability of substitutes.\n"))
                          show substitute coverage for packages with at least
                          COUNT dependents"))
   (display (G_ "
+      --display-missing  display the list of missing substitutes"))
+  (display (G_ "
   -s, --system=SYSTEM    consider substitutes for SYSTEM--e.g., \"i686-linux\""))
   (newline)
   (display (G_ "
@@ -318,6 +327,9 @@ Report the availability of substitutes.\n"))
                    (alist-cons 'coverage
                                (if arg (string->number* arg) 0)
                                result)))
+         (option '("display-missing") #f #f
+                 (lambda (opt name arg result)
+                   (alist-cons 'display-missing? #t result)))
          (option '(#\s "system") #t #f
                  (lambda (opt name arg result)
                    (alist-cons 'system arg result)))))
@@ -525,7 +537,9 @@ SERVER.  Display information for packages with at least THRESHOLD dependents."
                                     (package-outputs packages system))
                                   systems))))))
         (for-each (lambda (server)
-                    (report-server-coverage server items)
+                    (report-server-coverage server items
+                                            #:display-missing?
+                                            (assoc-ref opts 'display-missing?))
                     (match (assoc-ref opts 'coverage)
                       (#f #f)
                       (threshold