bitbake: toaster: write pre-read conf file for build variables

We change the setting of variables from directly injection
into the set-up cooker to writing a conf file that is pre-read
on bitbake server startup. This is needed because the injection
can only happen after the variable set is parsed, and the variables
already inferred, so setting up variables happens too late.

[YOCTO #7045]

(Bitbake rev: 854f680b5b9d2d0fa796af84cb1218545fbfc55a)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru DAMIAN 2015-01-08 13:15:11 +00:00 committed by Richard Purdie
parent ed9fa17467
commit 3c37669272
4 changed files with 12 additions and 5 deletions

View File

@ -251,7 +251,11 @@ case $CMD in
return 4
fi
unset BBSERVER
bitbake --postread conf/toaster.conf --server-only -t xmlrpc -B 0.0.0.0:0
PREREAD=""
if [ -e conf/toaster-pre.conf ]; then
PREREAD="--read conf/toaster-pre.conf"
fi
bitbake $PREREAD --postread conf/toaster.conf --server-only -t xmlrpc -B 0.0.0.0:0
if [ $? -ne 0 ]; then
start_success=0
echo "Bitbake server start failed"

View File

@ -135,6 +135,11 @@ class BuildEnvironmentController(object):
bblayerconffile.write("# line added by toaster build control\nBBLAYERS = \"" + " ".join(layerlist) + "\"")
bblayerconffile.close()
def writePreConfFile(self, variable_list):
prefilepath = os.path.join(self.be.builddir, "conf/toaster-pre.conf")
with open(prefilepath, "w") as prefile:
for i in variable_list:
prefile.write("%s=\"%s\"\n" % (i.name, i.value))
def startBBServer(self, brbe):

View File

@ -53,14 +53,11 @@ class Command(NoArgsCommand):
# set up the buid environment with the needed layers
bec.setLayers(br.brbitbake_set.all(), br.brlayer_set.all())
bec.writePreConfFile(br.brvariable_set.all())
# get the bb server running with the build req id and build env id
bbctrl = bec.getBBController("%d:%d" % (br.pk, bec.be.pk))
# set the build configuration
for variable in br.brvariable_set.all():
bbctrl.setVariable(variable.name, variable.value)
# trigger the build command
task = reduce(lambda x, y: x if len(y)== 0 else y, map(lambda y: y.task, br.brtarget_set.all()))
if len(task) == 0:

View File

@ -529,6 +529,7 @@ class Recipe_Dependency(models.Model):
class Machine(models.Model):
search_allowed_fields = ["name", "description"]
layer_source = models.ForeignKey('LayerSource', default = None, null = True) # from where did we get this machine
up_id = models.IntegerField(null = True, default = None) # id of entry in the source
up_date = models.DateTimeField(null = True, default = None)