diff mbox series

[1/3] steps: avoid shell when writing repo metadata

Message ID 20260611061330.733392-2-anders.heimer@est.tech
State New
Headers show
Series Avoid shell use | expand

Commit Message

Anders Heimer June 11, 2026, 6:13 a.m. UTC
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 <noreply@anthropic.com>
Signed-off-by: Anders Heimer <anders.heimer@est.tech>
---
 steps/writebbsetupjson.py | 19 +++++++------------
 steps/writelayerinfo.py   | 19 +++++++------------
 2 files changed, 14 insertions(+), 24 deletions(-)
diff mbox series

Patch

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