summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2011-03-28 15:09:50 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-03-28 15:09:50 +0100
commit12b163dbd81cafafec1ebe3c4039c65af60ee261 (patch)
treebb4b0aed62393b27c05d2a977b256be67c42be58 /bitbake/lib/bb/runqueue.py
parentafd28598368963dc49bfd02ef2d6f54218d663ae (diff)
downloadpoky-12b163dbd81cafafec1ebe3c4039c65af60ee261.tar.gz
bitbake/gcc: Enable a shared common source tree
This patch is a quick proof of concept to show how source code could be shared between recipes which use ${B} to have a separate build directory compared to source directory ${S}. Issues: a) gcc uses sed and creates config files against ${S} which means the directory should not be shared. Need to change the way that works. b) Could be extended to cover eglibc except there is a patch applied against nativesdk versions which again makes the source incompatible. c) Need to clean up the layout in work-shared and make a directory level deeper to ensure patch separation. d) clean task does not remove stamps Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r--bitbake/lib/bb/runqueue.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 3db083b261..cb9e462869 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -105,6 +105,11 @@ class RunQueueScheduler(object):
105 if self.rq.runq_running[taskid] == 1: 105 if self.rq.runq_running[taskid] == 1:
106 continue 106 continue
107 if self.rq.runq_buildable[taskid] == 1: 107 if self.rq.runq_buildable[taskid] == 1:
108 fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[taskid]]
109 taskname = self.rqdata.runq_task[taskid]
110 stamp = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
111 if stamp in self.rq.build_stamps.values():
112 continue
108 return taskid 113 return taskid
109 114
110 def next(self): 115 def next(self):
@@ -1010,6 +1015,7 @@ class RunQueueExecute:
1010 self.runq_complete = [] 1015 self.runq_complete = []
1011 self.build_pids = {} 1016 self.build_pids = {}
1012 self.build_pipes = {} 1017 self.build_pipes = {}
1018 self.build_stamps = {}
1013 self.failed_fnids = [] 1019 self.failed_fnids = []
1014 1020
1015 def runqueue_process_waitpid(self): 1021 def runqueue_process_waitpid(self):
@@ -1024,6 +1030,7 @@ class RunQueueExecute:
1024 del self.build_pids[result[0]] 1030 del self.build_pids[result[0]]
1025 self.build_pipes[result[0]].close() 1031 self.build_pipes[result[0]].close()
1026 del self.build_pipes[result[0]] 1032 del self.build_pipes[result[0]]
1033 del self.build_stamps[result[0]]
1027 if result[1] != 0: 1034 if result[1] != 0:
1028 self.task_fail(task, result[1]>>8) 1035 self.task_fail(task, result[1]>>8)
1029 else: 1036 else:
@@ -1312,6 +1319,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
1312 1319
1313 self.build_pids[pid] = task 1320 self.build_pids[pid] = task
1314 self.build_pipes[pid] = runQueuePipe(pipein, pipeout, self.cfgData) 1321 self.build_pipes[pid] = runQueuePipe(pipein, pipeout, self.cfgData)
1322 self.build_stamps[pid] = bb.build.stampfile(taskname, self.rqdata.dataCache, fn)
1315 self.runq_running[task] = 1 1323 self.runq_running[task] = 1
1316 self.stats.taskActive() 1324 self.stats.taskActive()
1317 if self.stats.active < self.number_tasks: 1325 if self.stats.active < self.number_tasks: