Przeglądaj źródła

set hint flags for the problem resolver according to request

David Kalnischkies 15 lat temu
rodzic
commit
d9933172b3
1 zmienionych plików z 18 dodań i 1 usunięć
  1. 18 1
      cmdline/apt-internal-solver.cc

+ 18 - 1
cmdline/apt-internal-solver.cc

@@ -104,11 +104,28 @@ int main(int argc,const char *argv[])					/*{{{*/
 		std::cerr << "Failed to apply request to depcache!" << std::endl;
 		return 3;
 	}
+
+	pkgProblemResolver Fix(CacheFile);
+	for (std::list<std::string>::const_iterator i = remove.begin();
+	     i != remove.end(); ++i) {
+		pkgCache::PkgIterator P = CacheFile->FindPkg(*i);
+		Fix.Clear(P);
+		Fix.Protect(P);
+		Fix.Remove(P);
+	}
+
+	for (std::list<std::string>::const_iterator i = install.begin();
+	     i != install.end(); ++i) {
+		pkgCache::PkgIterator P = CacheFile->FindPkg(*i);
+		Fix.Clear(P);
+		Fix.Protect(P);
+	}
+
 	for (std::list<std::string>::const_iterator i = install.begin();
 	     i != install.end(); ++i)
 		CacheFile->MarkInstall(CacheFile->FindPkg(*i), true);
 
-	pkgProblemResolver Fix(CacheFile);
+
 	if (Fix.Resolve() == false) {
 		EDSP::WriteError("An error occured", output);
 		return 0;