commit: 94751f5a25c610be0faa036cfbaf19702c9c05cb
Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 12 15:41:03 2021 +0000
Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Mon Apr 12 15:41:03 2021 +0000
URL:
https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=94751f5a
Move repo update to new builder and change git_change
Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>
buildbot_gentoo_ci/config/builders.py | 9 ++
buildbot_gentoo_ci/config/buildfactorys.py | 19 ++-
buildbot_gentoo_ci/config/schedulers.py | 53 ++++----
buildbot_gentoo_ci/db/model.py | 1 +
buildbot_gentoo_ci/db/repositorys.py | 13 +-
buildbot_gentoo_ci/steps/portage.py | 30 +++++
buildbot_gentoo_ci/steps/repos.py | 149 +++++++++++++++++++++
buildbot_gentoo_ci/steps/update_db.py | 203 +++++++----------------------
8 files changed, 292 insertions(+), 185 deletions(-)
diff --git a/buildbot_gentoo_ci/config/builders.py
b/buildbot_gentoo_ci/config/builders.py
index 25b180c..d022ac7 100644
--- a/buildbot_gentoo_ci/config/builders.py
+++ b/buildbot_gentoo_ci/config/builders.py
@@ -15,6 +15,15 @@ def gentoo_builders(b=[]):
)
)
# FIXME: get workers from db
+ b.append(util.BuilderConfig(
+ name='update_repo_check',
+ workername='updatedb_1',
+ workerbuilddir='builds',
+ collapseRequests=True,
+ factory=buildfactorys.update_repo_check()
+ )
+ )
+ # FIXME: get workers from db
# Use multiplay workers depend on Property(cpv)
# if cp do not match next one, use diffrent worker then
# or first cp have done its buildsteps.
diff --git a/buildbot_gentoo_ci/config/buildfactorys.py
b/buildbot_gentoo_ci/config/buildfactorys.py
index 817b324..962eeb0 100644
--- a/buildbot_gentoo_ci/config/buildfactorys.py
+++ b/buildbot_gentoo_ci/config/buildfactorys.py
@@ -11,6 +11,7 @@ from buildbot_gentoo_ci.steps import version
from buildbot_gentoo_ci.steps import builders
from buildbot_gentoo_ci.steps import portage
from buildbot_gentoo_ci.steps import logs
+from buildbot_gentoo_ci.steps import repos
def update_db_check():
f = util.BuildFactory()
@@ -18,10 +19,10 @@ def update_db_check():
# Get base project data from db
# return profile_repository, project
f.addStep(update_db.GetDataGentooCiProject())
- # Check if needed path is there
- f.addStep(update_db.CheckPath())
# update the repos
- f.addStep(update_db.UpdateRepos())
+ f.addStep(update_db.TriggerUpdateRepositorys())
+ # Check if needed path is there
+ f.addStep(portage.CheckPathLocal())
# setup the profile
f.addStep(portage.SetMakeProfileLocal())
# setup repos.conf dir
@@ -33,6 +34,18 @@ def update_db_check():
f.addStep(update_db.TriggerCheckForCPV())
return f
+def update_repo_check():
+ f = util.BuildFactory()
+ # FIXME: 6
+ # Check if needed path is there
+ f.addStep(repos.CheckPathRepositoryLocal())
+ # update the repos
+ # FIXME:
+ # use doStepIf so we don't need to do step=profile
+ f.addStep(repos.CheckRepository(step='profile'))
+ f.addStep(repos.CheckRepository())
+ return f
+
def update_db_cp():
f = util.BuildFactory()
# FIXME: 2
diff --git a/buildbot_gentoo_ci/config/schedulers.py
b/buildbot_gentoo_ci/config/schedulers.py
index 5be8419..107bb3c 100644
--- a/buildbot_gentoo_ci/config/schedulers.py
+++ b/buildbot_gentoo_ci/config/schedulers.py
@@ -13,37 +13,37 @@ def builderUpdateDbNames(props):
@util.renderer
def gitUpdateDb(props):
- git_changes = []
- print(props.changes)
- for k in props.changes:
- change_data = {}
- print(k)
- change_data['cpvs'] = []
- for v in k['files']:
- if v.endswith('.ebuild'):
- c = v.split('/')[0]
- pv = v.split('/')[2][:-7]
- cpv = c + '/' + pv
- print(cpv)
- change_data['cpvs'].append(cpv)
- if k['repository'].endswith('.git'):
- for v in k['repository'].split('/'):
- if v.endswith('.git'):
- change_data['repository'] = v[:-4]
- change_data['author'] = k['author']
- change_data['committer'] = k['committer']
- change_data['comments'] = k['comments']
- change_data['revision'] = k['revision']
- git_changes.append(change_data)
- print(git_changes)
- return git_changes
+ k = props.changes[0]
+ change_data = {}
+ print(k)
+ change_data['cpvs'] = []
+ for v in k['files']:
+ if v.endswith('.ebuild'):
+ c = v.split('/')[0]
+ p = v.split('/')[1]
+ pv = v.split('/')[2][:-7]
+ cpv = c + '/' + pv
+ print(cpv)
+ change_data['cp'] = c + '/' + p
+ change_data['cpvs'].append(cpv)
+ if k['repository'].endswith('.git'):
+ for v in k['repository'].split('/'):
+ if v.endswith('.git'):
+ change_data['repository'] = v[:-4]
+ change_data['author'] = k['author']
+ change_data['committer'] = k['committer']
+ change_data['comments'] = k['comments']
+ change_data['revision'] = k['revision']
+ change_data['timestamp'] =k['when_timestamp']
+ print(change_data)
+ return change_data
def gentoo_schedulers():
scheduler_update_db = schedulers.SingleBranchScheduler(
name='scheduler_update_db',
treeStableTimer=0,
properties = {
- 'git_changes' : gitUpdateDb,
+ 'git_change' : gitUpdateDb,
},
builderNames = builderUpdateDbNames,
change_filter=util.ChangeFilter(branch='master'),
@@ -68,6 +68,8 @@ def gentoo_schedulers():
])
update_cpv_data = schedulers.Triggerable(name="update_cpv_data",
builderNames=["update_cpv_data"])
+ update_repo_check = schedulers.Triggerable(name="update_repo_check",
+ builderNames=["update_repo_check"])
update_v_data = schedulers.Triggerable(name="update_v_data",
builderNames=["update_v_data"])
build_request_data = schedulers.Triggerable(name="build_request_data",
@@ -79,6 +81,7 @@ def gentoo_schedulers():
s = []
s.append(test_updatedb)
s.append(scheduler_update_db)
+ s.append(update_repo_check)
s.append(update_cpv_data)
s.append(update_v_data)
s.append(build_request_data)
diff --git a/buildbot_gentoo_ci/db/model.py b/buildbot_gentoo_ci/db/model.py
index 3abc686..54c964f 100644
--- a/buildbot_gentoo_ci/db/model.py
+++ b/buildbot_gentoo_ci/db/model.py
@@ -91,6 +91,7 @@ class Model(base.DBConnectorComponent):
sa.Column('poll_interval', sa.Integer, nullable=False, default=600),
sa.Column('poll_random_delay_min', sa.Integer, nullable=False,
default=600),
sa.Column('poll_random_delay_max', sa.Integer, nullable=False,
default=600),
+ sa.Column('updated_at', sa.Integer, nullable=True),
)
projects = sautils.Table(
diff --git a/buildbot_gentoo_ci/db/repositorys.py
b/buildbot_gentoo_ci/db/repositorys.py
index 6a4ef83..8806dd1 100644
--- a/buildbot_gentoo_ci/db/repositorys.py
+++ b/buildbot_gentoo_ci/db/repositorys.py
@@ -80,6 +80,16 @@ class
RepositorysConnectorComponent(base.DBConnectorComponent):
res = yield self.db.pool.do(thd)
return res
+ @defer.inlineCallbacks
+ def updateGitPollerTime(self, uuid):
+ updated_at = int(self.master.reactor.seconds())
+ def thd(conn, no_recurse=False):
+ tbl = self.db.model.repositorys_gitpullers
+ q = tbl.update()
+ q = q.where(tbl.c.repository_uuid == uuid)
+ conn.execute(q, updated_at=updated_at)
+ yield self.db.pool.do(thd)
+
def _row2dict(self, conn, row):
return dict(
uuid=row.uuid,
@@ -101,5 +111,6 @@ class
RepositorysConnectorComponent(base.DBConnectorComponent):
branches=row.branches,
poll_interval=row.poll_interval,
poll_random_delay_min=row.poll_random_delay_min,
- poll_random_delay_max=row.poll_random_delay_max
+ poll_random_delay_max=row.poll_random_delay_max,
+ updated_at=row.updated_at
)
diff --git a/buildbot_gentoo_ci/steps/portage.py
b/buildbot_gentoo_ci/steps/portage.py
index 7822af1..2308617 100644
--- a/buildbot_gentoo_ci/steps/portage.py
+++ b/buildbot_gentoo_ci/steps/portage.py
@@ -353,6 +353,36 @@ class SetEnvDefault(BuildStep):
yield self.build.addStepsAfterCurrentStep(aftersteps_list)
return SUCCESS
+class CheckPathLocal(BuildStep):
+
+ name = 'CheckPathLocal'
+ description = 'Running'
+ descriptionDone = 'Ran'
+ descriptionSuffix = None
+ haltOnFailure = True
+ flunkOnFailure = True
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ @defer.inlineCallbacks
+ def run(self):
+ self.portage_path = yield os.path.join('etc', 'portage')
+ self.profile_path = yield os.path.join(self.portage_path,
'make.profile')
+ self.repos_path = yield os.path.join(self.portage_path, 'repos.conf')
+ print(os.getcwd())
+ print(self.getProperty("builddir"))
+ yield os.chdir(self.getProperty("builddir"))
+ print(os.getcwd())
+ for x in [
+ self.portage_path,
+ self.profile_path,
+ self.repos_path,
+ ]:
+ if not os.path.isdir(x):
+ os.makedirs(x)
+ return SUCCESS
+
class SetMakeProfileLocal(BuildStep):
name = 'SetMakeProfileLocal'
diff --git a/buildbot_gentoo_ci/steps/repos.py
b/buildbot_gentoo_ci/steps/repos.py
new file mode 100644
index 0000000..bc06e45
--- /dev/null
+++ b/buildbot_gentoo_ci/steps/repos.py
@@ -0,0 +1,149 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+import os
+import pygit2
+
+from twisted.internet import defer
+
+from buildbot.process.buildstep import BuildStep
+from buildbot.process.results import SUCCESS
+from buildbot.process.results import FAILURE
+from buildbot.process.results import SKIPPED
+from buildbot.plugins import steps
+from buildbot.config import error as config_error
+
+class CheckPathRepositoryLocal(BuildStep):
+
+ name = 'CheckPathRepositoryLocal'
+ description = 'Running'
+ descriptionDone = 'Ran'
+ descriptionSuffix = None
+ haltOnFailure = True
+ flunkOnFailure = True
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ def run(self):
+ self.gentooci =
self.master.namedServices['services'].namedServices['gentooci']
+ # self.repository_basedir =
self.gentooci.config.project['mirror_repository_basedir']
+ repository_basedir = '/home/repos2/'
+ self.setProperty("repository_basedir", repository_basedir,
'repository_basedir')
+ if os.path.isdir(repository_basedir):
+ return SUCCESS
+ return FAILURE
+
+class CheckRepository(BuildStep):
+
+ name = 'CheckRepository'
+ description = 'Running'
+ descriptionDone = 'Ran'
+ haltOnFailure = True
+ flunkOnFailure = True
+
+ def __init__(self, step=None, **kwargs):
+ self.step = step
+ super().__init__(**kwargs)
+
+ # Origin:
https://github.com/MichaelBoselowitz/pygit2-examples/blob/master/examples.py#L54
+ # Modifyed by Gentoo Authors.
+ def gitPull(self, repo, remote_name='origin', branch='master'):
+ for remote in repo.remotes:
+ if remote.name == remote_name:
+ remote.fetch()
+ remote_master_id =
repo.lookup_reference('refs/remotes/origin/%s' % (branch)).target
+ print(remote_master_id)
+ merge_result, _ = repo.merge_analysis(remote_master_id)
+ print(merge_result)
+ # Up to date, do nothing
+ if merge_result & pygit2.GIT_MERGE_ANALYSIS_UP_TO_DATE:
+ print('UP_TO_DATE')
+ return None
+ # We can just fastforward
+ elif merge_result & pygit2.GIT_MERGE_ANALYSIS_FASTFORWARD:
+ print('FASTFORWARD')
+ repo.checkout_tree(repo.get(remote_master_id))
+ try:
+ master_ref = repo.lookup_reference('refs/heads/%s' %
(branch))
+ master_ref.set_target(remote_master_id)
+ except KeyError:
+ repo.create_branch(branch, repo.get(remote_master_id))
+ repo.head.set_target(remote_master_id)
+ return True
+ elif merge_result & pygit2.GIT_MERGE_ANALYSIS_NORMAL:
+ print('NORMAL')
+ repo.merge(remote_master_id)
+ if repo.index.conflicts is not None:
+ for conflict in repo.index.conflicts:
+ print('Conflicts found in:', conflict[0].path)
+ raise AssertionError('Conflicts, ahhhhh!!')
+
+ user = repo.default_signature
+ tree = repo.index.write_tree()
+ commit = repo.create_commit('HEAD',
+ user,
+ user,
+ 'Merge!',
+ tree,
+ [repo.head.target,
remote_master_id])
+ # We need to do this or git CLI will think we are still
merging.
+ repo.state_cleanup()
+ return True
+ else:
+ raise AssertionError('Unknown merge analysis result')
+ return True
+
+ @defer.inlineCallbacks
+ def setchmod(self, path):
+ for root, dirs, files in os.walk(path):
+ for d in dirs:
+ yield os.chmod(os.path.join(root, d), 0o0755)
+ for f in files:
+ yield os.chmod(os.path.join(root, f), 0o0644)
+
+ @defer.inlineCallbacks
+ def checkRepos(self, repository_data):
+ repository_path = yield
os.path.join(self.getProperty("repository_basedir"), repository_data['name'])
+ repo_path = yield pygit2.discover_repository(repository_path)
+ print(repo_path)
+ if repo_path is None:
+ yield pygit2.clone_repository(repository_data['mirror_url'],
repository_path)
+ success = True
+ else:
+ repo = yield pygit2.Repository(repo_path)
+ commit = repo.get(repo.head.target)
+ success = yield self.gitPull(repo)
+ print(commit.hex)
+ print(commit.commit_time)
+ # chmod needed for ebuilds metadata portage.GetAuxMetadata step
+ yield self.setchmod(repository_path)
+ return success
+
+ @defer.inlineCallbacks
+ def run(self):
+ #FIXME: # move som of it to buildfactory update_repo_check
+ if self.step == 'profile':
+ if self.getProperty("profile_repository_uuid") ==
self.getProperty("repository_uuid"):
+ return SKIPPED
+ repository_uuid = self.getProperty("profile_repository_uuid")
+ else:
+ repository_uuid = self.getProperty("repository_uuid")
+ #---
+ self.gentooci =
self.master.namedServices['services'].namedServices['gentooci']
+ repository_data = yield
self.gentooci.db.repositorys.getRepositoryByUuid(repository_uuid)
+ self.descriptionSuffix = repository_data['name']
+ if repository_data['type'] == 'gitpuller':
+ Poller_data = yield
self.gentooci.db.repositorys.getGitPollerByUuid(repository_uuid)
+ print(Poller_data['updated_at'])
+ print(self.getProperty("commit_time"))
+ if Poller_data['updated_at'] > self.getProperty("commit_time"):
+ return SKIPPED
+ success = yield self.checkRepos(repository_data)
+ if success is None:
+ return SKIPPED
+ if not success:
+ return FAILURE
+ if repository_data['type'] == 'gitpuller':
+ yield
self.gentooci.db.repositorys.updateGitPollerTime(repository_uuid)
+ return SUCCESS
diff --git a/buildbot_gentoo_ci/steps/update_db.py
b/buildbot_gentoo_ci/steps/update_db.py
index 3594c1b..b19d0e7 100644
--- a/buildbot_gentoo_ci/steps/update_db.py
+++ b/buildbot_gentoo_ci/steps/update_db.py
@@ -1,12 +1,7 @@
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
-import os
-import pygit2
-
-from portage import config as portage_config
from portage.versions import catpkgsplit
-from portage.util import getconfig
from twisted.internet import defer
from twisted.python import log
@@ -34,7 +29,7 @@ class GetDataGentooCiProject(BuildStep):
return FAILURE
print(self.project_data)
print(self.profile_repository_data)
- print(self.getProperty("git_changes"))
+ print(self.getProperty("git_change"))
print(self.getProperty("repository"))
repository = False
self.repository_data = False
@@ -49,133 +44,31 @@ class GetDataGentooCiProject(BuildStep):
self.setProperty("repository_data", self.repository_data,
'repository_data')
return SUCCESS
-class CheckPath(BuildStep):
-
- name = 'CheckPath'
- description = 'Running'
- descriptionDone = 'Ran'
- descriptionSuffix = None
- haltOnFailure = True
- flunkOnFailure = True
-
+class TriggerUpdateRepositorys(BuildStep):
def __init__(self, **kwargs):
super().__init__(**kwargs)
- @defer.inlineCallbacks
- def run(self):
- self.gentooci =
self.master.namedServices['services'].namedServices['gentooci']
- self.repository_basedir =
self.gentooci.config.project['repository_basedir']
- self.portage_path = yield os.path.join('etc', 'portage')
- self.profile_path = yield os.path.join(self.portage_path,
'make.profile')
- self.repos_path = yield os.path.join(self.portage_path, 'repos.conf')
- print(os.getcwd())
- print(self.getProperty("builddir"))
- yield os.chdir(self.getProperty("builddir"))
- success = True
- print(os.getcwd())
- for x in [
- self.portage_path,
- self.profile_path,
- self.repos_path,
- self.repository_basedir
- ]:
- if not os.path.isdir(x):
- os.makedirs(x)
- return SUCCESS
-
-class UpdateRepos(BuildStep):
-
- name = 'UpdateRepos'
+ name = 'TriggerUpdateRepositorys'
description = 'Running'
descriptionDone = 'Ran'
descriptionSuffix = None
haltOnFailure = True
flunkOnFailure = True
- def __init__(self, **kwargs):
- super().__init__(**kwargs)
-
- # Origin:
https://github.com/MichaelBoselowitz/pygit2-examples/blob/master/examples.py#L54
- # Modifyed by Gentoo Authors.
- def gitPull(self, repo, remote_name='origin', branch='master'):
- for remote in repo.remotes:
- if remote.name == remote_name:
- remote.fetch()
- remote_master_id =
repo.lookup_reference('refs/remotes/origin/%s' % (branch)).target
- print(remote_master_id)
- merge_result, _ = repo.merge_analysis(remote_master_id)
- print(merge_result)
- # Up to date, do nothing
- if merge_result & pygit2.GIT_MERGE_ANALYSIS_UP_TO_DATE:
- print('UP_TO_DATE')
- return
- # We can just fastforward
- elif merge_result & pygit2.GIT_MERGE_ANALYSIS_FASTFORWARD:
- print('FASTFORWARD')
- repo.checkout_tree(repo.get(remote_master_id))
- try:
- master_ref = repo.lookup_reference('refs/heads/%s' %
(branch))
- master_ref.set_target(remote_master_id)
- except KeyError:
- repo.create_branch(branch, repo.get(remote_master_id))
- repo.head.set_target(remote_master_id)
- elif merge_result & pygit2.GIT_MERGE_ANALYSIS_NORMAL:
- print('NORMAL')
- repo.merge(remote_master_id)
- if repo.index.conflicts is not None:
- for conflict in repo.index.conflicts:
- print('Conflicts found in:', conflict[0].path)
- raise AssertionError('Conflicts, ahhhhh!!')
-
- user = repo.default_signature
- tree = repo.index.write_tree()
- commit = repo.create_commit('HEAD',
- user,
- user,
- 'Merge!',
- tree,
- [repo.head.target,
remote_master_id])
- # We need to do this or git CLI will think we are still
merging.
- repo.state_cleanup()
- else:
- raise AssertionError('Unknown merge analysis result')
-
- @defer.inlineCallbacks
- def setchmod(self, path):
- for root, dirs, files in os.walk(path):
- for d in dirs:
- yield os.chmod(os.path.join(root, d), 0o0755)
- for f in files:
- yield os.chmod(os.path.join(root, f), 0o0644)
-
@defer.inlineCallbacks
def run(self):
- #FIXME check HEAD agenst local and worker local tree so we don't
gitpull evrytime
- self.gentooci =
self.master.namedServices['services'].namedServices['gentooci']
- #self.repository_basedir =
self.gentooci.config.project['repository_basedir']
- self.repository_basedir = yield os.path.join('/home', 'repos2')
- self.profile_repository_path = yield
os.path.join(self.repository_basedir,
self.getProperty("profile_repository_data")['name'])
- repo_path = yield
pygit2.discover_repository(self.profile_repository_path)
- print(repo_path)
- if repo_path is None:
- yield
pygit2.clone_repository(self.getProperty("profile_repository_data")['mirror_url'],
self.profile_repository_path)
- else:
- repo = yield pygit2.Repository(repo_path)
- yield self.gitPull(repo)
- # chmod and chown
- yield self.setchmod(self.profile_repository_path)
- #yield os.chown(self.profile_repository_path, 'buildbot', 'portage')
- if self.getProperty("profile_repository_data")['name'] !=
self.getProperty("repository_data")['name']:
- self.repository_path = yield os.path.join(self.repository_basedir,
self.getProperty("repository_data")['name'])
- repo_path = yield pygit2.discover_repository(self.repository_path)
- if repo_path is None:
- yield
pygit2.clone_repository(self.getProperty("profile_repository_data")['mirror_url'],
self.repository_path)
- else:
- repo = yield pygit2.Repository(repo_path)
- yield self.gitPull(repo)
- # chmod and chown
- yield self.setchmod(self.profile_repository_path)
- #yield os.chown(self.repository_path, 'buildbot', 'portage')
+ yield self.build.addStepsAfterCurrentStep([
+ steps.Trigger(
+ schedulerNames=['update_repo_check'],
+ waitForFinish=True,
+ updateSourceStamp=False,
+ set_properties={
+ 'profile_repository_uuid' :
self.getProperty("profile_repository_data")['uuid'],
+ 'repository_uuid' :
self.getProperty("repository_data")['uuid'],
+ 'commit_time' :
self.getProperty("git_change")['timestamp'],
+ }
+ )
+ ])
return SUCCESS
class TriggerCheckForCPV(BuildStep):
@@ -191,43 +84,41 @@ class TriggerCheckForCPV(BuildStep):
@defer.inlineCallbacks
def run(self):
- self.git_changes = self.getProperty("git_changes")
- print(self.git_changes)
- # check if git_change is a string or a list
- if not isinstance(self.git_changes, list):
+ change_data = self.getProperty("git_change")
+ # check if git_change is a dict
+ if not isinstance(change_data, dict):
return FAILURE
addStepUpdateCPVData = []
- for change_data in self.git_changes:
- # make a trigger for all cpv in the list
- for cpv in change_data['cpvs']:
- self.success = True
- if change_data['repository'] !=
self.getProperty("repository_data")['name']:
- log.msg("%s don't match" % change_data['repository'])
- self.success = False
- # Trigger cpv builds and update db if we are working with
ebuilds
- # check that cpv is valied
- if catpkgsplit(cpv) is None:
- log.msg("%s is not vaild package name" % cpv)
- self.success = False
- if self.success:
- revision_data = {}
- revision_data['author'] = change_data['author']
- revision_data['committer'] = change_data['committer']
- revision_data['comments'] = change_data['comments']
- revision_data['revision'] = change_data['revision']
- addStepUpdateCPVData.append(
- steps.Trigger(
- schedulerNames=['update_cpv_data'],
- waitForFinish=False,
- updateSourceStamp=False,
- set_properties={
- 'cpv' : cpv,
- 'project_data' :
self.getProperty("project_data"),
- 'repository_data' :
self.getProperty("repository_data"),
- 'revision_data' : revision_data,
- }
- )
+ # make a trigger for all cpv in the list
+ for cpv in change_data['cpvs']:
+ self.success = True
+ if change_data['repository'] !=
self.getProperty("repository_data")['name']:
+ log.msg("%s don't match" % change_data['repository'])
+ self.success = False
+ # Trigger cpv builds and update db if we are working with ebuilds
+ # check that cpv is valied
+ if catpkgsplit(cpv) is None:
+ log.msg("%s is not vaild package name" % cpv)
+ self.success = False
+ if self.success:
+ revision_data = {}
+ revision_data['author'] = change_data['author']
+ revision_data['committer'] = change_data['committer']
+ revision_data['comments'] = change_data['comments']
+ revision_data['revision'] = change_data['revision']
+ addStepUpdateCPVData.append(
+ steps.Trigger(
+ schedulerNames=['update_cpv_data'],
+ waitForFinish=False,
+ updateSourceStamp=False,
+ set_properties={
+ 'cpv' : cpv,
+ 'project_data' : self.getProperty("project_data"),
+ 'repository_data' :
self.getProperty("repository_data"),
+ 'revision_data' : revision_data,
+ }
)
+ )
print(addStepUpdateCPVData)
yield self.build.addStepsAfterCurrentStep(addStepUpdateCPVData)
if self.success is False: