[Yum-devel] [PATCH] Show scriptlet-output and errors in history info

Tim Lauridsen tim.lauridsen at googlemail.com
Tue Oct 13 05:20:33 UTC 2009


On 10/12/2009 11:38 PM, James Antill wrote:
>   This WFM(tm), but I've only tested it by adding stuff to my sqlite
> manually.
> ---
>   output.py      |   14 +++++++++++++-
>   yum/history.py |   37 +++++++++++++++++++++++++++++++++++++
>   2 files changed, 50 insertions(+), 1 deletions(-)
>
> diff --git a/output.py b/output.py
> index da84221..e462646 100755
> --- a/output.py
> +++ b/output.py
> @@ -1389,7 +1389,7 @@ to exit.
>               print _("Return-Code    :"), _("Failure:"), old.return_code
>           else:
>               print _("Return-Code    :"), _("Success")
> -        print _("Transaction performed with  :")
> +        print _("Transaction performed with:")
>           for hpkg in old.trans_with:
>               prefix = " " * 4
>               state  = _('Installed')
> @@ -1408,6 +1408,18 @@ to exit.
>               print "%s%-12s %s" % (prefix, state, hpkg)
>           print _("Packages Altered:")
>           self.historyInfoCmdPkgsAltered(old, pats)
> +        if old.output:
> +            print _("Scriptlet output:")
> +            num = 0
> +            for line in old.output:
> +                num += 1
> +                print "%4d" % num, line
> +        if old.errors:
> +            print _("Errors:")
> +            num = 0
> +            for line in old.errors:
> +                num += 1
> +                print "%4d" % num, line
>
>       def historyInfoCmdPkgsAltered(self, old, pats=[]):
>           for hpkg in old.trans_data:
> diff --git a/yum/history.py b/yum/history.py
> index 97571c5..85613e1 100644
> --- a/yum/history.py
> +++ b/yum/history.py
> @@ -152,6 +152,9 @@ class YumHistoryTransaction:
>           self._loaded_TW = None
>           self._loaded_TD = None
>
> +        self._loaded_ER = None
> +        self._loaded_OT = None
> +
>           self.altered_lt_rpmdb = None
>           self.altered_gt_rpmdb = None
>
> @@ -177,6 +180,18 @@ class YumHistoryTransaction:
>       trans_with = property(fget=lambda self: self._getTransWith())
>       trans_data = property(fget=lambda self: self._getTransData())
>
> +    def _getErrors(self):
> +        if self._loaded_ER is None:
> +            self._loaded_ER = self._history._load_errors(self.tid)
> +        return self._loaded_ER
> +    def _getOutput(self):
> +        if self._loaded_OT is None:
> +            self._loaded_OT = self._history._load_output(self.tid)
> +        return self._loaded_OT
> +
> +    errors     = property(fget=lambda self: self._getErrors())
> +    output     = property(fget=lambda self: self._getOutput())
> +
>   class YumHistory:
>       """ API for accessing the history sqlite data. """
>
> @@ -371,6 +386,28 @@ class YumHistory:
>                             (tid, line) VALUES (?, ?)""", (self._tid, error))
>           self._commit()
>
> +    def _load_errors(self, tid):
> +        cur = self._get_cursor()
> +        executeSQL(cur,
> +                   """SELECT msg FROM trans_error
> +                      WHERE tid = ?
> +                      ORDER BY mid ASC""", (tid,))
> +        ret = []
> +        for row in cur:
> +            ret.append(row[0])
> +        return ret
> +
> +    def _load_output(self, tid):
> +        cur = self._get_cursor()
> +        executeSQL(cur,
> +                   """SELECT line FROM trans_script_stdout
> +                      WHERE tid = ?
> +                      ORDER BY lid ASC""", (tid,))
> +        ret = []
> +        for row in cur:
> +            ret.append(row[0])
> +        return ret
> +
>       def end(self, rpmdb_version, return_code, errors=None):
>           assert return_code or not errors
>           cur = self._get_cursor()
>    
The pach looks ok, but it feel kind of strange to display not there yet, 
but it should not hurt anything

Tim



More information about the Yum-devel mailing list