From 201253674bca6a1bf5d45e2af46fbb5c34f060bf Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Tue, 12 Feb 2019 22:51:23 +0100 Subject: pull: Speed up the new/upgraded package computation. * guix/scripts/pull.scm (new/upgraded-packages): OLD no longer stores all the versions of each package. Remove 'vhash-fold*' call and reduce the number of 'version>?' calls when computing UPGRADED. --- guix/scripts/pull.scm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 408ff91978..730b6a0bf2 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -353,7 +353,13 @@ pairs, and return two values: the list of packages new in ALIST2, and the list of packages upgraded in ALIST2." (let* ((old (fold (match-lambda* (((name . version) table) - (vhash-cons name version table))) + (match (vhash-assoc name table) + (#f + (vhash-cons name version table)) + ((_ . previous-version) + (if (version>? version previous-version) + (vhash-cons name version table) + table))))) vlist-null alist1)) (new (remove (match-lambda @@ -362,11 +368,10 @@ of packages upgraded in ALIST2." alist2)) (upgraded (filter-map (match-lambda ((name . new-version) - (match (vhash-fold* cons '() name old) - (() #f) - ((= (cut sort <> version>?) old-versions) - (and (version>? new-version - (first old-versions)) + (match (vhash-assoc name old) + (#f #f) + ((_ . old-version) + (and (version>? new-version old-version) (string-append name "@" new-version)))))) alist2))) -- cgit v1.2.3