From 3ba581f0dfa9560e04dcfa0a90ff60c26f20edb3 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Wed, 25 Feb 2015 16:23:27 +0000 Subject: [PATCH] Improve error messages for required hhvm/php versions, fixes #3767 --- src/Composer/DependencyResolver/Pool.php | 5 +++++ src/Composer/DependencyResolver/Problem.php | 13 +++++++++++++ src/Composer/DependencyResolver/Rule.php | 10 +++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) 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';