summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHilton Chain <hako@ultrarare.space>2025-07-02 18:40:54 +0800
committerHilton Chain <hako@ultrarare.space>2025-11-03 20:06:14 +0800
commit2142fce0562b6bf3f7f5460e069ddf377e5a62b2 (patch)
tree347a5ca92e6a038ad9baae9d99a63725a938f811
parent48ddcb0b686249a094dc4c92863e3d08c8631825 (diff)
profiles: package->manifest-entry: Filter packages.
The new Rust packaging model moves sources to inputs and there'll be possiblity to have sources in propagated-inputs as well. * guix/profiles.scm (package->manifest-entry): Filter packages. * tests/profiles.scm ("package->manifest-entry, origin in propagated inputs"): New test. Change-Id: Id5b9ceb693a35760289b04cd9b8f208b4cbf2e35
-rw-r--r--guix/profiles.scm19
-rw-r--r--tests/profiles.scm11
2 files changed, 22 insertions, 8 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm
index 8cf4903fb8d..831f69b11c9 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -384,14 +384,17 @@ file name."
(properties (default-package-properties package)))
"Return a manifest entry for the OUTPUT of package PACKAGE."
;; For each dependency, keep a promise pointing to its "parent" entry.
- (letrec* ((deps (map (match-lambda
- ((label package)
- (package->manifest-entry package
- #:parent (delay entry)))
- ((label package output)
- (package->manifest-entry package output
- #:parent (delay entry))))
- (package-propagated-inputs package)))
+ (letrec* ((deps (filter-map
+ (match-lambda
+ ((label (? package? package))
+ (package->manifest-entry package
+ #:parent (delay entry)))
+ ((label (? package? package) output)
+ (package->manifest-entry package output
+ #:parent (delay entry)))
+ (_
+ #f))
+ (package-propagated-inputs package)))
(entry (manifest-entry
(name (package-name package))
(version (package-version package))
diff --git a/tests/profiles.scm b/tests/profiles.scm
index e448137cff1..f63c0773cb3 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -521,6 +521,17 @@
(manifest-entry-search-paths
(package->manifest-entry mpl)))))
+(test-assert "package->manifest-entry, origin in propagated inputs"
+ ;; See <https://codeberg.org/guix/guix/pulls/969>
+ (let ((p1 (dummy-package "pkg"))
+ (p2 (dummy-package "pkg"
+ (propagated-inputs
+ (list (package-source %bootstrap-guile)))))
+ (package->manifest-entry-dependencies
+ (compose manifest-entry-dependencies package->manifest-entry)))
+ (and (null? (package->manifest-entry-dependencies p1))
+ (null? (package->manifest-entry-dependencies p2)))))
+
(test-assert "packages->manifest, no duplicates"
(let ((expected
(manifest