@@ -121,6 +121,7 @@ def create_builder_factory():
f.addStep(TargetPresent())
f.addStep(steps.SetProperties(properties=ensure_props_set))
f.addStep(WriteLayerInfo(name='Write main layerinfo.json', haltOnFailure=True))
+ f.addStep(WriteBBSetupJson(name='Write bbsetup-overrides.json', haltOnFailure=True))
f.addStep(steps.ShellCommand(
command=[util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/shared-repo-unpack"),
util.Interpolate("%(prop:builddir)s/layerinfo.json"),
@@ -298,6 +299,7 @@ def create_parent_builder_factory(buildername, waitname):
haltOnFailure=True,
name='Fetch yocto-autobuilder-helper'))
factory.addStep(WriteLayerInfo(name='Write main layerinfo.json', haltOnFailure=True))
+ factory.addStep(WriteBBSetupJson(name='Write bbsetup-overrides.json', haltOnFailure=True))
factory.addStep(steps.ShellCommand(
command=[
util.Interpolate("%(prop:builddir)s/yocto-autobuilder-helper/scripts/prepare-shared-repos"),
new file mode 100644
@@ -0,0 +1,83 @@
+#
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Author: Richard Purdie <richard.purdie@linuxfoundation.org>
+#
+
+from twisted.internet import defer
+from buildbot.process import buildstep
+import json
+import os
+
+import config
+
+mappings = {
+ "oecore" : "openembedded-core",
+}
+
+class WriteBBSetupJson(buildstep.ShellMixin, buildstep.BuildStep):
+ name = "WriteBBSetupJson"
+
+ def __init__(self, **kwargs):
+ buildstep.BuildStep.__init__(self, **kwargs)
+
+ def generateSetupJson(self):
+ setupdata = {}
+ setupdata["description"] = "Autobuilder generated bitbake setup json config"
+ setupdata["version"] = "1.0"
+ setupdata["sources"] = {}
+
+ writerepos = config.buildertorepos.get(self.getProperty("buildername"))
+ if not writerepos:
+ writerepos = config.buildertorepos["default"]
+
+ for repo in writerepos:
+ # poky is only used for older releases which don't use bitbake-setup
+ if repo == "poky":
+ continue
+
+ url = self.getProperty("repo_{}".format(repo))
+ branch = self.getProperty("branch_{}".format(repo))
+ revision = self.getProperty("commit_{}".format(repo))
+
+ if revision and revision != "HEAD":
+ rev = revision
+ else:
+ rev = branch
+
+ reponame = repo
+ if repo in mappings:
+ reponame = mappings[repo]
+ repodict = {
+ "git-remote": {
+ "remotes" : {
+ "origin": {
+ "uri" : url
+ }
+ },
+ "rev" : rev
+ }
+ }
+ setupdata["sources"] = {reponame : repodict}
+
+ return json.dumps(setupdata, sort_keys=True, indent=4,
+ separators=(',', ': '))
+
+ @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()
+
+
+@defer.inlineCallbacks
+def run(self):
+ cmd = RemoteCommand(args)
+ log = yield self.addLog('output')
+ cmd.useLog(log, closeWhenFinished=True)
+ yield self.runCommand(cmd)
bitbake-setup can take an overrides file for repository information. Write this out into all builds. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> --- builders.py | 2 + steps/writebbsetupjson.py | 83 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 steps/writebbsetupjson.py