[OE-core] [RFC][PATCH] report-error.bbclass: Add support for autosending

Beth 'pidge' Flanagan pidge at toganlabs.com
Fri Sep 9 09:38:57 UTC 2016


On Fri, 2016-09-09 at 11:31 +0200, Martin Jansa wrote:
> On Thu, Sep 08, 2016 at 11:26:01AM +0200, Elizabeth 'pidge' Flanagan
> wrote:
> > 
> > This commit pulls and extends the functionality of .oe-error-report 
> > into
> > local.conf. It maintains the functionality of .oe-error-report.
> > 
> > It also enables report-error to automatically send error reports to
> > a 
> > specified error report server. This patch enables infrastructure
> > ppl to
> > set development teams up so that we can gather error metrics
> > automatically.
> > 
> > This relies on a new set of variables:
> > 
> > REPORTERROR[autosend]="yes|no|ask"
> > REPORTERROR[user]=username
> > REPORTERROR[email]=email
> > REPORTERROR[server]=error-report-web instance
> > 
> > For autosend yes and no are pretty self explainatory. ask does not
> > pass
> > the -y flag to send-error-report, thus enabling the end user to
> > review
> > the report prior to submission.
> The same functionality was sent more than 2 years ago, but it was
> rejected, so I'm carrying it in our own fork since then:
> 
> http://lists.openembedded.org/pipermail/openembedded-core/2014-March/
> 091222.html
> 

I'd be happy to defer to that patch if we can pull this functionality
in.

-b

> > 
> > Signed-off-by: Elizabeth 'pidge' Flanagan <pidge at toganlabs.com>
> > ---
> >  meta/classes/report-error.bbclass | 41
> > +++++++++++++++++++++++++++++++++++++--
> >  1 file changed, 39 insertions(+), 2 deletions(-)
> > 
> > diff --git a/meta/classes/report-error.bbclass
> > b/meta/classes/report-error.bbclass
> > index 82b5bcd..909adf0 100644
> > --- a/meta/classes/report-error.bbclass
> > +++ b/meta/classes/report-error.bbclass
> > @@ -85,10 +85,47 @@ python errorreport_handler () {
> >              bb.utils.unlockfile(lock)
> >              failures = jsondata['failures']
> >              if(len(failures) > 0):
> > +
> >                  filename = "error_report_" +
> > e.data.getVar("BUILDNAME", True)+".txt"
> >                  datafile = errorreport_savedata(e, jsondata,
> > filename)
> > -                bb.note("The errors for this build are stored in
> > %s\nYou can send the errors to a reports server by
> > running:\n  send-error-report %s [-s server]" % (datafile,
> > datafile))
> > -                bb.note("The contents of these logs will be posted
> > in public if you use the above command with the default server.
> > Please ensure you remove any identifying or proprietary information
> > when prompted before sending.")
> > +
> > +                cmd_s = "send-error-report %s" % datafile
> > +                response_s = "The errors for this build are stored
> > in %s\n" % datafile
> > +                sendit = False
> > +
> > +                autosend =
> > e.data.getVarFlag("REPORTERROR","autosend")
> > +                user = e.data.getVarFlag("REPORTERROR","user")
> > +                email = e.data.getVarFlag("REPORTERROR","email")
> > +                server = e.data.getVarFlag("REPORTERROR","server")
> > +
> > +                if user is not None:
> > +                    cmd_s += " -n %s" % user
> > +                if email is not None:
> > +                    cmd_s += " -e %s" % email
> > +                if server is not None:
> > +                    cmd_s += " -s %s" % server
> > +
> > +                if autosend is not None:
> > +                    if autosend == "yes":
> > +                        response_s += "The errors for this build
> > are set to automatically be sent.\n"
> > +                        cmd_s += " -y"
> > +                        sendit = True
> > +                    elif autosend == "ask":
> > +                        response_s += "The errors for this build
> > are set to automatically be sent.\n"
> > +                        sendit = True
> > +                elif autosend is None:
> > +                        response_s += "You can send the errors to
> > a reports server by running:\n  %s\n" % cmd_s
> > +                elif e.data.getVarFlags('REPORTERROR') is None:
> > +                        response_s += "You can send the errors to
> > a reports server by running:\n  %s [-s server]\n" % cmd_s
> > +                        response_s += "The contents of these logs
> > will be posted in public if you use the above command with the
> > default server.\n \
> > +                             Please ensure you remove any
> > identifying or proprietary information when prompted before
> > sending.\n"
> > +
> > +                bb.note(response_s)
> > +
> > +                if sendit == True:
> > +                    import shlex, subprocess
> > +                    args = shlex.split(cmd_s)
> > +                    subprocess.call(args)
> >  }
> >  
> >  addhandler errorreport_handler
> > -- 
> > 2.9.3
> > 
> > -- 
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list