[PATCH 1/3] steps: avoid shell when writing repo metadata
Anders Heimer <[email protected]>
| Newsgroups | org.yoctoproject.lists.yocto-patches |
|---|---|
| Message-ID | <[email protected]> |
Use Buildbot StringDownload for repo metadata JSON instead of shell printf. This transfers scheduler-supplied repo values as file content without shell interpretation. AI-Generated: Claude Opus 4.6 <[email protected]> Signed-off-by: Anders Heimer <[email protected]> --- steps/writebbsetupjson.py | 19 +++++++------------ steps/writelayerinfo.py | 19 +++++++------------ 2 files changed, 14 insertions(+), 24 deletions(-) diff --git a/steps/writebbsetupjson.py b/steps/writebbsetupjson.py index da8d434..e1f1463 100644 --- a/steps/writebbsetupjson.py +++ b/steps/writebbsetupjson.py @@ -5,9 +5,8 @@ # from twisted.internet import defer -from buildbot.process import buildstep +from buildbot.plugins import steps import json -import os from yoctoabb import config @@ -15,11 +14,11 @@ mappings = { "oecore" : "openembedded-core", } -class WriteBBSetupJson(buildstep.ShellMixin, buildstep.BuildStep): +class WriteBBSetupJson(steps.StringDownload): name = "WriteBBSetupJson" def __init__(self, **kwargs): - buildstep.BuildStep.__init__(self, **kwargs) + super().__init__(s="", workerdest="bbsetup-overrides.json", **kwargs) def generateSetupJson(self): setupdata = {} @@ -66,14 +65,10 @@ class WriteBBSetupJson(buildstep.ShellMixin, buildstep.BuildStep): @defer.inlineCallbacks def run(self): - repojson = self.generateSetupJson() - layerinfo = os.path.join(self.getProperty("builddir"), - "bbsetup-overrides.json") - writerepos = "printf '%s' > %s" % (repojson, layerinfo) - cmd = yield self.makeRemoteShellCommand( - command=writerepos) - yield self.runCommand(cmd) - return cmd.results() + self.s = self.generateSetupJson() + self.workdir = self.getProperty("builddir") + result = yield super().run() + return result @defer.inlineCallbacks diff --git a/steps/writelayerinfo.py b/steps/writelayerinfo.py index a0669bd..009e9fc 100644 --- a/steps/writelayerinfo.py +++ b/steps/writelayerinfo.py @@ -3,18 +3,17 @@ # from twisted.internet import defer -from buildbot.process import buildstep +from buildbot.plugins import steps import json -import os from yoctoabb import config -class WriteLayerInfo(buildstep.ShellMixin, buildstep.BuildStep): +class WriteLayerInfo(steps.StringDownload): name = "WriteLayerInfo" def __init__(self, **kwargs): - buildstep.BuildStep.__init__(self, **kwargs) + super().__init__(s="", workerdest="layerinfo.json", **kwargs) def generateLayerInfo(self): layerinfo = {} @@ -34,14 +33,10 @@ class WriteLayerInfo(buildstep.ShellMixin, buildstep.BuildStep): @defer.inlineCallbacks def run(self): - repojson = self.generateLayerInfo() - layerinfo = os.path.join(self.getProperty("builddir"), - "layerinfo.json") - writerepos = "printf '%s' > %s" % (repojson, layerinfo) - cmd = yield self.makeRemoteShellCommand( - command=writerepos) - yield self.runCommand(cmd) - return cmd.results() + self.s = self.generateLayerInfo() + self.workdir = self.getProperty("builddir") + result = yield super().run() + return result @defer.inlineCallbacks