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

Paul Eggleton paul.eggleton at linux.intel.com
Wed Jun 17 10:32:24 PDT 2015


On Wednesday 17 June 2015 00:35:18 Aníbal Limón wrote:
> 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))

OK, after this v3, this and all other patches in this series look OK.

Acked-by: Paul Eggleton <paul.eggleton at linux.intel.com>

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre



More information about the yocto mailing list