use event_id consistently during the build process
This commit is contained in:
parent
6199ad1b95
commit
c53ab40cea
2 changed files with 45 additions and 41 deletions
|
|
@ -301,44 +301,41 @@ class BuildRoot(object):
|
|||
self.tag_id = data['tag_id']
|
||||
self.tag_name = data['tag_name']
|
||||
self.repoid = data['repo_id']
|
||||
self.repo_info = session.repoInfo(self.repoid, strict=True)
|
||||
self.event_id = self.repo_info['create_event']
|
||||
self.br_arch = data['arch']
|
||||
self.name = "%(tag_name)s-%(id)s-%(repoid)s" % vars(self)
|
||||
self.config = session.getBuildConfig(self.tag_id)
|
||||
self.config = session.getBuildConfig(self.tag_id, event=self.event_id)
|
||||
|
||||
def _new(self, tag, arch, task_id, distribution=None, repo_id=None, install_group='build', setup_dns=False):
|
||||
"""Create a brand new repo"""
|
||||
if not repo_id:
|
||||
raise koji.BuildrootError, "A repo id must be provided"
|
||||
repo_info = session.repoInfo(repo_id, strict=True)
|
||||
self.repo_info = repo_info
|
||||
self.repoid = self.repo_info['id']
|
||||
self.event_id = self.repo_info['create_event']
|
||||
self.task_id = task_id
|
||||
self.distribution = distribution
|
||||
if not self.distribution:
|
||||
# Provide a default if the srpm did not contain a 'distribution' header,
|
||||
# e.g. if it was built by hand
|
||||
self.distribution = 'Unknown'
|
||||
self.config = session.getBuildConfig(tag)
|
||||
self.config = session.getBuildConfig(tag, event=self.event_id)
|
||||
if not self.config:
|
||||
raise koji.BuildrootError("Could not get config info for tag: %s" % tag)
|
||||
self.tag_id = self.config['id']
|
||||
self.tag_name = self.config['name']
|
||||
if repo_id is None:
|
||||
#use current active repo for tag, waiting if necessary
|
||||
while 1:
|
||||
repo_info = session.getRepo(self.tag_id)
|
||||
if repo_info and repo_info['state'] == koji.REPO_READY:
|
||||
break
|
||||
self.logger.debug("Waiting for repo to be created %s" % self.tag_name)
|
||||
time.sleep(30)
|
||||
else:
|
||||
repo_info = session.repoInfo(repo_id)
|
||||
if self.config['id'] != repo_info['tag_id']:
|
||||
raise koji.BuildrootError, "tag/repo mismatch: %s vs %s" \
|
||||
% (self.config['name'], repo_info['tag_name'])
|
||||
repo_state = koji.REPO_STATES[repo_info['state']]
|
||||
if repo_state == 'EXPIRED':
|
||||
# This should be ok. Expired repos are still intact, just not
|
||||
# up-to-date (which may be the point in some cases).
|
||||
self.logger.info("Requested repo (%i) is no longer current" % repo_id)
|
||||
elif repo_state != 'READY':
|
||||
raise koji.BuildrootError, "Requested repo (%i) is %s" % (repo_id, repo_state)
|
||||
self.repoid = repo_info['id']
|
||||
if self.config['id'] != repo_info['tag_id']:
|
||||
raise koji.BuildrootError, "tag/repo mismatch: %s vs %s" \
|
||||
% (self.config['name'], repo_info['tag_name'])
|
||||
repo_state = koji.REPO_STATES[repo_info['state']]
|
||||
if repo_state == 'EXPIRED':
|
||||
# This should be ok. Expired repos are still intact, just not
|
||||
# up-to-date (which may be the point in some cases).
|
||||
self.logger.info("Requested repo (%i) is no longer current" % repo_id)
|
||||
elif repo_state != 'READY':
|
||||
raise koji.BuildrootError, "Requested repo (%i) is %s" % (repo_id, repo_state)
|
||||
self.br_arch = koji.canonArch(arch)
|
||||
self.logger.debug("New buildroot: %(tag_name)s/%(br_arch)s/%(repoid)s" % vars(self))
|
||||
id = session.host.newBuildRoot(self.repoid, self.br_arch, task_id=task_id)
|
||||
|
|
@ -1586,13 +1583,15 @@ class BuildTask(BaseTaskHandler):
|
|||
repo_state = koji.REPO_STATES[repo_info['state']]
|
||||
if repo_state not in ('READY', 'EXPIRED'):
|
||||
raise koji.BuildError, 'Bad repo: %s (%s)' % (repo_info['id'], repo_state)
|
||||
self.event_id = repo_info['create_event']
|
||||
else:
|
||||
repo_info = None
|
||||
#we'll wait for a repo later (self.getRepo)
|
||||
self.event_id = None
|
||||
task_info = session.getTaskInfo(self.id)
|
||||
target_info = None
|
||||
if target:
|
||||
target_info = session.getBuildTarget(target)
|
||||
target_info = session.getBuildTarget(target, event=self.event_id)
|
||||
if target_info:
|
||||
dest_tag = target_info['dest_tag']
|
||||
build_tag = target_info['build_tag']
|
||||
|
|
@ -1612,7 +1611,7 @@ class BuildTask(BaseTaskHandler):
|
|||
self.opts['skip_tag'] = True
|
||||
dest_tag = build_tag
|
||||
else:
|
||||
taginfo = session.getTag(target)
|
||||
taginfo = session.getTag(target, event=self.event_id)
|
||||
if not taginfo:
|
||||
raise koji.GenericError, 'neither tag nor target: %s' % target
|
||||
dest_tag = taginfo['id']
|
||||
|
|
@ -1636,18 +1635,19 @@ class BuildTask(BaseTaskHandler):
|
|||
session.host.assertPolicy('build_from_repo_id', policy_data)
|
||||
if not repo_info:
|
||||
repo_info = self.getRepo(build_tag) #(subtask)
|
||||
self.event_id = repo_info['create_event']
|
||||
srpm = self.getSRPM(src, build_tag, repo_info['id'])
|
||||
h = self.readSRPMHeader(srpm)
|
||||
data = koji.get_header_fields(h,['name','version','release','epoch'])
|
||||
data['task_id'] = self.id
|
||||
extra_arches = None
|
||||
self.logger.info("Reading package config for %(name)s" % data)
|
||||
pkg_cfg = session.getPackageConfig(dest_tag,data['name'])
|
||||
pkg_cfg = session.getPackageConfig(dest_tag,data['name'],event=self.event_id)
|
||||
self.logger.debug("%r" % pkg_cfg)
|
||||
if pkg_cfg is not None:
|
||||
extra_arches = pkg_cfg.get('extra_arches')
|
||||
if not self.opts.get('skip_tag') and not self.opts.get('scratch'):
|
||||
dest_cfg = session.getPackageConfig(dest_tag,data['name'])
|
||||
dest_cfg = session.getPackageConfig(dest_tag,data['name'],event=self.event_id)
|
||||
# Make sure package is on the list for this tag
|
||||
if dest_cfg is None:
|
||||
raise koji.BuildError, "package %s not in list for tag %s" \
|
||||
|
|
@ -1719,7 +1719,7 @@ class BuildTask(BaseTaskHandler):
|
|||
|
||||
def getArchList(self, build_tag, h, extra=None):
|
||||
# get list of arches to build for
|
||||
buildconfig = session.getBuildConfig(build_tag)
|
||||
buildconfig = session.getBuildConfig(build_tag, event=self.event_id)
|
||||
arches = buildconfig['arches']
|
||||
if not arches:
|
||||
#XXX - need to handle this better
|
||||
|
|
@ -1864,6 +1864,11 @@ class BuildArchTask(BaseTaskHandler):
|
|||
ret = {}
|
||||
if opts is None:
|
||||
opts = {}
|
||||
repo_id = opts.get('repo_id')
|
||||
if not repo_id:
|
||||
raise koji.BuildError, "A repo id must be provided"
|
||||
repo_info = session.repoInfo(repo_id, strict=True)
|
||||
event_id = repo_info['create_event']
|
||||
|
||||
# starting srpm should already have been uploaded by parent
|
||||
self.logger.debug("Reading SRPM")
|
||||
|
|
@ -1885,10 +1890,9 @@ class BuildArchTask(BaseTaskHandler):
|
|||
|
||||
rootopts = {
|
||||
'distribution' : h[rpm.RPMTAG_DISTRIBUTION],
|
||||
'repo_id': repo_id
|
||||
}
|
||||
if opts.get('repo_id') is not None:
|
||||
rootopts['repo_id'] = opts['repo_id']
|
||||
br_arch = self.find_arch(arch, session.host.getHost(), session.getBuildConfig(root))
|
||||
br_arch = self.find_arch(arch, session.host.getHost(), session.getBuildConfig(root, event=event_id))
|
||||
broot = BuildRoot(root, br_arch, self.id, **rootopts)
|
||||
|
||||
self.logger.debug("Initializing buildroot")
|
||||
|
|
@ -2009,7 +2013,7 @@ class BuildSRPMFromSCMTask(BaseTaskHandler):
|
|||
scm = SCM(url)
|
||||
scm.assert_allowed(options.allowed_scms)
|
||||
|
||||
if not opts:
|
||||
if opts is None:
|
||||
opts = {}
|
||||
repo_id = opts.get('repo_id')
|
||||
if not repo_id:
|
||||
|
|
@ -2023,7 +2027,7 @@ class BuildSRPMFromSCMTask(BaseTaskHandler):
|
|||
# a SCM or lookaside cache to retrieve the srpm contents
|
||||
rootopts = {'install_group': 'srpm-build',
|
||||
'setup_dns': True,
|
||||
'repo_id': repo_info['id']}
|
||||
'repo_id': repo_id}
|
||||
br_arch = self.find_arch('noarch', session.host.getHost(), session.getBuildConfig(build_tag['id']))
|
||||
broot = BuildRoot(build_tag['id'], br_arch, self.id, **rootopts)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue