]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/algorithms.cc
Update French manpage translation
[apt.git] / apt-pkg / algorithms.cc
index 4b1bb44305902fd78b6bdd65fc799c9434dbcd5c..2ad0643199fac6f034a3f554a9c97012a4d57791 100644 (file)
@@ -985,15 +985,27 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
                        // Consider other options
                        if (InOr == false)
                        {
-                          if (Debug == true)
-                             clog << "  Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl;
-                          Cache.MarkDelete(I);
-                          if (Counter > 1)
+                          if (Cache.AutoInstOk(I, Cache[I].CandidateVerIter(Cache),Start) == true)
                           {
-                             if (Scores[Pkg->ID] > Scores[I->ID])
-                                Scores[I->ID] = Scores[Pkg->ID];
-                          }                       
-                       }                       
+                             if (Debug == true)
+                                clog << "  Removing " << I.Name() << " rather than change " << Start.TargetPkg().Name() << endl;
+                             Cache.MarkDelete(I);
+                             if (Counter > 1)
+                             {
+                                if (Scores[Pkg->ID] > Scores[I->ID])
+                                   Scores[I->ID] = Scores[Pkg->ID];
+                             }
+                          } else {
+                             /* The dependency of the TargetPkg would be satisfiable with I but it is
+                                forbidden to install I automatical, so anything we can do is hold
+                                back the TargetPkg.
+                             */
+                             if (Debug == true)
+                                clog << "  Hold back " << Start.TargetPkg().Name() <<
+                                       " rather than change denied AutoInstall " << I.Name() << endl;
+                             Cache.MarkKeep(Start.TargetPkg());
+                          }
+                       }
                     }
                  }