[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#74654] [PATCH 2/5] packages: Optimize ‘all-packages’.
From: |
Simon Tournier |
Subject: |
[bug#74654] [PATCH 2/5] packages: Optimize ‘all-packages’. |
Date: |
Tue, 10 Dec 2024 15:05:57 +0100 |
Hi,
On Mon, 02 Dec 2024 at 17:53, Ludovic Courtès <ludo@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
- [bug#74654] [PATCH 0/5] Optimize 'all-packages'; add ungrafting manifest, Ludovic Courtès, 2024/12/02
- [bug#74654] [PATCH 1/5] etc: Move manifests to a separate directory., Ludovic Courtès, 2024/12/02
- [bug#74654] [PATCH 3/5] build-system/cargo: Simplify ‘crate-closure’., Ludovic Courtès, 2024/12/02
- [bug#74654] [PATCH 2/5] packages: Optimize ‘all-packages’., Ludovic Courtès, 2024/12/02
- [bug#74654] [PATCH 5/5] maint: Add ungrafting manifest., Ludovic Courtès, 2024/12/02
- [bug#74654] [PATCH 4/5] guix build: Last argument of ‘dependents’ is optional., Ludovic Courtès, 2024/12/02
- [bug#74654] [PATCH 0/5] Optimize 'all-packages'; add ungrafting manifest, Ludovic Courtès, 2024/12/12
- [bug#74654] [PATCH 0/5] Optimize 'all-packages'; add ungrafting manifest, Ludovic Courtès, 2024/12/12