summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2014-05-30 16:52:19 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2014-05-30 16:52:19 +0200
commit81b3540d26b4f47785e6678e22d1312b8cd6d704 (patch)
tree6c0b7c0f6c236f59857be29bd92827b5a434cde2
parent5681b3fc2a8e35a12cd7c8e94013611211188459 (diff)
print error stack on failure of 'apt' solver
Git-Dch: ignore
-rw-r--r--cmdline/apt-internal-solver.cc36
1 files changed, 18 insertions, 18 deletions
diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc
index b85c07c33..e4cdf6381 100644
--- a/cmdline/apt-internal-solver.cc
+++ b/cmdline/apt-internal-solver.cc
@@ -31,6 +31,7 @@
#include <string>
#include <unistd.h>
#include <cstdio>
+#include <stdlib.h>
#include <apti18n.h>
/*}}}*/
@@ -56,6 +57,12 @@ static bool ShowHelp(CommandLine &) {
return true;
}
/*}}}*/
+APT_NORETURN static void DIE(std::string const &message) { /*{{{*/
+ std::cerr << "ERROR: " << message << std::endl;
+ _error->DumpErrors(std::cerr);
+ exit(EXIT_FAILURE);
+}
+ /*}}}*/
int main(int argc,const char *argv[]) /*{{{*/
{
CommandLine::Args Args[] = {
@@ -115,34 +122,29 @@ int main(int argc,const char *argv[]) /*{{{*/
EDSP::WriteProgress(0, "Start up solver…", output);
- if (pkgInitSystem(*_config,_system) == false) {
- std::cerr << "System could not be initialized!" << std::endl;
- return 1;
- }
+ if (pkgInitSystem(*_config,_system) == false)
+ DIE("System could not be initialized!");
EDSP::WriteProgress(1, "Read request…", output);
if (WaitFd(input, false, 5) == false)
- std::cerr << "WAIT timed out in the resolver" << std::endl;
+ DIE("WAIT timed out in the resolver");
std::list<std::string> install, remove;
bool upgrade, distUpgrade, autoRemove;
- if (EDSP::ReadRequest(input, install, remove, upgrade, distUpgrade, autoRemove) == false) {
- std::cerr << "Parsing the request failed!" << std::endl;
- return 2;
- }
+ if (EDSP::ReadRequest(input, install, remove, upgrade, distUpgrade, autoRemove) == false)
+ DIE("Parsing the request failed!");
EDSP::WriteProgress(5, "Read scenario…", output);
pkgCacheFile CacheFile;
- CacheFile.Open(NULL, false);
+ if (CacheFile.Open(NULL, false) == false)
+ DIE("Failed to open CacheFile!");
EDSP::WriteProgress(50, "Apply request on scenario…", output);
- if (EDSP::ApplyRequest(install, remove, CacheFile) == false) {
- std::cerr << "Failed to apply request to depcache!" << std::endl;
- return 3;
- }
+ if (EDSP::ApplyRequest(install, remove, CacheFile) == false)
+ DIE("Failed to apply request to depcache!");
pkgProblemResolver Fix(CacheFile);
for (std::list<std::string>::const_iterator i = remove.begin();
@@ -183,10 +185,8 @@ int main(int argc,const char *argv[]) /*{{{*/
EDSP::WriteProgress(95, "Write solution…", output);
- if (EDSP::WriteSolution(CacheFile, output) == false) {
- std::cerr << "Failed to output the solution!" << std::endl;
- return 4;
- }
+ if (EDSP::WriteSolution(CacheFile, output) == false)
+ DIE("Failed to output the solution!");
EDSP::WriteProgress(100, "Done", output);