python-smartpm: Don't ignore error if RPM transaction fails without problems

SmartPM could misinterpret RPM transaction error as success,
if ts.run() (RPM Python API) returns an empty problems list.

This could happen for example if the RPM database is partially corrupted
such that the transaction does not have any problems like conflicts or
missing dependencies, but still can't be committed.

The added patch fixes the problem in the upstream sources;
one of the existing patches has to be adjusted to still apply.

(From OE-Core rev: 1dc5f5d5c844585eec114be9480e0e4d8e60d09c)

Signed-off-by: Daniel Klauer <daniel.klauer@gin.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Klauer, Daniel
2016-05-17 12:58:04 +00:00
committed by Richard Purdie
parent e89c6c4aa6
commit be0cabf816
3 changed files with 61 additions and 3 deletions

View File

@@ -36,7 +36,7 @@ index 9bbd952..ba6405a 100644
finally:
del getTS.ts
cb.grabOutput(False)
+ if probs and sysconf.has("attempt-install", soft=True):
+ if (probs is not None) and sysconf.has("attempt-install", soft=True):
+ def remove_conflict(pkgNEVR):
+ for key in changeset.keys():
+ if pkgNEVR == str(key):
@@ -67,8 +67,8 @@ index 9bbd952..ba6405a 100644
+ retry = 0
+
prog.setDone()
- if probs:
+ if probs and (not retry):
- if probs is not None:
+ if (probs is not None) and (not retry):
raise Error, "\n".join([x[0] for x in probs])
prog.stop()
+ if retry and len(changeset):