summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2026-02-16 21:20:12 +0100
committerAndreas Enge <andreas@enge.fr>2026-03-07 11:57:24 +0100
commit647958d69a8bb94011c8ad216ec82f6bb3498f2a (patch)
treeece92732a04c51bbca6716dd1997e086c23edd28
parent34df487128b444e071867cc6f45bb75853fe652c (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.scm25
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))