From 2142fce0562b6bf3f7f5460e069ddf377e5a62b2 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Wed, 2 Jul 2025 18:40:54 +0800 Subject: [PATCH] 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 --- guix/profiles.scm | 19 +++++++++++-------- tests/profiles.scm | 11 +++++++++++ 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 + (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