#include <apt-pkg/version.h>
#include <apt-pkg/sptr.h>
#include <apt-pkg/acquire-item.h>
-#include <apt-pkg/edspwriter.h>
+#include <apt-pkg/edsp.h>
#include <apti18n.h>
#include <sys/types.h>
bool pkgProblemResolver::Resolve(bool BrokenFix)
{
std::string const solver = _config->Find("APT::Solver::Name", "internal");
+
if (solver != "internal")
{
- FILE* output = fopen("/tmp/universe.log", "w");
- edspWriter::WriteUniverse(Cache, output);
- fclose(output);
- output = fopen("/tmp/request.log", "w");
- edspWriter::WriteRequest(Cache, output);
+ int solver_in, solver_out;
+ if (EDSP::ExecuteSolver(solver.c_str(), &solver_in, &solver_out) == false)
+ return false;
+
+ FILE* output = fdopen(solver_in, "w");
+ if (output == NULL)
+ return _error->Errno("Resolve", "fdopen on solver stdin failed");
+ EDSP::WriteRequest(Cache, output);
+ EDSP::WriteScenario(Cache, output);
fclose(output);
+
+ if (EDSP::ReadResponse(solver_out, Cache) == false)
+ return _error->Error("Reading solver response failed");
+
+ return true;
}
return ResolveInternal(BrokenFix);
}