diff options
| author | Ricardo Wurmus <rekado@elephly.net> | 2026-02-16 21:20:12 +0100 |
|---|---|---|
| committer | Andreas Enge <andreas@enge.fr> | 2026-03-07 11:57:24 +0100 |
| commit | 647958d69a8bb94011c8ad216ec82f6bb3498f2a (patch) | |
| tree | ece92732a04c51bbca6716dd1997e086c23edd28 | |
| parent | 34df487128b444e071867cc6f45bb75853fe652c (diff) | |
import/cran: Use sets instead of lset-union.
* guix/import/cran.scm (cran-package-propagated-inputs): Replace lset-union
with actual sets, because the former does not remove duplicates of its
arguments.
Change-Id: I84c57c2426aef656bdd20e30e65b510e27603a64
| -rw-r--r-- | guix/import/cran.scm | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/guix/import/cran.scm b/guix/import/cran.scm index 9c31f50e3e0..e03f51d4739 100644 --- a/guix/import/cran.scm +++ b/guix/import/cran.scm @@ -750,17 +750,20 @@ REPOSITORY." (define (cran-package-propagated-inputs meta) "Return the list of <upstream-input> derived from dependency information in META." - (filter-map (lambda (name) - (and (not (member name - (append default-r-packages invalid-packages))) - (upstream-input - (name name) - (downstream-name (cran-guix-name name)) - (type 'propagated)))) - (lset-union equal? - (listify meta "Imports") - (listify meta "LinkingTo") - (delete "R" (listify meta "Depends"))))) + (let* ((skip (append default-r-packages invalid-packages)) + (packages (fold (lambda (current result) + (if (member current skip) result + (set-insert current result))) + (set) + (append (listify meta "Imports") + (listify meta "LinkingTo") + (delete "R" (listify meta "Depends")))))) + (map (lambda (name) + (upstream-input + (name name) + (downstream-name (cran-guix-name name)) + (type 'propagated))) + (set->list packages)))) (define* (cran-package-inputs meta repository #:key (download-source download)) |
