[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#38408] [PATCH v2 5/5] guix: crate: Depublicated build and normal de
From: |
Martin Becze |
Subject: |
[bug#38408] [PATCH v2 5/5] guix: crate: Depublicated build and normal dependencies |
Date: |
Thu, 5 Dec 2019 15:05:35 -0500 |
* guix/import/crate.scm: (crate-version-dependencies): dedup deps
---
guix/import/crate.scm | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/guix/import/crate.scm b/guix/import/crate.scm
index 5683369b7a..f3c36ba516 100644
--- a/guix/import/crate.scm
+++ b/guix/import/crate.scm
@@ -109,14 +109,26 @@ record or #f if it was not found."
"Return the list of <crate-dependency> records of VERSION, a
<crate-version>."
(let* ((path (assoc-ref (crate-version-links version) "dependencies"))
- (url (string-append (%crate-base-url) path)))
- (match (assoc-ref (or (json-fetch url) '()) "dependencies")
- ((? vector? vector)
- (filter (lambda (dep)
- (not (eq? (crate-dependency-kind dep) 'dev)))
- (map json->crate-dependency (vector->list vector))))
- (_
- '()))))
+ (url (string-append (%crate-base-url) path))
+ (deps-list (match (assoc-ref (or (json-fetch url) '()) "dependencies")
+ ((? vector? vector) (vector->list vector))
+ (_
+ '())))
+ ;; turn the raw list into <dependency>'s and remove dev depenedencies
+ (deps (filter-map (lambda (json)
+ (let ((dep (json->crate-dependency json)))
+ (if (eq? (crate-dependency-kind dep) 'dev)
+ #f
+ dep)))
+ deps-list))
+ ;; split normal and build dependencies
+ (deps-normal deps-build (partition (lambda (dep)
+ (eq? (crate-dependency-kind dep)
'normal))
+ deps)))
+ ;;remove duplicate normal and build dependencies
+ (lset-union (lambda (a b)
+ (string= (crate-dependency-id a) (crate-dependency-id a)))
+ deps-normal deps-build)))
;;;
--
2.24.0
- [bug#38408] [PATCH v2 0/5] Semantic version aware recusive importer for crates, Martin Becze, 2019/12/05
- [bug#38408] [PATCH v2 4/5] added "#:skip-build? #t" to the output of (make-crate-sexp). Most the the packages imported will be libaries and won't need to build. The top level package will build them though., Martin Becze, 2019/12/05
- [bug#38408] [PATCH v2 1/5] gnu: added new function, find-packages-by-name*/direct, Martin Becze, 2019/12/05
- [bug#38408] [PATCH v2 3/5] Rewrote some of guix/import/crate.scm to use recursive-import-semver and updated script and test., Martin Becze, 2019/12/05
- [bug#38408] [PATCH v2 5/5] guix: crate: Depublicated build and normal dependencies,
Martin Becze <=
- [bug#38408] [PATCH v2 2/5] gnu: added new procedure, recusive-import-semver, Martin Becze, 2019/12/05