aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/pool_builder.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-27 00:49:33 +0900
committernsfisis <nsfisis@gmail.com>2026-05-27 00:54:09 +0900
commitcc5d73c05a0abca2eebcc8a6afa0b1543ee49850 (patch)
tree091a0d01232d927f13f3ab22700701804980f231 /crates/shirabe/src/dependency_resolver/pool_builder.rs
parentc5850d62beabef0a6bcc4cf6a179589c0ba8f405 (diff)
downloadphp-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.gz
php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.zst
php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.zip
refactor(package): pass package handles by value throughout
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.rs25
1 files changed, 15 insertions, 10 deletions
diff --git a/crates/shirabe/src/dependency_resolver/pool_builder.rs b/crates/shirabe/src/dependency_resolver/pool_builder.rs
index 0efaac5..489b358 100644
--- a/crates/shirabe/src/dependency_resolver/pool_builder.rs
+++ b/crates/shirabe/src/dependency_resolver/pool_builder.rs
@@ -164,7 +164,7 @@ impl PoolBuilder {
for locked_package in
CanonicalPackagesTrait::get_packages(request.get_locked_repository().unwrap())
{
- if !self.is_update_allowed(locked_package.as_rc().borrow().as_package_interface()) {
+ if !self.is_update_allowed(locked_package.clone()) {
// 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
// regular packages. We mark them specially so they can be reloaded fully including update propagation
@@ -221,7 +221,7 @@ impl PoolBuilder {
&package.get_stability(),
)
{
- self.load_package(request, &repositories, &package, false)?;
+ self.load_package(request, &repositories, package.clone(), false)?;
} else {
self.unacceptable_fixed_or_locked_packages.push(package);
}
@@ -578,7 +578,7 @@ impl PoolBuilder {
}
let _ = (pkg_name, pkg_version);
let propagate = !self.path_repo_unlocked.contains_key(&package.get_name());
- self.load_package(request, repositories, package, propagate)?;
+ self.load_package(request, repositories, package.clone(), propagate)?;
}
}
@@ -612,7 +612,7 @@ impl PoolBuilder {
&mut self,
request: &mut Request,
repositories: &Vec<Box<dyn RepositoryInterface>>,
- package: &BasePackageHandle,
+ package: BasePackageHandle,
propagate_update: bool,
) -> anyhow::Result<()> {
let index = self.index_counter;
@@ -805,10 +805,10 @@ impl PoolBuilder {
}
/// Checks whether the update allow list allows this package in the lock file to be updated
- fn is_update_allowed(&self, package: &dyn PackageInterface) -> bool {
+ fn is_update_allowed(&self, package: PackageInterfaceHandle) -> bool {
for pattern in &self.update_allow_list {
let pattern_regexp = base_package::package_name_to_regexp(pattern);
- if Preg::is_match3(&pattern_regexp, package.get_name(), None).unwrap_or(false) {
+ if Preg::is_match3(&pattern_regexp, &package.get_name(), None).unwrap_or(false) {
return true;
}
}
@@ -927,7 +927,7 @@ impl PoolBuilder {
.map(|(i, p)| (*i, p.clone()))
.collect();
for (index, package) in &entries {
- self.remove_loaded_package(request, repositories, package, *index);
+ self.remove_loaded_package(request, repositories, package.clone(), *index);
}
}
@@ -945,8 +945,13 @@ impl PoolBuilder {
// PHP uses array_search with strict identity; map to pointer comparison.
let index_opt = pkgs.iter().position(|p| p.ptr_eq(locked_package));
if let Some(index) = index_opt {
- request.unlock_package(locked_package);
- self.remove_loaded_package(request, repositories, locked_package, index as i64);
+ request.unlock_package(locked_package.clone());
+ self.remove_loaded_package(
+ request,
+ repositories,
+ locked_package.clone(),
+ index as i64,
+ );
// make sure that any requirements for this package by other locked or fixed packages are now
// also loaded, as they were previously ignored because the locked (now unlocked) package already
@@ -1025,7 +1030,7 @@ impl PoolBuilder {
&mut self,
_request: &Request,
repositories: &Vec<Box<dyn RepositoryInterface>>,
- package: &BasePackageHandle,
+ package: BasePackageHandle,
index: i64,
) {
let repos_box: Vec<Box<dyn RepositoryInterface>> =