aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2022-09-14 15:26:30 +0100
committerChristopher Baines <mail@cbaines.net>2022-09-14 15:26:30 +0100
commitf31ca1a4a8ecba40435d4d6377c686e69c5b8cf2 (patch)
tree05e18ca3c2e30b6fb097b665c0b85b21107744eb
parent93069166f374be0959490e0811b89a5bd71a7a45 (diff)
downloadqa-frontpage-f31ca1a4a8ecba40435d4d6377c686e69c5b8cf2.tar
qa-frontpage-f31ca1a4a8ecba40435d4d6377c686e69c5b8cf2.tar.gz
Speed up viewing branches
-rw-r--r--guix-qa-frontpage/view/branch.scm37
1 files changed, 15 insertions, 22 deletions
diff --git a/guix-qa-frontpage/view/branch.scm b/guix-qa-frontpage/view/branch.scm
index c68a1b9..d472d03 100644
--- a/guix-qa-frontpage/view/branch.scm
+++ b/guix-qa-frontpage/view/branch.scm
@@ -14,7 +14,7 @@
"")
(let ((system (assoc-ref change "system")))
`((,system
- . ,(append
+ . ,(append!
(map
(lambda (build)
`(,@build
@@ -58,25 +58,18 @@
(assoc-ref b "version"))))
(define (group-builds-by-package builds)
- (fold
- (lambda (build result)
- (let ((package (assoc-ref build "package")))
- `((,package . ,(cons
- build
- (or
- (and=> (find (match-lambda
- ((p . _)
- (package-eq? p package)))
- result)
- cdr)
- '())))
- ,@(remove
- (match-lambda
- ((p . _)
- (package-eq? p package)))
- result))))
- '()
- builds))
+ (let ((result (make-hash-table)))
+ (for-each
+ (lambda (build)
+ (let ((package (assoc-ref build "package")))
+ (hash-set! result
+ package
+ (cons build
+ (or (hash-ref result package)
+ '())))))
+ builds)
+
+ (hash-map->list cons result)))
(define systems
(map car builds-by-system))
@@ -162,8 +155,8 @@
(all-systems
(delete-duplicates
- (append (map car base-builds)
- (map car target-builds))))
+ (append! (map car base-builds)
+ (map car target-builds))))
(categorised-base-builds-by-system
(categorise-builds all-systems base-builds))