summaryrefslogtreecommitdiffstats
path: root/lib/bb/build.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2016-08-31 11:37:53 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-02 16:29:36 +0100
commita9041fc96a14e718c0c1d1676e705343b9e872d3 (patch)
tree3c80c05c1104f7995552cdc6379dddc1b0a28823 /lib/bb/build.py
parentd98cc31d6668bc1d6372664593126b5e5132ef2c (diff)
downloadbitbake-a9041fc96a14e718c0c1d1676e705343b9e872d3.tar.gz
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@linuxfoundation.org>
Diffstat (limited to 'lib/bb/build.py')
-rw-r--r--lib/bb/build.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/bb/build.py b/lib/bb/build.py
index c632a271f..310b5c051 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)