Better fix #61

This commit is contained in:
Tomas V.V.Cox 2003-10-04 17:16:35 +00:00
parent 7630f962f1
commit 0c9f669cc5

View File

@ -725,9 +725,17 @@ class PEAR_Installer extends PEAR_Common
$curver = $this->registry->packageInfo($pkgfile, 'version'); $curver = $this->registry->packageInfo($pkgfile, 'version');
$remote = &new PEAR_Remote($config); $remote = &new PEAR_Remote($config);
$releases = $remote->call('package.info', $pkgfile, 'releases'); $releases = $remote->call('package.info', $pkgfile, 'releases');
if (!count($releases)) {
return $this->raiseError("No releases found for package '$pkgfile'");
}
$states = $this->betterStates($state, true); $states = $this->betterStates($state, true);
$possible = false; $possible = false;
foreach($releases as $ver => $inf) { $_err_latest = false;
foreach ($releases as $ver => $inf) {
if (!$_err_latest) {
$_err_latest = "$pkgfile-$ver";
$_err_latest_state = $inf['state'];
}
if (in_array($inf['state'], $states)) { if (in_array($inf['state'], $states)) {
if (is_array($possible)) { if (is_array($possible)) {
if (version_compare(key($possible), $ver) < 0) { if (version_compare(key($possible), $ver) < 0) {
@ -738,17 +746,17 @@ class PEAR_Installer extends PEAR_Common
$possible = array($ver => $inf['state']); $possible = array($ver => $inf['state']);
} }
} }
} else {
return $this->raiseError('No release with state equal to: \'' . implode(', ', $states) .
"' found. The latest is $pkgfile-$ver ({$inf['state']}). Use " .
"'pear install $pkgfile-$ver' or set the 'preferred_state' ".
"to '{$inf['state']}' for installing this package.");
} }
} }
if ($possible) { if ($possible) {
$pkgfile = $this->_downloadFile($pkgfile, $config, $options, $pkgfile = $this->_downloadFile($pkgfile, $config, $options,
$errors, key($possible), $origpkgfile, $errors, key($possible), $origpkgfile,
$state); $state);
} else {
return $this->raiseError('No release with state equal to: \'' . implode(', ', $states) .
"' found. The latest is $_err_latest ($_err_latest_state). Use " .
"'pear install $_err_latest' or set the 'preferred_state' ".
"to '$_err_latest_state' for installing this package.");
} }
} else { } else {
$pkgfile = $this->_downloadFile($pkgfile, $config, $options, $pkgfile = $this->_downloadFile($pkgfile, $config, $options,