[yocto] [PATCHv3 09/11][auh] upgradehelper.py: Change policy for send emails and fix error handling.

Aníbal Limón anibal.limon at linux.intel.com
Tue Jun 16 17:35:18 PDT 2015


Add MaintainerError class for identify errors that can be hanlded by
Maintainers, only send emails when error is instance of MaintainerError.

Get rid of UpgradeNotNeededError when run steps now is handled by
new upstream version detection only load recipes that need update.

[YOCTO #7489]

Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
---
 errors.py        | 16 ++++++++++++----
 upgradehelper.py | 16 +++++++---------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/errors.py b/errors.py
index c650165..7194944 100644
--- a/errors.py
+++ b/errors.py
@@ -31,6 +31,11 @@ class Error(Exception):
     def __str__(self):
         return "Failed(other errors)"
 
+class MaintainerError(Error):
+    """ Class for group error that can be sent to Maintainer's """
+    def __init__(self, message=None, stdout=None, stderr=None):
+        super(MaintainerError, self).__init__(message, stdout, stderr)
+
 class FetchError(Error):
     def __init__(self):
         super(FetchError, self).__init__("do_fetch failed")
@@ -38,25 +43,28 @@ class FetchError(Error):
     def __str__(self):
         return "Failed(do_fetch)"
 
-class PatchError(Error):
+class PatchError(MaintainerError):
     def __init__(self):
         super(PatchError, self).__init__("do_patch failed")
 
     def __str__(self):
         return "Failed(do_patch)"
 
-class ConfigureError(Error):
+class ConfigureError(MaintainerError):
     def __init__(self):
         super(ConfigureError, self).__init__("do_configure failed")
 
-class CompilationError(Error):
+    def __str__(self):
+        return "Failed(do_configure)"
+
+class CompilationError(MaintainerError):
     def __init__(self):
         super(CompilationError, self).__init__("do_compile failed")
 
     def __str__(self):
         return "Failed(do_compile)"
 
-class LicenseError(Error):
+class LicenseError(MaintainerError):
     def __init__(self):
         super(LicenseError, self).__init__("license checksum does not match")
 
diff --git a/upgradehelper.py b/upgradehelper.py
index b1f075d..7756b36 100755
--- a/upgradehelper.py
+++ b/upgradehelper.py
@@ -346,8 +346,6 @@ class Updater(object):
                 self.git.clean_untracked()
                 return
 
-        status = type(err).__name__
-
         # drop last upgrade from git. It's safer this way if the upgrade has
         # problems and other recipes depend on it. Give the other recipes a
         # chance...
@@ -381,8 +379,11 @@ class Updater(object):
                 "Attached are the patch, license diff (if change) and bitbake log.\n\n" \
                 "Regards,\nThe Upgrade Helper"
 
-            # don't bother maintainer with mail if the recipe is already up to date
-            if status == "UpgradeNotNeededError":
+            # only send email to Maintainer when is an error that can handle
+            if err and not isinstance(err, MaintainerError):
+                D( "%s: Don't send email to maintainer because the error was " \
+                   "%s and the information isn't useful, please review it." \
+                    % (self.pn, type(err).__name__))
                 return
 
             if self.maintainer in maintainer_override:
@@ -478,6 +479,7 @@ class Updater(object):
 
         attempted_pkgs = 0
         for self.pn, self.new_ver, self.maintainer in pkgs_to_upgrade:
+            error = None
             self.recipe = None
             attempted_pkgs += 1
             I(" ATTEMPT PACKAGE %d/%d" % (attempted_pkgs, total_pkgs))
@@ -489,10 +491,6 @@ class Updater(object):
                     step()
 
                 I(" %s: Upgrade SUCCESSFUL! Please test!" % self.pn)
-                error = None
-            except UpgradeNotNeededError as e:
-                I(" %s: %s" % (self.pn, e.message))
-                error = e
             except Error as e:
                 E(" %s: %s" % (self.pn, e.message))
                 E(" %s: Upgrade FAILED! Logs and/or file diffs are available in %s" % (self.pn, self.workdir))
@@ -667,7 +665,7 @@ class UniverseUpdater(Updater):
 
     # overriding the base method
     def pkg_upgrade_handler(self, err):
-        super(UniverseUpdater, self).pkg_upgrade_handler(self)
+        super(UniverseUpdater, self).pkg_upgrade_handler(err)
         self.update_history(self.pn, self.new_ver, self.maintainer,
                 self._get_status_msg(err))
 
-- 
1.8.4.5




More information about the yocto mailing list