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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#!/usr/bin/env python3
#
# Copyright Linux Foundation, Richard Purdie
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Generate an auto.conf and associated other config files for a given autobuilder configuration
#
import json
import os
import sys
import subprocess
import errno
import copy
import utils
parser = utils.ArgParser(description='Generates an auto.conf and associated other config files for a given autobuilder configuration.')
parser.add_argument('target',
help="The 'nightly' target the autobuilder is running")
parser.add_argument('stepnumber',
help="The autobuilder step number (a given target can run multiple steps with different configurations)")
parser.add_argument('builddir',
help="The target build directory to configure")
parser.add_argument('branchname',
help="The poky branch name the build is running on")
parser.add_argument('reponame',
help="The name of the repository the build is running on")
parser.add_argument('-s', '--sstateprefix',
default='',
help="The directory prefix to publish sstate into")
parser.add_argument('-b', '--buildappsrcrev',
default='',
help="A build appliance SRCREV to use")
args = parser.parse_args()
stepnum = int(args.stepnumber) + 1 # Our step numbering is 1 2 3 etc., not 0 of buildbot
ourconfig = utils.loadconfig()
ourconfig["HELPERBUILDDIR"] = args.builddir
variables = []
autoconf = os.path.join(args.builddir, "conf", "auto.conf")
if os.path.exists(autoconf):
os.remove(autoconf)
# Ensure autoconf's directory exists
utils.mkdir(os.path.dirname(autoconf))
sdkextraconf = os.path.join(args.builddir, "conf", "sdk-extra.conf")
if os.path.exists(sdkextraconf):
os.remove(sdkextraconf)
for v in ["MACHINE", "DISTRO", "SDKMACHINE", "PACKAGE_CLASSES"]:
value = utils.getconfigvar(v, ourconfig, args.target, stepnum)
if value and value != "None":
variables.append(v + ' = "%s"' % value)
distro = utils.getconfigvar("DISTRO", ourconfig, args.target, stepnum)
for v in ["DLDIR", "PRSERV"]:
value = utils.getconfigvar(v, ourconfig, args.target, stepnum)
if value:
variables.append(value)
# Use a separate SSTATE_DIR with the primary
# SSTATE_DIR configured as a mirror so that we
# have a directory of symlinks to sstate objects
# that can be published for the release
key = "SSTATEDIR"
if args.sstateprefix:
key = "SSTATEDIR_RELEASE"
value = utils.getconfigvar(key, ourconfig, args.target, stepnum)
for v in value:
v = v.replace("@RELEASENUM@", args.sstateprefix)
variables.append(v)
if args.buildappsrcrev and args.buildappsrcrev != "DEFAULT":
if args.buildappsrcrev == "AUTOREV":
args.buildappsrcrev = "${AUTOREV}"
value = utils.getconfiglist("BUILDAPP_SRCREV", ourconfig, args.target, stepnum)
for v in value:
v = v.replace("@SRCREV@", args.buildappsrcrev)
variables.append(v)
if utils.getconfigvar("BUILDINFO", ourconfig, args.target, stepnum):
infovars = utils.getconfiglist("BUILDINFOVARS", ourconfig, args.target, stepnum)
variables.extend(infovars)
extravars = utils.getconfiglistfilter("extravars", ourconfig, args.target, stepnum)
if extravars:
variables.extend(extravars)
bh_path, remoterepo, remotebranch, baseremotebranch = utils.getbuildhistoryconfig(ourconfig, args.builddir, args.target, args.reponame, args.branchname, stepnum)
if bh_path:
variables.append('INHERIT += "buildhistory"')
variables.append('BUILDHISTORY_DIR = "%s"' % bh_path)
force = ""
if remotebranch != baseremotebranch:
force = "-f "
variables.append('BUILDHISTORY_PUSH_REPO = "%s%s %s:%s"' % (force, remoterepo, remotebranch, remotebranch))
variables.append("BUILDHISTORY_COMMIT = '1'")
variables.append('ERROR_QA:remove = "version-going-backwards"')
utils.printheader("Writing %s with contents:" % autoconf)
with open(autoconf, "w") as f:
for v in variables:
print(" " + v)
f.write(v + "\n")
utils.printheader("Writing %s with contents:" % sdkextraconf)
with open(sdkextraconf, "w") as f:
for v in utils.getconfiglist("SDKEXTRAS", ourconfig, args.target, stepnum):
replace = ""
if args.sstateprefix:
replace = args.sstateprefix + "/"
v = v.replace("@RELEASENUM@", replace)
print(" " + v)
f.write(v + "\n")
|