From: "Aníbal Limón" <anibal.limon@linux.intel.com>
To: Joshua G Lock <joshua.g.lock@linux.intel.com>,
"pidge@toganlabs.com" <pidge@toganlabs.com>,
"Randle, William C" <william.c.randle@intel.com>
Cc: "yocto@yoctoproject.org" <yocto@yoctoproject.org>
Subject: Re: [yocto-autobuilder] [RFC] Add support for generate bitbake error reports
Date: Wed, 15 Jun 2016 09:07:57 -0500 [thread overview]
Message-ID: <5761613D.9070406@linux.intel.com> (raw)
In-Reply-To: <1465996755.2995.5.camel@linux.intel.com>
[-- Attachment #1: Type: text/plain, Size: 7447 bytes --]
On 06/15/2016 08:19 AM, Joshua G Lock wrote:
> On Tue, 2016-06-14 at 12:03 -0500, Aníbal Limón wrote:
>>
>> On 06/14/2016 10:57 AM, Aníbal Limón wrote:
>>>
>>>
>>> On 06/14/2016 10:09 AM, Lock, Joshua G wrote:
>>>> On Thu, 2016-06-09 at 16:23 -0500, Aníbal Limón wrote:
>>>>> Hi folks,
>>>>>
>>>>> Currently we support to send error reports to
>>>>> errors.yoctoproject.org
>>>>> about failing tasks on bitbake using SendErrorReport buildstep
>>>>> but we
>>>>> have a lack of bitbake related errors like exceptions.
>>>>>
>>>>> A bug exist to implement this support into Error report web
>>>>> [1], i'm
>>>>> working on it but for generate bitbake error reports there's a
>>>>> need
>>>>> of
>>>>> some process monitoring the bitbake output in this case the
>>>>> Yocto
>>>>> Autobuilder.
>>>>>
>>>>> This email is for review my current implementation for generate
>>>>> bitbake
>>>>> error reports in the Autobuilder [2] next i'll try to explain
>>>>> how it
>>>>> works.
>>>>>
>>>>> I aadded a BitbakeShellCommand [3] class for use in the
>>>>> buildsteps
>>>>> that
>>>>> executes bitbake the main objective of this class is to have
>>>>> common
>>>>> operations to be made in bitbake commands like create error
>>>>> reports
>>>>> if
>>>>> fails.
>>>>>
>>>>> For create error reports this class add an stdio observer to
>>>>> look at
>>>>> bitbake output and if bitbake fails review the bitbake output
>>>>> for
>>>>> identify if the failure is an non-related task error [4]. If
>>>>> the
>>>>> observer found bitbake error creates an Error report with the
>>>>> information in the master controller.
>>>>>
>>>>> In order to send the bitbake error to Error report web the
>>>>> controller
>>>>> transfer the report to the worker using a new DownloadDirectory
>>>>> implementation that i made [5], the SendErrorReport buildstep
>>>>> works
>>>>> on
>>>>> the worker side so it's easy to transfer the reports from
>>>>> master to
>>>>> worker instead of send it by master.
>>>>>
>>>>> Finally to complete with the job of have the bitbake errors
>>>>> reports
>>>>> the
>>>>> Error report web changes need (i'm working on it) to be
>>>>> integrated
>>>>> first in order to don't break anything.
>>>>>
>>>>> Please review it and provide me feedback.
>>>>
>>>> This would've been much easier to review as a series of patches.
>>>>
>>>> After a quick read via the gitweb the series as a whole looks
>>>> good.
>>>>
>>>> A couple of review comments:
>>>>
>>>> In a04b41d37c29191318386455d8d958ff815a3a10 "lib/buildsteps.py:
>>>> Add
>>>> BitbakeLogLineObserver for BitbakeShellCommands." you have a
>>>> comment
>>>>
>>>> "discard line that are not errors and line that is recipe task
>>>> errors"
>>>>
>>>> but the lines are not actually discarded, afaict from a cursory
>>>> read
>>>> through they aren't used in the rest of the series
>>>> unless errors['bitbake'] == True?
>>>>
>>>> Could we move the error['log'].append() to after the if statement
>>>> which
>>>> checks whether this is a bitbake error?
>>>
>>> Yes and i'll update the commit message to be more consistent.
>>>
>>>>
>>>> Minor nit, in caf472bc696053227825c5a102feef3e17574ba2
>>>> "lib/buildsteps:
>>>> BitbakeShellCommand add support for create error reports"
>>>> in get_error_report_bitbake_dir() you use both " and ' for
>>>> strings.
>>>>
>>>> Same in 40279597615c49bc4f4f067cbab937584b626671
>>>
>>> I'll fix the typos for only use "".
>>>
>>> alimon
>>>
>> I updated the branch with the changes suggested now at,
>>
>> http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/log/?h=co
>> ntrib/alimon/devel
>
> Is that the right location? For example I still see log lines being
> appended to error['log'] *before* the check to discard lines in:
>
> http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/commit/?h=c
> ontrib/alimon/devel&id=742e5bf33934c4ec9de9136a854e190aaf8ba0b3
>
> + def _handleError(self, line):
> + if not hasattr(self.step, 'errors'):
> + self.step.errors = {}
> + self.step.errors['bitbake'] = False
> + self.step.errors['log'] = []
> +
> + # save all the log for be able to get report variables like
> + # machine, target, distro, etc
> + self.step.errors['log'].append(line)
> +
> + # discard line that are not errors and line that
> + # is recipe task errors
> + if (not self.rexp_error.match(line)) or \
> + self.rexp_pnpv_error.match(line) or \
> + self.rexp_task_error.match(line) or \
> + self.rexp_log_error.match(line):
> + return
> +
> + # if not match recipe task type is a bitbake exception/error
> + self.step.errors['bitbake'] = True
>
> whereas I think we only need to save log lines when it's a bitbake
> error, i.e:
>
> + def _handleError(self, line):
> + if not hasattr(self.step, 'errors'):
> + self.step.errors = {}
> + self.step.errors['bitbake'] = False
> + self.step.errors['log'] = []
> +
> + # discard line that are not errors and line that
> + # is recipe task errors
> + if (not self.rexp_error.match(line)) or \
> + self.rexp_pnpv_error.match(line) or \
> + self.rexp_task_error.match(line) or \
> + self.rexp_log_error.match(line):
> + return
> +
> + # save all the log for be able to get report variables like
> +
> # machine, target, distro, etc
> + self.step.errors['log'].ap
> pend(line)
> +
> + # if not match recipe task type is a bitbake exception/error
> + self.step.errors['bitbake'] = True
>
I tried to explain this in the comment above append log, we need the
full log for get information about machine. distro, etc also if a line
don't match but then is discover that is a bitbake error we want to
have the full log not discarding recipe/task errors because some times
the context about bitbake error/exception matters.
> Further
> http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/commit/?h=c
> ontrib/alimon/devel&id=2523c869855d8e2393b9dd7142c0992908444584
>
> still has typo's in the commit title and message.
>
> Finally, please don't end the subject line of commit messages with a
> period.
>
I'll fix the commit msg.
alimon
> Regards,
>
> Joshua
>
>> alimon
>>
>>>>
>>>> Regards,
>>>>
>>>> Joshua
>>>>
>>>>>
>>>>> Cheers,
>>>>> alimon
>>>>>
>>>>> [1] https://bugzilla.yoctoproject.org/show_bug.cgi?id=7583
>>>>> [2]
>>>>> http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/log
>>>>> /?h=co
>>>>> ntrib/alimon/devel
>>>>> [3]
>>>>> http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/tre
>>>>> e/lib/
>>>>> python2.7/site-
>>>>> packages/autobuilder/lib/buildsteps.py?h=contrib/alimon/devel#n
>>>>> 92
>>>>> [4]
>>>>> http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/tre
>>>>> e/lib/
>>>>> python2.7/site-
>>>>> packages/autobuilder/lib/buildsteps.py?h=contrib/alimon/devel#n
>>>>> 53
>>>>> [5]
>>>>> http://git.yoctoproject.org/cgit/cgit.cgi/yocto-autobuilder/com
>>>>> mit/?h
>>>>> =contrib/alimon/devel&id=4022920bb0e56d1eef3dfe7c5e9b4699f801cd
>>>>> f1
>>>
>>>
>>>
>>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
next prev parent reply other threads:[~2016-06-15 14:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-09 21:23 [yocto-autobuilder] [RFC] Add support for generate bitbake error reports Aníbal Limón
2016-06-13 8:48 ` Beth 'pidge' Flanagan
2016-06-13 15:09 ` Aníbal Limón
2016-06-13 15:52 ` Beth 'pidge' Flanagan
2016-06-14 15:16 ` Joshua G Lock
[not found] ` <1465916993.2814.14.camel@intel.com>
2016-06-14 15:57 ` Aníbal Limón
2016-06-14 17:03 ` Aníbal Limón
2016-06-15 13:19 ` Joshua G Lock
2016-06-15 14:07 ` Aníbal Limón [this message]
2016-06-15 14:13 ` Joshua G Lock
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5761613D.9070406@linux.intel.com \
--to=anibal.limon@linux.intel.com \
--cc=joshua.g.lock@linux.intel.com \
--cc=pidge@toganlabs.com \
--cc=william.c.randle@intel.com \
--cc=yocto@yoctoproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.