Browse Source

Merge remote-tracking branch 'naderman/remove-dontfix'

Jordi Boggiano 13 years ago
parent
commit
452c9ad24e
1 changed files with 4 additions and 43 deletions
  1. 4 43
      src/Composer/DependencyResolver/Solver.php

+ 4 - 43
src/Composer/DependencyResolver/Solver.php

@@ -29,7 +29,6 @@ class Solver
 
     protected $ruleToJob = array();
     protected $addedMap = array();
-    protected $fixMap = array();
     protected $updateMap = array();
     protected $noObsoletes = array();
     protected $watches = array();
@@ -214,12 +213,7 @@ class Solver
 
             $this->addedMap[$package->getId()] = true;
 
-            $dontFix = 0;
-            if (isset($this->installedMap[$package->getId()]) && !isset($this->fixMap[$package->getId()])) {
-                $dontFix = 1;
-            }
-
-            if (!$dontFix && !$this->policy->installable($this, $this->pool, $this->installedMap, $package)) {
+            if (!$this->policy->installable($this, $this->pool, $this->installedMap, $package)) {
                 $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRemoveRule($package, Rule::RULE_NOT_INSTALLABLE, (string) $package));
                 continue;
             }
@@ -227,25 +221,6 @@ class Solver
             foreach ($package->getRequires() as $link) {
                 $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint());
 
-                // the strategy here is to not insist on dependencies
-                // that are already broken. so if we find one provider
-                // that was already installed, we know that the
-                // dependency was not broken before so we enforce it
-                if ($dontFix) {
-                    $foundInstalled = false;
-                    foreach ($possibleRequires as $require) {
-                        if (isset($this->installedMap[$require->getId()])) {
-                            $foundInstalled = true;
-                            break;
-                        }
-                    }
-
-                    // no installed provider found: previously broken dependency => don't add rule
-                    if (!$foundInstalled) {
-                        continue;
-                    }
-                }
-
                 $this->addRule(RuleSet::TYPE_PACKAGE, $rule = $this->createRequireRule($package, $possibleRequires, Rule::RULE_PACKAGE_REQUIRES, (string) $link));
 
                 foreach ($possibleRequires as $require) {
@@ -257,10 +232,6 @@ class Solver
                 $possibleConflicts = $this->pool->whatProvides($link->getTarget(), $link->getConstraint());
 
                 foreach ($possibleConflicts as $conflict) {
-                    if ($dontFix && isset($this->installedMap[$conflict->getId()])) {
-                        continue;
-                    }
-
                     $this->addRule(RuleSet::TYPE_PACKAGE, $this->createConflictRule($package, $conflict, Rule::RULE_PACKAGE_CONFLICT, (string) $link));
                 }
             }
@@ -282,20 +253,15 @@ class Solver
                             continue;
                         }
 
-                        if ($isInstalled && $dontFix && isset($this->installedMap[$provider->getId()])) {
-                            continue; // don't repair installed/installed problems
-                        }
-
                         $reason = ($isInstalled) ? Rule::RULE_INSTALLED_PACKAGE_OBSOLETES : Rule::RULE_PACKAGE_OBSOLETES;
                         $this->addRule(RuleSet::TYPE_PACKAGE, $this->createConflictRule($package, $provider, $reason, (string) $link));
                     }
                 }
 
                 // check implicit obsoletes
-                // for installed packages we only need to check installed/installed problems (and
-                // only when dontFix is not set), as the others are picked up when looking at the
-                // uninstalled package.
-                if (!$isInstalled || !$dontFix) {
+                // for installed packages we only need to check installed/installed problems,
+                // as the others are picked up when looking at the uninstalled package.
+                if (!$isInstalled) {
                     $obsoleteProviders = $this->pool->whatProvides($package->getName(), null);
 
                     foreach ($obsoleteProviders as $provider) {
@@ -912,11 +878,6 @@ class Solver
         foreach ($this->jobs as $job) {
             foreach ($job['packages'] as $package) {
                 switch ($job['cmd']) {
-                    case 'fix':
-                        if (isset($this->installedMap[$package->getId()])) {
-                            $this->fixMap[$package->getId()] = true;
-                        }
-                        break;
                     case 'update':
                         if (isset($this->installedMap[$package->getId()])) {
                             $this->updateMap[$package->getId()] = true;