diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-31 21:34:47 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-01 01:45:00 +0900 |
| commit | 20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d (patch) | |
| tree | d1fc3aaee3b2829d71f49581e1abc86ee62e525f /crates/shirabe/src/installer.rs | |
| parent | 29df13733ae4acfd2b172bc9fd9ac9fd28efa013 (diff) | |
| download | php-shirabe-20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d.tar.gz php-shirabe-20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d.tar.zst php-shirabe-20dbcf11b86cb03c451ba1d5cd9efe17b68fa66d.zip | |
Diffstat (limited to 'crates/shirabe/src/installer.rs')
| -rw-r--r-- | crates/shirabe/src/installer.rs | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/crates/shirabe/src/installer.rs b/crates/shirabe/src/installer.rs index 434996d..ec374ac 100644 --- a/crates/shirabe/src/installer.rs +++ b/crates/shirabe/src/installer.rs @@ -352,7 +352,7 @@ impl Installer { locked_repository_handle, crate::repository::RepositoryInterfaceHandle::new(self.create_platform_repo(false)), crate::repository::RepositoryInterfaceHandle::new(RootPackageRepository::new( - self.package.clone(), + RootPackageInterfaceHandle::dup(&self.package), )), ]); if is_fresh_install { @@ -1335,10 +1335,7 @@ impl Installer { root_requires.insert(req, constraint); } - // TODO(phase-c): PHP does `$this->fixedRootPackage = clone($this->package)` (a deep, - // fresh-identity copy) and then strips its requires below. A handle clone only shares the - // same Rc, so a real deep clone of the package is needed to avoid mutating self.package. - // self.fixed_root_package = deep_clone(&self.package); + self.fixed_root_package = RootPackageInterfaceHandle::dup(&self.package); self.fixed_root_package.set_requires(vec![]); self.fixed_root_package.set_dev_requires(vec![]); @@ -1578,7 +1575,7 @@ impl Installer { fn mock_local_repositories(&self, rm: &mut RepositoryManager) { let mut packages: IndexMap<String, PackageInterfaceHandle> = IndexMap::new(); for package in rm.get_local_repository().get_packages() { - packages.insert(package.to_string(), package.clone().into()); + packages.insert(package.to_string(), PackageInterfaceHandle::dup(&package)); } let keys: Vec<String> = packages.keys().cloned().collect(); for key in keys { |
