<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">&lt;<a href="mailto:jiajie.hu@intel.com" target="_blank">jiajie.hu@intel.com</a>&gt;</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&#39;t get incorporated with other patches.<br>
<br>
Signed-off-by: Jiajie Hu &lt;<a href="mailto:jiajie.hu@intel.com">jiajie.hu@intel.com</a>&gt;<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>
-        &quot;&quot;&quot;Run <span class="il">bitbake</span> task function&quot;&quot;&quot;<br>
+    def _exec_func(self, func, report):<br>
         if not func in self.executed:<br>
             deps = self.rdata.getVarFlag(func, &#39;deps&#39;, 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>(&#39;Executing %s...&#39; % func)<br>
             fn = self.rdata.getVar(&#39;FILE&#39;, True)<br>
             localdata = <span class="il">bb</span>.build._task_data(fn, func, self.rdata)<br>
+            prefuncs = localdata.getVarFlag(func, &#39;prefuncs&#39;, True)<br>
+            postfuncs = localdata.getVarFlag(func, &#39;postfuncs&#39;, True)<br>
             try:<br>
+                for prefunc in (prefuncs or &#39;&#39;).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 &#39;&#39;).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>
+        &quot;&quot;&quot;Run <span class="il">bitbake</span> task function&quot;&quot;&quot;<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(&#39;git status --porcelain&#39;, cwd=srcsubdir)<br>
+                if stdout:<br>
+                    <span class="il">bb</span>.process.run(&#39;git add .; git %s commit -a -m &quot;Committing changes from %s\n\n%s&quot;&#39; % (&#39; &#39;.join(self.useroptions), step, GitApplyTree.ignore_commit_<wbr>prefix + &#39; - from %s&#39; % 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>