summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2011-06-08 17:23:42 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-06-08 20:38:27 +0100
commit355338c40c6fc65d10980cfd75e9ab5ff96ed43a (patch)
tree1f9564de6685fd2237e14809e353249017531416 /bitbake
parent9f33dde6e71b7b66db357b1bf289ae63e0db77d2 (diff)
downloadast2050-yocto-poky-355338c40c6fc65d10980cfd75e9ab5ff96ed43a.zip
ast2050-yocto-poky-355338c40c6fc65d10980cfd75e9ab5ff96ed43a.tar.gz
bitbake/cooker.py: Misc sync with upstream
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rwxr-xr-xbitbake/bin/bitbake1
-rw-r--r--bitbake/lib/bb/build.py1
-rw-r--r--bitbake/lib/bb/cooker.py29
-rw-r--r--bitbake/lib/bb/runqueue.py8
4 files changed, 20 insertions, 19 deletions
diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake
index 520e549..c348e5e 100755
--- a/bitbake/bin/bitbake
+++ b/bitbake/bin/bitbake
@@ -170,7 +170,6 @@ Default BBFILES are the .bb files in the current directory.""")
configuration = BBConfiguration(options)
configuration.pkgs_to_build.extend(args[1:])
- configuration.initial_path = os.environ['PATH']
ui_main = get_ui(configuration)
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index f1384ef..0f04736 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -28,6 +28,7 @@
import os
import sys
import logging
+import shlex
import bb
import bb.msg
import bb.process
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index b66d003..dc196ae 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -28,7 +28,6 @@ import atexit
import itertools
import logging
import multiprocessing
-import signal
import sre_constants
import threading
from cStringIO import StringIO
@@ -148,6 +147,8 @@ class BBCooker:
self.command = bb.command.Command(self)
self.state = state.initial
+ self.parser = None
+
def parseConfiguration(self):
@@ -799,9 +800,6 @@ class BBCooker:
buildname = bb.data.getVar("BUILDNAME", self.configuration.data)
bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.configuration.event_data)
- # Clear locks
- bb.fetch.persistent_database_connection = {}
-
# Execute the runqueue
runlist = [[item, "do_%s" % task]]
@@ -821,6 +819,10 @@ class BBCooker:
buildlog.error("'%s' failed" % taskdata.fn_index[fnid])
failures += len(exc.args)
retval = False
+ except SystemExit as exc:
+ self.command.finishAsyncCommand()
+ return False
+
if not retval:
bb.event.fire(bb.event.BuildCompleted(buildname, item, failures), self.configuration.event_data)
self.command.finishAsyncCommand()
@@ -858,6 +860,10 @@ class BBCooker:
buildlog.error("'%s' failed" % taskdata.fn_index[fnid])
failures += len(exc.args)
retval = False
+ except SystemExit as exc:
+ self.command.finishAsyncCommand()
+ return False
+
if not retval:
bb.event.fire(bb.event.BuildCompleted(buildname, targets, failures), self.configuration.event_data)
self.command.finishAsyncCommand()
@@ -883,9 +889,6 @@ class BBCooker:
runlist.append([k, "do_%s" % task])
taskdata.add_unresolved(localdata, self.status)
- # Clear locks
- bb.fetch.persistent_database_connection = {}
-
rq = bb.runqueue.RunQueue(self, self.configuration.data, self.status, taskdata, runlist)
self.server_registration_cb(buildTargetsIdle, rq)
@@ -894,6 +897,10 @@ class BBCooker:
if self.state == state.running:
return
+ if self.state in (state.shutdown, state.stop):
+ self.parser.shutdown(clean=False)
+ sys.exit(1)
+
if self.state != state.parsing:
self.parseConfiguration ()
@@ -1194,9 +1201,8 @@ class CookerParser(object):
def start(self):
def init(cfg):
- signal.signal(signal.SIGINT, signal.SIG_IGN)
- multiprocessing.util.Finalize(None, bb.codeparser.parser_cache_save, args=(self.cooker.configuration.data, ), exitpriority=1)
parse_file.cfg = cfg
+ multiprocessing.util.Finalize(None, bb.codeparser.parser_cache_save, args=(self.cooker.configuration.data, ), exitpriority=1)
self.results = self.load_cached()
@@ -1225,7 +1231,7 @@ class CookerParser(object):
sync = threading.Thread(target=self.bb_cache.sync)
sync.start()
- atexit.register(lambda: sync.join())
+ multiprocessing.util.Finalize(None, sync.join, exitpriority=-100)
bb.codeparser.parser_cache_savemerge(self.cooker.configuration.data)
def load_cached(self):
@@ -1239,9 +1245,6 @@ class CookerParser(object):
except StopIteration:
self.shutdown()
return False
- except KeyboardInterrupt:
- self.shutdown(clean=False)
- raise
except ParsingFailure as exc:
self.shutdown(clean=False)
bb.fatal('Unable to parse %s: %s' %
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index afa1f8d..52360ac 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -753,7 +753,6 @@ class RunQueueData:
self.rqdata.runq_depends[task],
self.rqdata.runq_revdeps[task])
-
class RunQueue:
def __init__(self, cooker, cfgData, dataCache, taskData, targets):
@@ -1106,8 +1105,10 @@ class RunQueueExecute:
newsi = os.open(os.devnull, os.O_RDWR)
os.dup2(newsi, sys.stdin.fileno())
-
bb.data.setVar("BB_WORKERCONTEXT", "1", self.cooker.configuration.data)
+ bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY", self, self.cooker.configuration.data)
+ bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY2", fn, self.cooker.configuration.data)
+ bb.parse.siggen.set_taskdata(self.rqdata.hashes, self.rqdata.hash_deps)
the_data = bb.cache.Cache.loadDataFull(fn, self.cooker.get_file_appends(fn), self.cooker.configuration.data)
@@ -1124,9 +1125,6 @@ class RunQueueExecute:
if quieterrors:
the_data.setVarFlag(taskname, "quieterrors", "1")
- bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY", self, self.cooker.configuration.data)
- bb.data.setVar("__RUNQUEUE_DO_NOT_USE_EXTERNALLY2", fn, self.cooker.configuration.data)
- bb.parse.siggen.set_taskdata(self.rqdata.hashes, self.rqdata.hash_deps)
for h in self.rqdata.hashes:
bb.data.setVar("BBHASH_%s" % h, self.rqdata.hashes[h], the_data)
OpenPOWER on IntegriCloud