summaryrefslogtreecommitdiffstats
path: root/documentation/ref-manual/technical-details.xml
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2013-07-12 11:43:26 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-08-13 13:18:40 +0100
commitc7ac8851c8c1d21a3d49fb9aa58c531dfaf85fd6 (patch)
treee39f593ee92836cb8bd8fcfd3c88e00bc46408d0 /documentation/ref-manual/technical-details.xml
parent7c8831bf5ca99bc6fc182b0a6b8a09dbf6f38f9d (diff)
downloadpoky-c7ac8851c8c1d21a3d49fb9aa58c531dfaf85fd6.tar.gz
ref-manual: Review comments for config and layer sections.
Fixes [YOCTO #2808] I applied extensive review comments to the user configuration and to the layer sections. These revisions also included updates to the two figures. (From yocto-docs rev: 029692b07cb7dff605b81aa45de7c891a3a77db1) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/ref-manual/technical-details.xml')
-rw-r--r--documentation/ref-manual/technical-details.xml459
1 files changed, 258 insertions, 201 deletions
diff --git a/documentation/ref-manual/technical-details.xml b/documentation/ref-manual/technical-details.xml
index 664c4f7986..77c1ba84e4 100644
--- a/documentation/ref-manual/technical-details.xml
+++ b/documentation/ref-manual/technical-details.xml
@@ -157,25 +157,18 @@
157 <title>A Closer Look at the Yocto Project Development Environment</title> 157 <title>A Closer Look at the Yocto Project Development Environment</title>
158 158
159 <para> 159 <para>
160 This section is a work-in-progress for an expanded discussion of the 160 This section takes a more detailed look at the Yocto Project
161 Yocto Project Development Environment. 161 development environment.
162 The section is rooted in the figure found in the 162 The following diagram represents the development environment at a
163 "<ulink url='&YOCTO_DOCS_QS_URL;#yp-intro'>Introducing the Yocto Project Development Environment</ulink>" 163 high level.
164 section of the Yocto Project Quick Start. 164 The remainder of this section expands on the fundamental input, output,
165 This expanded discussion presents a deeper level of detail regarding 165 process, and
166 input, output, and 166 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>) blocks
167 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>. 167 in the Yocto Project development environment.
168 </para> 168 </para>
169 169
170 <para> 170 <para>
171 I will either replicate the exact figure from the YP Quick Start here 171 <imagedata fileref="figures/yocto-environment-ref.png" align="center" width="8in" depth="4.25in" />
172 or I will create a more simplified version that can be used as the
173 top-level diagram from which to base subsequent sections and expanded
174 illustrations.
175 </para>
176
177 <para>
178 [NEED REPEATED FIGURE HERE OR A NEW FIGURE]
179 </para> 172 </para>
180 173
181 <para> 174 <para>
@@ -222,7 +215,9 @@
222 environment: 215 environment:
223 </para> 216 </para>
224 217
225 <imagedata fileref="figures/user-configuration.png" align="center" width="6in" depth="3.5in" /> 218 <para>
219 <imagedata fileref="figures/user-configuration.png" align="center" width="6in" depth="3.5in" />
220 </para>
226 221
227 <para> 222 <para>
228 BitBake needs some basic configuration files in order to complete 223 BitBake needs some basic configuration files in order to complete
@@ -232,15 +227,21 @@
232 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>. 227 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
233 For simplicity, this section refers to the Source Directory as 228 For simplicity, this section refers to the Source Directory as
234 the "Poky Directory." 229 the "Poky Directory."
235 <note> 230 </para>
236 Poky is primarily an aggregation of existing repositories and 231
237 is not actual canonical upstream source for anything. 232 <para>
238 </note>
239 When you clone the <filename>poky</filename> Git repository or you 233 When you clone the <filename>poky</filename> Git repository or you
240 download and unpack a Yocto Project release, you can set up the 234 download and unpack a Yocto Project release, you can set up the
241 Source Directory to be named anything you want. 235 Source Directory to be named anything you want.
242 For this discussion, the cloned repository uses the default 236 For this discussion, the cloned repository uses the default
243 name <filename>poky</filename>. 237 name <filename>poky</filename>.
238 Within the figure, layers appear inside the Source Directory using
239 a bold typeface.
240 <note>
241 The Poky repository is primarily an aggregation of existing
242 repositories.
243 It is not a canonical upstream source.
244 </note>
244 </para> 245 </para>
245 246
246 <para> 247 <para>
@@ -250,35 +251,50 @@
250 These example files are used as a basis for creating actual 251 These example files are used as a basis for creating actual
251 configuration files when you source the build environment 252 configuration files when you source the build environment
252 script <filename>oe-init-build-env</filename>. 253 script <filename>oe-init-build-env</filename>.
253 <note>
254 The <filename>oe-init-build-env</filename> script also exists
255 in the <filename>meta</filename> directory of the OE-Core
256 root directory.
257 Both scripts look for sample configuration files through
258 a <filename>$TEMPLATECONF</filename> variable.
259 When using the Yocto Project Development Environment,
260 that location resolves to the samples found in the
261 <filename>poky/meta-yocto/conf</filename> directory.
262 </note>
263 </para> 254 </para>
264 255
265 <para> 256 <para>
266 When you source the build environment script, it creates a 257 Sourcing the build environment script creates a
267 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink> 258 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
268 if one does not already exist. 259 if one does not already exist.
269 BitBake uses the Build Directory for all its work during builds. 260 BitBake uses the Build Directory for all its work during builds.
270 The Build Directory has a <filename>conf</filename> directory that 261 The Build Directory has a <filename>conf</filename> directory that
271 contains default versions of your <filename>local.conf</filename> 262 contains default versions of your <filename>local.conf</filename>
272 and <filename>bblayers.conf</filename> configuration files. 263 and <filename>bblayers.conf</filename> configuration files.
273 These default configuration files are created by 264 These default configuration files are created only if versions
274 <filename>oe-init-build-env</filename> only if versions of these 265 do not already exist in the Build Directory at the time you
275 files do not already exist in the Build Directory you specify 266 source the <filename>oe-init-build-env</filename> script.
276 when you run the script. 267 </para>
268
269 <para>
270 Because the Poky repository is fundamentally an aggregation of
271 existing repositories, some users might be familiar with running
272 the <filename>oe-init-build-env</filename> script in the context
273 of the OpenEmbedded development environment, which is outside
274 of the Yocto Project development environment.
275 This discussion assumes the script is executed from within a
276 cloned or unpacked version of Poky (i.e. within the Yocto Project
277 environment).
278 </para>
279
280 <para>
281 Depending on where the script is sourced, different sub-scripts
282 are called to set up the Build Directory (Yocto or OpenEmbedded).
283 Specifically, the script
284 <filename>scripts/oe-setup-builddir</filename> inside the
285 poky directory sets up the Build Directory and seeds the directory
286 (if necessary) with configuration files appropriate for the
287 Yocto Project development environment.
288 <note>
289 The <filename>scripts/oe-setup-builddir</filename> script
290 uses the <filename>$TEMPLATECONF</filename> variable to
291 determine which sample configuration files to locate.
292 </note>
277 </para> 293 </para>
278 294
279 <para> 295 <para>
280 The <filename>local.conf</filename> file provides many 296 The <filename>local.conf</filename> file provides many
281 basic variables that define your build. 297 basic variables that define a build environment.
282 Here is a list of a few. 298 Here is a list of a few.
283 To see the default configurations in a <filename>local.conf</filename> 299 To see the default configurations in a <filename>local.conf</filename>
284 file created by the build environment script, see the 300 file created by the build environment script, see the
@@ -308,14 +324,20 @@
308 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> 324 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
309 variable.</para></listitem> 325 variable.</para></listitem>
310 </itemizedlist> 326 </itemizedlist>
327 <note>
328 Configurations set in the <filename>conf/local.conf</filename>
329 file can also be set in the
330 <filename>conf/site.conf</filename> and
331 <filename>conf/auto.conf</filename> configuration files.
332 </note>
311 </para> 333 </para>
312 334
313 <para> 335 <para>
314 The <filename>bblayers.conf</filename> file tells BitBake what 336 The <filename>bblayers.conf</filename> file tells BitBake what
315 layers you want it to consider during the build. 337 layers you want considered during the build.
316 The list of layers includes default layers needed by the build 338 By default, the layers listed in this file include layers
317 system. 339 minimally needed by the build system.
318 You have to manually add any custom layers that you have created. 340 However, you must manually add any custom layers you have created.
319 You can find more information on working with the 341 You can find more information on working with the
320 <filename>bblayers.conf</filename> file in the 342 <filename>bblayers.conf</filename> file in the
321 "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>" 343 "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>"
@@ -330,24 +352,44 @@
330 yourself: 352 yourself:
331 <itemizedlist> 353 <itemizedlist>
332 <listitem><para><emphasis><filename>site.conf</filename>:</emphasis> 354 <listitem><para><emphasis><filename>site.conf</filename>:</emphasis>
333 I don't really know what this does. 355 You can use the <filename>conf/site.conf</filename>
334 All I know is that if you want it, you need to hand-create 356 configuration file to configure multiple build directories.
335 it. 357 For example, suppose you had several build environments and
336 I need some information on it.</para></listitem> 358 they shared some common features.
359 You can set these default build properties here.
360 A good example is perhaps the level of parallelism you want
361 to use through the
362 <link linkend='var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></link>
363 and
364 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
365 variables.</para>
366 <para>One useful scenario for using the
367 <filename>conf/site.conf</filename> file is to extend your
368 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>
369 variable to include the path to a
370 <filename>conf/site.conf</filename>.
371 Then, when BitBake looks for Metadata using
372 <filename>BBPATH</filename>, it finds the
373 <filename>conf/site.conf</filename> file and applies your
374 common configurations found in the file.
375 To override configurations in a particular build directory,
376 alter the similar configurations within that build
377 directory's <filename>conf/local.conf</filename> file.
378 </para></listitem>
337 <listitem><para><emphasis><filename>auto.conf</filename>:</emphasis> 379 <listitem><para><emphasis><filename>auto.conf</filename>:</emphasis>
338 This file is not hand-created. 380 This file is not hand-created.
339 Rather, the file is usually created and written to by 381 Rather, the file is usually created and written to by
340 an autobuilder. 382 an autobuilder.
341 The settings put into the file are typically the same as 383 The settings put into the file are typically the same as
342 you would find in the <filename>local.conf</filename> 384 you would find in the <filename>conf/local.conf</filename>
343 or <filename>site.conf</filename> files. 385 or the <filename>conf/site.conf</filename> files.
344 </para></listitem> 386 </para></listitem>
345 </itemizedlist> 387 </itemizedlist>
346 </para> 388 </para>
347 389
348 <para> 390 <para>
349 You can edit all configuration files to further define 391 You can edit all configuration files to further define
350 the build. 392 any particular build environment.
351 This process is represented by the "User Configuration Edits" 393 This process is represented by the "User Configuration Edits"
352 box in the figure. 394 box in the figure.
353 </para> 395 </para>
@@ -355,8 +397,8 @@
355 <para> 397 <para>
356 When you launch your build with the 398 When you launch your build with the
357 <filename>bitbake &lt;target&gt;</filename> command, BitBake 399 <filename>bitbake &lt;target&gt;</filename> command, BitBake
358 draws on the user configurations you have provided in your 400 sorts out the configurations to ultimately define your build
359 Build Directory. 401 environment.
360 </para> 402 </para>
361 </section> 403 </section>
362 404
@@ -372,159 +414,174 @@
372 policy. 414 policy.
373 </para> 415 </para>
374 416
375 <para> 417 <para>
376 In general, three types of layer input exist: 418 In general, three types of layer input exist:
377 <itemizedlist> 419 <itemizedlist>
378 <listitem><para><emphasis>Metadata:</emphasis> 420 <listitem><para><emphasis>Policy Configuration:</emphasis>
379 Software layers contain user-supplied recipe files, 421 Distribution Layers provide top-level or general
380 patches, and append files. 422 policies for the image or SDK being built.
381 </para></listitem> 423 For example, this layer would dictate whether BitBake
382 <listitem><para><emphasis>Machine Configuration:</emphasis> 424 produces RPM or IPK packages.</para></listitem>
383 Board Support Package (BSP) layers provide machine 425 <listitem><para><emphasis>Machine Configuration:</emphasis>
384 configurations. 426 Board Support Package (BSP) layers provide machine
385 This type of information is specific to a particular 427 configurations.
386 target architecture.</para></listitem> 428 This type of information is specific to a particular
387 <listitem><para><emphasis>Policy Configuration:</emphasis> 429 target architecture.</para></listitem>
388 Distribution Layers provide top-level or general 430 <listitem><para><emphasis>Metadata:</emphasis>
389 policies for the image or SDK being built. 431 Software layers contain user-supplied recipe files,
390 For example, this layer would dictate whether BitBake 432 patches, and append files.
391 produces RPM or IPK packages.</para></listitem> 433 </para></listitem>
392 </itemizedlist> 434 </itemizedlist>
393 </para> 435 </para>
394 436
395 <para> 437 <para>
396 The following figure shows an expanded representation of the 438 The following figure shows an expanded representation of the
397 Metadata, Machine Configuration, and Policy Configuration input 439 Metadata, Machine Configuration, and Policy Configuration input
398 boxes of the Yocto Project development environment: 440 (layers) boxes of the Yocto Project development environment:
399 </para> 441 </para>
400 442
401 <imagedata fileref="figures/layer-input.png" align="center" width="8in" depth="7.5in" /> 443 <para>
402 444 <imagedata fileref="figures/layer-input.png" align="center" width="8in" depth="7.5in" />
403 <para> 445 </para>
404 The Yocto Project has many layers that can be used. 446
405 You can see a web-interface listing of them on the 447 <para>
406 <ulink url="http://git.yoctoproject.org/">Source Repositories</ulink> 448 In general, all layers have a similar structure.
407 page. 449 They all contain a licensing file
408 The layers are shown at the bottom categorized under 450 (e.g. <filename>COPYING</filename>) if the layer is to be
409 "Yocto Metadata Layers." 451 distributed, a <filename>README</filename> file as good practice
410 These layers are fundamentally a subset of the 452 and especially if the layer is to be distributed, a
411 <ulink url="http://layers.openembedded.org/layerindex/layers/">OpenEmbedded Metadata Index</ulink>, 453 configuration directory, and recipe directories.
412 which shows all layers supported by OpenEmbedded. 454 </para>
413 </para> 455
414 456 <para>
415 <note> 457 The Yocto Project has many layers that can be used.
416 Layers exist in the Yocto Project Source Repositories that cannot 458 You can see a web-interface listing of them on the
417 be found in the OpenEmbedded Metadata Index. 459 <ulink url="http://git.yoctoproject.org/">Source Repositories</ulink>
418 These layers are either deprecated or experimental in nature. 460 page.
419 </note> 461 The layers are shown at the bottom categorized under
420 462 "Yocto Metadata Layers."
421 <para> 463 These layers are fundamentally a subset of the
422 BitBake uses the <filename>bblayers.conf</filename> file that is 464 <ulink url="http://layers.openembedded.org/layerindex/layers/">OpenEmbedded Metadata Index</ulink>,
423 part of the user configuration to find what layers it should be 465 which lists all layers provided by the OpenEmbedded community.
424 using as part of the build. 466 <note>
425 </para> 467 Layers exist in the Yocto Project Source Repositories that
426 468 cannot be found in the OpenEmbedded Metadata Index.
427 <para> 469 These layers are either deprecated or experimental in nature.
428 For more information on layers, see the 470 </note>
429 "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>" 471 </para>
430 section in the Yocto Project Development Manual. 472
431 </para> 473 <para>
432 474 BitBake uses the <filename>conf/bblayers.conf</filename> file,
433 <section id="software-layer"> 475 which is part of the user configuration, to find what layers it
434 <title>Software Layer</title> 476 should be using as part of the build.
435 477 </para>
436 <para> 478
437 The software layer provides the Metadata for your source 479 <para>
438 code used during the build. 480 For more information on layers, see the
439 This general layer minimally contains license 481 "<ulink url='&YOCTO_DOCS_DEV_URL;#understanding-and-creating-layers'>Understanding and Creating Layers</ulink>"
440 information; a <filename>README</filename> file; a layer 482 section in the Yocto Project Development Manual.
441 configuration file named <filename>layer.conf</filename>; 483 </para>
442 and recipe files (<filename>.bb</filename>), append files 484
443 (<filename>.bbappend</filename>), and patches 485 <section id="distro-layer">
444 (<filename>.patch</filename>). 486 <title>Distro Layer</title>
445 </para> 487
446 488 <para>
447 <para> 489 The distribution layer provides policy configurations for your
448 You provide any new recipes that your project needs in the 490 distribution.
449 form of recipe files. 491 Best practices dictate that you isolate these types of
450 If you are modifying any existing recipes from other layers, 492 configurations into their own layer.
451 rather than duplicate them here with the modifcations, you can 493 Settings you provide in
452 provide a recipe append file that just has the modifications. 494 <filename>conf/&lt;distro&gt;.conf</filename> override similar
453 Patch files are stored in the <filename>files</filename> 495 settings that BitBake finds in your
454 directory. 496 <filename>conf/local.conf</filename> file in the Build
455 </para> 497 Directory.
456 </section> 498 </para>
457 499
458 <section id="distro-layer"> 500 <para>
459 <title>Distro Layer</title> 501 The following list provides some explanation and references
460 502 for what you typically find in the distribution layer:
461 <para> 503 <itemizedlist>
462 The distribution layer provides policy configurations for your 504 <listitem><para><emphasis>classes:</emphasis>
463 distribution. 505 Class files (<filename>.bbclass</filename>) holds
464 Best practices dictate that you isolate these types of 506 common functionality that can be shared among
465 configurations into their own layer. 507 recipes in the distribution.
466 Metadata you provide in this layer overrides similar settings 508 When your recipes inherit a class, they take on the
467 that BitBake finds in your <filename>local.conf</filename> 509 settings and functions for that class.
468 file in the Build Directory. 510 You can read more about class files in the
469 </para> 511 "<link linkend='ref-classes'>Classes</link>" section.
470 512 </para></listitem>
471 <para> 513 <listitem><para><emphasis>conf:</emphasis>
472 The following list provides some explanation and references 514 This area holds configuration files for the
473 for what you typically find in the distribution layer: 515 layer (<filename>conf/layer.conf</filename>),
474 <itemizedlist> 516 the distribution
475 <listitem><para><emphasis>classes:</emphasis> 517 (<filename>conf/distro/&lt;distro&lt;.conf</filename>),
476 Class files (<filename>.bbclass</filename>) hold 518 and any distribution-wide include files.
477 common functionality that can be shared among 519 </para></listitem>
478 recipes in the distribution. 520 <listitem><para><emphasis>recipes-*:</emphasis>
479 When your recipes inherit a class, they take on the 521 Recipes and append files that affect common
480 settings and functions for that class. 522 functionality across the distribution.
481 You can read more about class files in the 523 This area also can hold common distribution headers,
482 "<link linkend='ref-classes'>Classes</link>" section. 524 initialization files, and
483 </para></listitem> 525 <filename>&lt;recipe&gt;/files/defconfig</filename>
484 <listitem><para><emphasis>conf:</emphasis> 526 files for the distribution.</para></listitem>
485 This area holds configuration information for the 527 </itemizedlist>
486 distribution. 528 </para>
487 Any distribution-wide include files and, of course, the 529 </section>
488 <filename>layer.conf</filename> configuration 530
489 file that every layer must have.</para></listitem> 531 <section id="bsp-layer">
490 <listitem><para><emphasis>recipes-core:</emphasis> 532 <title>BSP Layer</title>
491 Recipes and append files that affect common 533
492 functionality across the distribution. 534 <para>
493 This area also can hold common distribution headers, 535 The BSP Layer provides machine configurations.
494 initialization files, and 536 Everything in this layer is specific to the machine for which
495 <filename>defconfig</filename> files for the 537 you are building the image or the SDK.
496 distribution.</para></listitem> 538 BSP Layers have a structure that is followed if they are
497 </itemizedlist> 539 considered to be compatible with the Yocto Project.
498 </para> 540 For information on the structure, see the
499 </section> 541 <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>.
500 542 </para>
501 <section id="bsp-layer"> 543
502 <title>BSP Layer</title> 544 <para>
503 545 The BSP Layer's configuration directory contains
504 <para> 546 configuration files for the machine
505 The BSP Layer provides machine configurations. 547 (<filename>conf/machine/&lt;machine&gt;.conf</filename>) and,
506 Everything in this layer is specific to the machine for which 548 of course, the layer (<filename>conf/layer.conf</filename>).
507 you are building the image or the SDK. 549 </para>
508 BSP Layer's have a structure that is followed if they are 550
509 considered to be compatible with the Yocto Project. 551 <para>
510 For information on the structure, see the 552 The remainder of the layer is dedicated to specific recipes
511 <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>. 553 by function: <filename>recipes-bsp</filename>,
512 </para> 554 <filename>recipes-core</filename>,
513 555 <filename>recipes-graphics</filename>, and
514 <para> 556 <filename>recipes-kernel</filename>.
515 The BSP Layer contains a configuration directory that has 557 Metadata can exist for multiple formfactors, graphics
516 configuration files for the machine 558 support systems, and so forth.
517 (<filename>&lt;machine&gt;.conf</filename>) and, of course, 559 <note>
518 the layer (<filename>layer.conf</filename>). 560 While the figure shows several <filename>recipe-*</filename>
519 </para> 561 directories, not all these directories appear in all
520 562 BSP layers.
521 <para> 563 </note>
522 The remainder of the layer is dedicated to specific recipes 564 </para>
523 by function: bsp, core, graphics, and kernel. 565 </section>
524 Metadata can exist for multiple formfactors, graphics 566
525 support systems, and so forth. 567 <section id="software-layer">
526 </para> 568 <title>Software Layer</title>
527 </section> 569
570 <para>
571 The software layer provides the Metadata for your source
572 code used during the build.
573 This layer does not include Metadata that is specific to the
574 distribution or the machine, which are found in their
575 respective layers.
576 </para>
577
578 <para>
579 This layer contains any new recipes that your project needs
580 in the form of recipe files.
581 Patch files are stored in the <filename>files</filename>
582 directory.
583 </para>
584 </section>
528 </section> 585 </section>
529</section> 586</section>
530 587