aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/dependency_resolver
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/dependency_resolver')
-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)