<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 28, 2016 at 7:59 PM, Jiajie Hu <span dir="ltr"><<a href="mailto:jiajie.hu@intel.com" target="_blank">jiajie.hu@intel.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":108" class="a3s aXjCH m158ae054f4967d05">Execute prefuncs and postfuncs associated with the task while preparing<br>
the source tree. If any changes are made to the source tree by these<br>
prefuncs or postfuncs, a separate commit will be created so that the<br>
changes won't get incorporated with other patches.<br>
<br>
Signed-off-by: Jiajie Hu <<a href="mailto:jiajie.hu@intel.com">jiajie.hu@intel.com</a>><br>
---<br>
scripts/lib/devtool/standard.<wbr>py | 23 ++++++++++++++++++++---<br>
1 file changed, 20 insertions(+), 3 deletions(-)<br>
<br>
diff --git a/scripts/lib/devtool/<wbr>standard.py b/scripts/lib/devtool/<wbr>standard.py<br>
index e4d2a57..8302112 100644<br>
--- a/scripts/lib/devtool/<wbr>standard.py<br>
+++ b/scripts/lib/devtool/<wbr>standard.py<br>
@@ -424,8 +424,7 @@ <span class="il">class</span> BbTaskExecutor(object):<br>
self.rdata = rdata<br>
self.executed = []<br>
<br>
- def exec_func(self, func, report):<br>
- """Run <span class="il">bitbake</span> task function"""<br>
+ def _exec_func(self, func, report):<br>
if not func in self.executed:<br>
deps = self.rdata.getVarFlag(func, 'deps', False)<br>
if deps:<br>
@@ -435,12 +434,25 @@ <span class="il">class</span> BbTaskExecutor(object):<br>
<a href="http://logger.info" rel="noreferrer" target="_blank">logger.info</a>('Executing %s...' % func)<br>
fn = self.rdata.getVar('FILE', True)<br>
localdata = <span class="il">bb</span>.build._task_data(fn, func, self.rdata)<br>
+ prefuncs = localdata.getVarFlag(func, 'prefuncs', True)<br>
+ postfuncs = localdata.getVarFlag(func, 'postfuncs', True)<br>
try:<br>
+ for prefunc in (prefuncs or '').split():<br>
+ <span class="il">bb</span>.build.exec_func(prefunc, localdata)<br>
+ yield prefunc<br>
<span class="il">bb</span>.build.exec_func(func, localdata)<br>
+ for postfunc in (postfuncs or '').split():<br>
+ <span class="il">bb</span>.build.exec_func(postfunc, localdata)<br>
+ yield postfunc<br>
except <span class="il">bb</span>.build.FuncFailed as e:<br>
raise DevtoolError(str(e))<br>
self.executed.append(func)<br>
<br>
+ def exec_func(self, func, report):<br>
+ """Run <span class="il">bitbake</span> task function"""<br>
+ for step in self._exec_func(func, report):<br>
+ pass<br>
+<br>
<br>
<span class="il">class</span> PatchTaskExecutor(<wbr>BbTaskExecutor):<br>
def __init__(self, rdata):<br>
@@ -462,7 +474,12 @@ <span class="il">class</span> PatchTaskExecutor(<wbr>BbTaskExecutor):<br>
else:<br>
os.rmdir(patchdir)<br>
<br>
- super(PatchTaskExecutor, self).exec_func(func, report)<br>
+ for step in super(PatchTaskExecutor, self)._exec_func(func, report):<br>
+ if self.check_git and os.path.exists(srcsubdir):<br>
+ stdout, _ = <span class="il">bb</span>.process.run('git status --porcelain', cwd=srcsubdir)<br>
+ if stdout:<br>
+ <span class="il">bb</span>.process.run('git add .; git %s commit -a -m "Committing changes from %s\n\n%s"' % (' '.join(self.useroptions), step, GitApplyTree.ignore_commit_<wbr>prefix + ' - from %s' % step), cwd=srcsubdir)</div></blockquote></div><br>This will do the commit after the first postfunc is done, so won’t the changes from the main func and the first postfunc both be included in that commit?<br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Christopher Larson<br>clarson at kergoth dot com<br>Founder - BitBake, OpenEmbedded, OpenZaurus<br>Maintainer - Tslib<br>Senior Software Engineer, Mentor Graphics</div>
</div></div>