diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-20 08:33:49 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-20 08:33:57 +0900 |
| commit | f31b101ce1e921a026ba234b1f0a83b0392bc118 (patch) | |
| tree | b7ac2aa84d71ebd162cc21aeab0240e7e0544988 /crates/shirabe/src/dependency_resolver/rule_set_generator.rs | |
| parent | 5e31fa33c3b5cf726a57a063b8e7a070869250fe (diff) | |
| download | php-shirabe-f31b101ce1e921a026ba234b1f0a83b0392bc118.tar.gz php-shirabe-f31b101ce1e921a026ba234b1f0a83b0392bc118.tar.zst php-shirabe-f31b101ce1e921a026ba234b1f0a83b0392bc118.zip | |
fix(compile): fix all remaining compile errors
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/rule_set_generator.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/rule_set_generator.rs | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/crates/shirabe/src/dependency_resolver/rule_set_generator.rs b/crates/shirabe/src/dependency_resolver/rule_set_generator.rs index 6cbe93b..91533b3 100644 --- a/crates/shirabe/src/dependency_resolver/rule_set_generator.rs +++ b/crates/shirabe/src/dependency_resolver/rule_set_generator.rs @@ -213,12 +213,18 @@ impl RuleSetGenerator { .as_any() .downcast_ref::<IgnoreListPlatformRequirementFilter>( ) { + let fallback = constraint.clone_box(); constraint = ignore_list_filter .filter_constraint(link.get_target(), constraint, true) - .unwrap_or(constraint); + .unwrap_or(fallback); } - let possible_requires = self.pool.what_provides(link.get_target(), &*constraint); + let possible_requires: Vec<Box<dyn PackageInterface>> = self + .pool + .what_provides(link.get_target(), Some(&*constraint)) + .into_iter() + .map(|p| p.clone_package_box()) + .collect(); let rule = self.create_require_rule( &*package, @@ -262,12 +268,15 @@ impl RuleSetGenerator { .as_any() .downcast_ref::<IgnoreListPlatformRequirementFilter>( ) { + let fallback = constraint.clone_box(); constraint = ignore_list_filter .filter_constraint(link.get_target(), constraint, false) - .unwrap_or(constraint); + .unwrap_or(fallback); } - let conflicts = self.pool.what_provides(link.get_target(), &*constraint); + let conflicts = self + .pool + .what_provides(link.get_target(), Some(&*constraint)); for conflict in &conflicts { // define the conflict rule for regular packages, for alias packages it's only needed if the name @@ -341,7 +350,7 @@ impl RuleSetGenerator { Box::new(PhpMixed::Null), // reasonData: $package (BasePackage) ); let rule = self.create_install_one_of_rule( - &[package.clone_box()], + &[package.clone_package_box()], rule::RULE_FIXED, PhpMixed::Array(reason_data), ); @@ -356,15 +365,24 @@ impl RuleSetGenerator { .as_any() .downcast_ref::<IgnoreListPlatformRequirementFilter>( ) { + let fallback = constraint.clone_box(); constraint = ignore_list_filter .filter_constraint(package_name, constraint, true) - .unwrap_or(constraint); + .unwrap_or(fallback); } - let packages = self.pool.what_provides(package_name, &*constraint); + let packages: Vec<Box<dyn PackageInterface>> = self + .pool + .what_provides(package_name, Some(&*constraint)) + .into_iter() + .map(|p| p.clone_package_box()) + .collect(); if !packages.is_empty() { for package in &packages { - self.add_rules_for_package(package.clone_box(), platform_requirement_filter); + self.add_rules_for_package( + package.clone_package_box(), + platform_requirement_filter, + ); } let mut reason_data: IndexMap<String, Box<PhpMixed>> = IndexMap::new(); @@ -392,7 +410,13 @@ impl RuleSetGenerator { &mut self, platform_requirement_filter: &dyn PlatformRequirementFilterInterface, ) { - for package in self.pool.get_packages() { + let packages: Vec<Box<dyn BasePackage>> = self + .pool + .get_packages() + .iter() + .map(|p| p.clone_box()) + .collect(); + for package in &packages { // ensure that rules for root alias packages and aliases of packages which were loaded are also loaded // even if the alias itself isn't required, otherwise a package could be installed without its alias which // leads to unexpected behavior @@ -406,7 +430,7 @@ impl RuleSetGenerator { .contains_key(&alias_pkg.get_alias_of().get_id()) { self.add_rules_for_package( - package.clone_box(), + package.clone_package_box(), platform_requirement_filter, ); } |
