aboutsummaryrefslogtreecommitdiffstats
path: root/steps/writelayerinfo.py
blob: d2c196f2174ad812bdb68e85b6712b8bb9a0c1ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#
# SPDX-License-Identifier: GPL-2.0-only
#

from twisted.internet import defer
from buildbot.process import buildstep
import json
import os

from yoctoabb import config


class WriteLayerInfo(buildstep.ShellMixin, buildstep.BuildStep):
    name = "WriteLayerInfo"

    def __init__(self, **kwargs):
        buildstep.BuildStep.__init__(self, **kwargs)

    def generateLayerInfo(self):
        layerinfo = {}
        writerepos = config.buildertorepos.get(self.getProperty("buildername"))
        if not writerepos:
            writerepos = config.buildertorepos["default"]

        for repo in writerepos:
            repodict = {}
            repodict["url"] = self.getProperty("repo_{}".format(repo))
            repodict["branch"] = self.getProperty("branch_{}".format(repo))
            repodict["revision"] = self.getProperty("commit_{}".format(repo))
            layerinfo[repo] = repodict

        return json.dumps(layerinfo, sort_keys=True, indent=4,
                          separators=(',', ': '))

    @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)
        defer.returnValue(cmd.results())


@defer.inlineCallbacks
def run(self):
    cmd = RemoteCommand(args)
    log = yield self.addLog('output')
    cmd.useLog(log, closeWhenFinished=True)
    yield self.runCommand(cmd)