[OE-core] [PATCH] devtool: execute associated functions while preparing the source tree

Christopher Larson clarson at kergoth.com
Tue Nov 29 06:04:40 UTC 2016


On Mon, Nov 28, 2016 at 7:59 PM, Jiajie Hu <jiajie.hu at intel.com> wrote:

> 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.hu at 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)
>

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?
-- 
Christopher Larson
clarson at kergoth dot com
Founder - BitBake, OpenEmbedded, OpenZaurus
Maintainer - Tslib
Senior Software Engineer, Mentor Graphics
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20161128/99e6a2e4/attachment-0002.html>


More information about the Openembedded-core mailing list