# # SPDX-License-Identifier: GPL-2.0-only # # Author: Richard Purdie # 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)