diff options
Diffstat (limited to 'documentation/dev-manual/dev-manual-common-tasks.xml')
-rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 7330247819..5f7b66e411 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
@@ -12344,6 +12344,98 @@ Some notes from Cal: | |||
12344 | </para> | 12344 | </para> |
12345 | </section> | 12345 | </section> |
12346 | 12346 | ||
12347 | <section id='dev-viewing-metadata-used-to-create-the-input-signature-of-a-shared-state-task'> | ||
12348 | <title>Viewing Metadata Used to Create the Input Signature of a Shared State Task</title> | ||
12349 | |||
12350 | <para> | ||
12351 | Seeing what metadata went into creating the input signature | ||
12352 | of a shared state (sstate) task can be a useful debugging | ||
12353 | aid. | ||
12354 | This information is available in signature information | ||
12355 | (<filename>siginfo</filename>) files in | ||
12356 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SSTATE_DIR'><filename>SSTATE_DIR</filename></ulink>. | ||
12357 | For information on how to view and interpret information in | ||
12358 | <filename>siginfo</filename> files, see the | ||
12359 | "<link linkend='dev-viewing-task-variable-dependencies'>Viewing Task Variable Dependencies</link>" | ||
12360 | section. | ||
12361 | </para> | ||
12362 | |||
12363 | <para> | ||
12364 | For conceptual information on shared state, see the | ||
12365 | "<ulink url='&YOCTO_DOCS_OM_URL;#shared-state'>Shared State</ulink>" | ||
12366 | section in the Yocto Project Overview and Concepts Manual. | ||
12367 | </para> | ||
12368 | </section> | ||
12369 | |||
12370 | <section id='dev-invalidating-shared-state-to-force-a-task-to-run'> | ||
12371 | <title>Invalidating Shared State to Force a Task to Run</title> | ||
12372 | |||
12373 | <para> | ||
12374 | The OpenEmbedded build system uses | ||
12375 | <ulink url='&YOCTO_DOCS_OM_URL;#overview-checksums'>checksums</ulink> | ||
12376 | and | ||
12377 | <ulink url='&YOCTO_DOCS_OM_URL;#shared-state'>shared state</ulink> | ||
12378 | cache to avoid unnecessarily rebuilding tasks. | ||
12379 | Collectively, this scheme is known as "shared state code." | ||
12380 | </para> | ||
12381 | |||
12382 | <para> | ||
12383 | As with all schemes, this one has some drawbacks. | ||
12384 | It is possible that you could make implicit changes to your | ||
12385 | code that the checksum calculations do not take into | ||
12386 | account. | ||
12387 | These implicit changes affect a task's output but do not | ||
12388 | trigger the shared state code into rebuilding a recipe. | ||
12389 | Consider an example during which a tool changes its output. | ||
12390 | Assume that the output of <filename>rpmdeps</filename> | ||
12391 | changes. | ||
12392 | The result of the change should be that all the | ||
12393 | <filename>package</filename> and | ||
12394 | <filename>package_write_rpm</filename> shared state cache | ||
12395 | items become invalid. | ||
12396 | However, because the change to the output is | ||
12397 | external to the code and therefore implicit, | ||
12398 | the associated shared state cache items do not become | ||
12399 | invalidated. | ||
12400 | In this case, the build process uses the cached items | ||
12401 | rather than running the task again. | ||
12402 | Obviously, these types of implicit changes can cause | ||
12403 | problems. | ||
12404 | </para> | ||
12405 | |||
12406 | <para> | ||
12407 | To avoid these problems during the build, you need to | ||
12408 | understand the effects of any changes you make. | ||
12409 | Realize that changes you make directly to a function | ||
12410 | are automatically factored into the checksum calculation. | ||
12411 | Thus, these explicit changes invalidate the associated | ||
12412 | area of shared state cache. | ||
12413 | However, you need to be aware of any implicit changes that | ||
12414 | are not obvious changes to the code and could affect | ||
12415 | the output of a given task. | ||
12416 | </para> | ||
12417 | |||
12418 | <para> | ||
12419 | When you identify an implicit change, you can easily | ||
12420 | take steps to invalidate the cache and force the tasks | ||
12421 | to run. | ||
12422 | The steps you can take are as simple as changing a | ||
12423 | function's comments in the source code. | ||
12424 | For example, to invalidate package shared state files, | ||
12425 | change the comment statements of | ||
12426 | <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks-package'><filename>do_package</filename></ulink> | ||
12427 | or the comments of one of the functions it calls. | ||
12428 | Even though the change is purely cosmetic, it causes the | ||
12429 | checksum to be recalculated and forces the build system to | ||
12430 | run the task again. | ||
12431 | <note> | ||
12432 | For an example of a commit that makes a cosmetic | ||
12433 | change to invalidate shared state, see this | ||
12434 | <ulink url='&YOCTO_GIT_URL;/cgit.cgi/poky/commit/meta/classes/package.bbclass?id=737f8bbb4f27b4837047cb9b4fbfe01dfde36d54'>commit</ulink>. | ||
12435 | </note> | ||
12436 | </para> | ||
12437 | </section> | ||
12438 | |||
12347 | <section id='dev-debugging-taskrunning'> | 12439 | <section id='dev-debugging-taskrunning'> |
12348 | <title>Running Specific Tasks</title> | 12440 | <title>Running Specific Tasks</title> |
12349 | 12441 | ||