[yocto] [yocto-autobuilder][PATCH] ScrapeTargets.py: Use python instead of awk
Stephano Cetola
stephano.cetola at linux.intel.com
Mon Jul 10 14:05:07 PDT 2017
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.
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