diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2011-08-17 16:35:05 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-08-23 18:47:01 -0700 |
commit | 00d483d65a54b210b581b17196ea37b021eb2623 (patch) | |
tree | 2b6d3d86347e48e1124e22cad2b3b9b85d38590b | |
parent | 8165eefb1f6946abdaaebbbaf138b9e319e66ae9 (diff) | |
download | poky-00d483d65a54b210b581b17196ea37b021eb2623.tar.gz |
documentation/poky-ref-manual/usingpoky.xml: YOCTO #1001 - new section added
YOCTO #1001 - created a new section to address this issue. This is the
first draft. Darren to provide review comments.
(From yocto-docs rev: fc2aee572cc3e620684533a12a2d8436dc0abe32)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | documentation/poky-ref-manual/usingpoky.xml | 98 |
1 files changed, 95 insertions, 3 deletions
diff --git a/documentation/poky-ref-manual/usingpoky.xml b/documentation/poky-ref-manual/usingpoky.xml index c8407bb002..b07ec70fac 100644 --- a/documentation/poky-ref-manual/usingpoky.xml +++ b/documentation/poky-ref-manual/usingpoky.xml | |||
@@ -200,14 +200,14 @@ | |||
200 | <title>Debugging Build Failures</title> | 200 | <title>Debugging Build Failures</title> |
201 | 201 | ||
202 | <para> | 202 | <para> |
203 | The exact method for debugging Poky depends on the nature of the | 203 | The exact method for debugging Yocto Project build failures depends on the nature of the |
204 | problem and on the system's area from which the bug originates. | 204 | problem and on the system's area from which the bug originates. |
205 | Standard debugging practices such as comparison against the last | 205 | Standard debugging practices such as comparison against the last |
206 | known working version with examination of the changes and the re-application of steps | 206 | known working version with examination of the changes and the re-application of steps |
207 | to identify the one causing the problem are | 207 | to identify the one causing the problem are |
208 | valid for Poky just as they are for any other system. | 208 | valid for Yocto Project just as they are for any other system. |
209 | Even though it is impossible to detail every possible potential failure, | 209 | Even though it is impossible to detail every possible potential failure, |
210 | here are some general tips to aid in debugging: | 210 | this section provides some general tips to aid in debugging. |
211 | </para> | 211 | </para> |
212 | 212 | ||
213 | <section id='usingpoky-debugging-taskfailures'> | 213 | <section id='usingpoky-debugging-taskfailures'> |
@@ -328,6 +328,98 @@ | |||
328 | </para> | 328 | </para> |
329 | </section> | 329 | </section> |
330 | 330 | ||
331 | <section id='recipe-logging-mechanisms'> | ||
332 | <title>Recipe Logging Mechanisms</title> | ||
333 | <para> | ||
334 | Best practices exist while writing recipes that both log build progress and | ||
335 | act on build conditions such as warnings and errors. | ||
336 | Depending whether you are creating recipes using Bash or Python, the mechanism | ||
337 | differs: | ||
338 | <itemizedlist> | ||
339 | <listitem><para><emphasis>Python:</emphasis> For Python functions BitBake | ||
340 | supports several loglevels: <filename>bb.fatal</filename>, | ||
341 | <filename>bb.error</filename>, <filename>bb.warn</filename>, | ||
342 | <filename>bb.note</filename>, <filename>bb.plain</filename>, | ||
343 | and <filename>bb.debug</filename>.</para></listitem> | ||
344 | <listitem><para><emphasis>Bash:</emphasis> For Bash functions you use the | ||
345 | <filename>echo</filename> command and prepend a diagnostic string that includes | ||
346 | the loglevel followed by a colon character</para></listitem> | ||
347 | </itemizedlist> | ||
348 | </para> | ||
349 | |||
350 | <section id='logging-with-python'> | ||
351 | <title>Logging With Python</title> | ||
352 | <para> | ||
353 | When creating recipes using Python and inserting code that handles build logs | ||
354 | keep in mind the goal is to have informative logs while keeping the console as | ||
355 | "silent" as possible. | ||
356 | Also, if you want status messages in the log use the "debug" loglevel. | ||
357 | </para> | ||
358 | |||
359 | <para> | ||
360 | Following is sample code from a recipe written in Python. | ||
361 | The code handles logging for a function that determines the number of tasks | ||
362 | needed to be run: | ||
363 | <literallayout class='monospaced'> | ||
364 | python do_listtasks() { | ||
365 | bb.debug(2, "Starting to figure out the task list") | ||
366 | if noteworthy_condition: | ||
367 | bb.note("There are 47 tasks to run") | ||
368 | bb.debug(2, "Got to point xyz") | ||
369 | if warning_trigger: | ||
370 | bb.warn("Detected warning_trigger, this might be a problem later.") | ||
371 | if recoverable_error: | ||
372 | bb.error("Hit recoverable_error, you really need to fix this!") | ||
373 | if fatal_error: | ||
374 | bb.fatal("fatal_error detected, unable to print the task list") | ||
375 | bb.plain("The tasks present are abc") | ||
376 | bb.debug(2, "Finished figureing out the tasklist") | ||
377 | } | ||
378 | </literallayout> | ||
379 | </para> | ||
380 | </section> | ||
381 | |||
382 | <section id='logging-with-bash'> | ||
383 | <title>Logging With Bash</title> | ||
384 | <para> | ||
385 | When creating recipes using Bash and inserting code that handles build | ||
386 | logs you have the same goals - informative with minimal console output. | ||
387 | Use the <filename>echo</filename> command and prepend the diagnostic string | ||
388 | with the appropriate loglevel floowed by the colon character. | ||
389 | </para> | ||
390 | |||
391 | <para> | ||
392 | For guidance on <filename>echo</filename> usage in Bash recipes, see the | ||
393 | <filename>logging.bbclass</filename> file in the | ||
394 | <filename>meta/classes</filename> directory of the Yocto Project files. | ||
395 | </para> | ||
396 | |||
397 | <para> | ||
398 | Following is sample code from a recipe written in Bash. | ||
399 | The code logs the progress of the <filename>do_my_function</filename> function. | ||
400 | <literallayout class='monospaced'> | ||
401 | do_my_function() { | ||
402 | echo "Running do_my_function()" | ||
403 | if [ exceptional_condition ]; then | ||
404 | echo "NOTE: hit exceptional_condition" | ||
405 | fi | ||
406 | echo "DEBUG: got to point xyz" | ||
407 | if [ warning_trigger ]; then | ||
408 | echo "WARNING: detected warning_trigger, this might cause a plroblem later." | ||
409 | fi | ||
410 | if [ recoverable_error ]; then | ||
411 | echo "ERROR: hit recoverable_error, correcting" | ||
412 | fi | ||
413 | if [ fatal_error ]; then | ||
414 | echo "FATAL: fatal_error detected" | ||
415 | fi | ||
416 | echo "Completed do_my_function" | ||
417 | } | ||
418 | </literallayout> | ||
419 | </para> | ||
420 | </section> | ||
421 | </section> | ||
422 | |||
331 | <section id='usingpoky-debugging-others'> | 423 | <section id='usingpoky-debugging-others'> |
332 | <title>Other Tips</title> | 424 | <title>Other Tips</title> |
333 | <tip> | 425 | <tip> |