GNU bug report logs -
#74654
[PATCH 0/5] Optimize 'all-packages'; add ungrafting manifest
Previous Next
Reported by: Ludovic Courtès <ludo <at> gnu.org>
Date: Mon, 2 Dec 2024 16:53:02 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
Hi,
On Mon, 02 Dec 2024 at 17:53, Ludovic Courtès <ludo <at> gnu.org> wrote:
> - (delete-duplicates
> - (fold-packages (lambda (package result)
> - (match (package-replacement package)
> - ((? package? replacement)
> - (cons* replacement package result))
> - (#f
> - (cons package result))))
> - '()
> + ;; Note: 'fold-packages' never traverses the same package twice but
> + ;; replacements break that (they may or may not be visible to
> + ;; 'fold-packages'), hence this hash table to track visited packages.
> + (define visited (make-hash-table))
>
> - ;; Dismiss deprecated packages but keep hidden packages.
> - #:select? (negate package-superseded))
> - eq?)))
> + (fold-packages (lambda (package result)
> + (if (hashq-ref visited package)
> + result
> + (begin
> + (hashq-set! visited package #t)
> + (match (package-replacement package)
> + ((? package? replacement)
> + (hashq-set! visited replacement #t)
> + (cons* replacement package result))
> + (#f
> + (cons package result))))))
> + '()
> +
> + ;; Dismiss deprecated packages but keep hidden packages.
> + #:select? (negate package-superseded))))
Oh! This is a better implementation, indeed. :-)
LGTM.
Cheers,
simon
This bug report was last modified 158 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.