diff --git a/src/Composer/DependencyResolver/Pool.php b/src/Composer/DependencyResolver/Pool.php index a69ae5154..2216d5215 100644 --- a/src/Composer/DependencyResolver/Pool.php +++ b/src/Composer/DependencyResolver/Pool.php @@ -83,6 +83,7 @@ class Pool if ($repo instanceof ComposerRepository && $repo->hasProviders()) { $this->composerRepos[] = $repo; + $repo->resetPackageIds(); } elseif ($repo instanceof StreamableRepositoryInterface) { foreach ($repo->getMinimalPackages() as $package) { $name = $package['name']; diff --git a/src/Composer/Repository/ComposerRepository.php b/src/Composer/Repository/ComposerRepository.php index e41a505c0..03d18c3ca 100644 --- a/src/Composer/Repository/ComposerRepository.php +++ b/src/Composer/Repository/ComposerRepository.php @@ -199,6 +199,13 @@ class ComposerRepository extends ArrayRepository implements NotifiableRepository return $this->hasProviders; } + public function resetPackageIds() + { + foreach ($this->providersByUid as $package) { + $package->setId(-1); + } + } + public function whatProvides(Pool $pool, $name) { // skip platform packages