Преглед изворни кода

print error stack on failure of 'apt' solver

Git-Dch: ignore
David Kalnischkies пре 12 година
родитељ
комит
81b3540d26
1 измењених фајлова са 18 додато и 18 уклоњено
  1. 18 18
      cmdline/apt-internal-solver.cc

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

@@ -31,6 +31,7 @@
 #include <string>
 #include <string>
 #include <unistd.h>
 #include <unistd.h>
 #include <cstdio>
 #include <cstdio>
+#include <stdlib.h>
 
 
 #include <apti18n.h>
 #include <apti18n.h>
 									/*}}}*/
 									/*}}}*/
@@ -56,6 +57,12 @@ static bool ShowHelp(CommandLine &) {
 	return true;
 	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[])					/*{{{*/
 int main(int argc,const char *argv[])					/*{{{*/
 {
 {
 	CommandLine::Args Args[] = {
 	CommandLine::Args Args[] = {
@@ -115,34 +122,29 @@ int main(int argc,const char *argv[])					/*{{{*/
 
 
 	EDSP::WriteProgress(0, "Start up solver…", output);
 	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);
 	EDSP::WriteProgress(1, "Read request…", output);
 
 
 	if (WaitFd(input, false, 5) == false)
 	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;
 	std::list<std::string> install, remove;
 	bool upgrade, distUpgrade, autoRemove;
 	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);
 	EDSP::WriteProgress(5, "Read scenario…", output);
 
 
 	pkgCacheFile CacheFile;
 	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);
 	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);
 	pkgProblemResolver Fix(CacheFile);
 	for (std::list<std::string>::const_iterator i = remove.begin();
 	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);
 	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);
 	EDSP::WriteProgress(100, "Done", output);