aboutsummaryrefslogtreecommitdiff
path: root/guix-qa-frontpage/derivation-changes.scm
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2023-03-11 11:26:30 +0000
committerChristopher Baines <mail@cbaines.net>2023-03-11 11:26:30 +0000
commite7d3c6464df33b759718d8747e8a32be74d2957a (patch)
tree90970f993d9a4da0c66f362c111da1326b7f8b37 /guix-qa-frontpage/derivation-changes.scm
parent464e60e606e80b93969ed95a1e03d17aa31c5308 (diff)
downloadqa-frontpage-e7d3c6464df33b759718d8747e8a32be74d2957a.tar
qa-frontpage-e7d3c6464df33b759718d8747e8a32be74d2957a.tar.gz
Rework the branch page and data
This should address the performance problems, and begin to make this page useful.
Diffstat (limited to 'guix-qa-frontpage/derivation-changes.scm')
-rw-r--r--guix-qa-frontpage/derivation-changes.scm52
1 files changed, 51 insertions, 1 deletions
diff --git a/guix-qa-frontpage/derivation-changes.scm b/guix-qa-frontpage/derivation-changes.scm
index f339dce..fa286a3 100644
--- a/guix-qa-frontpage/derivation-changes.scm
+++ b/guix-qa-frontpage/derivation-changes.scm
@@ -20,7 +20,8 @@
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:export (builds-by-system-excluding-cross-builds
- categorise-builds))
+ categorise-builds
+ derivation-changes-counts))
(define (builds-by-system-excluding-cross-builds derivation-changes side)
(fold (lambda (package result)
@@ -123,3 +124,52 @@
(filter (lambda (system)
(not (member system systems)))
all-systems)))))
+
+(define (derivation-changes-counts derivation-changes all-systems)
+ (let* ((base-builds
+ (builds-by-system-excluding-cross-builds
+ derivation-changes "base"))
+ (target-builds
+ (builds-by-system-excluding-cross-builds
+ derivation-changes "target"))
+
+ (categorised-base-builds-by-system
+ (categorise-builds all-systems base-builds))
+ (categorised-target-builds-by-system
+ (categorise-builds all-systems target-builds)))
+
+ (if (null? target-builds)
+ '()
+ (map
+ (match-lambda
+ ((system . categorised-target-builds)
+ (let ((categorised-base-builds
+ (assoc-ref categorised-base-builds-by-system
+ system)))
+ (cons
+ system
+ (map (lambda (side)
+ (cons side
+ (map (lambda (status)
+ (cons status
+ (length
+ (assoc-ref
+ (if (eq? side 'base)
+ categorised-base-builds
+ categorised-target-builds)
+ status))))
+ '(succeeding failing blocked unknown))))
+ '(base target))))))
+ (sort
+ categorised-target-builds-by-system
+ (lambda (a b)
+ (< (or (list-index
+ (lambda (s)
+ (string=? (car a) s))
+ all-systems)
+ 10)
+ (or (list-index
+ (lambda (s)
+ (string=? (car b) s))
+ all-systems)
+ 10))))))))