aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python
diff options
context:
space:
mode:
authorHerve Jourdain <herve.jourdain@neuf.fr>2016-06-09 15:41:31 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-02-15 20:06:28 -0800
commit327f263be285525adcbbf472db6ac7722c84ac2f (patch)
tree5388c573bf9f758c6217f2aebf4a33bd50a88f03 /meta/recipes-devtools/python
parentdc55d982aa3d35fa08749b817dbfd87e499d01ab (diff)
downloadopenembedded-core-contrib-327f263be285525adcbbf472db6ac7722c84ac2f.tar.gz
smartpm: if RPM transaction fails with an empty list of problems in attempt mode, ignore it!
Since commit be0cabf816a84c59e0e951b92a570121ed843822 on 2016/05/17, smartpm will retry the transaction if ts.run() returns with an empty list of problems, and we're in attempt mode. But then, since all the packages are already installed, the transaction will fail with "package already installed" error. In attempt mode, it's fine to not retry nor generate an error when the transaction fails for no reason linked to files/packages conflicts, so this patch fixes this behaviour. Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr> Signed-off-by: Ross Burton <ross.burton@intel.com>
Diffstat (limited to 'meta/recipes-devtools/python')
-rw-r--r--meta/recipes-devtools/python/python-smartpm/smart-attempt.patch14
1 files changed, 11 insertions, 3 deletions
diff --git a/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch b/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch
index 5aedc88266..e1182041bc 100644
--- a/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch
+++ b/meta/recipes-devtools/python/python-smartpm/smart-attempt.patch
@@ -26,7 +26,7 @@ diff --git a/smart/backends/rpm/pm.py b/smart/backends/rpm/pm.py
index 9bbd952..ba6405a 100644
--- a/smart/backends/rpm/pm.py
+++ b/smart/backends/rpm/pm.py
-@@ -241,15 +241,48 @@ class RPMPackageManager(PackageManager):
+@@ -241,15 +241,56 @@ class RPMPackageManager(PackageManager):
cb = RPMCallback(prog, upgradednames)
cb.grabOutput(True)
probs = None
@@ -36,7 +36,12 @@ index 9bbd952..ba6405a 100644
finally:
del getTS.ts
cb.grabOutput(False)
-+ if (probs is not None) and sysconf.has("attempt-install", soft=True):
++ # If there are file conflicts, and we're attempting installation,
++ # remove conflicting packages from the transaction and retry
++ # If there are other problems returned by ts.run(), that are not
++ # linked with packages/files conflicts (the returned list is empty),
++ # then don't retry
++ if (probs is not None) and (len(probs) != 0) and sysconf.has("attempt-install", soft=True):
+ def remove_conflict(pkgNEVR):
+ for key in changeset.keys():
+ if pkgNEVR == str(key):
@@ -68,7 +73,10 @@ index 9bbd952..ba6405a 100644
+
prog.setDone()
- if probs is not None:
-+ if (probs is not None) and (not retry):
++ # If there are other problems than packages/files conflicts
++ # returned by ts.run(), the returned list is empty, and if
++ # we're only attempting installation, then don't raise any error
++ if (probs is not None) and ((len(probs) != 0) or not sysconf.has("attempt-install", soft=True)) and (not retry):
raise Error, "\n".join([x[0] for x in probs])
prog.stop()
+ if retry and len(changeset):