From 5fdca198809951f03e0376d3d40e7e42b2b1df0f Mon Sep 17 00:00:00 2001 From: Volker Dusch Date: Sat, 18 Feb 2012 17:50:15 +0100 Subject: [PATCH] Removed the option to disallowed downgrades and simplifed some places where it was used --- .../DependencyResolver/DefaultPolicy.php | 12 +------- .../DependencyResolver/PolicyInterface.php | 3 +- src/Composer/DependencyResolver/Solver.php | 30 +++++-------------- 3 files changed, 9 insertions(+), 36 deletions(-) diff --git a/src/Composer/DependencyResolver/DefaultPolicy.php b/src/Composer/DependencyResolver/DefaultPolicy.php index 41918b260..f06b4104b 100644 --- a/src/Composer/DependencyResolver/DefaultPolicy.php +++ b/src/Composer/DependencyResolver/DefaultPolicy.php @@ -26,11 +26,6 @@ class DefaultPolicy implements PolicyInterface return true; } - public function allowDowngrade() - { - return true; - } - public function versionCompare(PackageInterface $a, PackageInterface $b, $operator) { $constraint = new VersionConstraint($operator, $b->getVersion()); @@ -39,16 +34,11 @@ class DefaultPolicy implements PolicyInterface return $constraint->matchSpecific($version); } - public function findUpdatePackages(Solver $solver, Pool $pool, array $installedMap, PackageInterface $package, $allowAll = false) + public function findUpdatePackages(Solver $solver, Pool $pool, array $installedMap, PackageInterface $package) { $packages = array(); foreach ($pool->whatProvides($package->getName()) as $candidate) { - // skip old packages unless downgrades are an option - if (!$allowAll && !$this->allowDowngrade() && $this->versionCompare($package, $candidate, '>')) { - continue; - } - if ($candidate !== $package) { $packages[] = $candidate; } diff --git a/src/Composer/DependencyResolver/PolicyInterface.php b/src/Composer/DependencyResolver/PolicyInterface.php index 0271fdab2..45309a081 100644 --- a/src/Composer/DependencyResolver/PolicyInterface.php +++ b/src/Composer/DependencyResolver/PolicyInterface.php @@ -21,9 +21,8 @@ use Composer\Package\PackageInterface; interface PolicyInterface { function allowUninstall(); - function allowDowngrade(); function versionCompare(PackageInterface $a, PackageInterface $b, $operator); - function findUpdatePackages(Solver $solver, Pool $pool, array $installedMap, PackageInterface $package, $allowAll); + function findUpdatePackages(Solver $solver, Pool $pool, array $installedMap, PackageInterface $package); function installable(Solver $solver, Pool $pool, array $installedMap, PackageInterface $package); function selectPreferedPackages(Pool $pool, array $installedMap, array $literals); } diff --git a/src/Composer/DependencyResolver/Solver.php b/src/Composer/DependencyResolver/Solver.php index 00212bb5c..8f12e6e0a 100644 --- a/src/Composer/DependencyResolver/Solver.php +++ b/src/Composer/DependencyResolver/Solver.php @@ -375,9 +375,9 @@ class Solver * be added * @param bool $allowAll Whether downgrades are allowed */ - private function addRulesForUpdatePackages(PackageInterface $package, $allowAll) + private function addRulesForUpdatePackages(PackageInterface $package) { - $updates = $this->policy->findUpdatePackages($this, $this->pool, $this->installedMap, $package, $allowAll); + $updates = $this->policy->findUpdatePackages($this, $this->pool, $this->installedMap, $package); $this->addRulesForPackage($package); @@ -965,7 +965,7 @@ class Solver } foreach ($installedPackages as $package) { - $this->addRulesForUpdatePackages($package, true); + $this->addRulesForUpdatePackages($package); } @@ -983,31 +983,15 @@ class Solver // solver_addrpmrulesforweak(solv, &addedmap); foreach ($installedPackages as $package) { - // create a feature rule which allows downgrades - $updates = $this->policy->findUpdatePackages($this, $this->pool, $this->installedMap, $package, true); - $featureRule = $this->createUpdateRule($package, $updates, self::RULE_INTERNAL_ALLOW_UPDATE, (string) $package); - - // create an update rule which does not allow downgrades - $updates = $this->policy->findUpdatePackages($this, $this->pool, $this->installedMap, $package, false); + $updates = $this->policy->findUpdatePackages($this, $this->pool, $this->installedMap, $package); $rule = $this->createUpdateRule($package, $updates, self::RULE_INTERNAL_ALLOW_UPDATE, (string) $package); - if ($rule->equals($featureRule)) { - if ($this->policy->allowUninstall()) { - $featureRule->setWeak(true); - $this->addRule(RuleSet::TYPE_FEATURE, $featureRule); - $this->packageToFeatureRule[$package->getId()] = $rule; - } else { - $this->addRule(RuleSet::TYPE_UPDATE, $rule); - $this->packageToUpdateRule[$package->getId()] = $rule; - } - } else if ($this->policy->allowUninstall()) { - $featureRule->setWeak(true); + if ($this->policy->allowUninstall()) { $rule->setWeak(true); - $this->addRule(RuleSet::TYPE_FEATURE, $featureRule); - $this->addRule(RuleSet::TYPE_UPDATE, $rule); - $this->packageToFeatureRule[$package->getId()] = $rule; + } else { + $this->addRule(RuleSet::TYPE_UPDATE, $rule); $this->packageToUpdateRule[$package->getId()] = $rule; } }