diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-19 21:46:01 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-19 21:46:08 +0900 |
| commit | 5e31fa33c3b5cf726a57a063b8e7a070869250fe (patch) | |
| tree | 98522466966fa7df483cad174ab5fc03db39bc09 /crates/shirabe/src/dependency_resolver/pool_builder.rs | |
| parent | c839244d8d09f3036ebfee8eef7eb6b147e593ab (diff) | |
| download | php-shirabe-5e31fa33c3b5cf726a57a063b8e7a070869250fe.tar.gz php-shirabe-5e31fa33c3b5cf726a57a063b8e7a070869250fe.tar.zst php-shirabe-5e31fa33c3b5cf726a57a063b8e7a070869250fe.zip | |
fix(compile): fix more random compile errors
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/pool_builder.rs')
| -rw-r--r-- | crates/shirabe/src/dependency_resolver/pool_builder.rs | 54 |
1 files changed, 26 insertions, 28 deletions
diff --git a/crates/shirabe/src/dependency_resolver/pool_builder.rs b/crates/shirabe/src/dependency_resolver/pool_builder.rs index ea860f2..3043aaa 100644 --- a/crates/shirabe/src/dependency_resolver/pool_builder.rs +++ b/crates/shirabe/src/dependency_resolver/pool_builder.rs @@ -152,19 +152,12 @@ impl PoolBuilder { .into()); } - for locked_package in request.get_locked_repository().unwrap().get_packages() { + for locked_package in + CanonicalPackagesTrait::get_packages(request.get_locked_repository().unwrap()) + { if !self.is_update_allowed(&*locked_package) { - // remember which packages we skipped loading remote content for in this partial update - self.skipped_load - .entry(locked_package.get_name().to_string()) - .or_insert_with(Vec::new) - .push(locked_package.clone_box()); - for (_k, link) in &locked_package.get_replaces() { - self.skipped_load - .entry(link.get_target().to_string()) - .or_insert_with(Vec::new) - .push(locked_package.clone_box()); - } + // TODO(phase-b): PackageInterface lacks clone_box; PHP shares references. + // skipped_load population needs shared-ownership Rc<dyn PackageInterface>. // Path repo packages are never loaded from lock, to force them to always remain in sync // unless symlinking is disabled in which case we probably should rather treat them like @@ -188,7 +181,7 @@ impl PoolBuilder { } } - for package in request.get_fixed_or_locked_packages() { + for (_, package) in request.get_fixed_or_locked_packages() { // using MatchAllConstraint here because fixed packages do not need to retrigger // loading any packages self.loaded_packages.insert( @@ -369,8 +362,9 @@ impl PoolBuilder { &mut self, request: &Request, name: &str, - constraint: Box<dyn ConstraintInterface>, + constraint: &dyn ConstraintInterface, ) { + let constraint = constraint.clone_box(); // Skip platform requires at this stage if PlatformRepository::is_platform_package(name) { return; @@ -389,7 +383,7 @@ impl PoolBuilder { let root_requires = request.get_requires(); let mut constraint = constraint; if let Some(root_constraint) = root_requires.get(name) { - if !Intervals::is_subset_of(&*constraint, &**root_constraint) { + if !Intervals::is_subset_of(&*constraint, &**root_constraint)? { constraint = root_constraint.clone_box(); } } @@ -401,7 +395,7 @@ impl PoolBuilder { // MultiConstraint::create() will optimize anyway) if let Some(existing) = self.packages_to_load.get(name) { // Already marked for loading and this does not expand the constraint to be loaded, nothing to do - if Intervals::is_subset_of(&*constraint, &**existing) { + if Intervals::is_subset_of(&*constraint, &**existing).unwrap_or(false) { return; } @@ -419,7 +413,9 @@ impl PoolBuilder { // No need to load this package with this constraint because it is // a subset of the constraint with which we have already loaded packages - if Intervals::is_subset_of(&*constraint, &**self.loaded_packages.get(name).unwrap()) { + if Intervals::is_subset_of(&*constraint, &**self.loaded_packages.get(name).unwrap()) + .unwrap_or(false) + { return; } @@ -762,7 +758,7 @@ impl PoolBuilder { fn is_update_allowed(&self, package: &dyn BasePackage) -> bool { for pattern in &self.update_allow_list { let pattern_regexp = base_package::package_name_to_regexp(pattern); - if Preg::is_match(&pattern_regexp, PackageInterface::get_name(package), None) + if Preg::is_match3(&pattern_regexp, PackageInterface::get_name(package), None) .unwrap_or(false) { return true; @@ -786,8 +782,10 @@ impl PoolBuilder { let pattern_regexp = base_package::package_name_to_regexp(pattern); // update pattern matches a locked package? => all good - for package in request.get_locked_repository().unwrap().get_packages() { - if Preg::is_match(&pattern_regexp, PackageInterface::get_name(package), None) + for package in + CanonicalPackagesTrait::get_packages(request.get_locked_repository().unwrap()) + { + if Preg::is_match3(&pattern_regexp, PackageInterface::get_name(package), None) .unwrap_or(false) { continue 'outer; @@ -795,7 +793,7 @@ impl PoolBuilder { } // update pattern matches a root require? => all good, probably a new package for (package_name, _constraint) in &request.get_requires() { - if Preg::is_match(&pattern_regexp, package_name, None).unwrap_or(false) { + if Preg::is_match3(&pattern_regexp, package_name, None).unwrap_or(false) { if PlatformRepository::is_platform_package(package_name) { matched_platform_package = true; continue; @@ -855,7 +853,7 @@ impl PoolBuilder { self.mark_package_name_for_loading( request, &replacer_name, - Box::new(MatchAllConstraint::new()), + &MatchAllConstraint::new(), ); } else { let pkgs: Vec<Box<dyn BasePackage>> = @@ -895,7 +893,7 @@ impl PoolBuilder { // remove locked package by this name which was already initialized let locked_packages: Vec<Box<dyn BasePackage>> = request .get_locked_packages() - .iter() + .values() .map(|p| p.clone_box()) .collect(); for locked_package in &locked_packages { @@ -914,7 +912,7 @@ impl PoolBuilder { // that we load that replaced package in case an update to this package removes the replacement let fixed_or_locked: Vec<Box<dyn BasePackage>> = request .get_fixed_or_locked_packages() - .iter() + .values() .map(|p| p.clone_box()) .collect(); for fixed_or_locked_package in &fixed_or_locked { @@ -1049,7 +1047,7 @@ impl PoolBuilder { return pool; } - self.io.write_with_verbosity( + self.io.write3( &sprintf( "Pool optimizer completed in %.3f seconds", &[(microtime(true) - before).into()], @@ -1057,7 +1055,7 @@ impl PoolBuilder { true, io_interface::VERY_VERBOSE, ); - self.io.write_with_verbosity( + self.io.write3( &sprintf( "<info>Found %s package versions referenced in your dependency graph. %s (%d%%) were optimized away.</info>", &[ @@ -1100,7 +1098,7 @@ impl PoolBuilder { return pool; } - self.io.write_with_verbosity( + self.io.write3( &sprintf( "Security advisory pool filter completed in %.3f seconds", &[(microtime(true) - before).into()], @@ -1108,7 +1106,7 @@ impl PoolBuilder { true, io_interface::VERY_VERBOSE, ); - self.io.write_with_verbosity( + self.io.write3( &sprintf( "<info>Found %s package versions referenced in your dependency graph. %s (%d%%) were filtered away.</info>", &[ |
