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
This commit is contained in:
Hilton Chain 2025-07-02 18:40:54 +08:00
parent 48ddcb0b68
commit 2142fce056
No known key found for this signature in database
GPG key ID: ACC66D09CA528292
2 changed files with 22 additions and 8 deletions

View file

@ -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))

View file

@ -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