Dependency Handling

Bitbake 1.7.x onwards works with the metadata at the task level since this is optimal when dealing with multiple threads of execution. A robust method of specifing task dependencies is therefore needed.

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.

DEPENDS

DEPENDS is taken to specify build time dependencies. The 'deptask' flag for tasks is used to signify the task of each DEPENDS which must have completed before that task can be executed.

do_configure[deptask] = "do_populate_staging"

means the do_populate_staging task of each item in DEPENDS must have completed before do_configure can execute.

RDEPENDS

RDEPENDS is taken to specify runtime dependencies. The 'rdeptask' flag for tasks is used to signify the task of each RDEPENDS which must have completed before that task can be executed.

do_package_write[rdeptask] = "do_package"

means the do_package task of each item in RDEPENDS must have completed before do_package_write can execute.

Recursive DEPENDS

These are specified with the 'recdeptask' flag and is used signify the task(s) of each DEPENDS which must have completed before that task can be executed. It applies recursively so also, the DEPENDS of each item in the original DEPENDS must be met and so on.

Recursive RDEPENDS

These are specified with the 'recrdeptask' flag and is used signify the task(s) of each RDEPENDS which must have completed before that task can be executed. It applies recursively so also, the RDEPENDS of each item in the original RDEPENDS must be met and so on. It also runs all DEPENDS first too.

Inter Task

The 'depends' flag for tasks is a more generic form of which allows an interdependency on specific tasks rather than specifying the data in DEPENDS or RDEPENDS.

do_patch[depends] = "quilt-native:do_populate_staging"

means the do_populate_staging task of the target quilt-native must have completed before the do_patch can execute.