diff options
Diffstat (limited to 'documentation')
| -rw-r--r-- | documentation/ref-manual/introduction.xml | 823 |
1 files changed, 416 insertions, 407 deletions
diff --git a/documentation/ref-manual/introduction.xml b/documentation/ref-manual/introduction.xml index 2e1b8e1740..1fc01fe38a 100644 --- a/documentation/ref-manual/introduction.xml +++ b/documentation/ref-manual/introduction.xml | |||
| @@ -5,10 +5,11 @@ | |||
| 5 | <chapter id='ref-manual-intro'> | 5 | <chapter id='ref-manual-intro'> |
| 6 | <title>Introduction</title> | 6 | <title>Introduction</title> |
| 7 | 7 | ||
| 8 | <section id='intro-welcome'> | 8 | <section id='ref-welcome'> |
| 9 | <title>Introduction</title> | 9 | <title>Welcome</title> |
| 10 | 10 | ||
| 11 | <para> | 11 | <para> |
| 12 | Welcome to the Yocto Project Reference Manual. | ||
| 12 | This manual provides reference information for the current release | 13 | This manual provides reference information for the current release |
| 13 | of the Yocto Project. | 14 | of the Yocto Project. |
| 14 | The Yocto Project is an open-source collaboration project focused | 15 | The Yocto Project is an open-source collaboration project focused |
| @@ -16,419 +17,37 @@ | |||
| 16 | Amongst other things, the Yocto Project uses the OpenEmbedded build | 17 | Amongst other things, the Yocto Project uses the OpenEmbedded build |
| 17 | system, which is based on the Poky project, to construct complete | 18 | system, which is based on the Poky project, to construct complete |
| 18 | Linux images. | 19 | Linux images. |
| 19 | You can find complete introductory and getting started information | ||
| 20 | on the Yocto Project by reading the | ||
| 21 | <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>. | ||
| 22 | </para> | 20 | </para> |
| 23 | 21 | ||
| 24 | <para> | 22 | <para> |
| 25 | For task-based information using the Yocto Project, see the | 23 | This reference manual is best used after you have an understanding |
| 26 | <ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Manual</ulink> | 24 | of the basics of the Yocto Project. |
| 27 | and the <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;'>Yocto Project Linux Kernel Development Manual</ulink>. | 25 | The manual is not meant to be read as a starting point to the |
| 28 | For Board Support Package (BSP) structure information, see the | 26 | Yocto Project. |
| 29 | <ulink url='&YOCTO_DOCS_BSP_URL;'>Yocto Project Board Support Package (BSP) Developer's Guide</ulink>. | 27 | Use this manual to find concepts, variable definitions, class |
| 30 | For information on how to use a Software Development Kit, (SDK), see the | 28 | descriptions, and so forth. |
| 31 | <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>. | 29 | The manual augments working with the Yocto Project during application |
| 32 | You can find information on tracing and profiling in the | 30 | and kernel development. |
| 33 | <ulink url='&YOCTO_DOCS_PROF_URL;'>Yocto Project Profiling and Tracing Manual</ulink>. | ||
| 34 | For information on BitBake, which is the task execution tool the | ||
| 35 | OpenEmbedded build system is based on, see the | ||
| 36 | <ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual'>BitBake User Manual</ulink>. | ||
| 37 | Finally, you can also find lots of Yocto Project information on the | ||
| 38 | <ulink url="&YOCTO_HOME_URL;">Yocto Project website</ulink>. | ||
| 39 | </para> | 31 | </para> |
| 40 | </section> | ||
| 41 | |||
| 42 | <section id='yocto-project-terms'> | ||
| 43 | <title>Yocto Project Terms</title> | ||
| 44 | 32 | ||
| 45 | <para> | 33 | <para> |
| 46 | Following is a list of terms and definitions users new to the Yocto | 34 | The Yocto Project Reference Manual does not provide "how-to", |
| 47 | Project development environment might find helpful. | 35 | task-oriented information. |
| 48 | While some of these terms are universal, the list includes them | 36 | You can find complete introductory and getting started information |
| 49 | just in case: | 37 | on the Yocto Project by reading the |
| 50 | <itemizedlist> | 38 | <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>. |
| 51 | <listitem><para> | 39 | You can find "how-to" information in the |
| 52 | <emphasis>Append Files:</emphasis> | 40 | <ulink url='&YOCTO_DOCS_DEV_URL;'>Yocto Project Development Manual</ulink>. |
| 53 | Files that append build information to a recipe file. | 41 | <note><title>Tip</title> |
| 54 | Append files are known as BitBake append files and | 42 | For more information about the Yocto Project Documentation set, |
| 55 | <filename>.bbappend</filename> files. | 43 | see the |
| 56 | The OpenEmbedded build system expects every append file to have | 44 | "<link linkend='resources-links-and-related-documentation'>Links and Related Documentation</link>" |
| 57 | a corresponding recipe (<filename>.bb</filename>) file. | 45 | section. |
| 58 | Furthermore, the append file and corresponding recipe file | 46 | </note> |
| 59 | must use the same root filename. | ||
| 60 | The filenames can differ only in the file type suffix used | ||
| 61 | (e.g. | ||
| 62 | <filename>formfactor_0.0.bb</filename> and | ||
| 63 | <filename>formfactor_0.0.bbappend</filename>).</para> | ||
| 64 | |||
| 65 | <para>Information in append files extends or overrides the | ||
| 66 | information in the similarly-named recipe file. | ||
| 67 | For an example of an append file in use, see the | ||
| 68 | "<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files</ulink>" | ||
| 69 | section in the Yocto Project Development Manual. | ||
| 70 | <note> | ||
| 71 | Append files can also use wildcard patterns in their | ||
| 72 | version numbers so they can be applied to more than one | ||
| 73 | version of the underlying recipe file. | ||
| 74 | </note> | ||
| 75 | </para></listitem> | ||
| 76 | <listitem><para id='bitbake-term'> | ||
| 77 | <emphasis>BitBake:</emphasis> | ||
| 78 | The task executor and scheduler used by the OpenEmbedded build | ||
| 79 | system to build images. | ||
| 80 | For more information on BitBake, see the | ||
| 81 | <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>. | ||
| 82 | </para></listitem> | ||
| 83 | <listitem> | ||
| 84 | <para id='build-directory'> | ||
| 85 | <emphasis>Build Directory:</emphasis> | ||
| 86 | This term refers to the area used by the OpenEmbedded build | ||
| 87 | system for builds. | ||
| 88 | The area is created when you <filename>source</filename> the | ||
| 89 | setup environment script that is found in the Source Directory | ||
| 90 | (i.e. <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link> | ||
| 91 | or | ||
| 92 | <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>). | ||
| 93 | The | ||
| 94 | <link linkend='var-TOPDIR'><filename>TOPDIR</filename></link> | ||
| 95 | variable points to the Build Directory.</para> | ||
| 96 | |||
| 97 | <para>You have a lot of flexibility when creating the Build | ||
| 98 | Directory. | ||
| 99 | Following are some examples that show how to create the | ||
| 100 | directory. | ||
| 101 | The examples assume your | ||
| 102 | <link linkend='source-directory'>Source Directory</link> is | ||
| 103 | named <filename>poky</filename>: | ||
| 104 | <itemizedlist> | ||
| 105 | <listitem><para>Create the Build Directory inside your | ||
| 106 | Source Directory and let the name of the Build | ||
| 107 | Directory default to <filename>build</filename>: | ||
| 108 | <literallayout class='monospaced'> | ||
| 109 | $ cd $HOME/poky | ||
| 110 | $ source &OE_INIT_FILE; | ||
| 111 | </literallayout> | ||
| 112 | </para></listitem> | ||
| 113 | <listitem><para>Create the Build Directory inside your | ||
| 114 | home directory and specifically name it | ||
| 115 | <filename>test-builds</filename>: | ||
| 116 | <literallayout class='monospaced'> | ||
| 117 | $ cd $HOME | ||
| 118 | $ source poky/&OE_INIT_FILE; test-builds | ||
| 119 | </literallayout> | ||
| 120 | </para></listitem> | ||
| 121 | <listitem><para> | ||
| 122 | Provide a directory path and specifically name the | ||
| 123 | Build Directory. | ||
| 124 | Any intermediate folders in the pathname must exist. | ||
| 125 | This next example creates a Build Directory named | ||
| 126 | <filename>YP-&POKYVERSION;</filename> | ||
| 127 | in your home directory within the existing | ||
| 128 | directory <filename>mybuilds</filename>: | ||
| 129 | <literallayout class='monospaced'> | ||
| 130 | $cd $HOME | ||
| 131 | $ source $HOME/poky/&OE_INIT_FILE; $HOME/mybuilds/YP-&POKYVERSION; | ||
| 132 | </literallayout> | ||
| 133 | </para></listitem> | ||
| 134 | </itemizedlist> | ||
| 135 | <note> | ||
| 136 | By default, the Build Directory contains | ||
| 137 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>, | ||
| 138 | which is a temporary directory the build system uses for | ||
| 139 | its work. | ||
| 140 | <filename>TMPDIR</filename> cannot be under NFS. | ||
| 141 | Thus, by default, the Build Directory cannot be under NFS. | ||
| 142 | However, if you need the Build Directory to be under NFS, | ||
| 143 | you can set this up by setting <filename>TMPDIR</filename> | ||
| 144 | in your <filename>local.conf</filename> file | ||
| 145 | to use a local drive. | ||
| 146 | Doing so effectively separates <filename>TMPDIR</filename> | ||
| 147 | from <filename>TOPDIR</filename>, which is the Build | ||
| 148 | Directory. | ||
| 149 | </note> | ||
| 150 | </para></listitem> | ||
| 151 | <listitem><para> | ||
| 152 | <emphasis>Classes:</emphasis> | ||
| 153 | Files that provide for logic encapsulation and inheritance so | ||
| 154 | that commonly used patterns can be defined once and then | ||
| 155 | easily used in multiple recipes. | ||
| 156 | For reference information on the Yocto Project classes, see the | ||
| 157 | "<link linkend='ref-classes'>Classes</link>" chapter. | ||
| 158 | Class files end with the <filename>.bbclass</filename> | ||
| 159 | filename extension. | ||
| 160 | </para></listitem> | ||
| 161 | <listitem><para> | ||
| 162 | <emphasis>Configuration File:</emphasis> | ||
| 163 | Configuration information in various <filename>.conf</filename> | ||
| 164 | files provides global definitions of variables. | ||
| 165 | The <filename>conf/local.conf</filename> configuration file in | ||
| 166 | the | ||
| 167 | <link linkend='build-directory'>Build Directory</link> | ||
| 168 | contains user-defined variables that affect every build. | ||
| 169 | The <filename>meta-poky/conf/distro/poky.conf</filename> | ||
| 170 | configuration file defines Yocto "distro" configuration | ||
| 171 | variables used only when building with this policy. | ||
| 172 | Machine configuration files, which | ||
| 173 | are located throughout the | ||
| 174 | <link linkend='source-directory'>Source Directory</link>, define | ||
| 175 | variables for specific hardware and are only used when building | ||
| 176 | for that target (e.g. the | ||
| 177 | <filename>machine/beaglebone.conf</filename> configuration | ||
| 178 | file defines variables for the Texas Instruments ARM Cortex-A8 | ||
| 179 | development board). | ||
| 180 | Configuration files end with a <filename>.conf</filename> | ||
| 181 | filename extension. | ||
| 182 | </para></listitem> | ||
| 183 | <listitem><para id='cross-development-toolchain'> | ||
| 184 | <emphasis>Cross-Development Toolchain:</emphasis> | ||
| 185 | In general, a cross-development toolchain is a collection of | ||
| 186 | software development tools and utilities that run on one | ||
| 187 | architecture and allow you to develop software for a | ||
| 188 | different, or targeted, architecture. | ||
| 189 | These toolchains contain cross-compilers, linkers, and | ||
| 190 | debuggers that are specific to the target architecture.</para> | ||
| 191 | |||
| 192 | <para>The Yocto Project supports two different cross-development | ||
| 193 | toolchains: | ||
| 194 | <itemizedlist> | ||
| 195 | <listitem><para> | ||
| 196 | A toolchain only used by and within | ||
| 197 | BitBake when building an image for a target | ||
| 198 | architecture. | ||
| 199 | </para></listitem> | ||
| 200 | <listitem><para>A relocatable toolchain used outside of | ||
| 201 | BitBake by developers when developing applications | ||
| 202 | that will run on a targeted device. | ||
| 203 | </para></listitem> | ||
| 204 | </itemizedlist></para> | ||
| 205 | |||
| 206 | <para>Creation of these toolchains is simple and automated. | ||
| 207 | For information on toolchain concepts as they apply to the | ||
| 208 | Yocto Project, see the | ||
| 209 | "<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>" | ||
| 210 | section. | ||
| 211 | You can also find more information on using the | ||
| 212 | relocatable toolchain in the | ||
| 213 | <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>. | ||
| 214 | </para></listitem> | ||
| 215 | <listitem><para> | ||
| 216 | <emphasis>Image:</emphasis> | ||
| 217 | An image is an artifact of the BitBake build process given | ||
| 218 | a collection of recipes and related Metadata. | ||
| 219 | Images are the binary output that run on specific hardware or | ||
| 220 | QEMU and are used for specific use-cases. | ||
| 221 | For a list of the supported image types that the Yocto Project | ||
| 222 | provides, see the | ||
| 223 | "<link linkend='ref-images'>Images</link>" | ||
| 224 | chapter. | ||
| 225 | </para></listitem> | ||
| 226 | <listitem><para> | ||
| 227 | <emphasis>Layer:</emphasis> | ||
| 228 | A collection of recipes representing the core, | ||
| 229 | a BSP, or an application stack. | ||
| 230 | For a discussion specifically on BSP Layers, see the | ||
| 231 | "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>" | ||
| 232 | section in the Yocto Project Board Support Packages (BSP) | ||
| 233 | Developer's Guide. | ||
| 234 | </para></listitem> | ||
| 235 | <listitem><para id='metadata'> | ||
| 236 | <emphasis>Metadata:</emphasis> | ||
| 237 | The files that BitBake parses when building an image. | ||
| 238 | In general, Metadata includes recipes, classes, and | ||
| 239 | configuration files. | ||
| 240 | In the context of the kernel ("kernel Metadata"), | ||
| 241 | it refers to Metadata in the <filename>meta</filename> | ||
| 242 | branches of the kernel source Git repositories. | ||
| 243 | </para></listitem> | ||
| 244 | <listitem><para id='oe-core'> | ||
| 245 | <emphasis>OE-Core:</emphasis> | ||
| 246 | A core set of Metadata originating with OpenEmbedded (OE) | ||
| 247 | that is shared between OE and the Yocto Project. | ||
| 248 | This Metadata is found in the <filename>meta</filename> | ||
| 249 | directory of the | ||
| 250 | <link linkend='source-directory'>Source Directory</link>. | ||
| 251 | </para></listitem> | ||
| 252 | <listitem><para id='build-system-term'> | ||
| 253 | <emphasis>OpenEmbedded Build System:</emphasis> | ||
| 254 | The build system specific to the Yocto Project. | ||
| 255 | The OpenEmbedded build system is based on another project known | ||
| 256 | as "Poky", which uses | ||
| 257 | <link linkend='bitbake-term'>BitBake</link> as the task | ||
| 258 | executor. | ||
| 259 | Throughout the Yocto Project documentation set, the | ||
| 260 | OpenEmbedded build system is sometimes referred to simply | ||
| 261 | as "the build system". | ||
| 262 | If other build systems, such as a host or target build system | ||
| 263 | are referenced, the documentation clearly states the | ||
| 264 | difference. | ||
| 265 | <note> | ||
| 266 | For some historical information about Poky, see the | ||
| 267 | <link linkend='poky'>Poky</link> term. | ||
| 268 | </note> | ||
| 269 | </para></listitem> | ||
| 270 | <listitem><para> | ||
| 271 | <emphasis>Package:</emphasis> | ||
| 272 | In the context of the Yocto Project, this term refers to a | ||
| 273 | recipe's packaged output produced by BitBake (i.e. a | ||
| 274 | "baked recipe"). | ||
| 275 | A package is generally the compiled binaries produced from the | ||
| 276 | recipe's sources. | ||
| 277 | You "bake" something by running it through BitBake.</para> | ||
| 278 | |||
| 279 | <para>It is worth noting that the term "package" can, | ||
| 280 | in general, have subtle meanings. | ||
| 281 | For example, the packages referred to in the | ||
| 282 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Build Host Packages</ulink>" | ||
| 283 | section in the Yocto Project Quick Start are compiled binaries | ||
| 284 | that, when installed, add functionality to your Linux | ||
| 285 | distribution.</para> | ||
| 286 | |||
| 287 | <para>Another point worth noting is that historically within | ||
| 288 | the Yocto Project, recipes were referred to as packages - thus, | ||
| 289 | the existence of several BitBake variables that are seemingly | ||
| 290 | mis-named, | ||
| 291 | (e.g. <link linkend='var-PR'><filename>PR</filename></link>, | ||
| 292 | <link linkend='var-PV'><filename>PV</filename></link>, and | ||
| 293 | <link linkend='var-PE'><filename>PE</filename></link>). | ||
| 294 | </para></listitem> | ||
| 295 | <listitem><para> | ||
| 296 | <emphasis>Package Groups:</emphasis> | ||
| 297 | Arbitrary groups of software Recipes. | ||
| 298 | You use package groups to hold recipes that, when built, | ||
| 299 | usually accomplish a single task. | ||
| 300 | For example, a package group could contain the recipes for a | ||
| 301 | company’s proprietary or value-add software. | ||
| 302 | Or, the package group could contain the recipes that enable | ||
| 303 | graphics. | ||
| 304 | A package group is really just another recipe. | ||
| 305 | Because package group files are recipes, they end with the | ||
| 306 | <filename>.bb</filename> filename extension. | ||
| 307 | </para></listitem> | ||
| 308 | <listitem><para id='poky'> | ||
| 309 | <emphasis>Poky:</emphasis> | ||
| 310 | The term "poky" can mean several things. | ||
| 311 | In its most general sense, it is an open-source | ||
| 312 | project that was initially developed by OpenedHand. | ||
| 313 | With OpenedHand, poky was developed off of the existing | ||
| 314 | OpenEmbedded build system becoming a commercially | ||
| 315 | supportable build system for embedded Linux. | ||
| 316 | After Intel Corporation acquired OpenedHand, the | ||
| 317 | project poky became the basis for the Yocto Project's | ||
| 318 | build system.</para> | ||
| 319 | |||
| 320 | <para>Within the Yocto Project source repositories, | ||
| 321 | <filename>poky</filename> exists as a separate Git | ||
| 322 | repository you can clone to yield a local copy on your | ||
| 323 | host system. | ||
| 324 | Thus, "poky" can refer to the local copy of the Source | ||
| 325 | Directory used for development within the Yocto | ||
| 326 | Project.</para> | ||
| 327 | |||
| 328 | <para>Finally, "poky" can refer to the default | ||
| 329 | <link linkend='var-DISTRO'><filename>DISTRO</filename></link> | ||
| 330 | (i.e. distribution) created when you use the Yocto | ||
| 331 | Project in conjunction with the | ||
| 332 | <filename>poky</filename> repository to build an image. | ||
| 333 | </para></listitem> | ||
| 334 | <listitem><para> | ||
| 335 | <emphasis>Recipe:</emphasis> | ||
| 336 | A set of instructions for building packages. | ||
| 337 | A recipe describes where you get source code, which patches | ||
| 338 | to apply, how to configure the source, how to compile it and so on. | ||
| 339 | Recipes also describe dependencies for libraries or for other | ||
| 340 | recipes. | ||
| 341 | Recipes represent the logical unit of execution, the software | ||
| 342 | to build, the images to build, and use the | ||
| 343 | <filename>.bb</filename> file extension. | ||
| 344 | </para></listitem> | ||
| 345 | <listitem> | ||
| 346 | <para id='source-directory'> | ||
| 347 | <emphasis>Source Directory:</emphasis> | ||
| 348 | This term refers to the directory structure created as a result | ||
| 349 | of creating a local copy of the <filename>poky</filename> Git | ||
| 350 | repository <filename>git://git.yoctoproject.org/poky</filename> | ||
| 351 | or expanding a released <filename>poky</filename> tarball. | ||
| 352 | <note> | ||
| 353 | Creating a local copy of the <filename>poky</filename> | ||
| 354 | Git repository is the recommended method for setting up | ||
| 355 | your Source Directory. | ||
| 356 | </note> | ||
| 357 | Sometimes you might hear the term "poky directory" used to refer | ||
| 358 | to this directory structure. | ||
| 359 | <note> | ||
| 360 | The OpenEmbedded build system does not support file or | ||
| 361 | directory names that contain spaces. | ||
| 362 | Be sure that the Source Directory you use does not contain | ||
| 363 | these types of names. | ||
| 364 | </note></para> | ||
| 365 | |||
| 366 | <para>The Source Directory contains BitBake, Documentation, | ||
| 367 | Metadata and other files that all support the Yocto Project. | ||
| 368 | Consequently, you must have the Source Directory in place on | ||
| 369 | your development system in order to do any development using | ||
| 370 | the Yocto Project.</para> | ||
| 371 | |||
| 372 | <para>When you create a local copy of the Git repository, you | ||
| 373 | can name the repository anything you like. | ||
| 374 | Throughout much of the documentation, "poky" | ||
| 375 | is used as the name of the top-level folder of the local copy of | ||
| 376 | the poky Git repository. | ||
| 377 | So, for example, cloning the <filename>poky</filename> Git | ||
| 378 | repository results in a local Git repository whose top-level | ||
| 379 | folder is also named "poky".</para> | ||
| 380 | |||
| 381 | <para>While it is not recommended that you use tarball expansion | ||
| 382 | to set up the Source Directory, if you do, the top-level | ||
| 383 | directory name of the Source Directory is derived from the | ||
| 384 | Yocto Project release tarball. | ||
| 385 | For example, downloading and unpacking | ||
| 386 | <filename>&YOCTO_POKY_TARBALL;</filename> results in a | ||
| 387 | Source Directory whose root folder is named | ||
| 388 | <filename>&YOCTO_POKY;</filename>.</para> | ||
| 389 | |||
| 390 | <para>It is important to understand the differences between the | ||
| 391 | Source Directory created by unpacking a released tarball as | ||
| 392 | compared to cloning | ||
| 393 | <filename>git://git.yoctoproject.org/poky</filename>. | ||
| 394 | When you unpack a tarball, you have an exact copy of the files | ||
| 395 | based on the time of release - a fixed release point. | ||
| 396 | Any changes you make to your local files in the Source Directory | ||
| 397 | are on top of the release and will remain local only. | ||
| 398 | On the other hand, when you clone the <filename>poky</filename> | ||
| 399 | Git repository, you have an active development repository with | ||
| 400 | access to the upstream repository's branches and tags. | ||
| 401 | In this case, any local changes you make to the local | ||
| 402 | Source Directory can be later applied to active development | ||
| 403 | branches of the upstream <filename>poky</filename> Git | ||
| 404 | repository.</para> | ||
| 405 | |||
| 406 | <para>For more information on concepts related to Git | ||
| 407 | repositories, branches, and tags, see the | ||
| 408 | "<ulink url='&YOCTO_DOCS_DEV_URL;#repositories-tags-and-branches'>Repositories, Tags, and Branches</ulink>" | ||
| 409 | section in the Yocto Project Development Manual. | ||
| 410 | </para></listitem> | ||
| 411 | <listitem><para><emphasis>Task:</emphasis> | ||
| 412 | A unit of execution for BitBake (e.g. | ||
| 413 | <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>, | ||
| 414 | <link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>, | ||
| 415 | <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>, | ||
| 416 | and so forth). | ||
| 417 | </para></listitem> | ||
| 418 | <listitem><para> | ||
| 419 | <emphasis>Upstream:</emphasis> | ||
| 420 | A reference to source code or repositories | ||
| 421 | that are not local to the development system but located in a | ||
| 422 | master area that is controlled by the maintainer of the source | ||
| 423 | code. | ||
| 424 | For example, in order for a developer to work on a particular | ||
| 425 | piece of code, they need to first get a copy of it from an | ||
| 426 | "upstream" source. | ||
| 427 | </para></listitem> | ||
| 428 | </itemizedlist> | ||
| 429 | </para> | 47 | </para> |
| 430 | </section> | 48 | </section> |
| 431 | 49 | ||
| 50 | <!-- | ||
| 432 | <section id='intro-manualoverview'> | 51 | <section id='intro-manualoverview'> |
| 433 | <title>Documentation Overview</title> | 52 | <title>Documentation Overview</title> |
| 434 | <para> | 53 | <para> |
| @@ -545,7 +164,7 @@ | |||
| 545 | </itemizedlist> | 164 | </itemizedlist> |
| 546 | </para> | 165 | </para> |
| 547 | </section> | 166 | </section> |
| 548 | 167 | --> | |
| 549 | 168 | ||
| 550 | <section id='intro-requirements'> | 169 | <section id='intro-requirements'> |
| 551 | <title>System Requirements</title> | 170 | <title>System Requirements</title> |
| @@ -1050,6 +669,396 @@ | |||
| 1050 | </para> | 669 | </para> |
| 1051 | </section> | 670 | </section> |
| 1052 | 671 | ||
| 672 | <section id='yocto-project-terms'> | ||
| 673 | <title>Yocto Project Terms</title> | ||
| 674 | |||
| 675 | <para> | ||
| 676 | Following is a list of terms and definitions users new to the Yocto | ||
| 677 | Project development environment might find helpful. | ||
| 678 | While some of these terms are universal, the list includes them | ||
| 679 | just in case: | ||
| 680 | <itemizedlist> | ||
| 681 | <listitem><para> | ||
| 682 | <emphasis>Append Files:</emphasis> | ||
| 683 | Files that append build information to a recipe file. | ||
| 684 | Append files are known as BitBake append files and | ||
| 685 | <filename>.bbappend</filename> files. | ||
| 686 | The OpenEmbedded build system expects every append file to have | ||
| 687 | a corresponding recipe (<filename>.bb</filename>) file. | ||
| 688 | Furthermore, the append file and corresponding recipe file | ||
| 689 | must use the same root filename. | ||
| 690 | The filenames can differ only in the file type suffix used | ||
| 691 | (e.g. | ||
| 692 | <filename>formfactor_0.0.bb</filename> and | ||
| 693 | <filename>formfactor_0.0.bbappend</filename>).</para> | ||
| 694 | |||
| 695 | <para>Information in append files extends or overrides the | ||
| 696 | information in the similarly-named recipe file. | ||
| 697 | For an example of an append file in use, see the | ||
| 698 | "<ulink url='&YOCTO_DOCS_DEV_URL;#using-bbappend-files'>Using .bbappend Files</ulink>" | ||
| 699 | section in the Yocto Project Development Manual. | ||
| 700 | <note> | ||
| 701 | Append files can also use wildcard patterns in their | ||
| 702 | version numbers so they can be applied to more than one | ||
| 703 | version of the underlying recipe file. | ||
| 704 | </note> | ||
| 705 | </para></listitem> | ||
| 706 | <listitem><para id='bitbake-term'> | ||
| 707 | <emphasis>BitBake:</emphasis> | ||
| 708 | The task executor and scheduler used by the OpenEmbedded build | ||
| 709 | system to build images. | ||
| 710 | For more information on BitBake, see the | ||
| 711 | <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>. | ||
| 712 | </para></listitem> | ||
| 713 | <listitem> | ||
| 714 | <para id='build-directory'> | ||
| 715 | <emphasis>Build Directory:</emphasis> | ||
| 716 | This term refers to the area used by the OpenEmbedded build | ||
| 717 | system for builds. | ||
| 718 | The area is created when you <filename>source</filename> the | ||
| 719 | setup environment script that is found in the Source Directory | ||
| 720 | (i.e. <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link> | ||
| 721 | or | ||
| 722 | <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>). | ||
| 723 | The | ||
| 724 | <link linkend='var-TOPDIR'><filename>TOPDIR</filename></link> | ||
| 725 | variable points to the Build Directory.</para> | ||
| 726 | |||
| 727 | <para>You have a lot of flexibility when creating the Build | ||
| 728 | Directory. | ||
| 729 | Following are some examples that show how to create the | ||
| 730 | directory. | ||
| 731 | The examples assume your | ||
| 732 | <link linkend='source-directory'>Source Directory</link> is | ||
| 733 | named <filename>poky</filename>: | ||
| 734 | <itemizedlist> | ||
| 735 | <listitem><para>Create the Build Directory inside your | ||
| 736 | Source Directory and let the name of the Build | ||
| 737 | Directory default to <filename>build</filename>: | ||
| 738 | <literallayout class='monospaced'> | ||
| 739 | $ cd $HOME/poky | ||
| 740 | $ source &OE_INIT_FILE; | ||
| 741 | </literallayout> | ||
| 742 | </para></listitem> | ||
| 743 | <listitem><para>Create the Build Directory inside your | ||
| 744 | home directory and specifically name it | ||
| 745 | <filename>test-builds</filename>: | ||
| 746 | <literallayout class='monospaced'> | ||
| 747 | $ cd $HOME | ||
| 748 | $ source poky/&OE_INIT_FILE; test-builds | ||
| 749 | </literallayout> | ||
| 750 | </para></listitem> | ||
| 751 | <listitem><para> | ||
| 752 | Provide a directory path and specifically name the | ||
| 753 | Build Directory. | ||
| 754 | Any intermediate folders in the pathname must exist. | ||
| 755 | This next example creates a Build Directory named | ||
| 756 | <filename>YP-&POKYVERSION;</filename> | ||
| 757 | in your home directory within the existing | ||
| 758 | directory <filename>mybuilds</filename>: | ||
| 759 | <literallayout class='monospaced'> | ||
| 760 | $cd $HOME | ||
| 761 | $ source $HOME/poky/&OE_INIT_FILE; $HOME/mybuilds/YP-&POKYVERSION; | ||
| 762 | </literallayout> | ||
| 763 | </para></listitem> | ||
| 764 | </itemizedlist> | ||
| 765 | <note> | ||
| 766 | By default, the Build Directory contains | ||
| 767 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>, | ||
| 768 | which is a temporary directory the build system uses for | ||
| 769 | its work. | ||
| 770 | <filename>TMPDIR</filename> cannot be under NFS. | ||
| 771 | Thus, by default, the Build Directory cannot be under NFS. | ||
| 772 | However, if you need the Build Directory to be under NFS, | ||
| 773 | you can set this up by setting <filename>TMPDIR</filename> | ||
| 774 | in your <filename>local.conf</filename> file | ||
| 775 | to use a local drive. | ||
| 776 | Doing so effectively separates <filename>TMPDIR</filename> | ||
| 777 | from <filename>TOPDIR</filename>, which is the Build | ||
| 778 | Directory. | ||
| 779 | </note> | ||
| 780 | </para></listitem> | ||
| 781 | <listitem><para> | ||
| 782 | <emphasis>Classes:</emphasis> | ||
| 783 | Files that provide for logic encapsulation and inheritance so | ||
| 784 | that commonly used patterns can be defined once and then | ||
| 785 | easily used in multiple recipes. | ||
| 786 | For reference information on the Yocto Project classes, see the | ||
| 787 | "<link linkend='ref-classes'>Classes</link>" chapter. | ||
| 788 | Class files end with the <filename>.bbclass</filename> | ||
| 789 | filename extension. | ||
| 790 | </para></listitem> | ||
| 791 | <listitem><para> | ||
| 792 | <emphasis>Configuration File:</emphasis> | ||
| 793 | Configuration information in various <filename>.conf</filename> | ||
| 794 | files provides global definitions of variables. | ||
| 795 | The <filename>conf/local.conf</filename> configuration file in | ||
| 796 | the | ||
| 797 | <link linkend='build-directory'>Build Directory</link> | ||
| 798 | contains user-defined variables that affect every build. | ||
| 799 | The <filename>meta-poky/conf/distro/poky.conf</filename> | ||
| 800 | configuration file defines Yocto "distro" configuration | ||
| 801 | variables used only when building with this policy. | ||
| 802 | Machine configuration files, which | ||
| 803 | are located throughout the | ||
| 804 | <link linkend='source-directory'>Source Directory</link>, define | ||
| 805 | variables for specific hardware and are only used when building | ||
| 806 | for that target (e.g. the | ||
| 807 | <filename>machine/beaglebone.conf</filename> configuration | ||
| 808 | file defines variables for the Texas Instruments ARM Cortex-A8 | ||
| 809 | development board). | ||
| 810 | Configuration files end with a <filename>.conf</filename> | ||
| 811 | filename extension. | ||
| 812 | </para></listitem> | ||
| 813 | <listitem><para id='cross-development-toolchain'> | ||
| 814 | <emphasis>Cross-Development Toolchain:</emphasis> | ||
| 815 | In general, a cross-development toolchain is a collection of | ||
| 816 | software development tools and utilities that run on one | ||
| 817 | architecture and allow you to develop software for a | ||
| 818 | different, or targeted, architecture. | ||
| 819 | These toolchains contain cross-compilers, linkers, and | ||
| 820 | debuggers that are specific to the target architecture.</para> | ||
| 821 | |||
| 822 | <para>The Yocto Project supports two different cross-development | ||
| 823 | toolchains: | ||
| 824 | <itemizedlist> | ||
| 825 | <listitem><para> | ||
| 826 | A toolchain only used by and within | ||
| 827 | BitBake when building an image for a target | ||
| 828 | architecture. | ||
| 829 | </para></listitem> | ||
| 830 | <listitem><para>A relocatable toolchain used outside of | ||
| 831 | BitBake by developers when developing applications | ||
| 832 | that will run on a targeted device. | ||
| 833 | </para></listitem> | ||
| 834 | </itemizedlist></para> | ||
| 835 | |||
| 836 | <para>Creation of these toolchains is simple and automated. | ||
| 837 | For information on toolchain concepts as they apply to the | ||
| 838 | Yocto Project, see the | ||
| 839 | "<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>" | ||
| 840 | section. | ||
| 841 | You can also find more information on using the | ||
| 842 | relocatable toolchain in the | ||
| 843 | <ulink url='&YOCTO_DOCS_SDK_URL;'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>. | ||
| 844 | </para></listitem> | ||
| 845 | <listitem><para> | ||
| 846 | <emphasis>Image:</emphasis> | ||
| 847 | An image is an artifact of the BitBake build process given | ||
| 848 | a collection of recipes and related Metadata. | ||
| 849 | Images are the binary output that run on specific hardware or | ||
| 850 | QEMU and are used for specific use-cases. | ||
| 851 | For a list of the supported image types that the Yocto Project | ||
| 852 | provides, see the | ||
| 853 | "<link linkend='ref-images'>Images</link>" | ||
| 854 | chapter. | ||
| 855 | </para></listitem> | ||
| 856 | <listitem><para> | ||
| 857 | <emphasis>Layer:</emphasis> | ||
| 858 | A collection of recipes representing the core, | ||
| 859 | a BSP, or an application stack. | ||
| 860 | For a discussion specifically on BSP Layers, see the | ||
| 861 | "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>" | ||
| 862 | section in the Yocto Project Board Support Packages (BSP) | ||
| 863 | Developer's Guide. | ||
| 864 | </para></listitem> | ||
| 865 | <listitem><para id='metadata'> | ||
| 866 | <emphasis>Metadata:</emphasis> | ||
| 867 | The files that BitBake parses when building an image. | ||
| 868 | In general, Metadata includes recipes, classes, and | ||
| 869 | configuration files. | ||
| 870 | In the context of the kernel ("kernel Metadata"), | ||
| 871 | it refers to Metadata in the <filename>meta</filename> | ||
| 872 | branches of the kernel source Git repositories. | ||
| 873 | </para></listitem> | ||
| 874 | <listitem><para id='oe-core'> | ||
| 875 | <emphasis>OE-Core:</emphasis> | ||
| 876 | A core set of Metadata originating with OpenEmbedded (OE) | ||
| 877 | that is shared between OE and the Yocto Project. | ||
| 878 | This Metadata is found in the <filename>meta</filename> | ||
| 879 | directory of the | ||
| 880 | <link linkend='source-directory'>Source Directory</link>. | ||
| 881 | </para></listitem> | ||
| 882 | <listitem><para id='build-system-term'> | ||
| 883 | <emphasis>OpenEmbedded Build System:</emphasis> | ||
| 884 | The build system specific to the Yocto Project. | ||
| 885 | The OpenEmbedded build system is based on another project known | ||
| 886 | as "Poky", which uses | ||
| 887 | <link linkend='bitbake-term'>BitBake</link> as the task | ||
| 888 | executor. | ||
| 889 | Throughout the Yocto Project documentation set, the | ||
| 890 | OpenEmbedded build system is sometimes referred to simply | ||
| 891 | as "the build system". | ||
| 892 | If other build systems, such as a host or target build system | ||
| 893 | are referenced, the documentation clearly states the | ||
| 894 | difference. | ||
| 895 | <note> | ||
| 896 | For some historical information about Poky, see the | ||
| 897 | <link linkend='poky'>Poky</link> term. | ||
| 898 | </note> | ||
| 899 | </para></listitem> | ||
| 900 | <listitem><para> | ||
| 901 | <emphasis>Package:</emphasis> | ||
| 902 | In the context of the Yocto Project, this term refers to a | ||
| 903 | recipe's packaged output produced by BitBake (i.e. a | ||
| 904 | "baked recipe"). | ||
| 905 | A package is generally the compiled binaries produced from the | ||
| 906 | recipe's sources. | ||
| 907 | You "bake" something by running it through BitBake.</para> | ||
| 908 | |||
| 909 | <para>It is worth noting that the term "package" can, | ||
| 910 | in general, have subtle meanings. | ||
| 911 | For example, the packages referred to in the | ||
| 912 | "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Build Host Packages</ulink>" | ||
| 913 | section in the Yocto Project Quick Start are compiled binaries | ||
| 914 | that, when installed, add functionality to your Linux | ||
| 915 | distribution.</para> | ||
| 916 | |||
| 917 | <para>Another point worth noting is that historically within | ||
| 918 | the Yocto Project, recipes were referred to as packages - thus, | ||
| 919 | the existence of several BitBake variables that are seemingly | ||
| 920 | mis-named, | ||
| 921 | (e.g. <link linkend='var-PR'><filename>PR</filename></link>, | ||
| 922 | <link linkend='var-PV'><filename>PV</filename></link>, and | ||
| 923 | <link linkend='var-PE'><filename>PE</filename></link>). | ||
| 924 | </para></listitem> | ||
| 925 | <listitem><para> | ||
| 926 | <emphasis>Package Groups:</emphasis> | ||
| 927 | Arbitrary groups of software Recipes. | ||
| 928 | You use package groups to hold recipes that, when built, | ||
| 929 | usually accomplish a single task. | ||
| 930 | For example, a package group could contain the recipes for a | ||
| 931 | company’s proprietary or value-add software. | ||
| 932 | Or, the package group could contain the recipes that enable | ||
| 933 | graphics. | ||
| 934 | A package group is really just another recipe. | ||
| 935 | Because package group files are recipes, they end with the | ||
| 936 | <filename>.bb</filename> filename extension. | ||
| 937 | </para></listitem> | ||
| 938 | <listitem><para id='poky'> | ||
| 939 | <emphasis>Poky:</emphasis> | ||
| 940 | The term "poky" can mean several things. | ||
| 941 | In its most general sense, it is an open-source | ||
| 942 | project that was initially developed by OpenedHand. | ||
| 943 | With OpenedHand, poky was developed off of the existing | ||
| 944 | OpenEmbedded build system becoming a commercially | ||
| 945 | supportable build system for embedded Linux. | ||
| 946 | After Intel Corporation acquired OpenedHand, the | ||
| 947 | project poky became the basis for the Yocto Project's | ||
| 948 | build system.</para> | ||
| 949 | |||
| 950 | <para>Within the Yocto Project source repositories, | ||
| 951 | <filename>poky</filename> exists as a separate Git | ||
| 952 | repository you can clone to yield a local copy on your | ||
| 953 | host system. | ||
| 954 | Thus, "poky" can refer to the local copy of the Source | ||
| 955 | Directory used for development within the Yocto | ||
| 956 | Project.</para> | ||
| 957 | |||
| 958 | <para>Finally, "poky" can refer to the default | ||
| 959 | <link linkend='var-DISTRO'><filename>DISTRO</filename></link> | ||
| 960 | (i.e. distribution) created when you use the Yocto | ||
| 961 | Project in conjunction with the | ||
| 962 | <filename>poky</filename> repository to build an image. | ||
| 963 | </para></listitem> | ||
| 964 | <listitem><para> | ||
| 965 | <emphasis>Recipe:</emphasis> | ||
| 966 | A set of instructions for building packages. | ||
| 967 | A recipe describes where you get source code, which patches | ||
| 968 | to apply, how to configure the source, how to compile it and so on. | ||
| 969 | Recipes also describe dependencies for libraries or for other | ||
| 970 | recipes. | ||
| 971 | Recipes represent the logical unit of execution, the software | ||
| 972 | to build, the images to build, and use the | ||
| 973 | <filename>.bb</filename> file extension. | ||
| 974 | </para></listitem> | ||
| 975 | <listitem> | ||
| 976 | <para id='source-directory'> | ||
| 977 | <emphasis>Source Directory:</emphasis> | ||
| 978 | This term refers to the directory structure created as a result | ||
| 979 | of creating a local copy of the <filename>poky</filename> Git | ||
| 980 | repository <filename>git://git.yoctoproject.org/poky</filename> | ||
| 981 | or expanding a released <filename>poky</filename> tarball. | ||
| 982 | <note> | ||
| 983 | Creating a local copy of the <filename>poky</filename> | ||
| 984 | Git repository is the recommended method for setting up | ||
| 985 | your Source Directory. | ||
| 986 | </note> | ||
| 987 | Sometimes you might hear the term "poky directory" used to refer | ||
| 988 | to this directory structure. | ||
| 989 | <note> | ||
| 990 | The OpenEmbedded build system does not support file or | ||
| 991 | directory names that contain spaces. | ||
| 992 | Be sure that the Source Directory you use does not contain | ||
| 993 | these types of names. | ||
| 994 | </note></para> | ||
| 995 | |||
| 996 | <para>The Source Directory contains BitBake, Documentation, | ||
| 997 | Metadata and other files that all support the Yocto Project. | ||
| 998 | Consequently, you must have the Source Directory in place on | ||
| 999 | your development system in order to do any development using | ||
| 1000 | the Yocto Project.</para> | ||
| 1001 | |||
| 1002 | <para>When you create a local copy of the Git repository, you | ||
| 1003 | can name the repository anything you like. | ||
| 1004 | Throughout much of the documentation, "poky" | ||
| 1005 | is used as the name of the top-level folder of the local copy of | ||
| 1006 | the poky Git repository. | ||
| 1007 | So, for example, cloning the <filename>poky</filename> Git | ||
| 1008 | repository results in a local Git repository whose top-level | ||
| 1009 | folder is also named "poky".</para> | ||
| 1010 | |||
| 1011 | <para>While it is not recommended that you use tarball expansion | ||
| 1012 | to set up the Source Directory, if you do, the top-level | ||
| 1013 | directory name of the Source Directory is derived from the | ||
| 1014 | Yocto Project release tarball. | ||
| 1015 | For example, downloading and unpacking | ||
| 1016 | <filename>&YOCTO_POKY_TARBALL;</filename> results in a | ||
| 1017 | Source Directory whose root folder is named | ||
| 1018 | <filename>&YOCTO_POKY;</filename>.</para> | ||
| 1019 | |||
| 1020 | <para>It is important to understand the differences between the | ||
| 1021 | Source Directory created by unpacking a released tarball as | ||
| 1022 | compared to cloning | ||
| 1023 | <filename>git://git.yoctoproject.org/poky</filename>. | ||
| 1024 | When you unpack a tarball, you have an exact copy of the files | ||
| 1025 | based on the time of release - a fixed release point. | ||
| 1026 | Any changes you make to your local files in the Source Directory | ||
| 1027 | are on top of the release and will remain local only. | ||
| 1028 | On the other hand, when you clone the <filename>poky</filename> | ||
| 1029 | Git repository, you have an active development repository with | ||
| 1030 | access to the upstream repository's branches and tags. | ||
| 1031 | In this case, any local changes you make to the local | ||
| 1032 | Source Directory can be later applied to active development | ||
| 1033 | branches of the upstream <filename>poky</filename> Git | ||
| 1034 | repository.</para> | ||
| 1035 | |||
| 1036 | <para>For more information on concepts related to Git | ||
| 1037 | repositories, branches, and tags, see the | ||
| 1038 | "<ulink url='&YOCTO_DOCS_DEV_URL;#repositories-tags-and-branches'>Repositories, Tags, and Branches</ulink>" | ||
| 1039 | section in the Yocto Project Development Manual. | ||
| 1040 | </para></listitem> | ||
| 1041 | <listitem><para><emphasis>Task:</emphasis> | ||
| 1042 | A unit of execution for BitBake (e.g. | ||
| 1043 | <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>, | ||
| 1044 | <link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>, | ||
| 1045 | <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>, | ||
| 1046 | and so forth). | ||
| 1047 | </para></listitem> | ||
| 1048 | <listitem><para> | ||
| 1049 | <emphasis>Upstream:</emphasis> | ||
| 1050 | A reference to source code or repositories | ||
| 1051 | that are not local to the development system but located in a | ||
| 1052 | master area that is controlled by the maintainer of the source | ||
| 1053 | code. | ||
| 1054 | For example, in order for a developer to work on a particular | ||
| 1055 | piece of code, they need to first get a copy of it from an | ||
| 1056 | "upstream" source. | ||
| 1057 | </para></listitem> | ||
| 1058 | </itemizedlist> | ||
| 1059 | </para> | ||
| 1060 | </section> | ||
| 1061 | |||
| 1053 | </chapter> | 1062 | </chapter> |
| 1054 | <!-- | 1063 | <!-- |
| 1055 | vim: expandtab tw=80 ts=4 | 1064 | vim: expandtab tw=80 ts=4 |
