2.5 KiB
Executable File
#!/usr/bin/env python3
Iterate over a set of configurations from json.conf, calling setup-config for each one, then running the build.
Called with $1 - The 'nightly' target the autobuilder is running
$2 - The target build directory to configure
$3 - The poky branch name the build is running on
$4 - The name of the repository the build is running on
$5 - The directory to publish sstate into
$6 - A build-appliance SRCREV to use
import json import os import sys import subprocess import errno
import utils
if len(sys.argv) != 7: print("Incorrect number of parameters, please call as %s ") sys.exit(1)
target = sys.argv[1] builddir = sys.argv[2] branchname = sys.argv[3] reponame = sys.argv[4] sstate_release = sys.argv[5] buildappsrcrev = sys.argv[6]
scriptsdir = os.path.dirname(os.path.realpath(file))
with open(os.path.join(scriptsdir, '..', 'config.json')) as f: ourconfig = json.load(f)
Find out the number of steps this target has
maxsteps = 1 if target in ourconfig['overrides']: for v in ourconfig['overrides'][target]: if v.startswith("step"): n = int(v[4:]) if n <= maxsteps: continue maxsteps = n
utils.printheader("Target task %s has %d steps" % (target, maxsteps))
finalret = 0
for stepnum in range(maxsteps): subprocess.check_call([scriptsdir + "/setup-config", target, str(stepnum), builddir, branchname, reponame, sstate_release, buildappsrcrev])
# Execute the targets for this configuration
targets = utils.getconfigvar("BBTARGETS", ourconfig, target, stepnum + 1)
if targets:
utils.printheader("Running bitbake %s" % targets)
ret = subprocess.call(". ./oe-init-build-env; bitbake %s" % targets, shell=True, cwd=builddir + "/..")
if ret:
utils.printheader("ERROR: Bitbake command filed with exit code %d, see errors above." % ret)
finalret = 1
# Execute the sanity targets for this configuration
sanitytargets = utils.getconfigvar("SANITYTARGETS", ourconfig, target, stepnum + 1)
if sanitytargets:
utils.printheader("Running bitbake %s" % sanitytargets)
ret = subprocess.call(". ./oe-init-build-env; checkvnc; DISPLAY=1 bitbake %s" % sanitytargets, shell=True, cwd=builddir + "/..")
if ret:
utils.printheader("ERROR: Bitbake command filed with exit code %d, see errors above." % ret)
finalret = 1
sys.exit(finalret)