Bug 9861 - Suggested additions to the dependencies section
Summary: Suggested additions to the dependencies section
Status: RESOLVED FIXED
Alias: None
Product: BitBake User Manual
Classification: Documentation
Component: bitbake-manual (show other bugs)
Version: 2.2
Hardware: x86 Multiple
: Medium enhancement
Target Milestone: 2.2 M3
Assignee: Scott Rifenbark
QA Contact:
URL:
Whiteboard: 16 July 2016: RESOLVED
Depends on:
Blocks:
 
Reported: 2016-06-30 22:47 UTC by ulfalizer
Modified: 2016-07-16 18:56 UTC (History)
3 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: Done (doc changes complete)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ulfalizer 2016-06-30 22:47:50 UTC
It's already mentioned, but I think it helps to emphasize that all dependencies are dependencies between tasks, regardless of how they're added. 

Section 3.9 (between 3.9 and 3.9.1) could be rewritten/fleshed out like this:


To allow for efficient parallel processing, BitBake handles dependencies at the
task level. Dependencies can exist both between tasks within a single recipe -
for example, a recipe's do_configure task might need to complete before its
do_compile task can run - and between tasks in different recipes - for example,
one recipe's do_configure task might require another recipe's
do_populate_sysroot task to have finished first, so that the libraries and
headers provided by the other recipe are available.

This section describes several ways to declare dependencies. Note that even
though these dependencies are declared in different ways, they are all simply
dependencies between tasks.


I also think section 3.9.4. Recursive Dependencies would be better with a concrete example (something something wait for all recipes...). The term "inter-task dependency" seems confusing as well. Aren't all dependencies by definition inter-task since they're dependencies between tasks rather than dependencies within tasks? Was "inter-task" supposed to be "inter-recipe"? In that case I think "between tasks in different recipes" would be clearer.
Comment 1 Scott Rifenbark 2016-07-11 21:25:57 UTC
Hi, 

I updated the 3.9 section based on your information.  I formed it a bit differently but think I got the details.  If not let me know.  See 
http://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.html#dependencies

The second part of the bug you noted for section 3.9.4 for recursive dependencies I need some further explanation.  I don't have a full example.  So if you could provide some code snippits I could get them in there.  

Also, regarding the term "inter-task" -- Both section 3.9.4 and 3.9.5 use that term.  See http://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.html#recursive-dependencies and  http://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.html#inter-task-dependencies.  Section 3.9.5 seems to imply that inter-task means "interdependency checks between specific tasks and further clarifies it by adding "rather than checks for the data in DEPENDS."  I don't understand this but that is clearly some sort of definition for "inter-task".  Maybe you or someone can tell me if that is the right definition for "inter-task" in this case.  Once I know that, I can attempt to clear things up a bit for those two sections.

Thanks,
Scott
Comment 2 ulfalizer 2016-07-11 23:56:14 UTC
(In reply to comment #1)
> I updated the 3.9 section based on your information.  I formed it a bit
> differently but think I got the details.  If not let me know.  See 
> http://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.
> html#dependencies

Looks nice. My version was a bit run-on. :)

Could we also add the following note to the end of '3.9.1. Dependencies Internal to the .bb File'? It sorts out some confusion I've seen.


"Recipes are built by having their do_build (not to be confused with do_compile)
tasks executed. For a task to run when a recipe is built, it must therefore be
a direct or indirect dependency of do_build. The following examples illustrate
this:

 * 'addtask mytask before do_build' causes mytask to run when the recipe is
   built. In this example it is run at an unspecified time relative to other
   tasks within the recipe, since no 'after' is given.

 * 'addtask mytask after do_configure' by itself does *not* cause mytask to run
   when the recipe is built. The task can still be run manually with

     $ bitbake <recipe> -c mytask

   , and could also be declared as a dependency of some other task. In both
   cases, it will run after do_configure."


To make the task and dependency information in the BitBake User Manual easier to find, I suggest adding the following,

"For more information on tasks and dependencies, see the [3.5. Tasks] and [3.9
Dependencies] sections of the BitBake User Manual."

, to the following places in the Yocto Project Reference Manual:

  * Right before '8.1. Normal Recipe Build Tasks'.

  * Near the end of the glossary entries for DEPENDS and RDEPENDS.


We could return to recrdeptask and "inter-task" later. (Maybe in a separate ticket, so this one doesn't get too big.) I would need to do some digging to figure stuff out at least. Would be nice if someone more familiar with it could jump in too.
Comment 3 Scott Rifenbark 2016-07-12 20:43:50 UTC
Hi, 

Here is the new note added to the BB manual: http://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.html#dependencies-internal-to-the-bb-file.  Check it out for me and let me know of any problems or changes.

The additional notes in the ref-manual can be found at the following variable descriptions near the bottom of each variable:

 * http://www.yoctoproject.org/docs/2.2/ref-manual/ref-manual.html#var-DEPENDS
 * http://www.yoctoproject.org/docs/2.2/ref-manual/ref-manual.html#var-RDEPENDS

Thanks, 
Scott
Comment 4 ulfalizer 2016-07-13 01:37:13 UTC
Just one nit:

  ...since "after" is not used...

could use code highlighting and no quotation marks instead for "after".
Comment 5 ulfalizer 2016-07-13 02:11:23 UTC
I also think I came up with something useful to add to '3.9.4. Recursive Dependencies', that explains its purpose. I'd add this in a separate paragraph after "iterative passes continue until all dependencies are discovered and added":


recrdeptask is most commonly used in high-level recipes that need to wait for some task to finish "globally". For example, image.bbclass has the following:

  do_rootfs[recrdeptask] += "do_packagedata"

This says that the do_packagedata task of all recipes reachable (via dependencies) from the image recipe must run before the do_rootfs task can run.
Comment 6 Scott Rifenbark 2016-07-14 19:01:47 UTC
Ulf, 

Here is the formatting change in the note for "after" - http://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.html#dependencies-internal-to-the-bb-file

Also, here is the link for that additional paragraph you suggested:
http://www.yoctoproject.org/docs/2.2/bitbake-user-manual/bitbake-user-manual.html#recursive-dependencies.

Let me know how this works.

Thanks, 
Scott
Comment 7 ulfalizer 2016-07-15 05:34:07 UTC
Looks good to me. Thanks!
Comment 8 Scott Rifenbark 2016-07-16 18:56:05 UTC
Thanks, 

Setting to RESOLVED and putting the doc flag to "Done."

Scott