[yocto] [PATCH][autobuilder] lib/buildsteps.py: Add BitbakeShellCommand class for dump bitbake logs
Aníbal Limón
anibal.limon at linux.intel.com
Mon Feb 29 16:36:52 PST 2016
The BitbakeShellCommand is a new class for store common methods when
is aim to run bitbake inside an step.
This commit overrides commandComplete method for search in bitbake
stdout if ERROR exists and if found then open the bitbake log and
dumps into new bitbake_logs output.
Signed-off-by: Aníbal Limón <anibal.limon at linux.intel.com>
---
.../autobuilder/buildsteps/BuildImages.py | 4 +++-
.../autobuilder/buildsteps/BuildToolchainImages.py | 4 +++-
.../autobuilder/buildsteps/GetBitbakeVersion.py | 4 +++-
.../autobuilder/buildsteps/RunESDKSanityTests.py | 4 +++-
.../autobuilder/buildsteps/RunSDKSanityTests.py | 4 +++-
.../autobuilder/buildsteps/RunSanityTests.py | 4 +++-
.../site-packages/autobuilder/lib/buildsteps.py | 28 ++++++++++++++++++++++
7 files changed, 46 insertions(+), 6 deletions(-)
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/BuildImages.py b/lib/python2.7/site-packages/autobuilder/buildsteps/BuildImages.py
index 4987ef3..5ed6e1a 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/BuildImages.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/BuildImages.py
@@ -17,7 +17,9 @@ from distutils.version import StrictVersion
from buildbot.status.results import SUCCESS
import os
-class BuildImages(ShellCommand):
+from lib.buildsteps import BitbakeShellCommand
+
+class BuildImages(BitbakeShellCommand):
haltOnFailure = False
flunkOnFailure = True
name = "BuildImages"
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/BuildToolchainImages.py b/lib/python2.7/site-packages/autobuilder/buildsteps/BuildToolchainImages.py
index 51069c2..0594ac2 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/BuildToolchainImages.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/BuildToolchainImages.py
@@ -15,7 +15,9 @@ from buildbot.steps.shell import ShellCommand
from buildbot.process.buildstep import LogLineObserver
import os
-class BuildToolchainImages(ShellCommand):
+from lib.buildsteps import BitbakeShellCommand
+
+class BuildToolchainImages(BitbakeShellCommand):
haltOnFailure = False
flunkOnFailure = True
name = "Building Toolchain Images"
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/GetBitbakeVersion.py b/lib/python2.7/site-packages/autobuilder/buildsteps/GetBitbakeVersion.py
index dc6c25b..94b5efe 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/GetBitbakeVersion.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/GetBitbakeVersion.py
@@ -16,7 +16,9 @@ from buildbot.process.properties import WithProperties
from twisted.python import log
from autobuilder.config import *
-class GetBitbakeVersion(ShellCommand):
+from lib.buildsteps import BitbakeShellCommand
+
+class GetBitbakeVersion(BitbakeShellCommand):
haltOnFailure = False
flunkOnFailure = False
name = "GetBitbakeVersion"
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/RunESDKSanityTests.py b/lib/python2.7/site-packages/autobuilder/buildsteps/RunESDKSanityTests.py
index e3df6c8..f2817d4 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/RunESDKSanityTests.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/RunESDKSanityTests.py
@@ -16,7 +16,9 @@ from buildbot.status.results import SUCCESS, FAILURE
from twisted.python import log as tlog
import os, re
-class RunESDKSanityTests(ShellCommand):
+from lib.buildsteps import BitbakeShellCommand
+
+class RunESDKSanityTests(BitbakeShellCommand):
haltOnFailure = False
flunkOnFailure = True
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/RunSDKSanityTests.py b/lib/python2.7/site-packages/autobuilder/buildsteps/RunSDKSanityTests.py
index cc0321f..1eeb4d3 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/RunSDKSanityTests.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/RunSDKSanityTests.py
@@ -16,7 +16,9 @@ from buildbot.status.results import SUCCESS, FAILURE
from twisted.python import log as tlog
import os, re
-class RunSDKSanityTests(ShellCommand):
+from lib.buildsteps import BitbakeShellCommand
+
+class RunSDKSanityTests(BitbakeShellCommand):
haltOnFailure = False
flunkOnFailure = True
diff --git a/lib/python2.7/site-packages/autobuilder/buildsteps/RunSanityTests.py b/lib/python2.7/site-packages/autobuilder/buildsteps/RunSanityTests.py
index 62f04af..15a714c 100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/RunSanityTests.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/RunSanityTests.py
@@ -16,7 +16,9 @@ from buildbot.status.results import SUCCESS, FAILURE
from twisted.python import log as tlog
import os, re
-class RunSanityTests(ShellCommand):
+from lib.buildsteps import BitbakeShellCommand
+
+class RunSanityTests(BitbakeShellCommand):
haltOnFailure = False
flunkOnFailure = True
diff --git a/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py b/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py
index 3693a7a..4d2787d 100644
--- a/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py
+++ b/lib/python2.7/site-packages/autobuilder/lib/buildsteps.py
@@ -11,6 +11,8 @@ __email__ = "anibal.limon at linux.intel.com"
'''
import os
+import re
+
from buildbot.steps.shell import ShellCommand
DEFAULT_SHELL = 'bash'
@@ -40,3 +42,29 @@ class ShellCommandCleanEnv(ShellCommand):
pe_cmd += "%s=\"$%s\" " % (pe, pe)
return "env -i %s %s -c " % (pe_cmd, shell)
+
+class BitbakeShellCommand(ShellCommand):
+ def commandComplete(self, cmd):
+ if cmd.didFail():
+ log = self.addLog('bitbake_logs')
+ paths_displayed = []
+
+ rexp = re.compile("^ERROR: Logfile of failure stored in: (.*)$")
+ out = cmd.logs['stdio'].getText()
+ for line in out.split('\n'):
+ m = rexp.match(line)
+ if m:
+ path = m.group(1)
+
+ if path in paths_displayed:
+ continue
+
+ paths_displayed.append(path)
+
+ log.addStdout("Output of: %s\n" % path)
+ with open(path, "r") as f:
+ log.addStdout(f.read())
+ log.addStdout("End output of: %s\n" % path)
+ log.addStdout("\n\n\n\n")
+ log.finish()
+
--
2.1.4
More information about the yocto
mailing list