cellog Wed May 11 22:42:57 2005 EDT
Modified files:
/pear-core/PEAR Dependency2.php
Log:
fix extension dependency versioned conflicts
http://cvs.php.net/diff.php/pear-core/PEAR/Dependency2.php?r1=1.38&r2=1.39&ty=u
Index: pear-core/PEAR/Dependency2.php
diff -u pear-core/PEAR/Dependency2.php:1.38 pear-core/PEAR/Dependency2.php:1.39
--- pear-core/PEAR/Dependency2.php:1.38 Wed May 11 22:29:09 2005
+++ pear-core/PEAR/Dependency2.php Wed May 11 22:42:57 2005
@@ -15,7 +15,7 @@
* @author Greg Beaver <cellog@xxxxxxx>
* @copyright 1997-2005 The PHP Group
* @license http://www.php.net/license/3_0.txt PHP License 3.0
- * @version CVS: $Id: Dependency2.php,v 1.38 2005/05/12 02:29:09 cellog Exp
$
+ * @version CVS: $Id: Dependency2.php,v 1.39 2005/05/12 02:42:57 cellog Exp
$
* @link http://pear.php.net/package/PEAR
* @since File available since Release 1.4.0a1
*/
@@ -336,7 +336,7 @@
}
}
if (!isset($dep['min']) && !isset($dep['max']) &&
- !isset($dep['recommended'])) {
+ !isset($dep['recommended']) && !isset($dep['exclude'])) {
if ($loaded) {
if (isset($dep['conflicts'])) {
if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
@@ -386,46 +386,32 @@
if (empty($version)) {
$version = '0';
}
+ $fail = false;
if (isset($dep['min'])) {
if (!version_compare($version, $dep['min'], '>=')) {
- if (!isset($dep['conflicts'])) {
- if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
- return $this->raiseError('%s requires PHP extension "'
. $dep['name'] .
- '"' . $extra . ', installed version is ' .
$version);
- } else {
- return $this->warning('warning: %s requires PHP
extension "' . $dep['name'] .
- '"' . $extra . ', installed version is ' .
$version);
- }
- }
- } elseif (isset($dep['conflicts'])) {
- if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
- return $this->raiseError('%s conflicts with PHP extension
"' .
- $dep['name'] . '"' . $extra);
- } else {
- return $this->warning('warning: %s conflicts with PHP
extension "' .
- $dep['name'] . '"' . $extra);
- }
+ $fail = true;
}
}
if (isset($dep['max'])) {
if (!version_compare($version, $dep['max'], '<=')) {
- if (!isset($dep['conflicts'])) {
- if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
- return $this->raiseError('%s requires PHP extension "'
. $dep['name'] .
- '"' . $extra . ', installed version is ' .
$version);
- } else {
- return $this->warning('warning: %s requires PHP
extension "' . $dep['name'] .
- '"' . $extra . ', installed version is ' .
$version);
- }
- }
- } elseif (isset($dep['conflicts'])) {
- if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
- return $this->raiseError('%s conflicts with PHP extension
"' .
- $dep['name'] . '"' . $extra);
- } else {
- return $this->warning('warning: %s conflicts with PHP
extension "' .
- $dep['name'] . '"' . $extra);
- }
+ $fail = true;
+ }
+ }
+ if ($fail && !isset($dep['conflicts'])) {
+ if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
+ return $this->raiseError('%s requires PHP extension "' .
$dep['name'] .
+ '"' . $extra . ', installed version is ' . $version);
+ } else {
+ return $this->warning('warning: %s requires PHP extension "' .
$dep['name'] .
+ '"' . $extra . ', installed version is ' . $version);
+ }
+ } elseif ((isset($dep['min']) || isset($dep['max'])) && !$fail &&
isset($dep['conflicts'])) {
+ if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
+ return $this->raiseError('%s conflicts with PHP extension "' .
+ $dep['name'] . '"' . $extra . ', installed version is ' .
$version);
+ } else {
+ return $this->warning('warning: %s conflicts with PHP
extension "' .
+ $dep['name'] . '"' . $extra . ', installed version is ' .
$version);
}
}
if (isset($dep['exclude'])) {
@@ -444,13 +430,13 @@
$dep['name'] . '" version ' .
$exclude);
}
- } elseif (isset($dep['conflicts'])) {
+ } elseif (version_compare($version, $exclude, '!=') &&
isset($dep['conflicts'])) {
if (!isset($this->_options['nodeps']) &&
!isset($this->_options['force'])) {
return $this->raiseError('%s conflicts with PHP
extension "' .
- $dep['name'] . '"' . $extra);
+ $dep['name'] . '"' . $extra . ', installed version
is ' . $version);
} else {
return $this->warning('warning: %s conflicts with PHP
extension "' .
- $dep['name'] . '"' . $extra);
+ $dep['name'] . '"' . $extra . ', installed version
is ' . $version);
}
}
}
|