[gnome-continuous-yocto/gnomeostree-3.28-rocko: 4596/8267] smartpm: if RPM transaction fails with an empty list of problems in attempt mode, ignore it!



commit d9a3ebef27979f6c3f586a3b35b07521ae1faeed
Author: Herve Jourdain <herve jourdain neuf fr>
Date:   Thu Jun 9 15:41:31 2016 +0800

    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.
    
    (From OE-Core rev: 327f263be285525adcbbf472db6ac7722c84ac2f)
    
    Signed-off-by: Herve Jourdain <herve jourdain neuf fr>
    Signed-off-by: Ross Burton <ross burton intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 .../python/python-smartpm/smart-attempt.patch      |   14 +++++++++++---
 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 5aedc88..e118204 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):


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]