aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver/pool_builder.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-31 21:34:47 +0900
committernsfisis <nsfisis@gmail.com>2026-06-01 01:45:00 +0900
commit20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d (patch)
treed1fc3aaee3b2829d71f49581e1abc86ee62e525f /crates/shirabe/src/dependency_resolver/pool_builder.rs
parent29df13733ae4acfd2b172bc9fd9ac9fd28efa013 (diff)
downloadphp-shirabe-20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d.tar.gz
php-shirabe-20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d.tar.zst
php-shirabe-20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d.zip
fix(package): port every PHP clone operator to handle dup()HEADmain
Diffstat (limited to 'crates/shirabe/src/dependency_resolver/pool_builder.rs')
-rw-r--r--crates/shirabe/src/dependency_resolver/pool_builder.rs13
1 files changed, 7 insertions, 6 deletions
diff --git a/crates/shirabe/src/dependency_resolver/pool_builder.rs b/crates/shirabe/src/dependency_resolver/pool_builder.rs
index f85eb31..18d2db4 100644
--- a/crates/shirabe/src/dependency_resolver/pool_builder.rs
+++ b/crates/shirabe/src/dependency_resolver/pool_builder.rs
@@ -625,10 +625,12 @@ impl PoolBuilder {
// right version. It'd be more work to figure out which versions and which aliases of those versions this may
// apply to
if let Some(reference) = self.root_references.get(&name) {
- // TODO(phase-c): apply root references to the package; PHP mutates the shared package in
- // place and skips already locked/fixed packages, which needs &mut access through the
- // handle plus a handle-based Request.
- let _ = reference;
+ // do not modify the references on already locked or fixed packages
+ if !request.is_locked_package(package.clone())
+ && !request.is_fixed_package(package.clone())
+ {
+ package.set_source_dist_references(reference);
+ }
}
// if propagateUpdate is false we are loading a fixed or locked package, root aliases do not apply as they are
@@ -664,8 +666,7 @@ impl PoolBuilder {
let new_index = self.index_counter;
self.index_counter += 1;
- self.packages
- .insert(new_index, alias_handle.clone().into());
+ self.packages.insert(new_index, alias_handle.clone().into());
self.alias_map
.entry(alias_handle.get_alias_of().ptr_id().to_string())
.or_insert_with(IndexMap::new)