Just log duplicates once, to avoid the duplicate logging

This commit is contained in:
Christopher Baines 2025-03-19 13:02:33 +00:00
parent de476a8b40
commit 1f9626d058

View file

@ -659,8 +659,9 @@
store
proc))
(define (sort-and-deduplicate-inferior-packages packages
pkg-to-replacement-hash-table)
(define* (sort-and-deduplicate-inferior-packages packages
pkg-to-replacement-hash-table
#:key log-duplicates?)
(let ((sorted-packages
(sort packages
(lambda (a b)
@ -727,6 +728,7 @@
(and (eq? #f a-replacement)
(eq? #f b-replacement))))
(begin
(when log-duplicates?
(simple-format (current-error-port)
"warning: ignoring duplicate package: ~A@~A (replacement: ~A, location: ~A)\n"
a-name
@ -735,13 +737,14 @@
(location-line a-location))
(print-packages-matching-name-and-version
a-name
a-version)
a-version))
result)
(cons a result)))))
'()
sorted-packages)))
(define (inferior-packages-plus-replacements inf)
(define* (inferior-packages-plus-replacements inf
#:key log-duplicates?)
(let* ((packages
;; The use of force in (guix inferior) introduces a continuation
;; barrier
@ -800,7 +803,8 @@
;; TODO Sort introduces a continuation barrier
(sort-and-deduplicate-inferior-packages
(append! packages non-exported-replacements)
pkg-to-replacement-hash-table)))))
pkg-to-replacement-hash-table
#:log-duplicates? log-duplicates?)))))
(deduplicated-packages-length
(length deduplicated-packages)))
@ -2099,7 +2103,9 @@ SELECT store_path FROM derivation_source_files WHERE id = $1"
(with-time-logging "getting all inferior package data"
(let ((packages
pkg-to-replacement-hash-table
(inferior-packages-plus-replacements inferior)))
(inferior-packages-plus-replacements
inferior
#:log-duplicates? #t)))
(all-inferior-packages-data
inferior
packages