From: "Magnus Granberg" <zorry@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/tinderbox-cluster:master commit in: buildbot_gentoo_ci/steps/, buildbot_gentoo_ci/config/
Date: Fri, 24 Dec 2021 00:33:58 +0000 (UTC) [thread overview]
Message-ID: <1640305999.b3edf64aaff42659b3593dfe24a7e0a68e1881a0.zorry@gentoo> (raw)
commit: b3edf64aaff42659b3593dfe24a7e0a68e1881a0
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 24 00:33:19 2021 +0000
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Fri Dec 24 00:33:19 2021 +0000
URL: https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=b3edf64a
put emerge and package info to a file insted
Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>
buildbot_gentoo_ci/config/buildfactorys.py | 4 ++
buildbot_gentoo_ci/steps/builders.py | 74 +++++++++++++++++++++++------
buildbot_gentoo_ci/steps/logs.py | 75 +++++++++++++++++++++++++++++-
3 files changed, 137 insertions(+), 16 deletions(-)
diff --git a/buildbot_gentoo_ci/config/buildfactorys.py b/buildbot_gentoo_ci/config/buildfactorys.py
index 27f0076..6203a1f 100644
--- a/buildbot_gentoo_ci/config/buildfactorys.py
+++ b/buildbot_gentoo_ci/config/buildfactorys.py
@@ -172,8 +172,12 @@ def parse_build_log():
f.addStep(logs.MakeIssue())
# add sum log to buildbot log
f.addStep(logs.setBuildbotLog())
+ # pers the emerge info
+ f.addStep(logs.SetupParserEmergeInfoLog())
# add emerge info to log and db
f.addStep(logs.setEmergeInfoLog())
+ # add package info to log and db
+ f.addStep(logs.setPackageInfoLog())
# 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 7247abd..e76fe3d 100644
--- a/buildbot_gentoo_ci/steps/builders.py
+++ b/buildbot_gentoo_ci/steps/builders.py
@@ -590,14 +590,35 @@ class CheckEmergeLogs(BuildStep):
workdir=workdir
))
- @defer.inlineCallbacks
- def getLogFile(self, cpv, log_dict):
- masterdest = yield os.path.join(self.master.basedir, 'workers', self.getProperty('workername'), str(self.getProperty("buildnumber")) ,log_dict[cpv]['full_logname'])
+ def addFileUploade(self, sourcefile, destfile):
self.aftersteps_list.append(steps.FileUpload(
- workersrc=log_dict[cpv]['log_path'],
- masterdest=masterdest
+ workersrc=sourcefile,
+ masterdest=destfile
))
+ @defer.inlineCallbacks
+ def getLogFile(self, cpv, log_dict):
+ destfile = yield os.path.join(self.masterdest, log_dict[cpv]['full_logname'])
+ sourcefile = log_dict[cpv]['log_path']
+ self.addFileUploade(sourcefile, destfile)
+
+ @defer.inlineCallbacks
+ def getEmergeFiles(self, faild_version_data):
+ # get emerge info
+ destfile = yield os.path.join(self.masterdest, 'emerge_info.txt')
+ sourcefile = yield os.path.join('/', 'tmp', 'emerge_info.txt')
+ self.addFileUploade(sourcefile, destfile)
+ #FIXME:
+ # if faild_version_data:
+ # get emerge.log
+ # get elogs
+ # world file
+
+ def getBuildWorkdirFiles(self):
+ #FIXME:
+ # get files from the build workdir
+ pass
+
@defer.inlineCallbacks
def run(self):
self.gentooci = self.master.namedServices['services'].namedServices['gentooci']
@@ -610,6 +631,8 @@ class CheckEmergeLogs(BuildStep):
]
package_dict = emerge_output['packages']
+ self.masterdest = yield os.path.join(self.master.basedir, 'workers', self.getProperty('workername'), str(self.getProperty("buildnumber")))
+
#FIXME: Prosees the logs and do stuff
# preserved-libs
if emerge_output['preserved_libs'] and projects_emerge_options['preserved_libs']:
@@ -757,12 +780,12 @@ class CheckEmergeLogs(BuildStep):
print(log_dict)
cpv = self.getProperty('cpv')
faild_cpv = emerge_output['failed']
+ faild_version_data = False
if cpv in log_dict or faild_cpv in log_dict:
+ yield self.createDistDir()
if cpv in log_dict:
self.log_data[cpv] = log_dict[cpv]
- yield self.createDistDir()
yield self.getLogFile(cpv, log_dict)
- faild_version_data = False
if faild_cpv:
# failed and build requested cpv
if cpv == faild_cpv:
@@ -772,6 +795,8 @@ class CheckEmergeLogs(BuildStep):
self.log_data[faild_cpv] = log_dict[faild_cpv]
yield self.getLogFile(faild_cpv, log_dict)
faild_version_data = yield self.getVersionData(faild_cpv)
+ self.getBuildWorkdirFiles()
+ self.getEmergeFiles(faild_version_data)
self.aftersteps_list.append(steps.Trigger(
schedulerNames=['parse_build_log'],
waitForFinish=False,
@@ -785,7 +810,6 @@ class CheckEmergeLogs(BuildStep):
'repository_data' : self.getProperty('repository_data'),
'faild_cpv' : faild_cpv,
'step' : self.step,
- 'emerge_info' : self.getProperty('emerge_info_output')['emerge_info'],
'build_workername' : self.getProperty('workername')
}
))
@@ -920,17 +944,37 @@ class RunEmergeInfo(BuildStep):
@defer.inlineCallbacks
def run(self):
aftersteps_list = []
+ # add emerge info
shell_commad_list = [
'emerge',
]
shell_commad_list.append('--info')
+ shell_commad_list.append('>')
+ shell_commad_list.append('/tmp/emerge_info.txt')
aftersteps_list.append(
- steps.SetPropertyFromCommand(
- command=shell_commad_list,
- strip=True,
- extract_fn=PersOutputOfEmergeInfo,
- workdir='/',
- timeout=None
+ steps.ShellCommand(
+ # the list need to be joined to pipe to a file
+ command=' '.join(shell_commad_list),
+ workdir='/'
+ ))
+ # add package info
+ cpv = self.getProperty("cpv")
+ c = yield catpkgsplit(cpv)[0]
+ p = yield catpkgsplit(cpv)[1]
+ shell_commad_list = [
+ 'emerge',
+ ]
+ shell_commad_list.append('-qpvO')
+ shell_commad_list.append('=' + self.getProperty('cpv'))
+ shell_commad_list.append('--usepkg-exclude')
+ shell_commad_list.append(c + '/' + p)
+ shell_commad_list.append('>>')
+ shell_commad_list.append('/tmp/emerge_info.txt')
+ aftersteps_list.append(
+ steps.ShellCommand(
+ # the list need to be joined to pipe to a file
+ command=' '.join(shell_commad_list),
+ workdir='/'
))
yield self.build.addStepsAfterCurrentStep(aftersteps_list)
return SUCCESS
@@ -954,8 +998,8 @@ class RunBuild(BuildStep):
# trigger pars_build_log if we have any logs to check
return SKIPPED
aftersteps_list = []
- aftersteps_list.append(RunEmergeInfo())
aftersteps_list.append(RunEmerge(step='pre-build'))
+ aftersteps_list.append(RunEmergeInfo())
aftersteps_list.append(RunEmerge(step='build'))
aftersteps_list.append(RunEmerge(step='pre-depclean'))
aftersteps_list.append(RunEmerge(step='preserved-libs'))
diff --git a/buildbot_gentoo_ci/steps/logs.py b/buildbot_gentoo_ci/steps/logs.py
index dc5d3a1..d6ee705 100644
--- a/buildbot_gentoo_ci/steps/logs.py
+++ b/buildbot_gentoo_ci/steps/logs.py
@@ -45,6 +45,23 @@ def PersOutputOfLogParser(rc, stdout, stderr):
'build_summery_output' : build_summery_output
}
+def PersOutputOfEmergeInfo(rc, stdout, stderr):
+ #FIXME: line for package info
+ emerge_info_output = {}
+ emerge_info_output['rc'] = rc
+ emerge_info_list = []
+ emerge_package_info = []
+ for line in stdout.split('\n'):
+ if line.startswith('['):
+ emerge_package_info.append(line)
+ else:
+ emerge_info_list.append(line)
+ emerge_info_output['emerge_info'] = emerge_info_list
+ emerge_info_output['emerge_package_info'] = emerge_package_info
+ return {
+ 'emerge_info_output' : emerge_info_output
+ }
+
class SetupPropertys(BuildStep):
name = 'SetupPropertys'
@@ -387,6 +404,38 @@ class setBuildbotLog(BuildStep):
yield log.addStdout(line + '\n')
return SUCCESS
+class SetupParserEmergeInfoLog(BuildStep):
+
+ name = 'SetupParserEmergeInfoLog'
+ description = 'Running'
+ descriptionDone = 'Ran'
+ descriptionSuffix = None
+ haltOnFailure = False
+ flunkOnFailure = True
+ warnOnWarnings = True
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ @defer.inlineCallbacks
+ def run(self):
+ workdir = yield os.path.join(self.master.basedir, 'workers', self.getProperty('build_workername'), str(self.getProperty("project_build_data")['buildbot_build_id']))
+ command = []
+ command.append('cat')
+ command.append('emerge_info.txt')
+ self.aftersteps_list = []
+ self.aftersteps_list.append(master_steps.MasterSetPropertyFromCommand(
+ name = 'RunEmergeInfoLogParser',
+ haltOnFailure = True,
+ flunkOnFailure = True,
+ command=command,
+ workdir=workdir,
+ strip=False,
+ extract_fn=PersOutputOfEmergeInfo
+ ))
+ yield self.build.addStepsAfterCurrentStep(self.aftersteps_list)
+ return SUCCESS
+
class setEmergeInfoLog(BuildStep):
name = 'setEmergeInfoLog'
@@ -406,10 +455,34 @@ class setEmergeInfoLog(BuildStep):
log = yield self.addLog('emerge_info')
#FIXME: add emerge info to db
# add line for line
- for line in self.getProperty('emerge_info'):
+ for line in self.getProperty('emerge_info_output')['emerge_info']:
yield log.addStdout(line + '\n')
return SUCCESS
+class setPackageInfoLog(BuildStep):
+
+ name = 'setPackageInfoLog'
+ 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('package_info')
+ #FIXME: add package info to db
+ # add line for line
+ for line in self.getProperty('emerge_info_output')['emerge_package_info']:
+ yield log.addStdout(line + '\n')
+ return SUCCESS
+
+
class Upload(BuildStep):
name = 'Upload'
next reply other threads:[~2021-12-24 0:34 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-24 0:33 Magnus Granberg [this message]
-- strict thread matches above, loose matches on Subject: below --
2022-11-09 21:05 [gentoo-commits] proj/tinderbox-cluster:master commit in: buildbot_gentoo_ci/steps/, buildbot_gentoo_ci/config/ Magnus Granberg
2022-09-01 14:57 Magnus Granberg
2022-05-28 14:55 Magnus Granberg
2021-10-07 9:17 Magnus Granberg
2021-05-02 15:24 Magnus Granberg
2021-04-04 20:30 Magnus Granberg
2021-04-04 20:30 Magnus Granberg
2021-03-24 23:15 Magnus Granberg
2021-03-18 23:18 Magnus Granberg
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=1640305999.b3edf64aaff42659b3593dfe24a7e0a68e1881a0.zorry@gentoo \
--to=zorry@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox