From 944492bd797703f18300672f92e296733295fbd4 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 29 Mar 2019 09:13:29 +0000 Subject: Deduplicate inferior packages As sometimes there can be duplicates, for example with deprecated packages. --- guix-data-service/jobs/load-new-guix-revision.scm | 34 ++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/guix-data-service/jobs/load-new-guix-revision.scm b/guix-data-service/jobs/load-new-guix-revision.scm index 071457e..056432a 100644 --- a/guix-data-service/jobs/load-new-guix-revision.scm +++ b/guix-data-service/jobs/load-new-guix-revision.scm @@ -118,10 +118,42 @@ (append (map list supported-system-pairs) supported-system-cross-build-pairs))) +(define (deduplicate-inferior-packages packages) + (pair-fold + (lambda (pair result) + (if (null? (cdr pair)) + (cons (first pair) result) + (let* ((a (first pair)) + (b (second pair)) + (a-name (inferior-package-name a)) + (b-name (inferior-package-name b)) + (a-version (inferior-package-version a)) + (b-version (inferior-package-version b))) + (if (and (string=? a-name b-name) + (string=? a-version b-version)) + (begin + (simple-format (current-error-port) + "warning: ignoring duplicate package: ~A (~A)\n" + a-name + a-version) + result) + (cons a result))))) + '() + (sort packages + (lambda (a b) + (let ((a-name (inferior-package-name a)) + (b-name (inferior-package-name b))) + (if (string=? a-name b-name) + (stringpackage-derivation-ids store conn inf) (let* ((packages (log-time "fetching inferior packages" (lambda () - (inferior-packages inf)))) + (deduplicate-inferior-packages + (inferior-packages inf))))) (packages-metadata-ids (log-time "fetching inferior package metadata" (lambda () -- cgit v1.2.3