Execute prefuncs and postfuncs associated with the task while preparing the source tree. If any changes are made to the source tree by these prefuncs or postfuncs, a separate commit will be created so that the changes won't get incorporated with other patches.
Signed-off-by: Jiajie Hu <jiajie...@intel.com> --- scripts/lib/devtool/standard.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py index e4d2a57..8302112 100644 --- a/scripts/lib/devtool/standard.py +++ b/scripts/lib/devtool/standard.py @@ -424,8 +424,7 @@ class BbTaskExecutor(object): self.rdata = rdata self.executed = [] - def exec_func(self, func, report): - """Run bitbake task function""" + def _exec_func(self, func, report): if not func in self.executed: deps = self.rdata.getVarFlag(func, 'deps', False) if deps: @@ -435,12 +434,25 @@ class BbTaskExecutor(object): logger.info('Executing %s...' % func) fn = self.rdata.getVar('FILE', True) localdata = bb.build._task_data(fn, func, self.rdata) + prefuncs = localdata.getVarFlag(func, 'prefuncs', True) + postfuncs = localdata.getVarFlag(func, 'postfuncs', True) try: + for prefunc in (prefuncs or '').split(): + bb.build.exec_func(prefunc, localdata) + yield prefunc bb.build.exec_func(func, localdata) + for postfunc in (postfuncs or '').split(): + bb.build.exec_func(postfunc, localdata) + yield postfunc except bb.build.FuncFailed as e: raise DevtoolError(str(e)) self.executed.append(func) + def exec_func(self, func, report): + """Run bitbake task function""" + for step in self._exec_func(func, report): + pass + class PatchTaskExecutor(BbTaskExecutor): def __init__(self, rdata): @@ -462,7 +474,12 @@ class PatchTaskExecutor(BbTaskExecutor): else: os.rmdir(patchdir) - super(PatchTaskExecutor, self).exec_func(func, report) + for step in super(PatchTaskExecutor, self)._exec_func(func, report): + if self.check_git and os.path.exists(srcsubdir): + stdout, _ = bb.process.run('git status --porcelain', cwd=srcsubdir) + if stdout: + bb.process.run('git add .; git %s commit -a -m "Committing changes from %s\n\n%s"' % (' '.join(self.useroptions), step, GitApplyTree.ignore_commit_prefix + ' - from %s' % step), cwd=srcsubdir) + if self.check_git and os.path.exists(srcsubdir): if func == 'do_patch': if os.path.exists(patchdir): -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core