summaryrefslogtreecommitdiffstats
path: root/documentation/dev-manual/dev-manual-newbie.xml
diff options
context:
space:
mode:
Diffstat (limited to 'documentation/dev-manual/dev-manual-newbie.xml')
-rw-r--r--documentation/dev-manual/dev-manual-newbie.xml199
1 files changed, 109 insertions, 90 deletions
diff --git a/documentation/dev-manual/dev-manual-newbie.xml b/documentation/dev-manual/dev-manual-newbie.xml
index 6a8d39caae..94f3471f13 100644
--- a/documentation/dev-manual/dev-manual-newbie.xml
+++ b/documentation/dev-manual/dev-manual-newbie.xml
@@ -55,7 +55,7 @@
55</section> 55</section>
56 56
57<section id="usingpoky-changes-collaborate"> 57<section id="usingpoky-changes-collaborate">
58 <title>Using The Yocto Project in a Team Environment</title> 58 <title>Using the Yocto Project in a Team Environment</title>
59 59
60 <para> 60 <para>
61 It might not be immediately clear how you can use the Yocto Project in a team environment, 61 It might not be immediately clear how you can use the Yocto Project in a team environment,
@@ -97,19 +97,20 @@
97 <para> 97 <para>
98 Most teams have many pieces of software undergoing active development at any given time. 98 Most teams have many pieces of software undergoing active development at any given time.
99 You can derive large benefits by putting these pieces under the control of a source 99 You can derive large benefits by putting these pieces under the control of a source
100 control system that is compatible with the Yocto Project (i.e. Git or Subversion (SVN)). 100 control system that is compatible (i.e. Git or Subversion (SVN)) with the OpenEmbeded
101 build system that the Yocto Project uses.
101 You can then set the autobuilder to pull the latest revisions of the packages 102 You can then set the autobuilder to pull the latest revisions of the packages
102 and test the latest commits by the builds. 103 and test the latest commits by the builds.
103 This practice quickly highlights issues. 104 This practice quickly highlights issues.
104 The Yocto Project easily supports testing configurations that use both a 105 The build system easily supports testing configurations that use both a
105 stable known good revision and a floating revision. 106 stable known good revision and a floating revision.
106 The Yocto Project can also take just the changes from specific source control branches. 107 The build system can also take just the changes from specific source control branches.
107 This capability allows you to track and test specific changes. 108 This capability allows you to track and test specific changes.
108 </para> 109 </para>
109 110
110 <para> 111 <para>
111 Perhaps the hardest part of setting this up is defining the software project or 112 Perhaps the hardest part of setting this up is defining the software project or
112 the Yocto Project metadata policies that surround the different source control systems. 113 the metadata policies that surround the different source control systems.
113 Of course circumstances will be different in each case. 114 Of course circumstances will be different in each case.
114 However, this situation reveals one of the Yocto Project's advantages - 115 However, this situation reveals one of the Yocto Project's advantages -
115 the system itself does not 116 the system itself does not
@@ -129,7 +130,7 @@
129 From the interface, you can click on any particular item in the "Name" column and 130 From the interface, you can click on any particular item in the "Name" column and
130 see the URL at the bottom of the page that you need to set up a Git repository for 131 see the URL at the bottom of the page that you need to set up a Git repository for
131 that particular item. 132 that particular item.
132 Having a local Git repository of the Yocto Project files allows you to 133 Having a local Git repository of the source directory (poky) allows you to
133 make changes, contribute to the history, and ultimately enhance the Yocto Project's 134 make changes, contribute to the history, and ultimately enhance the Yocto Project's
134 tools, Board Support Packages, and so forth. 135 tools, Board Support Packages, and so forth.
135 </para> 136 </para>
@@ -147,8 +148,8 @@
147 <ulink url='&YOCTO_HOME_URL;/download'>download page</ulink> and get a 148 <ulink url='&YOCTO_HOME_URL;/download'>download page</ulink> and get a
148 tarball of the release. 149 tarball of the release.
149 You can also go to this site to download any supported BSP tarballs. 150 You can also go to this site to download any supported BSP tarballs.
150 Unpacking the tarball gives you a hierarchical directory structure of Yocto Project 151 Unpacking the tarball gives you a hierarchical source directory that lets you develop
151 files that lets you develop using the Yocto Project. 152 using the Yocto Project.
152 </para> 153 </para>
153 154
154 <para> 155 <para>
@@ -157,22 +158,22 @@
157 </para> 158 </para>
158 159
159 <para> 160 <para>
160 In summary, here is where you can get the Yocto Project files needed for development: 161 In summary, here is where you can get the project files needed for development:
161 <itemizedlist> 162 <itemizedlist>
162 <listitem><para id='source-repositories'><emphasis><ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Source Repositories:</ulink></emphasis> 163 <listitem><para id='source-repositories'><emphasis><ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi'>Source Repositories:</ulink></emphasis>
163 This area contains IDE Plugins, Matchbox, Poky, Poky Support, Tools, Yocto Linux Kernel, and Yocto 164 This area contains IDE Plugins, Matchbox, Poky, Poky Support, Tools, Yocto Linux Kernel, and Yocto
164 Metadata Layers. 165 Metadata Layers.
165 You can create Git repositories for each of these areas.</para> 166 You can create local copies of Git repositories for each of these areas.</para>
166 <para> 167 <para>
167 <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" /> 168 <imagedata fileref="figures/source-repos.png" align="center" width="6in" depth="4in" />
168 </para></listitem> 169 </para></listitem>
169 <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink></emphasis> 170 <listitem><para><anchor id='index-downloads' /><emphasis><ulink url='&YOCTO_DL_URL;/releases/'>Index of /releases:</ulink></emphasis>
170 This area contains index releases such as 171 This area contains index releases such as
171 the <trademark class='trade'>Eclipse</trademark> 172 the <trademark class='trade'>Eclipse</trademark>
172 Yocto Plug-in, miscellaneous support, Poky, pseudo, cross-development toolchains, 173 Yocto Plug-in, miscellaneous support, poky, pseudo, cross-development toolchains,
173 and all released versions of Yocto Project in the form of images or tarballs. 174 and all released versions of Yocto Project in the form of images or tarballs.
174 Downloading and extracting these files does not produce a Git repository but rather 175 Downloading and extracting these files does not produce a local copy of the
175 a snapshot of a particular release or image.</para> 176 Git repository but rather a snapshot of a particular release or image.</para>
176 <para> 177 <para>
177 <imagedata fileref="figures/index-downloads.png" align="center" width="6in" depth="4in" /> 178 <imagedata fileref="figures/index-downloads.png" align="center" width="6in" depth="4in" />
178 </para></listitem> 179 </para></listitem>
@@ -199,7 +200,7 @@
199 <listitem><para><emphasis>Append Files:</emphasis> Files that append build information to 200 <listitem><para><emphasis>Append Files:</emphasis> Files that append build information to
200 a recipe file. 201 a recipe file.
201 Append files are known as BitBake append files and <filename>.bbappend</filename> files. 202 Append files are known as BitBake append files and <filename>.bbappend</filename> files.
202 The Yocto Project build system expects every append file to have a corresponding and 203 The OpenEmbedded build system expects every append file to have a corresponding and
203 underlying recipe (<filename>.bb</filename>) file. 204 underlying recipe (<filename>.bb</filename>) file.
204 Furthermore, the append file and the underlying recipe must have the same root filename. 205 Furthermore, the append file and the underlying recipe must have the same root filename.
205 The filenames can differ only in the file type suffix used (e.g. 206 The filenames can differ only in the file type suffix used (e.g.
@@ -211,9 +212,49 @@
211 "<link linkend='changing-recipes-kernel'>Changing <filename>recipes-kernel</filename></link>" 212 "<link linkend='changing-recipes-kernel'>Changing <filename>recipes-kernel</filename></link>"
212 sections.</para></listitem> 213 sections.</para></listitem>
213 <listitem><para><emphasis>BitBake:</emphasis> The task executor and scheduler used by 214 <listitem><para><emphasis>BitBake:</emphasis> The task executor and scheduler used by
214 the Yocto Project to build images. 215 the OpenEmbedded build system to build images.
215 For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'> 216 For more information on BitBake, see the <ulink url='http://bitbake.berlios.de/manual/'>
216 BitBake documentation</ulink>.</para></listitem> 217 BitBake documentation</ulink>.</para></listitem>
218 <listitem>
219 <para id='build-directory'><emphasis>Build Directory:</emphasis>
220 This term refers to the area used by the OpenEmbedded build system for builds.
221 The area is created when you <filename>source</filename> the setup
222 environment script that is found in the source directory
223 (i.e. <filename>oe-init-build-env</filename>).
224 The <ulink url='&YOCTO_DOCS_REF_URL;#var-TOPDIR'><filename>TOPDIR</filename></ulink>
225 variable points to the build directory.</para>
226
227 <para>You have a lot of flexibility when creating the build directory.
228 Following are some examples that show how to create the directory:
229 <itemizedlist>
230 <listitem><para>Create the build directory in your current working directory
231 and name it <filename>build</filename>.
232 This is the default behavior.
233 <literallayout class='monospaced'>
234 $ source oe-init-build-env
235 </literallayout></para></listitem>
236 <listitem><para>Provide a directory path and specifically name the build
237 directory.
238 This next example creates a build directory named <filename>YP-&POKYVERSION;</filename>
239 in your home directory within the directory <filename>mybuilds</filename>.
240 If <filename>mybuilds</filename> does not exist, the directory is created for you:
241 <literallayout class='monospaced'>
242 $ source &OE_INIT_PATH; $HOME/mybuilds/YP-&POKYVERSION;
243 </literallayout></para></listitem>
244 <listitem><para>Provide an existing directory to use as the build directory.
245 This example uses the existing <filename>mybuilds</filename> directory
246 as the build directory.
247 <literallayout class='monospaced'>
248 $ source &OE_INIT_PATH; $HOME/mybuilds/
249 </literallayout></para></listitem>
250 </itemizedlist>
251 </para></listitem>
252 <listitem><para><emphasis>Build System:</emphasis> In the context of the Yocto Project
253 this term refers to the OpenEmbedded build system used by the project.
254 This build system is based on the project known as "Poky."
255 For some historical information about Poky, see the
256 <link linkend='poky'>poky</link> term further along in this section.
257 </para></listitem>
217 <listitem><para><emphasis>Classes:</emphasis> Files that provide for logic encapsulation 258 <listitem><para><emphasis>Classes:</emphasis> Files that provide for logic encapsulation
218 and inheritance allowing commonly used patterns to be defined once and easily used 259 and inheritance allowing commonly used patterns to be defined once and easily used
219 in multiple recipes. 260 in multiple recipes.
@@ -222,13 +263,14 @@
222 <listitem><para><emphasis>Configuration File:</emphasis> Configuration information in various 263 <listitem><para><emphasis>Configuration File:</emphasis> Configuration information in various
223 <filename>.conf</filename> files provides global definitions of variables. 264 <filename>.conf</filename> files provides global definitions of variables.
224 The <filename>conf/local.conf</filename> configuration file in the 265 The <filename>conf/local.conf</filename> configuration file in the
225 <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link> 266 <link linkend='build-directory'>build directory</link>
226 contains user-defined variables that affect each build. 267 contains user-defined variables that affect each build.
227 The <filename>meta-yocto/conf/distro/poky.conf</filename> configuration file 268 The <filename>meta-yocto/conf/distro/poky.conf</filename> configuration file
228 defines Yocto ‘distro’ configuration 269 defines Yocto ‘distro’ configuration
229 variables used only when building with this policy. 270 variables used only when building with this policy.
230 Machine configuration files, which 271 Machine configuration files, which
231 are located throughout the Yocto Project file structure, define 272 are located throughout the
273 <link linkend='source-directory'>source directory</link>, define
232 variables for specific hardware and are only used when building for that target 274 variables for specific hardware and are only used when building for that target
233 (e.g. the <filename>machine/beagleboard.conf</filename> configuration file defines 275 (e.g. the <filename>machine/beagleboard.conf</filename> configuration file defines
234 variables for the Texas Instruments ARM Cortex-A8 development board). 276 variables for the Texas Instruments ARM Cortex-A8 development board).
@@ -239,7 +281,8 @@
239 tools and utilities that allow you to develop software for targeted architectures. 281 tools and utilities that allow you to develop software for targeted architectures.
240 This toolchain contains cross-compilers, linkers, and debuggers that are specific to 282 This toolchain contains cross-compilers, linkers, and debuggers that are specific to
241 an architecture. 283 an architecture.
242 You can use the Yocto Project to build cross-development toolchains in tarball form that, when 284 You can use the OpenEmbedded build system to build cross-development toolchains in tarball
285 form that, when
243 unpacked, contain the development tools you need to cross-compile and test your software. 286 unpacked, contain the development tools you need to cross-compile and test your software.
244 The Yocto Project ships with images that contain toolchains for supported architectures 287 The Yocto Project ships with images that contain toolchains for supported architectures
245 as well. 288 as well.
@@ -261,64 +304,63 @@
261 Metadata includes recipes, classes, and configuration files.</para></listitem> 304 Metadata includes recipes, classes, and configuration files.</para></listitem>
262 <listitem><para><emphasis>OE-Core:</emphasis> A core set of metadata originating 305 <listitem><para><emphasis>OE-Core:</emphasis> A core set of metadata originating
263 with OpenEmbedded (OE) that is shared between OE and the Yocto Project. 306 with OpenEmbedded (OE) that is shared between OE and the Yocto Project.
264 This metadata is found in the <filename>meta</filename> directory of the Yocto Project 307 This metadata is found in the <filename>meta</filename> directory of the source
265 files.</para></listitem> 308 directory.</para></listitem>
266 <listitem><para><emphasis>Package:</emphasis> The packaged output from a baked recipe. 309 <listitem><para><emphasis>Package:</emphasis> The packaged output from a baked recipe.
267 A package is generally the compiled binaries produced from the recipe's sources. 310 A package is generally the compiled binaries produced from the recipe's sources.
268 You ‘bake’ something by running it through BitBake.</para></listitem> 311 You ‘bake’ something by running it through BitBake.</para></listitem>
269 <listitem><para><emphasis>Poky:</emphasis> The build tool that the Yocto Project 312 <listitem><para id='poky'><emphasis>Poky:</emphasis> The term "poky" can mean several things.
270 uses to create images.</para></listitem> 313 In its most general sence, it is an open-source project that was initially developed
314 by OpenedHand. With OpenedHand, poky was developed off of the existing OpenEmbedded
315 build system becoming a build system for embedded images.
316 After Intel Corporation aquired OpenedHand, the project poky became the basis for
317 the Yocto Project's build system.
318 Within the Yocto Project source repositories, poky exists as a separate Git repository
319 that can be cloned to yield a local copy on the host system.
320 Thus, "poky" can refer to the local copy of the source directory used to develop within
321 the Yocto Project.</para></listitem>
271 <listitem><para><emphasis>Recipe:</emphasis> A set of instructions for building packages. 322 <listitem><para><emphasis>Recipe:</emphasis> A set of instructions for building packages.
272 A recipe describes where you get source code and which patches to apply. 323 A recipe describes where you get source code and which patches to apply.
273 Recipes describe dependencies for libraries or for other recipes, and they 324 Recipes describe dependencies for libraries or for other recipes, and they
274 also contain configuration and compilation options. 325 also contain configuration and compilation options.
275 Recipes contain the logical unit of execution, the software/images to build, and 326 Recipes contain the logical unit of execution, the software/images to build, and
276 use the <filename>.bb</filename> file extension.</para></listitem> 327 use the <filename>.bb</filename> file extension.</para></listitem>
277 <listitem><para><emphasis>Tasks:</emphasis> Arbitrary groups of software Recipes.
278 You simply use Tasks to hold recipes that, when built, usually accomplish a single task.
279 For example, a task could contain the recipes for a company’s proprietary or value-add software.
280 Or, the task could contain the recipes that enable graphics.
281 A task is really just another recipe.
282 Because task files are recipes, they end with the <filename>.bb</filename> filename
283 extension.</para></listitem>
284 <listitem><para><emphasis>Upstream:</emphasis> A reference to source code or repositories
285 that are not local to the development system but located in a master area that is controlled
286 by the maintainer of the source code.
287 For example, in order for a developer to work on a particular piece of code, they need to
288 first get a copy of it from an "upstream" source.</para></listitem>
289 <listitem> 328 <listitem>
290 <para id='yocto-project-files'><emphasis>Yocto Project Files:</emphasis> 329 <para id='source-directory'><emphasis>Source Directory:</emphasis>
291 This term refers to the directory structure created as a result of either downloading 330 This term refers to the directory structure created as a result of either downloading
292 and unpacking a Yocto Project release tarball or setting up a Git repository 331 and unpacking a Yocto Project release tarball or creating a local copy of
293 by cloning <filename>git://git.yoctoproject.org/poky</filename>. 332 <filename>poky</filename> Git repository <filename>git://git.yoctoproject.org/poky</filename>.
294 Sometimes the term "the Yocto Project Files structure" is used as well.</para> 333 Sometimes you might here the term "poky directory" used to refer to this
295 334 directory structure.</para>
296 <para>The Yocto Project Files contain BitBake, Documentation, metadata and 335
297 other files that all support the development environment. 336 <para>The source directory contains BitBake, Documentation, metadata and
298 Consequently, you must have the Yocto Project Files in place on your development 337 other files that all support the Yocto Project.
338 Consequently, you must have the source directory in place on your development
299 system in order to do any development using the Yocto Project.</para> 339 system in order to do any development using the Yocto Project.</para>
300 340
301 <para>The name of the top-level directory of the Yocto Project Files structure 341 <para>For tarball expansion, the name of the top-level directory of the source directory
302 is derived from the Yocto Project release tarball. 342 is derived from the Yocto Project release tarball.
303 For example, downloading and unpacking <filename>&YOCTO_POKY_TARBALL;</filename> 343 For example, downloading and unpacking <filename>&YOCTO_POKY_TARBALL;</filename>
304 results in a Yocto Project file structure whose Yocto Project source directory is named 344 results in a source directory whose top-level folder is named
305 <filename>&YOCTO_POKY;</filename>. 345 <filename>&YOCTO_POKY;</filename>.
306 If you create a Git repository, then you can name the repository anything you like. 346 If you create a local copy of the Git repository, then you can name the repository
307 Throughout much of the documentation, the name of the Git repository is used as the 347 anything you like.
308 name for the local folder. 348 Throughout much of the documentation, <filename>poky</filename> is used as the name of
349 the top-level folder of the local copy of the poky Git repository.
309 So, for example, cloning the <filename>poky</filename> Git repository results in a 350 So, for example, cloning the <filename>poky</filename> Git repository results in a
310 local Git repository also named <filename>poky</filename>.</para> 351 local Git repository whose top-level folder is also named <filename>poky</filename>.</para>
311 352
312 <para>It is important to understand the differences between Yocto Project Files created 353 <para>It is important to understand the differences between the source directory created
313 by unpacking a release tarball as compared to cloning 354 by unpacking a released tarball as compared to cloning
314 <filename>git://git.yoctoproject.org/poky</filename>. 355 <filename>git://git.yoctoproject.org/poky</filename>.
315 When you unpack a tarball, you have an exact copy of the files based on the time of 356 When you unpack a tarball, you have an exact copy of the files based on the time of
316 release - a fixed release point. 357 release - a fixed release point.
317 Any changes you make to your local Yocto Project Files are on top of the release. 358 Any changes you make to your local files in the source directory are on top of the release.
318 On the other hand, when you clone the Yocto Project Git repository, you have an 359 On the other hand, when you clone the <filename>poky</filename> Git repository, you have an
319 active development repository. 360 active development repository.
320 In this case, any local changes you make to the Yocto Project can be later applied 361 In this case, any local changes you make to the source directory can be later applied
321 to active development branches of the upstream Yocto Project Git repository.</para> 362 to active development branches of the upstream <filename>poky</filename> Git
363 repository.</para>
322 364
323 <para>Finally, if you want to track a set of local changes while starting from the same point 365 <para>Finally, if you want to track a set of local changes while starting from the same point
324 as a release tarball, you can create a local Git branch that 366 as a release tarball, you can create a local Git branch that
@@ -329,41 +371,18 @@
329 see the 371 see the
330 "<link linkend='repositories-tags-and-branches'>Repositories, Tags, and Branches</link>" 372 "<link linkend='repositories-tags-and-branches'>Repositories, Tags, and Branches</link>"
331 section.</para></listitem> 373 section.</para></listitem>
332 <listitem> 374 <listitem><para><emphasis>Tasks:</emphasis> Arbitrary groups of software Recipes.
333 <para id='yocto-project-build-directory'><emphasis>Yocto Project Build Directory:</emphasis> 375 You simply use Tasks to hold recipes that, when built, usually accomplish a single task.
334 This term refers to the area used by the Yocto Project for builds. 376 For example, a task could contain the recipes for a company’s proprietary or value-add software.
335 The area is created when you <filename>source</filename> the Yocto Project setup 377 Or, the task could contain the recipes that enable graphics.
336 environment script that is found in the Yocto Project files area 378 A task is really just another recipe.
337 (i.e. <filename>oe-init-build-env</filename>). 379 Because task files are recipes, they end with the <filename>.bb</filename> filename
338 The <ulink url='&YOCTO_DOCS_REF_URL;#var-TOPDIR'><filename>TOPDIR</filename></ulink> 380 extension.</para></listitem>
339 variable points to the build directory.</para> 381 <listitem><para><emphasis>Upstream:</emphasis> A reference to source code or repositories
340 382 that are not local to the development system but located in a master area that is controlled
341 <para>You have a lot of flexibility when creating the Yocto Project Build Directory. 383 by the maintainer of the source code.
342 Following are some examples that show how to create the directory: 384 For example, in order for a developer to work on a particular piece of code, they need to
343 <itemizedlist> 385 first get a copy of it from an "upstream" source.</para></listitem>
344 <listitem><para>Create the build directory in your current working directory
345 and name it <filename>build</filename>.
346 This is the default behavior.
347 <literallayout class='monospaced'>
348 $ cd ~/poky
349 $ source oe-init-build-env
350 </literallayout></para></listitem>
351 <listitem><para>Provide a directory path and specifically name the build
352 directory.
353 This next example creates a build directory named <filename>YP-&POKYVERSION;</filename>
354 in your home directory within the directory <filename>mybuilds</filename>.
355 If <filename>mybuilds</filename> does not exist, the directory is created for you:
356 <literallayout class='monospaced'>
357 $ source &OE_INIT_PATH; $HOME/mybuilds/YP-&POKYVERSION;
358 </literallayout></para></listitem>
359 <listitem><para>Provide an existing directory to use as the build directory.
360 This example uses the existing <filename>mybuilds</filename> directory
361 as the build directory.
362 <literallayout class='monospaced'>
363 $ source &OE_INIT_PATH; $HOME/mybuilds/
364 </literallayout></para></listitem>
365 </itemizedlist>
366 </para></listitem>
367 </itemizedlist> 386 </itemizedlist>
368 </para> 387 </para>
369</section> 388</section>
@@ -403,7 +422,7 @@
403 <filename>meta/files/common-licenses</filename>. 422 <filename>meta/files/common-licenses</filename>.
404 Once the build completes, the list of all licenses found and used during that build are 423 Once the build completes, the list of all licenses found and used during that build are
405 kept in the 424 kept in the
406 <link linkend='yocto-project-build-directory'>Yocto Project Build Directory</link> at 425 <link linkend='build-directory'>build directory</link> at
407 <filename>tmp/deploy/images/licenses</filename>. 426 <filename>tmp/deploy/images/licenses</filename>.
408 </para> 427 </para>
409 428