From 3a487cc03dec3488d0fa3008d04747bb1b4b0baf Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Wed, 8 Jun 2016 11:34:53 +0200 Subject: edsp: if logging is requested, do it for internal, too Create and log the EDSP(like) request even if we use the internal resolver. --- apt-pkg/edsp.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'apt-pkg/edsp.cc') diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc index 58d2769f9..fcff208c1 100644 --- a/apt-pkg/edsp.cc +++ b/apt-pkg/edsp.cc @@ -20,6 +20,7 @@ #include #include +#include #include #include #include @@ -1007,6 +1008,19 @@ bool EDSP::ExecuteSolver(const char* const solver, int *solver_in, int *solver_o // EDSP::ResolveExternal - resolve problems by asking external for help {{{*/ bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache, unsigned int const flags, OpProgress *Progress) { + if (strcmp(solver, "internal") == 0) + { + auto const dumpfile = _config->FindFile("Dir::Log::Solver"); + if (dumpfile.empty()) + return false; + auto const dumpdir = flNotFile(dumpfile); + FileFd output; + if (CreateAPTDirectoryIfNeeded(dumpdir, dumpdir) == false || + output.Open(dumpfile, FileFd::WriteOnly | FileFd::Exclusive | FileFd::Create, FileFd::Extension, 0644) == false) + return _error->WarningE("EDSP::Resolve", _("Could not open file '%s'"), dumpfile.c_str()); + bool Okay = EDSP::WriteRequest(Cache, output, flags, nullptr); + return Okay && EDSP::WriteScenario(Cache, output, nullptr); + } int solver_in, solver_out; pid_t const solver_pid = EDSP::ExecuteSolver(solver, &solver_in, &solver_out, true); if (solver_pid == 0) -- cgit v1.2.3