M guix/profiles.scm => guix/profiles.scm +11 -8
@@ 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))
M tests/profiles.scm => tests/profiles.scm +11 -0
@@ 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