diff --git a/src/Composer/DependencyResolver/Problem.php b/src/Composer/DependencyResolver/Problem.php index ba9eb9774..debc8678c 100644 --- a/src/Composer/DependencyResolver/Problem.php +++ b/src/Composer/DependencyResolver/Problem.php @@ -11,6 +11,7 @@ */ namespace Composer\DependencyResolver; +use Composer\Package\CompletePackageInterface; /** * Represents a problem detected while solving dependencies @@ -90,8 +91,17 @@ class Problem // handle php/hhvm if ($job['packageName'] === 'php' || $job['packageName'] === 'php-64bit' || $job['packageName'] === 'hhvm') { + $version = phpversion(); $available = $this->pool->whatProvides($job['packageName']); - $version = count($available) ? $available[0]->getPrettyVersion() : phpversion(); + + if (count($available)) { + $firstAvailable = reset($available); + $version = $firstAvailable->getPrettyVersion(); + $extra = $firstAvailable->getExtra(); + if ($firstAvailable instanceof CompletePackageInterface && isset($extra['config.platform']) && $extra['config.platform'] === true) { + $version .= '; ' . $firstAvailable->getDescription(); + } + } $msg = "\n - This package requires ".$job['packageName'].$this->constraintToText($job['constraint']).' but '; diff --git a/src/Composer/IO/ConsoleIO.php b/src/Composer/IO/ConsoleIO.php index f3a99edf2..bef7cea9f 100644 --- a/src/Composer/IO/ConsoleIO.php +++ b/src/Composer/IO/ConsoleIO.php @@ -289,7 +289,16 @@ class ConsoleIO extends BaseIO $question->setErrorMessage($errorMessage); $question->setMultiselect($multiselect); - return $helper->ask($this->input, $this->getErrorOutput(), $question); + $result = $helper->ask($this->input, $this->getErrorOutput(), $question); + + $results = array(); + foreach ($choices as $index => $choice) { + if (in_array($choice, $result, true)) { + $results[] = (string) $index; + } + } + + return $results; } /** diff --git a/src/Composer/Util/Filesystem.php b/src/Composer/Util/Filesystem.php index 39c953a50..9e0e37279 100644 --- a/src/Composer/Util/Filesystem.php +++ b/src/Composer/Util/Filesystem.php @@ -665,6 +665,7 @@ class Filesystem * Stat cache should be cleared before to avoid accidentally reading wrong information from previous installs. */ clearstatcache(true, $junction); + clearstatcache(false); $stat = lstat($junction); return !($stat['mode'] & 0xC000);