[gnome-continuous-yocto/gnomeostree-3.28-rocko: 4104/8267] bitbake: build.py: add preceedtask() API



commit 633697cce651ddb22c18083087531dce333c752c
Author: Patrick Ohly <patrick ohly intel com>
Date:   Thu Jan 19 20:35:15 2017 +0100

    bitbake: build.py: add preceedtask() API
    
    The API is required by the revised rm_work.bbclass implementation,
    which needs to know all tasks that do_build depends so that it
    can properly inject itself between do_build and those tasks.
    
    The new API primarily hides the internal implementation of the "after"
    and "before" dependency tracking. Because tasks defined as
    precondition via "recrdeptask" may or may not be relevant (they are for
    rm_work.bclass), the API also includes support for that.
    
    There's no default value for including recrdeptasks, so developers
    have to think about what they need.
    
    (Bitbake rev: 9289ab40e77906e983a2f79cd7602ee95be5025a)
    
    Signed-off-by: Patrick Ohly <patrick ohly intel com>
    Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>

 bitbake/lib/bb/build.py |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index 271cda6..c6104a4 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -862,3 +862,19 @@ def deltask(task, d):
         if task in deps:
             deps.remove(task)
             d.setVarFlag(bbtask, 'deps', deps)
+
+def preceedtask(task, with_recrdeptasks, d):
+    """
+    Returns a set of tasks in the current recipe which were specified as
+    precondition by the task itself ("after") or which listed themselves
+    as precondition ("before"). Preceeding tasks specified via the
+    "recrdeptask" are included in the result only if requested. Beware
+    that this may lead to the task itself being listed.
+    """
+    preceed = set()
+    preceed.update(d.getVarFlag(task, 'deps') or [])
+    if with_recrdeptasks:
+        recrdeptask = d.getVarFlag(task, 'recrdeptask')
+        if recrdeptask:
+            preceed.update(recrdeptask.split())
+    return preceed


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]