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/
Date: Fri, 5 Aug 2022 18:32:26 +0000 (UTC) [thread overview]
Message-ID: <1659724331.3791e957fd2bb28f350f0ff7399c0c6e43b561d6.zorry@gentoo> (raw)
commit: 3791e957fd2bb28f350f0ff7399c0c6e43b561d6
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 5 18:32:11 2022 +0000
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Fri Aug 5 18:32:11 2022 +0000
URL: https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=3791e957
Add haskell-updater for haskell packages
Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>
buildbot_gentoo_ci/steps/builders.py | 147 ++++++++++++++++++++++-------------
1 file changed, 91 insertions(+), 56 deletions(-)
diff --git a/buildbot_gentoo_ci/steps/builders.py b/buildbot_gentoo_ci/steps/builders.py
index a54c68c..3b6a8d0 100644
--- a/buildbot_gentoo_ci/steps/builders.py
+++ b/buildbot_gentoo_ci/steps/builders.py
@@ -4,6 +4,7 @@
import os
import re
import json
+from pathlib import Path
from portage.versions import catpkgsplit, cpv_getversion
from portage.dep import dep_getcpv, dep_getslot, dep_getrepo
@@ -90,6 +91,8 @@ def PersOutputOfEmerge(rc, stdout, stderr):
# split the lines
#FIXME: Handling of stderr output
stderr_line_list = []
+ if stderr != '' and not emerge_output['failed']:
+ emerge_output['failed'] = True
for line in stderr.split('\n'):
if 'Change USE:' in line:
line_list = line.split(' ')
@@ -340,6 +343,7 @@ class SetupPropertys(BuildStep):
print(self.getProperty("project_build_data"))
self.masterdest = yield os.path.join(self.master.basedir, 'workers', self.getProperty('workername'), str(self.getProperty("buildnumber")))
self.setProperty('masterdest', self.masterdest, 'masterdest')
+ self.setProperty('build_env', {}, 'build_env')
self.descriptionDone = ' '.join([self.getProperty("cpv"), 'for project', self.getProperty('project_data')['name']])
return SUCCESS
@@ -355,7 +359,6 @@ class RunEmerge(BuildStep):
super().__init__(**kwargs)
self.descriptionSuffix = self.step
self.name = 'Setup emerge for ' + self.step + ' step'
- self.build_env = {}
self.build_timeout = 0
@defer.inlineCallbacks
@@ -374,25 +377,28 @@ class RunEmerge(BuildStep):
aftersteps_list = []
#FIXME: Set build timeout in config
self.build_timeout = 6600
- # set env
- # https://bugs.gentoo.org/683118
- # export TERM=linux
- # export TERMINFO=/etc/terminfo
- self.build_env['TERM'] = 'linux'
- self.build_env['TERMINFO'] = '/etc/terminfo'
- # Lang
- self.build_env['LANG'] = 'C.utf8'
- self.build_env['LC_MESSAGES'] = 'C'
- # no color
- self.build_env['CARGO_TERM_COLOR'] = 'never'
- self.build_env['GCC_COLORS'] = '0'
- self.build_env['OCAML_COLOR'] = 'never'
- self.build_env['PY_FORCE_COLOR'] = '0'
- self.build_env['PYTEST_ADDOPTS'] = '--color=no'
- self.build_env['NO_COLOR'] = '1'
- # not all terms support urls
- self.build_env['GCC_URLS'] = 'no'
- self.build_env['TERM_URLS'] = 'no'
+ if self.step == 'update':
+ # set env
+ build_env = {}
+ # https://bugs.gentoo.org/683118
+ # export TERM=linux
+ # export TERMINFO=/etc/terminfo
+ build_env['TERM'] = 'linux'
+ build_env['TERMINFO'] = '/etc/terminfo'
+ # Lang
+ build_env['LANG'] = 'C.utf8'
+ build_env['LC_MESSAGES'] = 'C'
+ # no color
+ build_env['CARGO_TERM_COLOR'] = 'never'
+ build_env['GCC_COLORS'] = '0'
+ build_env['OCAML_COLOR'] = 'never'
+ build_env['PY_FORCE_COLOR'] = '0'
+ build_env['PYTEST_ADDOPTS'] = '--color=no'
+ build_env['NO_COLOR'] = '1'
+ # not all terms support urls
+ build_env['GCC_URLS'] = 'no'
+ build_env['TERM_URLS'] = 'no'
+ self.setProperty('build_env', build_env, 'build_env')
if self.step == 'pre-update':
shell_commad_list.append('-uDN')
@@ -432,6 +438,7 @@ class RunEmerge(BuildStep):
strip=True,
extract_fn=PersOutputOfEmerge,
workdir='/',
+ env=self.getProperty("build_env"),
timeout=self.build_timeout
))
aftersteps_list.append(CheckEmergeLogs('update'))
@@ -548,7 +555,7 @@ class RunEmerge(BuildStep):
strip=True,
extract_fn=PersOutputOfEmerge,
workdir='/',
- env=self.build_env,
+ env=self.getProperty("build_env"),
timeout=self.build_timeout
))
aftersteps_list.append(CheckEmergeLogs('build'))
@@ -682,11 +689,9 @@ class CheckEmergeLogs(BuildStep):
@defer.inlineCallbacks
def createDistDir(self):
workdir = yield os.path.join(self.master.basedir, 'workers', self.getProperty('workername'))
- self.aftersteps_list.append(steps.MasterShellCommand(
- name = 'Make directory for Uploaded files',
- command = ['mkdir', str(self.getProperty("buildnumber"))],
- workdir = workdir
- ))
+ check_dir = yield os.path.join(workdir, str(self.getProperty("buildnumber")))
+ if not Path(check_dir).is_dir():
+ yield Path(check_dir).mkdir(parents=True)
def addFileUploade(self, sourcefile, destfile, name, url, urlText):
self.aftersteps_list.append(steps.FileUpload(
@@ -814,7 +819,7 @@ class CheckEmergeLogs(BuildStep):
print(emerge_output)
# this should be set in the config
retrays = 5
- if self.getProperty('rerun') <= retrays:
+ if self.getProperty('rerun') <= retrays and self.faild_cpv:
# when we need to change use. we could rerun pre-build with
# --autounmask-use=y --autounmask-write=y --autounmask-only=y
# but we use --binpkg--respect-use=y in EMERGE_DEFAULT_OPTS
@@ -895,7 +900,9 @@ class CheckEmergeLogs(BuildStep):
self.aftersteps_list.append(CheckEmergeLogs('extra-build'))
else:
# trigger parse_build_log with info about pre-build and it fail
- pass
+ if self.faild_cpv:
+ pass
+ self.setProperty('rerun', 0, 'rerun')
# Make Logfile dict
if self.step == 'extra-build' or self.step == 'build':
print(emerge_output)
@@ -922,7 +929,9 @@ class CheckEmergeLogs(BuildStep):
# trigger a logparser
# local_log_path dir set in config
# format /var/cache/portage/logs/build/gui-libs/egl-wayland-1.1.6:20210321-173525.log.gz
+ rebuild = False
if self.step == 'build':
+ retrays = 1
# Find log for cpv that was requested or did failed
if not log_dict == {}:
# requested cpv
@@ -934,36 +943,62 @@ class CheckEmergeLogs(BuildStep):
self.log_data[cpv] = log_dict[cpv]
yield self.getLogFile(cpv, log_dict)
if self.faild_cpv:
- # failed and build requested cpv
- if cpv == self.faild_cpv:
- faild_version_data = self.getProperty("version_data")
- else:
- # failed but not build requested cpv
- self.log_data[self.faild_cpv] = log_dict[self.faild_cpv]
- yield self.getLogFile(self.faild_cpv, log_dict)
- faild_version_data = yield self.getVersionData(self.faild_cpv)
- self.setProperty('faild_cpv', self.faild_cpv, 'faild_cpv')
- self.getEmergeFiles(self.faild_cpv)
- self.getBuildWorkDirs(self.faild_cpv)
+ c = yield catpkgsplit(self.faild_cpv)[0]
+ if c == 'dev-haskell':
+ rebuild = 'haskell'
+ if not rebuild or self.getProperty('rerun') >= retrays:
+ # failed and build requested cpv
+ if cpv == self.faild_cpv:
+ faild_version_data = self.getProperty("version_data")
+ else:
+ # failed but not build requested cpv
+ self.log_data[self.faild_cpv] = log_dict[self.faild_cpv]
+ yield self.getLogFile(self.faild_cpv, log_dict)
+ faild_version_data = yield self.getVersionData(self.faild_cpv)
+ self.setProperty('faild_cpv', self.faild_cpv, 'faild_cpv')
+ self.getEmergeFiles(self.faild_cpv)
+ self.getBuildWorkDirs(self.faild_cpv)
+ rebuild = False
else:
self.getEmergeFiles(cpv)
- self.aftersteps_list.append(steps.Trigger(
- name = 'Setup properties for log parser and trigger it',
- schedulerNames=['parse_build_log'],
- waitForFinish=False,
- updateSourceStamp=False,
- set_properties={
- 'cpv' : self.getProperty("cpv"),
- 'faild_version_data' : faild_version_data,
- 'project_build_data' : self.getProperty('project_build_data'),
- 'log_build_data' : self.log_data,
- 'pkg_check_log_data' : self.getProperty("pkg_check_log_data"),
- 'repository_data' : self.getProperty('repository_data'),
- 'faild_cpv' : self.faild_cpv,
- 'step' : self.step,
- 'build_workername' : self.getProperty('workername')
- }
- ))
+ if not rebuild:
+ self.aftersteps_list.append(steps.Trigger(
+ name = 'Setup properties for log parser and trigger it',
+ schedulerNames=['parse_build_log'],
+ waitForFinish=False,
+ updateSourceStamp=False,
+ set_properties={
+ 'cpv' : self.getProperty("cpv"),
+ 'faild_version_data' : faild_version_data,
+ 'project_build_data' : self.getProperty('project_build_data'),
+ 'log_build_data' : self.log_data,
+ 'pkg_check_log_data' : self.getProperty("pkg_check_log_data"),
+ 'repository_data' : self.getProperty('repository_data'),
+ 'faild_cpv' : self.faild_cpv,
+ 'step' : self.step,
+ 'build_workername' : self.getProperty('workername')
+ }
+ ))
+ if rebuild:
+ #FIXME: Set build timeout in config
+ build_timeout = 6600
+ shell_commad_list = []
+ # rebuild broken haskell
+ if rebuild == 'haskell':
+ shell_commad_list.append('haskell-updater')
+ shell_commad_list.append('--')
+ shell_commad_list.append('--usepkg=n')
+ if shell_commad_list != []:
+ self.aftersteps_list.append(
+ steps.ShellCommand(
+ command=shell_commad_list,
+ workdir='/',
+ env=self.getProperty("build_env"),
+ timeout=build_timeout
+ ))
+ self.aftersteps_list.append(RunEmerge(step='build'))
+ self.aftersteps_list.append(CheckEmergeLogs('build'))
+ self.setProperty('rerun', self.getProperty('rerun') + 1, 'rerun')
if not self.step is None and self.aftersteps_list != []:
yield self.build.addStepsAfterCurrentStep(self.aftersteps_list)
return SUCCESS
next reply other threads:[~2022-08-05 18:32 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-05 18:32 Magnus Granberg [this message]
-- strict thread matches above, loose matches on Subject: below --
2024-10-16 20:50 [gentoo-commits] proj/tinderbox-cluster:master commit in: buildbot_gentoo_ci/steps/ Magnus Granberg
2024-03-31 19:40 Magnus Granberg
2024-03-31 19:40 Magnus Granberg
2024-03-23 14:13 Magnus Granberg
2024-03-21 16:56 Magnus Granberg
2024-03-19 17:19 Magnus Granberg
2024-03-17 20:40 Magnus Granberg
2024-03-16 8:49 Magnus Granberg
2024-02-05 18:54 Magnus Granberg
2024-02-04 11:32 Magnus Granberg
2024-02-04 9:49 Magnus Granberg
2024-02-03 10:02 Magnus Granberg
2023-07-26 9:23 Magnus Granberg
2023-06-10 10:08 Magnus Granberg
2023-06-05 8:09 Magnus Granberg
2023-06-05 8:09 Magnus Granberg
2023-05-08 20:19 Magnus Granberg
2023-03-10 22:36 Magnus Granberg
2023-03-10 22:36 Magnus Granberg
2023-03-10 1:47 Magnus Granberg
2023-02-28 21:41 Magnus Granberg
2023-02-28 21:41 Magnus Granberg
2022-09-25 11:46 Magnus Granberg
2022-08-10 21:51 Magnus Granberg
2022-07-30 22:40 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-27 11:02 Magnus Granberg
2022-07-26 11:54 Magnus Granberg
2022-07-13 20:01 Magnus Granberg
2022-07-08 21:54 Magnus Granberg
2022-07-06 18:44 Magnus Granberg
2022-07-04 17:44 Magnus Granberg
2022-06-28 23:26 Magnus Granberg
2022-06-01 0:19 Magnus Granberg
2022-04-22 12:34 Magnus Granberg
2022-01-28 10:09 Magnus Granberg
2022-01-24 8:41 Magnus Granberg
2022-01-24 0:42 Magnus Granberg
2022-01-22 20:50 Magnus Granberg
2022-01-18 20:20 Magnus Granberg
2022-01-18 19:38 Magnus Granberg
2022-01-18 19:16 Magnus Granberg
2022-01-08 17:25 Magnus Granberg
2021-11-01 2:22 Magnus Granberg
2021-10-23 22:26 Magnus Granberg
2021-10-23 22:24 Magnus Granberg
2021-10-06 1:35 Magnus Granberg
2021-10-02 20:52 Magnus Granberg
2021-09-28 22:16 Magnus Granberg
2021-09-22 0:04 Magnus Granberg
2021-09-21 1:29 Magnus Granberg
2021-09-20 23:28 Magnus Granberg
2021-09-07 0:46 Magnus Granberg
2021-07-17 8:14 Magnus Granberg
2021-05-18 8:55 Magnus Granberg
2021-04-26 20:26 Magnus Granberg
2021-04-20 7:05 Magnus Granberg
2021-04-13 19:03 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-04-02 22:12 Magnus Granberg
2021-03-29 0:34 Magnus Granberg
2021-03-29 0:34 Magnus Granberg
2021-03-20 13:42 Magnus Granberg
2021-03-20 13:42 Magnus Granberg
2021-03-20 13:42 Magnus Granberg
2021-02-28 18:48 Magnus Granberg
2021-02-24 21:27 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=1659724331.3791e957fd2bb28f350f0ff7399c0c6e43b561d6.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