ScrapeTargets.py: Use python instead of awk
PATCH 1/1 ScrapeTargets.py: Use python instead of awk
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.
--- .../autobuilder/buildsteps/ScrapeTargets.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)
lib/python2.7/site-packages/autobuilder/buildsteps/ScrapeTargets.py +10 -7
@@ -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,
Signature · 1 line
2.13.2
Joshua Lock
AppliedQuoted 3 lines · Stephano Cetola
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!
Quoted 58 lines
Signed-off-by Stephano Cetola <[email protected]>---
.../autobuilder/buildsteps/ScrapeTargets.py | 17
++++++++++-------1 file changed, 10 insertions(+), 7 deletions(-)(quoted diff) +0
-0
packages/autobuilder/buildsteps/ScrapeTargets.pyb/lib/python2.7/site-packages/autobuilder/buildsteps/ScrapeTargets.pyindex07e2fdcf4..8844c6366100644
--- a/lib/python2.7/site-packages/autobuilder/buildsteps/ScrapeTargets.py
+++ b/lib/python2.7/site-packages/autobuilder/buildsteps/ScrapeTargets.py(quoted diff) +0
-0@@ -15,6 +15,7 @@ from buildbot.steps.shell import ShellCommandfrom buildbot.status.results import SUCCESS, FAILURE from autobuilder.config import *
import os
+import re
class ScrapeTargets(ShellCommand):
haltOnFailure = False(quoted diff) +0
-0@@ -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)
defcommandComplete(self, cmd):(quoted diff) +0
-0@@ -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