summaryrefslogtreecommitdiff
path: root/cmdline/apt-internal-solver.cc
diff options
context:
space:
mode:
authorMichael Vogt <mvo@debian.org>2014-06-18 11:21:35 +0200
committerMichael Vogt <mvo@debian.org>2014-06-18 11:24:16 +0200
commit8d20b69d2fd7a8fec82bb559f0e39059bbaecf1b (patch)
tree000fce642c5c12f3cc8b5472bcd03994c78b5050 /cmdline/apt-internal-solver.cc
parent17091f2f33de16c2dae501e7868f7aec4fc3452f (diff)
parent82ced5c894cd013721f432ae8da66114155e04c7 (diff)
Merge remote-tracking branch 'donkult/debian/sid' into debian/experimental
Conflicts: apt-private/private-install.cc
Diffstat (limited to 'cmdline/apt-internal-solver.cc')
-rw-r--r--cmdline/apt-internal-solver.cc24
1 files changed, 14 insertions, 10 deletions
diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc
index 0cac12da2..c24a96cdf 100644
--- a/cmdline/apt-internal-solver.cc
+++ b/cmdline/apt-internal-solver.cc
@@ -24,9 +24,11 @@
#include <apt-pkg/depcache.h>
#include <apt-pkg/pkgcache.h>
#include <apt-pkg/cacheiterators.h>
+#include <apt-private/private-output.h>
#include <string.h>
#include <iostream>
+#include <sstream>
#include <list>
#include <string>
#include <unistd.h>
@@ -171,18 +173,20 @@ int main(int argc,const char *argv[]) /*{{{*/
EDSP::WriteProgress(60, "Call problemresolver on current scenario…", output);
+ std::string failure;
if (upgrade == true) {
- if (pkgAllUpgrade(CacheFile) == false) {
- EDSP::WriteError("ERR_UNSOLVABLE_UPGRADE", "An upgrade error occurred", output);
- return 0;
- }
+ if (pkgAllUpgrade(CacheFile) == false)
+ failure = "ERR_UNSOLVABLE_UPGRADE";
} else if (distUpgrade == true) {
- if (pkgDistUpgrade(CacheFile) == false) {
- EDSP::WriteError("ERR_UNSOLVABLE_DIST_UPGRADE", "An dist-upgrade error occurred", output);
- return 0;
- }
- } else if (Fix.Resolve() == false) {
- EDSP::WriteError("ERR_UNSOLVABLE", "An error occurred", output);
+ if (pkgDistUpgrade(CacheFile) == false)
+ failure = "ERR_UNSOLVABLE_DIST_UPGRADE";
+ } else if (Fix.Resolve() == false)
+ failure = "ERR_UNSOLVABLE";
+
+ if (failure.empty() == false) {
+ std::ostringstream broken;
+ ShowBroken(broken, CacheFile, false);
+ EDSP::WriteError(failure.c_str(), broken.str(), output);
return 0;
}