only path taskinfo, scminfo, [srcdir] to plugin
This commit is contained in:
parent
9bf49841ad
commit
89e82d6020
5 changed files with 45 additions and 63 deletions
|
|
@ -1364,8 +1364,6 @@ class BuildMavenTask(BaseBuildTask):
|
|||
|
||||
scm = SCM(url)
|
||||
scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.contextData())
|
||||
|
||||
repo_id = opts.get('repo_id')
|
||||
if not repo_id:
|
||||
raise koji.BuildError('A repo_id must be provided')
|
||||
|
|
@ -1416,11 +1414,13 @@ class BuildMavenTask(BaseBuildTask):
|
|||
logfile = self.workdir + '/checkout.log'
|
||||
uploadpath = self.getUploadDir()
|
||||
|
||||
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.get_info())
|
||||
# Check out sources from the SCM
|
||||
sourcedir = scm.checkout(scmdir, self.session, uploadpath, logfile)
|
||||
self.run_plugin("postSCMCheckout",
|
||||
scminfo=scm.contextData(),
|
||||
extra_keys={"sourcedir": sourcedir})
|
||||
scminfo=scm.get_info(),
|
||||
srcdir=sourcedir)
|
||||
|
||||
# zip up pristine sources for auditing purposes
|
||||
self._zip_dir(sourcedir, os.path.join(outputdir, 'scm-sources.zip'))
|
||||
|
|
@ -1430,13 +1430,13 @@ class BuildMavenTask(BaseBuildTask):
|
|||
patchlog = self.workdir + '/patches.log'
|
||||
patch_scm = SCM(self.opts.get('patches'))
|
||||
patch_scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=patch_scm.contextData())
|
||||
self.run_plugin('preSCMCheckout', scminfo=patch_scm.get_info())
|
||||
# never try to check out a common/ dir when checking out patches
|
||||
patch_scm.use_common = False
|
||||
patchcheckoutdir = patch_scm.checkout(patchdir, self.session, uploadpath, patchlog)
|
||||
self.run_plugin("postSCMCheckout",
|
||||
scminfo=patch_scm.contextData(),
|
||||
extra_keys={"sourcedir": patchcheckoutdir})
|
||||
scminfo=patch_scm.get_info(),
|
||||
srcdir=patchcheckoutdir)
|
||||
self._zip_dir(patchcheckoutdir, os.path.join(outputdir, 'patches.zip'))
|
||||
|
||||
# Apply patches, if present
|
||||
|
|
@ -1699,7 +1699,6 @@ class WrapperRPMTask(BaseBuildTask):
|
|||
|
||||
scm = SCM(spec_url)
|
||||
scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.contextData())
|
||||
|
||||
repo_id = opts.get('repo_id')
|
||||
if not repo_id:
|
||||
|
|
@ -1718,10 +1717,11 @@ class WrapperRPMTask(BaseBuildTask):
|
|||
logfile = os.path.join(self.workdir, 'checkout.log')
|
||||
scmdir = buildroot.rootdir() + '/tmp/scmroot'
|
||||
koji.ensuredir(scmdir)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.get_info())
|
||||
specdir = scm.checkout(scmdir, self.session, self.getUploadDir(), logfile)
|
||||
self.run_plugin("postSCMCheckout",
|
||||
scminfo=scm.contextData(),
|
||||
extra_keys={"sourcedir": specdir})
|
||||
scminfo=scm.get_info(),
|
||||
srcdir=specdir)
|
||||
|
||||
spec_template = None
|
||||
for path, dir, files in os.walk(specdir):
|
||||
|
|
@ -2653,12 +2653,12 @@ class ImageTask(BaseTaskHandler):
|
|||
if self.opts.get('ksurl'):
|
||||
scm = SCM(self.opts['ksurl'])
|
||||
scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.contextData())
|
||||
logfile = os.path.join(self.workdir, 'checkout.log')
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.get_info())
|
||||
scmsrcdir = scm.checkout(scmdir, self.session, self.getUploadDir(), logfile)
|
||||
self.run_plugin("postSCMCheckout",
|
||||
scminfo=scm.contextData(),
|
||||
extra_keys={"sourcedir": scmsrcdir})
|
||||
scminfo=scm.get_info(),
|
||||
srcdir=scmsrcdir)
|
||||
kspath = os.path.join(scmsrcdir, ksfile)
|
||||
else:
|
||||
kspath = self.localPath("work/%s" % ksfile)
|
||||
|
|
@ -3269,13 +3269,13 @@ class OzImageTask(BaseTaskHandler):
|
|||
if self.opts.get('ksurl'):
|
||||
scm = SCM(self.opts['ksurl'])
|
||||
scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.contextData())
|
||||
logfile = os.path.join(self.workdir, 'checkout-%s.log' % self.arch)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.get_info())
|
||||
scmsrcdir = scm.checkout(self.workdir, self.session,
|
||||
self.getUploadDir(), logfile)
|
||||
self.run_plugin("postSCMCheckout",
|
||||
scminfo=scm.contextData(),
|
||||
extra_keys={"sourcedir": scmsrcdir})
|
||||
scminfo=scm.get_info(),
|
||||
srcdir=scmsrcdir)
|
||||
kspath = os.path.join(scmsrcdir, os.path.basename(ksfile))
|
||||
else:
|
||||
tops = dict([(k, getattr(self.options, k)) for k in 'topurl','topdir'])
|
||||
|
|
@ -4080,13 +4080,13 @@ class BuildIndirectionImageTask(OzImageTask):
|
|||
if fileurl:
|
||||
scm = SCM(fileurl)
|
||||
scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.contextData())
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.get_info())
|
||||
logfile = os.path.join(self.workdir, 'checkout.log')
|
||||
scmsrcdir = scm.checkout(self.workdir, self.session,
|
||||
self.getUploadDir(), logfile)
|
||||
self.run_plugin("postSCMCheckout",
|
||||
scminfo=scm.contextData(),
|
||||
extra_keys={"sourcedir": scmsrcdir})
|
||||
scminfo=scm.get_info(),
|
||||
srcdir=scmsrcdir)
|
||||
final_path = os.path.join(scmsrcdir, os.path.basename(filepath))
|
||||
else:
|
||||
tops = dict([(k, getattr(self.options, k)) for k in 'topurl','topdir'])
|
||||
|
|
@ -4396,7 +4396,6 @@ class BuildSRPMFromSCMTask(BaseBuildTask):
|
|||
# will throw a BuildError if the url is invalid
|
||||
scm = SCM(url)
|
||||
scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.contextData())
|
||||
|
||||
if opts is None:
|
||||
opts = {}
|
||||
|
|
@ -4428,11 +4427,12 @@ class BuildSRPMFromSCMTask(BaseBuildTask):
|
|||
logfile = self.workdir + '/checkout.log'
|
||||
uploadpath = self.getUploadDir()
|
||||
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.get_info())
|
||||
# Check out spec file, etc. from SCM
|
||||
sourcedir = scm.checkout(scmdir, self.session, uploadpath, logfile)
|
||||
self.run_plugin("postSCMCheckout",
|
||||
scminfo=scm.contextData(),
|
||||
extra_keys={"sourcedir": sourcedir})
|
||||
scminfo=scm.get_info(),
|
||||
srcdir=sourcedir)
|
||||
# chown the sourcedir and everything under it to the mockuser
|
||||
# so we can build the srpm as non-root
|
||||
uid = pwd.getpwnam(self.options.mockuser)[2]
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@ class SCM(object):
|
|||
# should never happen
|
||||
raise koji.GenericError('Invalid SCM URL: %s' % url)
|
||||
|
||||
def contextData(self, keys=None):
|
||||
def get_info(self, keys=None):
|
||||
if keys is None:
|
||||
keys = ["url", "scheme", "user", "host", "path", "query", "revision", "scmtype"]
|
||||
return dict([(k, vars(self)[k]) for k in keys if vars(self).has_key(k)])
|
||||
|
|
|
|||
|
|
@ -383,44 +383,16 @@ class BaseTaskHandler(object):
|
|||
repo_info = self.wait(task_id)[task_id]
|
||||
return repo_info
|
||||
|
||||
@classmethod
|
||||
def request_keys(cls, method_name='handler', filter=None):
|
||||
try:
|
||||
keys = cls.requestKeys
|
||||
except AttributeError:
|
||||
pass
|
||||
else:
|
||||
return keys
|
||||
|
||||
if filter is None:
|
||||
filter = (lambda name, obj:
|
||||
inspect.ismethod(obj) and name == method_name)
|
||||
methods = [(name, obj) for name, obj in inspect.getmembers(cls)
|
||||
if filter(name, obj)]
|
||||
_, method = methods[0]
|
||||
keys, args, kwargs, default_vals = tuple(inspect.getargspec(method))
|
||||
keys = keys + [item for item in args, kwargs if item is not None]
|
||||
return keys[1:]
|
||||
|
||||
def parsed_request(self, request=None, keys=None):
|
||||
if request is None:
|
||||
request = self.session.getTaskRequest(self.id)
|
||||
if keys is None:
|
||||
keys = self.request_keys()
|
||||
|
||||
return zip(keys, request)
|
||||
|
||||
def contextData(self):
|
||||
taskinfo = self.session.getTaskInfo(self.id, request=True)
|
||||
request = self.parsed_request(taskinfo['request'])
|
||||
return taskinfo.update(request)
|
||||
|
||||
def run_plugin(self, plugin, scminfo=None, extra_keys=None):
|
||||
taskinfo = self.contextData()
|
||||
if extra_keys:
|
||||
scminfo.update(extra_keys)
|
||||
|
||||
koji.plugin.run_callbacks(plugin, taskinfo=taskinfo, scminfo=scminfo)
|
||||
def run_plugin(self, plugin, *args, **kwargs):
|
||||
if 'taskinfo' not in kwargs:
|
||||
try:
|
||||
taskinfo = self.taskinfo
|
||||
except AttributeError:
|
||||
self.taskinfo = self.session.getTaskInfo(self.id, request=True)
|
||||
taskinfo = self.taskinfo
|
||||
kwargs['taskinfo'] = taskinfo
|
||||
koji.plugin.run_callbacks(plugin, *args, **kwargs)
|
||||
|
||||
|
||||
class FakeTask(BaseTaskHandler):
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ class WindowsBuild(object):
|
|||
"""Get task info and setup build directory"""
|
||||
self.logger = logging.getLogger('koji.vm')
|
||||
self.server = server
|
||||
info = server.getTaskInfo()
|
||||
self.taskinfo = server.getTaskInfo()
|
||||
self.source_url = info[0]
|
||||
self.build_tag = info[1]
|
||||
if len(info) > 2:
|
||||
|
|
@ -166,17 +166,29 @@ class WindowsBuild(object):
|
|||
def checkout(self):
|
||||
"""Checkout sources, winspec, and patches, and apply patches"""
|
||||
src_scm = SCM(self.source_url)
|
||||
koji.plugin.run_callbacks('preSCMCheckout', taskinfo=self.taskinfo, scminfo=src_scm.get_info())
|
||||
self.source_dir = src_scm.checkout(ensuredir(os.path.join(self.workdir, 'source')))
|
||||
koji.plugin.run_callbacks('postSCMCheckout', taskinfo=self.taskinfo,
|
||||
scminfo=src_scm.get_info(),
|
||||
srcdir=self.source_dir)
|
||||
self.zipDir(self.source_dir, os.path.join(self.workdir, 'sources.zip'))
|
||||
if 'winspec' in self.task_opts:
|
||||
spec_scm = SCM(self.task_opts['winspec'])
|
||||
koji.plugin.run_callbacks('preSCMCheckout', taskinfo=self.taskinfo, scminfo=spec_scm.get_info())
|
||||
self.spec_dir = spec_scm.checkout(ensuredir(os.path.join(self.workdir, 'spec')))
|
||||
koji.plugin.run_callbacks('postSCMCheckout', taskinfo=self.taskinfo,
|
||||
scminfo=spec_scm.get_info(),
|
||||
srcdir=self.spec_dir)
|
||||
self.zipDir(self.spec_dir, os.path.join(self.workdir, 'spec.zip'))
|
||||
else:
|
||||
self.spec_dir = self.source_dir
|
||||
if 'patches' in self.task_opts:
|
||||
patch_scm = SCM(self.task_opts['patches'])
|
||||
koji.plugin.run_callbacks('preSCMCheckout', taskinfo=self.taskinfo, scminfo=patch_scm.get_info())
|
||||
self.patches_dir = patch_scm.checkout(ensuredir(os.path.join(self.workdir, 'patches')))
|
||||
koji.plugin.run_callbacks('postSCMCheckout', taskinfo=self.taskinfo,
|
||||
scminfo=patch_scm.get_info(),
|
||||
srcdir=self.patch_dir)
|
||||
self.zipDir(self.patches_dir, os.path.join(self.workdir, 'patches.zip'))
|
||||
self.applyPatches(self.source_dir, self.patches_dir)
|
||||
self.virusCheck(self.workdir)
|
||||
|
|
|
|||
|
|
@ -305,8 +305,6 @@ class WinBuildTask(MultiPlatformTask):
|
|||
for url in [source_url] + subopts.values():
|
||||
scm = SCM(url)
|
||||
scm.assert_allowed(self.options.allowed_scms)
|
||||
self.run_plugin('preSCMCheckout', scminfo=scm.contextData())
|
||||
|
||||
task_info = self.session.getTaskInfo(self.id)
|
||||
target_info = self.session.getBuildTarget(target)
|
||||
if not target_info:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue