diff --git a/bitbake/doc/user-manual/user-manual-metadata.xml b/bitbake/doc/user-manual/user-manual-metadata.xml
index 2e19f4572c..80e5b648db 100644
--- a/bitbake/doc/user-manual/user-manual-metadata.xml
+++ b/bitbake/doc/user-manual/user-manual-metadata.xml
@@ -1502,24 +1502,36 @@
Dependencies
-
- Overview
+
+ To allow for efficient operation given multiple processes
+ executing in parallel, BitBake handles dependencies at
+ the task level.
+ BitBake supports a robust method to handle these dependencies.
+
-
- BitBake handles dependencies at the task level since to
- allow for efficient operation with multiple
- processes executing in parallel, a robust method of
- specifying task dependencies is needed.
-
-
+
+ This section describes several types of dependency mechanisms.
+ Dependencies Internal to the .bb File
- Where the dependencies are internal to a given
- .bb file, the dependencies are handled by the
- previously detailed addtask directive.
+ BitBake uses the addtask directive
+ to manage dependencies that are internal to a given recipe
+ file.
+ You can use the addtask directive to
+ indicate when a task is dependent on other tasks or when
+ other tasks depend on that recipe.
+ Here is an example:
+
+ addtask printdate after do_fetch before do_build
+
+ In this example, the printdate task is
+ depends on the completion of the do_fetch
+ task.
+ And, the do_build depends on the completion
+ of the printdate task.
@@ -1527,15 +1539,18 @@
Build Dependencies
- DEPENDS lists build time dependencies.
- The 'deptask' flag for tasks is used to signify the task of each
- item listed in DEPENDS which must have
- completed before that task can be executed.
+ BitBake uses the
+ DEPENDS
+ variable to manage build time dependencies.
+ The "deptask" varflag for tasks signifies the task of each
+ item listed in DEPENDS that must
+ complete before that task can be executed.
+ Here is an example:
do_configure[deptask] = "do_populate_staging"
- In the previous example, the do_populate_staging
- task of each item in DEPENDS must have completed before
+ In this example, the do_populate_staging
+ task of each item in DEPENDS must complete before
do_configure can execute.
@@ -1543,11 +1558,20 @@
Runtime Dependencies
+
+ BitBake uses the
+ PACKAGES,
+ RDEPENDS, and
+ RRECOMMENDS
+ variables to manage runtime dependencies.
+
+
The PACKAGES variable lists runtime
- packages and each of these can have RDEPENDS and
+ packages.
+ Each of those packages can have RDEPENDS and
RRECOMMENDS runtime dependencies.
- The 'rdeptask' flag for tasks is used to signify the task of each
+ The "rdeptask" flag for tasks is used to signify the task of each
item runtime dependency which must have completed before that
task can be executed.
@@ -1563,25 +1587,29 @@
Recursive Dependencies
- These are specified with the 'recrdeptask' flag
- which is used to signify the task(s) of dependencies
- which must have completed before that task can be
- executed.
- It works by looking though the build
- and runtime dependencies of the current recipe as well
- as any inter-task dependencies the task has,
- then adding a dependency on the listed task.
- It will then recurse through the dependencies of those
- tasks and so on.
+ BitBake uses the "recrdeptask" flag to manage
+ recursive task dependencies.
+ BitBake looks through the build-time and runtime
+ dependencies of the current recipe, looks through
+ the task's inter-task
+ dependencies, and then adds dependencies for the
+ listed task.
+ Once BitBake has accomplished this, it recursively works through
+ the dependencies of those tasks.
+ Iterative passes continue until all dependencies are discovered
+ and added.
- It may be desirable to recurse not just through the
- dependencies of those tasks but through the
- build and runtime dependencies of dependent tasks too.
- If that is the case, the taskname itself should
- be referenced in the task list (e.g.
- do_a[recrdeptask] = "do_a do_b").
+ You might want to not only have BitBake look for
+ dependencies of those tasks, but also have BitBake look
+ for build-time and runtime dependencies of the dependent
+ tasks as well.
+ If that is the case, you need to reference the task name
+ itself in the task list:
+
+ do_a[recrdeptask] = "do_a do_b"
+
@@ -1589,19 +1617,23 @@
Inter-Task Dependencies
- The 'depends' flag for tasks is a more generic form which
- allows an inter-dependency on specific tasks rather than specifying
+ BitBake uses the "depends" flag in a more generic form
+ to manage inter-task dependencies.
+ This more generic form allows for inter-dependency
+ checks for specific tasks rather than checks for
the data in DEPENDS.
+ Here is an example:
do_patch[depends] = "quilt-native:do_populate_staging"
- In the previous example, the do_populate_staging
- task of the target quilt-native must have completed before the
+ In this example, the do_populate_staging
+ task of the target quilt-native
+ must have completed before the
do_patch task can execute.
- The 'rdepends' flag works in a similar way but takes targets
+ The "rdepends" flag works in a similar way but takes targets
in the runtime namespace instead of the build-time dependency
namespace.