diff options
author | Christopher Baines <mail@cbaines.net> | 2022-09-14 15:26:30 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2022-09-14 15:26:30 +0100 |
commit | f31ca1a4a8ecba40435d4d6377c686e69c5b8cf2 (patch) | |
tree | 05e18ca3c2e30b6fb097b665c0b85b21107744eb | |
parent | 93069166f374be0959490e0811b89a5bd71a7a45 (diff) | |
download | qa-frontpage-f31ca1a4a8ecba40435d4d6377c686e69c5b8cf2.tar qa-frontpage-f31ca1a4a8ecba40435d4d6377c686e69c5b8cf2.tar.gz |
Speed up viewing branches
-rw-r--r-- | guix-qa-frontpage/view/branch.scm | 37 |
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)) |