[yocto] [yocto-autobuilder][PATCH] ScrapeTargets.py: Use python instead of awk
Joshua Lock
joshua.g.lock at linux.intel.com
Tue Jul 11 04:02:13 PDT 2017
On Mon, 2017-07-10 at 14:05 -0700, Stephano Cetola wrote:
> Using awk, sed, or grep to pull a shell variable out of stdio proved
> complex. Instead, simply cat the entire "inc" file to stdio and use
> python/regex to find the variable.
Merged, thanks!
> Signed-off-by: Stephano Cetola <stephano.cetola at linux.intel.com>
> ---
> .../autobuilder/buildsteps/ScrapeTargets.py | 17
> ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/lib/python2.7/site-
> packages/autobuilder/buildsteps/ScrapeTargets.py
> b/lib/python2.7/site-packages/autobuilder/buildsteps/ScrapeTargets.py
> index 07e2fdcf4..8844c6366 100644
> --- a/lib/python2.7/site-
> packages/autobuilder/buildsteps/ScrapeTargets.py
> +++ b/lib/python2.7/site-
> packages/autobuilder/buildsteps/ScrapeTargets.py
> @@ -15,6 +15,7 @@ from buildbot.steps.shell import ShellCommand
> from buildbot.status.results import SUCCESS, FAILURE
> from autobuilder.config import *
> import os
> +import re
>
> class ScrapeTargets(ShellCommand):
> haltOnFailure = False
> @@ -41,9 +42,7 @@ class ScrapeTargets(ShellCommand):
> workerdir = os.path.join(os.path.join(YOCTO_ABBASE, "yocto-
> worker"))
> buildername = self.getProperty("buildername")
> src = os.path.join(workerdir, buildername, "build",
> self.source)
> - # find targetsvar then return lines up to a quote
> - self.command = ["awk",
> - '/%s/{flag=1;print;next}/"/{flag=0}flag' %
> self.targetsvar, src]
> + self.command = ["cat", src]
> ShellCommand.start(self)
>
> def commandComplete(self, cmd):
> @@ -51,10 +50,14 @@ class ScrapeTargets(ShellCommand):
> return
>
> result = cmd.logs['stdio'].getText()
> - targets = result.strip()
> - targets = targets.replace('%s="' % self.targetsvar, '')
> - targets = targets.replace('\\', '')
> - targets = targets.replace('\n', '')
> + start = result.find(self.targetsvar) + len(self.targetsvar)
> + res = re.search('"([^"]*)"', result[start:])
> + targets = ""
> + if res:
> + targets = res.group()
> + targets = targets.replace('%s="' % self.targetsvar, '')
> + targets = targets.replace('\\', '')
> + targets = targets.replace('\n', '')
> self.setProperty("scraped_targets",
> targets,
> 'Targets "%s" scraped from %s' % (targets,
> --
> 2.13.2
>
More information about the yocto
mailing list