aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/autobuilder/lib/buildsteps.py')
-rw-r--r--lib/python2.7/site-packages/autobuilder/lib/buildsteps.py158
1 files changed, 0 insertions, 158 deletions
diff --git a/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py b/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py
deleted file mode 100644
index 8e3707f2..00000000
--- a/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py
+++ /dev/null
@@ -1,158 +0,0 @@
-'''
-Created on Feb 15, 2016
-
-__author__ = "Anibal (alimon) Limon"
-__copyright__ = "Copyright 2016, Intel Corp."
-__credits__ = ["Anibal Limon"]
-__license__ = "GPL"
-__version__ = "2.0"
-__maintainer__ = "Anibal Limon"
-__email__ = "anibal.limon@linux.intel.com"
-'''
-
-import os
-import re
-
-
-from buildbot.steps.shell import ShellCommand
-from buildbot.process.buildstep import LogLineObserver
-from buildbot.status.results import SUCCESS
-
-from lib.ABTools import save_error_report
-
-DEFAULT_SHELL = 'bash'
-
-class ShellCommandCleanEnv(ShellCommand):
- def __init__(self, factory, argdict=None, **kwargs):
- shell = DEFAULT_SHELL
- if 'SHELL' in kwargs:
- shell = kwargs['SHELL']
- del kwargs['SHELL']
-
- if 'PENV' in kwargs:
- preserve_env = kwargs['PENV']
- del kwargs['PENV']
- else:
- preserve_env = ['HOME', 'PWD', 'PATH',
- 'http_proxy', 'https_proxy',
- 'ftp_proxy', 'no_proxy', 'GIT_PROXY_COMMAND']
-
- env_command = self._get_env_cleaned_command(shell, preserve_env)
- self.command = "%s \'%s\'" % (env_command, self.command)
- ShellCommand.__init__(self, **kwargs)
-
- def _get_env_cleaned_command(self, shell, preserve_env):
- pe_cmd = ''
- for pe in preserve_env:
- pe_cmd += "%s=\"$%s\" " % (pe, pe)
-
- return "env -i %s %s -c " % (pe_cmd, shell)
-
-class BitbakeLogLineObserver(LogLineObserver):
- """
- Search in the stdio bitbake log for exception/errors, identify
- if the error is a recipe/task one if not turn on the flag of
- bitbake error/exception and save the log.
- """
-
- rexp_error = re.compile("^ERROR: .*$")
-
- # recipe task errors regex'es
- rexp_pnpv_error = re.compile("^ERROR: (?P<pnpv>.*) do_(?P<task>.*):.*$")
- rexp_task_error = re.compile("^ERROR: Task .*$")
- rexp_log_error = re.compile("^ERROR: Logfile of failure stored in: "\
- "(?P<path>.*)$")
-
- 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
-
- def outLineReceived(self, line):
- self._handleError(line)
-
- def errLineReceived(self, line):
- self._handleError(line)
-
-class BitbakeShellCommand(ShellCommand):
- def __init__(self, factory, argdict=None, **kwargs):
- super(BitbakeShellCommand, self).__init__(**kwargs)
-
- self.stdio_observer = BitbakeLogLineObserver()
- self.addLogObserver('stdio', self.stdio_observer)
-
- def _get_variables(self, log):
- vrs = {}
-
- rexp = re.compile("^(.*)=.*\"(.*)\"$")
- for line in log:
- m = rexp.match(line)
- if m:
- vrs[m.group(1).rstrip()] = m.group(2)
-
- return vrs
-
- def _createBitbakeErrorReport(self, log):
- vrs = self._get_variables(log)
-
- report = {}
- report['machine'] = vrs.get('MACHINE', 'unknown_{0}'.format('MACHINE'))
- report['build_sys'] = vrs.get('BUILD_SYS', 'unknown_{0}'.format('BUILD_SYS'))
- report['nativelsb'] = vrs.get('NATIVELSBSTRING', 'unknown_{0}'.format('NATIVELSBSTRING'))
- report['distro'] = vrs.get('DISTRO', 'unknown_{0}'.format('DISTRO'))
- report['target_sys'] = vrs.get('TARGET_SYS', 'unknown_{0}'.format('TARGET_SYS'))
-
- report['component'] = 'bitbake'
- try:
- branch = self.getProperty('branch')
- revision = self.getProperty('got_revision')
- if not revision:
- revision = self.getProperty('got_revision_oecore')
- except:
- branch = "unknown_branch"
- revision = "unknown_revision"
- report['branch_commit'] = branch + ': ' + revision
-
- failure = {}
- failure['package'] = "bitbake-%s" % vrs.get('BB_VERSION', 'unknown_{0}'.format('BB_VERSION'))
- if 'bitbake-selftest' in self.command:
- report['error_type'] = 'bitbake-selftest'
- failure['task'] = self.command[self.command.find('bitbake-selftest'):]
- else:
- report['error_type'] = 'core'
- failure['task'] = self.command[self.command.find('bitbake'):]
-
- failure['log'] = "\n".join(log)
-
- report['failures'] = [failure]
-
- return report
-
- def commandComplete(self, cmd):
- if cmd.didFail():
- if hasattr(self, 'errors') and self.errors['bitbake']:
- buildername = self.getProperty('buildername')
- buildnumber = self.getProperty('buildnumber')
-
- report = self._createBitbakeErrorReport(self.errors['log'])
- save_error_report(buildername, buildnumber, report, 'bitbake')
-
- def skipStep(self, reason):
- self.command = "echo '%s'" % reason
- self.description = ["%s" % reason]