[oe-commits] [bitbake] 06/18: build/runqueue: Add noextra stamp file parameter to fix multiconfig builds
git at git.openembedded.org
git at git.openembedded.org
Wed Aug 31 10:54:12 UTC 2016
rpurdie pushed a commit to branch master-next
in repository bitbake.
commit 31e3ea56a8fa5ddb7196094d6d21b5e4a45cfc0d
Author: Richard Purdie <richard.purdie at linuxfoundation.org>
AuthorDate: Wed Aug 31 11:37:53 2016 +0100
build/runqueue: Add noextra stamp file parameter to fix multiconfig builds
We can't execute the same task for the same package_arch multiple
times as the current setup has conflicting directories. Since
these would usually have the same stamp/hash, we want to execute in
sequence rather than in parallel, so for the purposes of task execution,
don't consider the "extra-info" on the stamp files. We need to add
a parameter to the stamp function to achieve this.
This avoids multiple update-rc.d populate_sysroot tasks executing in
parallel and breaking multiconfig builds.
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
lib/bb/build.py | 8 +++++---
lib/bb/runqueue.py | 4 ++--
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/lib/bb/build.py b/lib/bb/build.py
index c632a27..310b5c0 100644
--- a/lib/bb/build.py
+++ b/lib/bb/build.py
@@ -633,7 +633,7 @@ def exec_task(fn, task, d, profile = False):
event.fire(failedevent, d)
return 1
-def stamp_internal(taskname, d, file_name, baseonly=False):
+def stamp_internal(taskname, d, file_name, baseonly=False, noextra=False):
"""
Internal stamp helper function
Makes sure the stamp directory exists
@@ -656,6 +656,8 @@ def stamp_internal(taskname, d, file_name, baseonly=False):
if baseonly:
return stamp
+ if noextra:
+ extrainfo = ""
if not stamp:
return
@@ -751,12 +753,12 @@ def write_taint(task, d, file_name = None):
with open(taintfn, 'w') as taintf:
taintf.write(str(uuid.uuid4()))
-def stampfile(taskname, d, file_name = None):
+def stampfile(taskname, d, file_name = None, noextra=False):
"""
Return the stamp for a given task
(d can be a data dict or dataCache)
"""
- return stamp_internal(taskname, d, file_name)
+ return stamp_internal(taskname, d, file_name, noextra=noextra)
def add_tasks(tasklist, d):
task_deps = d.getVar('_task_deps', False)
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index ce30fcc..e4c9737 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -137,7 +137,7 @@ class RunQueueScheduler(object):
for tid in self.rqdata.runtaskentries:
(mc, fn, taskname) = split_tid(tid)
taskfn = taskfn_fromtid(tid)
- self.stamps[tid] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn)
+ self.stamps[tid] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
if tid in self.rq.runq_buildable:
self.buildable.append(tid)
@@ -1805,7 +1805,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
self.rq.worker[mc].process.stdin.write(b"<runtask>" + pickle.dumps((taskfn, task, taskname, False, self.cooker.collection.get_file_appends(taskfn), taskdepdata)) + b"</runtask>")
self.rq.worker[mc].process.stdin.flush()
- self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn)
+ self.build_stamps[task] = bb.build.stampfile(taskname, self.rqdata.dataCaches[mc], taskfn, noextra=True)
self.build_stamps2.append(self.build_stamps[task])
self.runq_running.add(task)
self.stats.taskActive()
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list