From b216124157b69edc7330291214a6043c555f0ade Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 2 May 2026 11:19:09 +0900 Subject: feat(resolver): honor --ignore-platform-reqs and wildcard patterns The pool builder and rule-set generator only consulted an exact-match HashSet, so `--ignore-platform-reqs` (no value) and `--ignore-platform-req=ext-foo-*` fell through to the SAT layer and produced "no matching package found" for transitive platform deps. Track the bool flag separately and run each platform name through `mozart_core::matches_wildcard` against the configured patterns. Unblocks four installer fixtures: install-{ignore-platform-package-requirement-wildcard,ignore-platform-package-requirements} update-{ignore-platform-package-requirement-wildcard,ignore-platform-package-requirements}. Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/mozart-registry/src/resolver.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'crates/mozart-registry/src') diff --git a/crates/mozart-registry/src/resolver.rs b/crates/mozart-registry/src/resolver.rs index 7aab6b2..710a9c4 100644 --- a/crates/mozart-registry/src/resolver.rs +++ b/crates/mozart-registry/src/resolver.rs @@ -231,7 +231,9 @@ fn should_skip_platform_dep( if ignore_platform_reqs { return true; } - ignore_platform_req_list.iter().any(|p| p == dep_name) + ignore_platform_req_list + .iter() + .any(|p| mozart_core::matches_wildcard(dep_name, p)) } // ───────────────────────────────────────────────────────────────────────────── @@ -412,13 +414,11 @@ pub async fn resolve(request: &ResolveRequest) -> Result, R // Set up ignore list for platform requirements let mut ignore_set: HashSet = HashSet::new(); - if request.ignore_platform_reqs { - // We'll skip platform deps in the loop below - } for name in &request.ignore_platform_req_list { ignore_set.insert(name.clone()); } builder.set_ignore_platform_reqs(ignore_set.clone()); + builder.set_ignore_all_platform_reqs(request.ignore_platform_reqs); // Add platform packages as fixed entries let platform_config = request.platform.to_versions(); @@ -560,6 +560,7 @@ pub async fn resolve(request: &ResolveRequest) -> Result, R // Generate rules let mut generator = RuleSetGenerator::new(&mut pool); generator.set_ignore_platform_reqs(ignore_set); + generator.set_ignore_all_platform_reqs(request.ignore_platform_reqs); let rules = generator.generate(&root_requires, &fixed_ids); // Create policy and solve -- cgit v1.3.1