Automatically retry installing with nodeps or force, nicer problem
authorMartin Vidner <mvidner@suse.cz>
Thu, 2 Nov 2006 16:34:19 +0000 (16:34 +0000)
committerMartin Vidner <mvidner@suse.cz>
Thu, 2 Nov 2006 16:34:19 +0000 (16:34 +0000)
display, no more "3, 0 Invalid object" (#216042).

package/zypper.changes
src/zmart-rpm-callbacks.h
src/zypper-callbacks.h

index 7a4ad84..09a7182 100644 (file)
@@ -1,6 +1,8 @@
 -------------------------------------------------------------------
-Thu Nov  2 17:26:25 CET 2006 - mvidner@suse.cz
+Thu Nov  2 17:29:13 CET 2006 - mvidner@suse.cz
 
+- Automatically retry installing with nodeps or force, nicer problem
+  display, no more "3, 0 Invalid object" (#216042).
 - Do not parse metadata of disabled sources *blush* (#217297).
 - Display all "Parsing patch..." on one line.
 
index 99f6258..043fd5b 100644 (file)
@@ -26,6 +26,7 @@ using namespace std;
 namespace ZmartRecipients
 {
 
+
 // resolvable Message
 struct MessageResolvableReportReceiver : public zypp::callback::ReceiveReport<zypp::target::MessageResolvableReport>
 {
@@ -88,7 +89,8 @@ struct RemoveResolvableReportReceiver : public zypp::callback::ReceiveReport<zyp
 
   virtual Action problem( zypp::Resolvable::constPtr resolvable, Error error, const std::string& description )
   {
-    cerr << resolvable << error << description << endl;
+    cerr << resolvable << endl;
+    display_error (error, description);
     return (Action) read_action_ari ();
   }
 
@@ -96,6 +98,13 @@ struct RemoveResolvableReportReceiver : public zypp::callback::ReceiveReport<zyp
   {}
 };
 
+ostream& operator << (ostream& stm, zypp::target::rpm::InstallResolvableReport::RpmLevel level) {
+  static const char * level_s[] = {
+    "", "(with nodeps)", "(with nodeps+force)"
+  };
+  return stm << level_s[level];
+}
+
 // progress for installing a resolvable
 struct InstallResolvableReportReceiver : public zypp::callback::ReceiveReport<zypp::target::rpm::InstallResolvableReport>
 {
@@ -121,7 +130,12 @@ struct InstallResolvableReportReceiver : public zypp::callback::ReceiveReport<zy
   virtual Action problem( zypp::Resolvable::constPtr resolvable, Error error, const std::string& description, RpmLevel level )
   {
     cerr << resolvable << " " << description << std::endl;
-    cerr << error << ", " << level << endl;
+    cerr << level;
+    display_error (error, "");
+    if (level < RPM_NODEPS_FORCE) {
+      cerr_v << "Will retry more aggressively" << endl;
+      return ABORT;
+    }
     return (Action) read_action_ari ();
   }
 
@@ -129,10 +143,7 @@ struct InstallResolvableReportReceiver : public zypp::callback::ReceiveReport<zy
   {
     display_done ();
     if (error != NO_ERROR) {
-      const char * level_s[] = {
-       "", "(with nodeps)", "(with nodeps+force)"
-      };
-      cerr << level_s[level];
+      cerr << level;
     }
     display_error (error, reason);
   }
index 6c41931..66db48c 100644 (file)
@@ -31,7 +31,11 @@ void display_error (Error error, const std::string& reason) {
     static const char * error_s[] = {
       "", "Not found", "I/O error", "Invalid object"
     };
-    std::cerr << error_s[error] << ": " << reason << std::endl;
+    ostream& stm = std::cerr;
+    stm << error_s[error];
+    if (!reason.empty())
+       stm << ": " << reason;
+    stm << std::endl;
   }
 }