yocto-autobuilder2/steps/writebbsetupjson.py
Richard Purdie f99c3a6452 steps/writebbsetupjson: Tweak to handle branches in bitbake-setup
Now that bitbake-setup handles branches, update to this.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-10-01 17:30:52 +01:00

85 lines
2.5 KiB
Python

#
# 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
from yoctoabb 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
}
},
"branch" : branch,
"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)