aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Granberg <zorry@gentoo.org>2021-05-02 17:24:05 +0200
committerMagnus Granberg <zorry@gentoo.org>2021-05-02 17:24:05 +0200
commitc5da0d10e98b62390d47b5b13d66a135706177ed (patch)
treeaf90b84e9c1a3bf4fddb6d05ff45e79b2cc2452c
parentAdd color to the output of IRC reporter (diff)
downloadtinderbox-cluster-c5da0d10e98b62390d47b5b13d66a135706177ed.tar.gz
tinderbox-cluster-c5da0d10e98b62390d47b5b13d66a135706177ed.tar.bz2
tinderbox-cluster-c5da0d10e98b62390d47b5b13d66a135706177ed.zip
Add support for emerge --info
Signed-off-by: Magnus Granberg <zorry@gentoo.org>
-rw-r--r--buildbot_gentoo_ci/config/buildfactorys.py2
-rw-r--r--buildbot_gentoo_ci/steps/builders.py44
-rw-r--r--buildbot_gentoo_ci/steps/logs.py24
3 files changed, 68 insertions, 2 deletions
diff --git a/buildbot_gentoo_ci/config/buildfactorys.py b/buildbot_gentoo_ci/config/buildfactorys.py
index e08127b..417e385 100644
--- a/buildbot_gentoo_ci/config/buildfactorys.py
+++ b/buildbot_gentoo_ci/config/buildfactorys.py
@@ -177,6 +177,8 @@ def parse_build_log():
f.addStep(logs.MakeIssue())
# add sum log to buildbot log
f.addStep(logs.setBuildbotLog())
+ # add emerge info to log and db
+ f.addStep(logs.setEmergeInfoLog())
# set BuildStatus
f.addStep(logs.setBuildStatus())
# setup things for the irc bot
diff --git a/buildbot_gentoo_ci/steps/builders.py b/buildbot_gentoo_ci/steps/builders.py
index 50f924d..3a5de47 100644
--- a/buildbot_gentoo_ci/steps/builders.py
+++ b/buildbot_gentoo_ci/steps/builders.py
@@ -164,6 +164,17 @@ def PersOutputOfDepclean(rc, stdout, stderr):
'depclean_output' : depclean_output
}
+def PersOutputOfEmergeInfo(rc, stdout, stderr):
+ emerge_info_output = {}
+ emerge_info_output['rc'] = rc
+ emerge_info_list = []
+ for line in stdout.split('\n'):
+ emerge_info_list.append(line)
+ emerge_info_output['emerge_info'] = emerge_info_list
+ return {
+ 'emerge_info_output' : emerge_info_output
+ }
+
class TriggerRunBuildRequest(BuildStep):
name = 'TriggerRunBuildRequest'
@@ -650,7 +661,8 @@ class CheckEmergeLogs(BuildStep):
'pkg_check_log_data' : self.getProperty("pkg_check_log_data"),
'repository_data' : self.getProperty('repository_data'),
'faild_cpv' : faild_cpv,
- 'step' : self.step
+ 'step' : self.step,
+ 'emerge_info' : self.getProperty('emerge_info_output')['emerge_info']
}
))
if not self.step is None and self.aftersteps_list != []:
@@ -761,6 +773,35 @@ class CheckPkgCheckLogs(BuildStep):
self.setProperty('pkg_check_log_data', None, 'pkg_check_log_data')
return SUCCESS
+class RunEmergeInfo(BuildStep):
+
+ name = 'RunEmergeInfo'
+ description = 'Running'
+ descriptionDone = 'Ran'
+ haltOnFailure = True
+ flunkOnFailure = True
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ @defer.inlineCallbacks
+ def run(self):
+ aftersteps_list = []
+ shell_commad_list = [
+ 'emerge',
+ ]
+ shell_commad_list.append('--info')
+ aftersteps_list.append(
+ steps.SetPropertyFromCommandNewStyle(
+ command=shell_commad_list,
+ strip=True,
+ extract_fn=PersOutputOfEmergeInfo,
+ workdir='/',
+ timeout=None
+ ))
+ yield self.build.addStepsAfterCurrentStep(aftersteps_list)
+ return SUCCESS
+
class RunBuild(BuildStep):
name = 'RunBuild'
@@ -780,6 +821,7 @@ class RunBuild(BuildStep):
# trigger pars_build_log if we have any logs to check
return SUCCESS
aftersteps_list = []
+ aftersteps_list.append(RunEmergeInfo())
aftersteps_list.append(RunEmerge(step='pre-build'))
aftersteps_list.append(RunEmerge(step='build'))
self.setProperty('depclean', False, 'depclean')
diff --git a/buildbot_gentoo_ci/steps/logs.py b/buildbot_gentoo_ci/steps/logs.py
index 0960b9b..3c0ef8d 100644
--- a/buildbot_gentoo_ci/steps/logs.py
+++ b/buildbot_gentoo_ci/steps/logs.py
@@ -252,7 +252,29 @@ class setBuildbotLog(BuildStep):
# add line for line
for line in self.getProperty('summary_log_list'):
yield log.addStdout(line + '\n')
- # add emerge info log
+ return SUCCESS
+
+class setEmergeInfoLog(BuildStep):
+
+ name = 'setEmergeInfoLog'
+ description = 'Running'
+ descriptionDone = 'Ran'
+ descriptionSuffix = None
+ haltOnFailure = False
+ flunkOnFailure = True
+ warnOnWarnings = True
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ @defer.inlineCallbacks
+ def run(self):
+ #setup the log
+ log = yield self.addLog('emerge_info')
+ #FIXME: add emerge info to db
+ # add line for line
+ for line in self.getProperty('emerge_info'):
+ yield log.addStdout(line + '\n')
return SUCCESS
class setBuildStatus(BuildStep):