yocto-autobuilder-helper/scripts/setup-config
Joshua Lock 1db6f2f787 setup-config: disable version-going-backwards error when using buildhistory
The version-going-backwards ERROR_QA option should be disabled when using
buildhistory.

Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
2018-01-17 14:00:40 +00:00

131 lines
4.6 KiB
Python
Executable File

#!/usr/bin/env python3
#
# Generate an auto.conf and associated other config files for a given autobuilder configuration
#
# Called with $1 - The 'nightly' target the autobuilder is running
# $2 - The autobuilder step number (a given target can run multiple steps with different configurations)
# $3 - The target build directory to configure
# $4 - The poky branch name the build is running on
# $5 - The name of the repository the build is running on
#
import json
import os
import sys
import subprocess
import errno
if len(sys.argv) != 6:
print("Incorrect number of parameters, please call as %s <nightly-target> <stepnumber> <target-builddir> <branch-name> <repo-name>")
sys.exit(1)
target = sys.argv[1]
stepnum = int(sys.argv[2]) + 1 # Our step numbering is 1 2 3 etc., not 0 of buildbot
builddir = sys.argv[3]
branchname = sys.argv[4]
reponame = sys.argv[5]
scriptsdir = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(scriptsdir, '..', 'config.json')) as f:
ourconfig = json.load(f)
#
# Check if config contains all the listed params
#
def contains(params, config):
for p in params:
if p not in config:
return False
return True
# Check if a config boolean is set
def configtrue(name, config):
if name in config and config[name]:
return True
return False
# Get a configuration variable, check overrides, first, the defaults
def getconfigvar(name, config, target, stepnum):
step = "step" + str(stepnum)
if target in config['overrides']:
if step in config['overrides'][target] and name in config['overrides'][target][step]:
return config['overrides'][target][step][name]
if name in config['overrides'][target]:
return config['overrides'][target][name]
if name in config['defaults']:
return config['defaults'][name]
return False
def getconfiglist(name, config, target, stepnum):
ret = []
step = "step" + str(stepnum)
if target in config['overrides']:
if step in config['overrides'][target] and name in config['overrides'][target][step]:
ret.extend(config['overrides'][target][step][name])
if name in config['overrides'][target]:
ret.extend(config['overrides'][target][name])
if name in config['defaults']:
ret.extend(config['defaults'][name])
return ret
#
# Run a command, trigger a traceback with command output if it fails
#
def runcmd(cmd):
return subprocess.check_output(cmd, stderr=subprocess.STDOUT)
variables = []
autoconf = os.path.join(builddir, "conf", "auto.conf")
if os.path.exists(autoconf):
os.remove(autoconf)
# Ensure autoconf's directory exists
try:
os.makedirs(os.path.dirname(autoconf))
except OSError as e:
if e.errno != errno.EEXIST:
# Do not complain if the directory exists
raise e
sdkextraconf = os.path.join(builddir, "conf", "sdk-extra.conf")
if os.path.exists(sdkextraconf):
os.remove(sdkextraconf)
for v in ["MACHINE", "DISTRO", "SDKMACHINE"]:
value = getconfigvar(v, ourconfig, target, stepnum)
if value and value != "None":
variables.append(v + ' = "%s"' % value)
distro = getconfigvar("DISTRO", ourconfig, target, stepnum)
extravars = getconfiglist("extravars", ourconfig, target, stepnum)
if extravars:
variables.extend(extravars)
if contains(["BUILD_HISTORY_DIR", "build-history-targets", "BUILD_HISTORY_REPO"], ourconfig):
# What we need to do here is check if poky, if so proceed, if not (e.g. poky-contrib) don't.
# If its a main branch, checkout the previous revision and then move forward on it
# If its -next check out the main branch, then move forward on it.
if target in ourconfig["build-history-targets"]:
bh_path = os.path.join(ourconfig["BUILD_HISTORY_DIR"], distro, branchname, target)
remoterepo = ourconfig["BUILD_HISTORY_REPO"]
remotebranch = distro + "/" + branchname + "/" + target
#if branchname.endswith("-next"):
# We reset and base on the last code:
# runcmd([os.path.join(scriptsdir, "buildhistory-reset"), bh_path, remoterepo, remotebranch])
runcmd([os.path.join(scriptsdir, "buildhistory-init"), bh_path, remoterepo, remotebranch])
variables.append('INHERIT += "buildhistory"')
variables.append('BUILDHISTORY_DIR = "%s"' % bh_path)
variables.append('BUILDHISTORY_PUSH_REPO = "%s %s:%s"' % (remoterepo, remotebranch, remotebranch))
variables.append('ERROR_QA_remove = "version-going-backwards"')
print("Writing %s with contents:" % autoconf)
with open(autoconf, "w") as f:
for v in variables:
print(v)
f.write(v + "\n")