summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-pkg/algorithms.cc16
-rw-r--r--apt-pkg/init.cc2
2 files changed, 14 insertions, 4 deletions
diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc
index bbe315ef7..e40f74122 100644
--- a/apt-pkg/algorithms.cc
+++ b/apt-pkg/algorithms.cc
@@ -743,10 +743,18 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
if (solver != "internal")
{
-// std::string const file = _config->FindDir("Dir::Bin::Solvers") + solver;
- std::string const file = solver;
- if (RealFileExists(file.c_str()) == false)
- return _error->Error("Can't call external solver '%s' as it is not available: %s", solver.c_str(), file.c_str());
+ std::vector<std::string> const solverDirs = _config->FindVector("Dir::Bin::Solvers");
+ std::string file;
+ for (std::vector<std::string>::const_iterator dir = solverDirs.begin();
+ dir != solverDirs.end(); ++dir) {
+ file = flCombine(*dir, solver);
+ if (RealFileExists(file.c_str()) == true)
+ break;
+ file.clear();
+ }
+
+ if (file.empty() == true)
+ return _error->Error("Can't call external solver '%s' as it is not in a configured directory!", solver.c_str());
int external[4] = {-1, -1, -1, -1};
if (pipe(external) != 0 || pipe(external + 2) != 0)
return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP");
diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc
index a30f27844..aff585e3b 100644
--- a/apt-pkg/init.cc
+++ b/apt-pkg/init.cc
@@ -72,7 +72,9 @@ bool pkgInitConfig(Configuration &Cnf)
Cnf.Set("Dir::Etc::preferencesparts","preferences.d");
Cnf.Set("Dir::Etc::trusted", "trusted.gpg");
Cnf.Set("Dir::Etc::trustedparts","trusted.gpg.d");
+
Cnf.Set("Dir::Bin::methods","/usr/lib/apt/methods");
+ Cnf.Set("Dir::Bin::solvers::","/usr/lib/apt/solvers");
Cnf.Set("Dir::Media::MountPath","/media/apt");
// State