summaryrefslogtreecommitdiffstats
path: root/documentation/poky-ref-manual/usingpoky.xml
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2011-12-08 10:34:44 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-12-16 16:58:38 +0000
commita191e6e04892a67487ace11f5a94ea1c62701c8c (patch)
tree2746a0d603ca254fa77879e1b264a16ef78fe797 /documentation/poky-ref-manual/usingpoky.xml
parent9a99147c9146463ec2988e6670ed21929dc474ee (diff)
downloadpoky-a191e6e04892a67487ace11f5a94ea1c62701c8c.tar.gz
documentation/poky-ref-manual: New chapter introduced
Long-term strategy for the YP Reference Manual is that it contains reference material and not "how-to-information". A step in this direction is to isolate any discussions on components and other areas of YP that need talked about. So to start with, I have created a new chapter for now named "Technical Details" that so far has a discussion of some components and shared state. This is a step in the direction of making this manual a reference manual and not a "how to" manual. Changes included removing redundant material from the 'usingpoky.xml' chapter and also adding the new chapter 'technical-details' into the 'poky-ref-manual.xml' file used for the make. (From yocto-docs rev: 567823392d903016d314ae9fcc1b4d7abf59d9ae) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/poky-ref-manual/usingpoky.xml')
-rw-r--r--documentation/poky-ref-manual/usingpoky.xml220
1 files changed, 1 insertions, 219 deletions
diff --git a/documentation/poky-ref-manual/usingpoky.xml b/documentation/poky-ref-manual/usingpoky.xml
index 9a338b3c89..ea316595b1 100644
--- a/documentation/poky-ref-manual/usingpoky.xml
+++ b/documentation/poky-ref-manual/usingpoky.xml
@@ -4,150 +4,9 @@
4<title>Using the Yocto Project</title> 4<title>Using the Yocto Project</title>
5 5
6 <para> 6 <para>
7 This section gives an overview of the components that make up the Yocto Project 7 This section describes the common usage for the Yocto Project.
8 followed by information about Yocto Project builds and dealing with any
9 problems that might arise.
10 </para> 8 </para>
11 9
12<section id='usingpoky-components'>
13 <title>Yocto Project Components</title>
14
15 <para>
16 The BitBake task executor together with various types of configuration files form the
17 Yocto Project core.
18 This section overviews the BitBake task executor and the
19 configuration files by describing what they are used for and how they interact.
20 </para>
21
22 <para>
23 BitBake handles the parsing and execution of the data files.
24 The data itself is of various types:
25 <itemizedlist>
26 <listitem><para><emphasis>Recipes:</emphasis> Provides details about particular
27 pieces of software</para></listitem>
28 <listitem><para><emphasis>Class Data:</emphasis> An abstraction of common build
29 information (e.g. how to build a Linux kernel).</para></listitem>
30 <listitem><para><emphasis>Configuration Data:</emphasis> Defines machine-specific settings,
31 policy decisions, etc.
32 Configuration data acts as the glue to bind everything together.</para></listitem>
33 </itemizedlist>
34 For more information on data, see the
35 <ulink url='http://www.yoctoproject.org/docs/latest/dev-manual/dev-manual.html#yocto-project-terms'>
36 Yocto Project Terms</ulink> section in
37 <ulink url='http://www.yoctoproject.org/docs/latest/dev-manual/dev-manual.html'>
38 The Yocto Project Development Manual</ulink>.
39 </para>
40
41 <para>
42 BitBake knows how to combine multiple data sources together and refers to each data source
43 as a <link linkend='usingpoky-changes-layers'>'layer'</link>.
44 </para>
45
46 <para>
47 Following are some brief details on these core components.
48 For more detailed information on these components see the
49 <link linkend='ref-structure'>'Reference: Directory Structure'</link>
50 appendix.
51 </para>
52
53 <section id='usingpoky-components-bitbake'>
54 <title>BitBake</title>
55
56 <para>
57 BitBake is the tool at the heart of the Yocto Project and is responsible
58 for parsing the metadata, generating a list of tasks from it,
59 and then executing those tasks.
60 To see a list of the options BitBake supports, use the following help command:
61 <literallayout class='monospaced'>
62 $ bitbake --help
63 </literallayout>
64 </para>
65
66 <para>
67 The most common usage for BitBake is <filename>bitbake &lt;packagename&gt;</filename>, where
68 <filename>packagename</filename> is the name of the package you want to build
69 (referred to as the "target" in this manual).
70 The target often equates to the first part of a <filename>.bb</filename> filename.
71 So, to run the <filename>matchbox-desktop_1.2.3.bb</filename> file, you
72 might type the following:
73 <literallayout class='monospaced'>
74 $ bitbake matchbox-desktop
75 </literallayout>
76 Several different versions of <filename>matchbox-desktop</filename> might exist.
77 BitBake chooses the one selected by the distribution configuration.
78 You can get more details about how BitBake chooses between different
79 target versions and providers in the
80 <link linkend='ref-bitbake-providers'>Preferences and Providers</link> section.
81 </para>
82
83 <para>
84 BitBake also tries to execute any dependent tasks first.
85 So for example, before building <filename>matchbox-desktop</filename>, BitBake
86 would build a cross compiler and <filename>eglibc</filename> if they had not already
87 been built.
88 <note>This release of the Yocto Project does not support the <filename>glibc</filename>
89 GNU version of the Unix standard C library. By default, the Yocto Project builds with
90 <filename>eglibc</filename>.</note>
91 </para>
92
93 <para>
94 A useful BitBake option to consider is the <filename>-k</filename> or
95 <filename>--continue</filename> option.
96 This option instructs BitBake to try and continue processing the job as much
97 as possible even after encountering an error.
98 When an error occurs, the target that
99 failed and those that depend on it cannot be remade.
100 However, when you use this option other dependencies can still be processed.
101 </para>
102 </section>
103
104 <section id='usingpoky-components-metadata'>
105 <title>Metadata (Recipes)</title>
106
107 <para>
108 The <filename>.bb</filename> files are usually referred to as "recipes."
109 In general, a recipe contains information about a single piece of software.
110 The information includes the location from which to download the source patches
111 (if any are needed), which special configuration options to apply,
112 how to compile the source files, and how to package the compiled output.
113 </para>
114
115 <para>
116 The term "package" can also be used to describe recipes.
117 However, since the same word is used for the packaged output from the Yocto
118 Project (i.e. <filename>.ipk</filename> or <filename>.deb</filename> files),
119 this document avoids using the term "package" to refer to recipes.
120 </para>
121 </section>
122
123 <section id='usingpoky-components-classes'>
124 <title>Classes</title>
125
126 <para>
127 Class files (<filename>.bbclass</filename>) contain information that is useful to share
128 between metadata files.
129 An example is the Autotools class, which contains
130 common settings for any application that Autotools uses.
131 The <link linkend='ref-classes'>Reference: Classes</link> appendix provides details
132 about common classes and how to use them.
133 </para>
134 </section>
135
136 <section id='usingpoky-components-configuration'>
137 <title>Configuration</title>
138
139 <para>
140 The configuration files (<filename>.conf</filename>) define various configuration variables
141 that govern the Yocto Project build process.
142 These files fall into several areas that define machine configuration options,
143 distribution configuration options, compiler tuning options, general common configuration
144 options and user configuration options (<filename>local.conf</filename>, which is found
145 in the Yocto Project files build directory).
146 </para>
147 </section>
148</section>
149
150
151<section id='usingpoky-build'> 10<section id='usingpoky-build'>
152 <title>Running a Build</title> 11 <title>Running a Build</title>
153 12
@@ -221,83 +80,6 @@
221 due to some components not being rebuilt. 80 due to some components not being rebuilt.
222 </para> 81 </para>
223 </section> 82 </section>
224
225 <section id="considering-shared-state-cache">
226 <title>Considering Shared State Cache</title>
227
228 <para>
229 By design, the Yocto Project builds everything from scratch unless it can determine that
230 a given task's inputs have not changed.
231 While building from scratch ensures that everything is current, it does also
232 mean that a lot of time could be spent rebuiding things that don't necessarily need built.
233 </para>
234
235 <para>
236 The Yocto Project build process uses a shared state caching scheme to avoid having to
237 rebuild software when it is not necessary.
238 Because the build time for a Yocto image can be significant, it is helpful to try and
239 determine what really needs built and what can be skipped given a particular project's
240 build process.
241 </para>
242
243 <para>
244 The scheme that the Yocto Project uses involves checksum generation and comparison for
245 a task's inputs.
246 The scheme also employs an area of memory called the shared state cache that is
247 pointed to by the <filename>SSTATE_DIR</filename> variable.
248 This area contains task output generated from a previous build.
249 If a given task's checksum matches the checksum of a previous build for the same
250 task, the build process uses the state of the cache rather than rerunning that
251 task.
252 </para>
253
254 <para>
255 The previous paragraph is a simplistic explanation of how the build process
256 uses checksums and shared state memory cache to avoide building tasks that
257 don't need built.
258 If you want a bit more explanation on the topic,
259 see "<ulink url='https://lists.yoctoproject.org/pipermail/yocto/2011-March/003366.html'>Shared
260 State - What does it mean and why should I care?</ulink>" from the Yocto
261 Project discussion archives.
262 </para>
263
264 <para>
265 As with all schemes, this one has some drawbacks.
266 It is possible that you could make implicit changes that are not factored into the checksum
267 calculation, but do affect a task's output.
268 A good example is perhaps when a tool changes its output.
269 Let's say that the output of <filename>rpmdeps</filename> needed to change.
270 The result of the change should be that all the "package", "package_write_rpm",
271 and "package_deploy-rpm" sstate-cache items would become invalid.
272 But, because this is a change that is external to the code and therefore implicit,
273 the associated sstate-cache items do not become invalidated.
274 In this case, the build process would use the cache items rather than running the
275 task again.
276 Obviously, these types of implicit changes can cause problems.
277 </para>
278
279 <para>
280 To avoid these problems during the build, you need to understand the effects of any
281 change you make.
282 Note that any changes you make directly to a function automatically are factored into
283 the checksum calculation and thus, will invalidate the associated area of sstate cache.
284 You need to be aware of any implicit changes that are not obvious changes to the
285 code and could affect the output of a given task.
286 Once you are aware of such a change, you can take steps to invalidate the cache
287 and force the task to run.
288 The step to take is as simple as changing a function's comments in the source code.
289 For example, to invalidate package sstate files, change the comment statments
290 of <filename>do_package</filename> or one of the functions it calls.
291 The change is purely cosmetic, but it causes the checksum to be recalculated and
292 forces the task to be run again.
293 </para>
294
295 <note>
296 For an example of a commit that makes a cosmetic change to invalidate an sstate,
297 see this
298 <ulink url='http://git.yoctoproject.org/cgit.cgi/poky/commit/meta/classes/package.bbclass?id=737f8bbb4f27b4837047cb9b4fbfe01dfde36d54'>commit</ulink>.
299 </note>
300 </section>
301</section> 83</section>
302 84
303<section id='usingpoky-install'> 85<section id='usingpoky-install'>