diff --git a/src/Composer/DependencyResolver/PoolBuilder.php b/src/Composer/DependencyResolver/PoolBuilder.php index 8ca7050fd9ff..69769ca7f189 100644 --- a/src/Composer/DependencyResolver/PoolBuilder.php +++ b/src/Composer/DependencyResolver/PoolBuilder.php @@ -287,6 +287,8 @@ public function buildPool(array $repositories, Request $request) $this->skippedLoad = array(); $this->indexCounter = 0; + $this->io->debug('Built pool.'); + $pool = $this->runOptimizer($request, $pool); Intervals::clear(); @@ -690,6 +692,9 @@ private function runOptimizer(Request $request, Pool $pool) return $pool; } + $this->io->debug('Running pool optimizer.'); + + $before = microtime(true); $total = \count($pool->getPackages()); $pool = $this->poolOptimizer->optimize($request, $pool); @@ -700,6 +705,7 @@ private function runOptimizer(Request $request, Pool $pool) return $pool; } + $this->io->write(sprintf('Pool optimizer completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERY_VERBOSE); $this->io->write(sprintf( 'Found %s package versions referenced in your dependency graph. %s (%d%%) were optimized away.', number_format($total), diff --git a/src/Composer/DependencyResolver/PoolOptimizer.php b/src/Composer/DependencyResolver/PoolOptimizer.php index 7e1e32fdcb02..6cbd670f1cbc 100644 --- a/src/Composer/DependencyResolver/PoolOptimizer.php +++ b/src/Composer/DependencyResolver/PoolOptimizer.php @@ -339,6 +339,11 @@ private function markPackageForRemoval($id) */ private function keepPackage(BasePackage $package, $identicalDefinitionsPerPackage, $packageIdenticalDefinitionLookup) { + // Already marked to keep + if (!isset($this->packagesToRemove[$package->id])) { + return; + } + unset($this->packagesToRemove[$package->id]); if ($package instanceof AliasPackage) {