# vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=python:textwidth=0: """ # The extra packages plugin is enabled by default. # To disable it, use following option: config_opts['plugin_conf']['extra'] = False # To use it add --plugin-option="extra:packages=blabla" """ from mockbuild import util from mockbuild.exception import Error from mockbuild.trace_decorator import traceLog, getLog requires_api_version = "1.1" # plugin entry point #decorate(traceLog()) #def init(rootObj, conf): # Extra(rootObj, conf) # plugin entry point @traceLog() def init(plugins, conf, buildroot): Extra(plugins, conf, buildroot) # classes class Extra(object): """install extra packages into chroot""" @traceLog() def __init__(self, plugins, conf, buildroot): self.opts = conf self.buildroot = buildroot getLog().info("In extra plugin setup!") #plugins.add_hook("earlyprebuild", self._extraPackagEarlyPreBuild) plugins.add_hook("postinit", self._addrpms) @traceLog() def _extraPackagEarlyPreBuild(self): getLog().info("In extra plugin!") if "packages" in self.opts and self.opts['packages']: for i in self.opts['packages'].split(','): getLog().info("Adding %s." % i) self.buildroot.preexisting_deps.append(i) @traceLog() def _addrpms(self): getLog().info("In extra plugin!") if "packages" in self.opts and self.opts['packages']: deps = self.opts['packages'].split(',') if deps: self.buildroot.pkg_manager.install(*deps, check=True)