diff --git a/src/Composer/DependencyResolver/Pool.php b/src/Composer/DependencyResolver/Pool.php index e0d2d8a13..0063a44ba 100644 --- a/src/Composer/DependencyResolver/Pool.php +++ b/src/Composer/DependencyResolver/Pool.php @@ -65,6 +65,11 @@ class Pool } $this->stabilityFlags = $stabilityFlags; $this->filterRequires = $filterRequires; + foreach ($filterRequires as $name => $constraint) { + if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name)) { + unset($this->filterRequires[$name]); + } + } } public function setWhitelist($whitelist) diff --git a/src/Composer/DependencyResolver/Problem.php b/src/Composer/DependencyResolver/Problem.php index 9373a7b7b..b1d2bb9b4 100644 --- a/src/Composer/DependencyResolver/Problem.php +++ b/src/Composer/DependencyResolver/Problem.php @@ -87,6 +87,19 @@ class Problem } if ($job && $job['cmd'] === 'install' && empty($packages)) { + // handle php/hhvm + if ($job['packageName'] === 'php' || $job['packageName'] === 'php-64bit' || $job['packageName'] === 'hhvm') { + $msg = "\n - This package requires ".$job['packageName'].$this->constraintToText($job['constraint']).' but '; + + if (defined('HHVM_VERSION')) { + return $msg . 'your HHVM version does not satisfy that requirement.'; + } elseif ($job['packageName'] === 'hhvm') { + return $msg . 'you are running this with PHP and not HHVM.'; + } + + return $msg . 'your PHP version does not satisfy that requirement.'; + } + // handle php extensions if (0 === stripos($job['packageName'], 'ext-')) { $ext = substr($job['packageName'], 4); diff --git a/src/Composer/DependencyResolver/Rule.php b/src/Composer/DependencyResolver/Rule.php index cba9400ef..bdb82afca 100644 --- a/src/Composer/DependencyResolver/Rule.php +++ b/src/Composer/DependencyResolver/Rule.php @@ -217,7 +217,15 @@ class Rule $targetName = $this->reasonData->getTarget(); // handle php extensions - if (0 === strpos($targetName, 'ext-')) { + if ($targetName === 'php' || $targetName === 'php-64bit' || $targetName === 'hhvm') { + if (defined('HHVM_VERSION')) { + $text .= ' -> your HHVM version does not satisfy that requirement.'; + } elseif ($targetName === 'hhvm') { + $text .= ' -> you are running this with PHP and not HHVM.'; + } else { + $text .= ' -> your PHP version does not satisfy that requirement.'; + } + } elseif (0 === strpos($targetName, 'ext-')) { $ext = substr($targetName, 4); $error = extension_loaded($ext) ? 'has the wrong version ('.(phpversion($ext) ?: '0').') installed' : 'is missing from your system';