summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorDavid Reyna <David.Reyna@windriver.com>2017-07-28 17:14:14 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-07-31 15:13:53 +0100
commit9d1faf1a6fbfa6ee854ccf2c3d0bf3accbc59f6f (patch)
tree0fb3070debfcd9f76da0ac911c9e7b13ae13a4be /bitbake
parent3bc3d26b465b5af3cebc1d4c0d1fa382965c32cf (diff)
downloadpoky-9d1faf1a6fbfa6ee854ccf2c3d0bf3accbc59f6f.tar.gz
bitbake: toaster: move to new bitbake xmlrpc default
The bitbake option "-t SERVERTYPE" was deprecated and can be removed since the desired XMLRPC listener now the default. The bitbake server port cannot be "-1" anymore and must be explicitly passed. There is a race condition for the bblock file to not only be created but to actually be populated, so a delay test loop is required (usually only one pass). The 'xmlrpcclient' is now the class that allows Toaster to for example kill builds. The events for populating the recipe parsing now either show only the final result or are skipped entiredly, so the progress calculator needs to be changed to not block on the parsing phase. [YOCTO #11851] (Bitbake rev: 2aa7ad38f760ec003fb18faa5aa0014cff191a7a) Signed-off-by: David Reyna <David.Reyna@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/bldcontrol/bbcontroller.py4
-rw-r--r--bitbake/lib/toaster/bldcontrol/localhostbecontroller.py19
-rw-r--r--bitbake/lib/toaster/orm/models.py2
3 files changed, 18 insertions, 7 deletions
diff --git a/bitbake/lib/toaster/bldcontrol/bbcontroller.py b/bitbake/lib/toaster/bldcontrol/bbcontroller.py
index 912f67bf8c..5195600d90 100644
--- a/bitbake/lib/toaster/bldcontrol/bbcontroller.py
+++ b/bitbake/lib/toaster/bldcontrol/bbcontroller.py
@@ -37,8 +37,8 @@ class BitbakeController(object):
37 """ 37 """
38 38
39 def __init__(self, be): 39 def __init__(self, be):
40 import bb.server.xmlrpc 40 import bb.server.xmlrpcclient
41 self.connection = bb.server.xmlrpc._create_server(be.bbaddress, 41 self.connection = bb.server.xmlrpcclient._create_server(be.bbaddress,
42 int(be.bbport))[0] 42 int(be.bbport))[0]
43 43
44 def _runCommand(self, command): 44 def _runCommand(self, command):
diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
index 291624625b..6142f7e004 100644
--- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
+++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
@@ -24,6 +24,7 @@ import os
24import sys 24import sys
25import re 25import re
26import shutil 26import shutil
27import time
27from django.db import transaction 28from django.db import transaction
28from django.db.models import Q 29from django.db.models import Q
29from bldcontrol.models import BuildEnvironment, BRLayer, BRVariable, BRTarget, BRBitbake 30from bldcontrol.models import BuildEnvironment, BRLayer, BRVariable, BRTarget, BRBitbake
@@ -331,12 +332,22 @@ class LocalhostBEController(BuildEnvironmentController):
331 bitbake = os.path.join(self.pokydirname, 'bitbake', 'bin', 'bitbake') 332 bitbake = os.path.join(self.pokydirname, 'bitbake', 'bin', 'bitbake')
332 toasterlayers = os.path.join(builddir,"conf/toaster-bblayers.conf") 333 toasterlayers = os.path.join(builddir,"conf/toaster-bblayers.conf")
333 self._shellcmd('bash -c \"source %s %s; BITBAKE_UI="knotty" %s --read %s --read %s ' 334 self._shellcmd('bash -c \"source %s %s; BITBAKE_UI="knotty" %s --read %s --read %s '
334 '--server-only -t xmlrpc -B 0.0.0.0:0\"' % (oe_init, 335 '--server-only -B 0.0.0.0:0\"' % (oe_init,
335 builddir, bitbake, confpath, toasterlayers), self.be.sourcedir) 336 builddir, bitbake, confpath, toasterlayers), self.be.sourcedir)
336 337
337 # read port number from bitbake.lock 338 # read port number from bitbake.lock
338 self.be.bbport = "" 339 self.be.bbport = ""
339 bblock = os.path.join(builddir, 'bitbake.lock') 340 bblock = os.path.join(builddir, 'bitbake.lock')
341 # allow 10 seconds for bb lock file to appear but also be populated
342 for lock_check in range(10):
343 if not os.path.exists(bblock):
344 logger.debug("localhostbecontroller: waiting for bblock file to appear")
345 time.sleep(1)
346 continue
347 if 10 < os.stat(bblock).st_size:
348 break
349 logger.debug("localhostbecontroller: waiting for bblock content to appear")
350 time.sleep(1)
340 with open(bblock) as fplock: 351 with open(bblock) as fplock:
341 for line in fplock: 352 for line in fplock:
342 if ":" in line: 353 if ":" in line:
@@ -365,10 +376,10 @@ class LocalhostBEController(BuildEnvironmentController):
365 log = os.path.join(builddir, 'toaster_ui.log') 376 log = os.path.join(builddir, 'toaster_ui.log')
366 local_bitbake = os.path.join(os.path.dirname(os.getenv('BBBASEDIR')), 377 local_bitbake = os.path.join(os.path.dirname(os.getenv('BBBASEDIR')),
367 'bitbake') 378 'bitbake')
368 self._shellcmd(['bash -c \"(TOASTER_BRBE="%s" BBSERVER="0.0.0.0:-1" ' 379 self._shellcmd(['bash -c \"(TOASTER_BRBE="%s" BBSERVER="0.0.0.0:%s" '
369 '%s %s -u toasterui --token="" >>%s 2>&1;' 380 '%s %s -u toasterui --token="" >>%s 2>&1;'
370 'BITBAKE_UI="knotty" BBSERVER=0.0.0.0:-1 %s -m)&\"' \ 381 'BITBAKE_UI="knotty" BBSERVER=0.0.0.0:%s %s -m)&\"' \
371 % (brbe, local_bitbake, bbtargets, log, bitbake)], 382 % (brbe, self.be.bbport, local_bitbake, bbtargets, log, self.be.bbport, bitbake)],
372 builddir, nowait=True) 383 builddir, nowait=True)
373 384
374 logger.debug('localhostbecontroller: Build launched, exiting. ' 385 logger.debug('localhostbecontroller: Build launched, exiting. '
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 05cc5a83b1..7aaebedc2d 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -451,7 +451,7 @@ class Build(models.Model):
451 recipes_to_parse = models.IntegerField(default=1) 451 recipes_to_parse = models.IntegerField(default=1)
452 452
453 # number of recipes parsed so far for this build 453 # number of recipes parsed so far for this build
454 recipes_parsed = models.IntegerField(default=0) 454 recipes_parsed = models.IntegerField(default=1)
455 455
456 # number of repos to clone for this build 456 # number of repos to clone for this build
457 repos_to_clone = models.IntegerField(default=1) 457 repos_to_clone = models.IntegerField(default=1)