---
 smart/backends/rpm/pm.py |   10 ++++++++++
 1 file changed, 10 insertions(+)

--- a/smart/backends/rpm/pm.py
+++ b/smart/backends/rpm/pm.py
@@ -283,6 +283,8 @@ class RPMPackageManager(PackageManager):
             prog.setDone()
             if probs and (not retry):
                 raise Error, "\n".join([x[0] for x in probs])
+            if cb.errors > 0:
+                raise Error, "One or more errors occurred during transaction"
             prog.stop()
             if retry and len(changeset):
                 self.commit(changeset, pkgpaths)
@@ -297,6 +299,7 @@ class RPMCallback:
         self.rpmoutbuffer = ""
         self.lasttopic = None
         self.topic = None
+        self.errors = 0
 
     def grabOutput(self, flag):
         if flag:
@@ -415,6 +418,13 @@ class RPMCallback:
                 self.prog.setSubDone(subkey)
             self.prog.show()
 
+        elif what == rpm.RPMCALLBACK_SCRIPT_ERROR:
+            self.errors += 1
+        elif what == rpm.RPMCALLBACK_UNPACK_ERROR:
+            self.errors += 1
+        elif what == rpm.RPMCALLBACK_CPIO_ERROR:
+            self.errors += 1
+
 from smart.backends.rpm.base import rpm, getTS
 
 # vim:ts=4:sw=4:et