aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2016-11-24 11:19:52 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-11-30 15:48:09 +0000
commit310a9e5d3564e9b07bb32e3d7b3cc94e32421968 (patch)
tree780ba1c0d7e5e937502498559e6291dc57911714
parentddaac5e4e3ebe71cb279a33a6585b3e8a8790e55 (diff)
downloadopenembedded-core-contrib-310a9e5d3564e9b07bb32e3d7b3cc94e32421968.tar.gz
bitbake: toaster: runbuilds Write the pidfile in python rather than shell script
Write the pid file out in the start up of this management command. This ensures this has happened instead of relying on the shell command having been run which may or may not be the case. This also makes it simpler for testing. Couple of clean ups of runbuilds as identified by pyflake (Bitbake rev: 999e980ee1a58d16f33ef6c0e41aecdcd0206f39) Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xbitbake/bin/toaster2
-rw-r--r--bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py21
-rw-r--r--bitbake/lib/toaster/orm/management/commands/lsupdates.py1
3 files changed, 15 insertions, 9 deletions
diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster
index f92d38ecab..e0aac1a7bb 100755
--- a/bitbake/bin/toaster
+++ b/bitbake/bin/toaster
@@ -254,7 +254,7 @@ case $CMD in
return 4
fi
export BITBAKE_UI='toasterui'
- $MANAGE runbuilds & echo $! >${BUILDDIR}/.runbuilds.pid
+ $MANAGE runbuilds &
# set fail safe stop system on terminal exit
trap stop_system SIGHUP
echo "Successful ${CMD}."
diff --git a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
index 7f7a5a9555..df11f9d162 100644
--- a/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
+++ b/bitbake/lib/toaster/bldcontrol/management/commands/runbuilds.py
@@ -11,9 +11,11 @@ from orm.models import Build, LogMessage, Target
import logging
import traceback
import signal
+import os
logger = logging.getLogger("toaster")
+
class Command(NoArgsCommand):
args = ""
help = "Schedules and executes build requests as possible. "\
@@ -50,7 +52,7 @@ class Command(NoArgsCommand):
logger.debug("runbuilds: No build env")
return
- logger.info("runbuilds: starting build %s, environment %s" % \
+ logger.info("runbuilds: starting build %s, environment %s" %
(br, bec.be))
# let the build request know where it is being executed
@@ -80,7 +82,7 @@ class Command(NoArgsCommand):
def archive(self):
for br in BuildRequest.objects.filter(state=BuildRequest.REQ_ARCHIVE):
- if br.build == None:
+ if br.build is None:
br.state = BuildRequest.REQ_FAILED
else:
br.state = BuildRequest.REQ_COMPLETED
@@ -99,10 +101,10 @@ class Command(NoArgsCommand):
Q(updated__lt=timezone.now() - timedelta(seconds=30))
).update(lock=BuildEnvironment.LOCK_FREE)
-
# update all Builds that were in progress and failed to start
- for br in BuildRequest.objects.filter(state=BuildRequest.REQ_FAILED,
- build__outcome=Build.IN_PROGRESS):
+ for br in BuildRequest.objects.filter(
+ state=BuildRequest.REQ_FAILED,
+ build__outcome=Build.IN_PROGRESS):
# transpose the launch errors in ToasterExceptions
br.build.outcome = Build.FAILED
for brerror in br.brerror_set.all():
@@ -117,7 +119,6 @@ class Command(NoArgsCommand):
br.environment.lock = BuildEnvironment.LOCK_FREE
br.environment.save()
-
# update all BuildRequests without a build created
for br in BuildRequest.objects.filter(build=None):
br.build = Build.objects.create(project=br.project,
@@ -144,7 +145,7 @@ class Command(NoArgsCommand):
# Make sure the LOCK is removed for builds which have been fully
# cancelled
- for br in BuildRequest.objects.filter(\
+ for br in BuildRequest.objects.filter(
Q(build__outcome=Build.CANCELLED) &
Q(state=BuildRequest.REQ_CANCELLING) &
~Q(environment=None)):
@@ -168,6 +169,12 @@ class Command(NoArgsCommand):
logger.warn("runbuilds: schedule exception %s" % str(e))
def handle_noargs(self, **options):
+ pidfile_path = os.path.join(os.environ.get("BUILDDIR", "."),
+ ".runbuilds.pid")
+
+ with open(pidfile_path, 'w') as pidfile:
+ pidfile.write("%s" % os.getpid())
+
self.runbuild()
signal.signal(signal.SIGUSR1, lambda sig, frame: None)
diff --git a/bitbake/lib/toaster/orm/management/commands/lsupdates.py b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
index 688918e68c..68c6c423d8 100644
--- a/bitbake/lib/toaster/orm/management/commands/lsupdates.py
+++ b/bitbake/lib/toaster/orm/management/commands/lsupdates.py
@@ -90,7 +90,6 @@ class Command(NoArgsCommand):
from urlparse import urlparse
proxy_settings = os.environ.get("http_proxy", None)
- oe_core_layer = 'openembedded-core'
def _get_json_response(apiurl=DEFAULT_LAYERINDEX_SERVER):
http_progress = Spinner()