summaryrefslogtreecommitdiffstats
path: root/documentation/poky-ref-manual/usingpoky.xml
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2011-08-18 07:52:05 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-08-23 18:47:01 -0700
commit295b855fc916628ca9f2d9ef68d5aa6832cb569f (patch)
treea51bff8224fa7a13a274390b50b12077bcc3921a /documentation/poky-ref-manual/usingpoky.xml
parent00d483d65a54b210b581b17196ea37b021eb2623 (diff)
downloadpoky-295b855fc916628ca9f2d9ef68d5aa6832cb569f.tar.gz
documentation/poky-ref-manual/usingpoky.xml: re-write for Yocto
General re-write to make the chapter Yocto Project friendly. Weeded out the references to "Poky." (From yocto-docs rev: ac4fc6082f458e5ee60962693ee332bbf1e3c1a9) 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.xml247
1 files changed, 143 insertions, 104 deletions
diff --git a/documentation/poky-ref-manual/usingpoky.xml b/documentation/poky-ref-manual/usingpoky.xml
index b07ec70fac..ed30d8df51 100644
--- a/documentation/poky-ref-manual/usingpoky.xml
+++ b/documentation/poky-ref-manual/usingpoky.xml
@@ -4,16 +4,17 @@
4<title>Using Poky</title> 4<title>Using Poky</title>
5 5
6 <para> 6 <para>
7 This section gives an overview of the components that make up Poky 7 This section gives an overview of the components that make up the Yocto Project
8 followed by information about running poky builds and dealing with any 8 followed by information about Yocto Project builds and dealing with any
9 problems that may arise. 9 problems that might arise.
10 </para> 10 </para>
11 11
12<section id='usingpoky-components'> 12<section id='usingpoky-components'>
13 <title>Poky Overview</title> 13 <title>Poky Overview</title>
14 14
15 <para> 15 <para>
16 The BitBake task executor together with various types of configuration files form the core of Poky. 16 The BitBake task executor together with various types of configuration files form the
17 Yocto Project core.
17 This section overviews the BitBake task executor and the 18 This section overviews the BitBake task executor and the
18 configuration files by describing what they are used for and they they interact. 19 configuration files by describing what they are used for and they they interact.
19 </para> 20 </para>
@@ -28,6 +29,11 @@
28 <listitem><para>Configuration Data: Defines machine-specific settings, policy decisions, etc. 29 <listitem><para>Configuration Data: Defines machine-specific settings, policy decisions, etc.
29 Configuration data acts a the glue to bind everything together.</para></listitem> 30 Configuration data acts a the glue to bind everything together.</para></listitem>
30 </itemizedlist> 31 </itemizedlist>
32 For more information on data, see the
33 <ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html#yocto-project-terms'>
34 Yocto Project Terms</ulink> section in
35 <ulink url='http://www.yoctoproject.org/docs/1.1/dev-manual/dev-manual.html'>
36 The Yocto Project Development Manual</ulink>.
31 </para> 37 </para>
32 38
33 <para> 39 <para>
@@ -46,16 +52,19 @@
46 <title>BitBake</title> 52 <title>BitBake</title>
47 53
48 <para> 54 <para>
49 BitBake is the tool at the heart of Poky and is responsible 55 BitBake is the tool at the heart of the Yocto Project and is responsible
50 for parsing the metadata, generating a list of tasks from it 56 for parsing the metadata, generating a list of tasks from it,
51 and then executing them. To see a list of the options BitBake 57 and then executing those tasks.
52 supports look at 'bitbake --help'. 58 To see a list of the options BitBake supports, use the following help command:
59 <literallayout class='monospaced'>
60 $ bitbake --help
61 </literallayout>
53 </para> 62 </para>
54 63
55 <para> 64 <para>
56 The most common usage for BitBake is <filename>bitbake &lt;packagename&gt;</filename>, where 65 The most common usage for BitBake is <filename>bitbake &lt;packagename&gt;</filename>, where
57 packagename is the name of the package you want to build (referred to as the 'target' 66 <filename>packagename</filename> is the name of the package you want to build
58 in this manual). 67 (referred to as the "target" in this manual).
59 The target often equates to the first part of a <filename>.bb</filename> filename. 68 The target often equates to the first part of a <filename>.bb</filename> filename.
60 So, to run the <filename>matchbox-desktop_1.2.3.bb</filename> file, you 69 So, to run the <filename>matchbox-desktop_1.2.3.bb</filename> file, you
61 might type the following: 70 might type the following:
@@ -64,43 +73,46 @@
64 </literallayout> 73 </literallayout>
65 Several different versions of <filename>matchbox-desktop</filename> might exist. 74 Several different versions of <filename>matchbox-desktop</filename> might exist.
66 BitBake chooses the one selected by the distribution configuration. 75 BitBake chooses the one selected by the distribution configuration.
67 You can get more details about how BitBake chooses between different versions 76 You can get more details about how BitBake chooses between different
68 and providers in the <link linkend='ref-bitbake-providers'> 77 target versions and providers in the
69 'Preferences and Providers'</link> section. 78 <link linkend='ref-bitbake-providers'>Preferences and Providers</link> section.
70 </para> 79 </para>
80
71 <para> 81 <para>
72 BitBake also tries to execute any dependent tasks first. 82 BitBake also tries to execute any dependent tasks first.
73 So for example, before building <filename>matchbox-desktop</filename> BitBake 83 So for example, before building <filename>matchbox-desktop</filename>, BitBake
74 would build a cross compiler and glibc if they had not already been built. 84 would build a cross compiler and <filename>glibc</filename> if they had not already
85 been built.
75 </para> 86 </para>
87
76 <para> 88 <para>
77 A useful BitBake option to consider is the <filename>-k</filename> or 89 A useful BitBake option to consider is the <filename>-k</filename> or
78 <filename>--continue</filename> option. 90 <filename>--continue</filename> option.
79 This option instructs BitBake to try and continue processing the job as much 91 This option instructs BitBake to try and continue processing the job as much
80 as possible even after encountering an error. When an error occurs the target that 92 as possible even after encountering an error.
81 failed and those that depend on it cannot be remade. However, when you use this 93 When an error occurs, the target that
82 option other dependencies can still be processed. 94 failed and those that depend on it cannot be remade.
95 However, when you use this option other dependencies can still be processed.
83 </para> 96 </para>
84
85 </section> 97 </section>
86 98
87 <section id='usingpoky-components-metadata'> 99 <section id='usingpoky-components-metadata'>
88 <title>Metadata (Recipes)</title> 100 <title>Metadata (Recipes)</title>
89 101
90 <para> 102 <para>
91 The <filename>.bb</filename> files are usually referred to as 'recipes'. 103 The <filename>.bb</filename> files are usually referred to as "recipes."
92 In general, a recipe contains information about a single piece of software such 104 In general, a recipe contains information about a single piece of software.
93 as from where to download the source patches (if any are needed), which special 105 The information includes the location from which to download the source patches
94 configuration options to apply, how to compile the source files, and how to 106 (if any are needed), which special configuration options to apply,
95 package the compiled output. 107 how to compile the source files, and how to package the compiled output.
96 </para> 108 </para>
97 109
98 <para> 110 <para>
99 The term 'package' can also be used to describe recipes. 111 The term "package" can also be used to describe recipes.
100 However, since the same word is used for the packaged output from Poky (i.e. .ipk or .deb 112 However, since the same word is used for the packaged output from the Yocto
101 files), this document avoids it. 113 Project (i.e. <filename>.ipk</filename> or <filename>.deb</filename> files),
114 this document avoids using the term "package" to refer to recipes.
102 </para> 115 </para>
103
104 </section> 116 </section>
105 117
106 <section id='usingpoky-components-classes'> 118 <section id='usingpoky-components-classes'>
@@ -109,8 +121,8 @@
109 <para> 121 <para>
110 Class files (<filename>.bbclass</filename>) contain information that is useful to share 122 Class files (<filename>.bbclass</filename>) contain information that is useful to share
111 between metadata files. 123 between metadata files.
112 An example is the autotools class, which contains 124 An example is the Autotools class, which contains
113 common settings for any application that autotools uses. 125 common settings for any application that Autotools uses.
114 The <link linkend='ref-classes'>Reference: Classes</link> appendix provides details 126 The <link linkend='ref-classes'>Reference: Classes</link> appendix provides details
115 about common classes and how to use them. 127 about common classes and how to use them.
116 </para> 128 </para>
@@ -121,13 +133,13 @@
121 133
122 <para> 134 <para>
123 The configuration files (<filename>.conf</filename>) define various configuration variables 135 The configuration files (<filename>.conf</filename>) define various configuration variables
124 that govern what Poky does. 136 that govern the Yocto Project build process.
125 These files are split into several areas that define machine configuration options, 137 These files fall into several areas that define machine configuration options,
126 distribution configuration options, compiler tuning options, general common configuration 138 distribution configuration options, compiler tuning options, general common configuration
127 options and user configuration options (<filename>local.conf</filename>). 139 options and user configuration options (<filename>local.conf</filename>, which is found
140 in the Yocto Project files build directory).
128 </para> 141 </para>
129 </section> 142 </section>
130
131</section> 143</section>
132 144
133 145
@@ -135,47 +147,64 @@
135 <title>Running a Build</title> 147 <title>Running a Build</title>
136 148
137 <para> 149 <para>
138 First the Poky build environment needs to be set up using the following command: 150 You can find information on how to build an image using the Yocto Project in the
151 <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html#building-image'>
152 Building an Image</ulink> section of the
153 <ulink url='http://www.yoctoproject.org/docs/1.1/yocto-project-qs/yocto-project-qs.html'>
154 Yocto Project Quick Start</ulink>.
155 This section provides a quick overview.
139 </para> 156 </para>
157
140 <para> 158 <para>
159 The first thing you need to do is set up the Yocto Project build environment by sourcing
160 the environment setup script as follows:
141 <literallayout class='monospaced'> 161 <literallayout class='monospaced'>
142 $ source oe-init-build-env [build_dir] 162 $ source oe-init-build-env [build_dir];
143 </literallayout> 163 </literallayout>
144 </para> 164 </para>
165
145 <para> 166 <para>
146 The build_dir is the dir containing all the build's object files. The default 167 The <filename>build_dir</filename> is optional and specifies the directory Yocto Project
147 build dir is poky-dir/build. A different build_dir can be used for each of the targets. 168 uses for the build.
148 For example, ~/build/x86 for a qemux86 target, and ~/build/arm for a qemuarm target. 169 If you do not specify a build directory it defaults to <filename>build</filename>
149 Please refer to <link linkend="structure-core-script">oe-init-build-env</link> 170 in the Yocto Project files directory structure.
150 for more detailed information. 171 A common practice is to use a different build directory for different targets.
151 </para> 172 For example, <filename>~/build/x86</filename> for a <filename>qemux86</filename>
152 <para> 173 target, and <filename>~/build/arm</filename> for a <filename>qemuarm</filename> target.
153 Once the Poky build environment is set up, a target can be built using: 174 See <link linkend="structure-core-script">oe-init-build-env</link>
175 for more information on this script.
154 </para> 176 </para>
177
155 <para> 178 <para>
179 Once the Yocto Project build environment is set up, you can build a target using:
156 <literallayout class='monospaced'> 180 <literallayout class='monospaced'>
157 $ bitbake &lt;target&gt; 181 $ bitbake &lt;target&gt;
158 </literallayout> 182 </literallayout>
159 </para> 183 </para>
184
160 <para> 185 <para>
161 The target is the name of the recipe you want to build. 186 The <filename>target</filename> is the name of the recipe you want to build.
162 Common targets are the images in <filename>meta/recipes-core/images</filename>, 187 Common targets are the images in <filename>meta/recipes-core/images</filename>,
163 <filename>/meta/recipes-sato/images</filename>, etc. 188 <filename>/meta/recipes-sato/images</filename>, etc. all found in the Yocto Project
189 files.
164 Or, the target can be the name of a recipe for a specific piece of software such as 190 Or, the target can be the name of a recipe for a specific piece of software such as
165 <application>busybox</application>. 191 <application>busybox</application>.
166 For more details about the standard images available, see the 192 For more details about the images Yocto Project supports, see the
167 <link linkend="ref-images">'Reference: Images'</link> appendix. 193 <link linkend="ref-images">'Reference: Images'</link> appendix.
168 </para> 194 </para>
195
169 <note> 196 <note>
170 Building an image without GNU Public License Version 3 (GPLv3) components is 197 Building an image without GNU Public License Version 3 (GPLv3) components is
171 only supported for minimal and base images. 198 only supported for minimal and base images.
172 See <link linkend='ref-images'>'Reference: Images'</link> for more information. 199 See <link linkend='ref-images'>'Reference: Images'</link> for more information.
173 </note> 200 </note>
201
174 <note> 202 <note>
175 When building an image using GPL components you need to maintain your original 203 When building an image using GPL components, you need to maintain your original
176 settings and not switch back and forth applying different versions of the GNU 204 settings and not switch back and forth applying different versions of the GNU
177 Public License. If you rebuild using different versions of GPL you can get 205 Public License.
178 dependency errors due to some components not being rebuilt. 206 If you rebuild using different versions of GPL, dependency errors might occur
207 due to some components not being rebuilt.
179 </note> 208 </note>
180</section> 209</section>
181 210
@@ -183,17 +212,18 @@
183 <title>Installing and Using the Result</title> 212 <title>Installing and Using the Result</title>
184 213
185 <para> 214 <para>
186 Once an image has been built it often needs to be installed. 215 Once an image has been built, it often needs to be installed.
187 The images/kernels built by Poky are placed in the 216 The images and kernels built by the Yocto Project are placed in the build directory in
188 <filename class="directory">tmp/deploy/images</filename> directory. 217 <filename class="directory">tmp/deploy/images</filename>.
189 Running qemux86 and qemuarm images is described in the 218 For information on how to run pre-built images such as <filename>qemux86</filename>
190 'Using Pre-Built Binaries and QEMU' section of the Yocto Project Quick Start. 219 and <filename>qemuarm</filename>, see the
191 See <ulink url="http://www.yoctoproject.org//docs/yocto-quick-start/yocto-project-qs.html"/> 220 <ulink url='http://www.yoctoproject.org//docs/yocto-quick-start/yocto-project-qs.html#using-pre-built'>
192 for the guide. 221 Using Pre-Built Binaries and QEMU</ulink> section in the
222 <ulink url='http://www.yoctoproject.org//docs/yocto-quick-start/yocto-project-qs.html'>
223 Yocto Project Quick Start</ulink>.
193 For information about how to install these images, see the documentation for your 224 For information about how to install these images, see the documentation for your
194 particular board/machine. 225 particular board/machine.
195 </para> 226 </para>
196
197</section> 227</section>
198 228
199<section id='usingpoky-debugging'> 229<section id='usingpoky-debugging'>
@@ -213,15 +243,17 @@
213 <section id='usingpoky-debugging-taskfailures'> 243 <section id='usingpoky-debugging-taskfailures'>
214 <title>Task Failures</title> 244 <title>Task Failures</title>
215 245
216 <para>The log file for shell tasks is available in <filename>${WORKDIR}/temp/log.do_taskname.pid</filename>. 246 <para>The log file for shell tasks is available in
217 For example, the "compile" task of busybox 1.01 on the ARM spitz machine might be 247 <filename>${WORKDIR}/temp/log.do_taskname.pid</filename>.
248 For example, the <filename>compile</filename> task of busybox 1.01 on the ARM spitz
249 machine might be
218 <filename>tmp/work/armv5te-poky-linux-gnueabi/busybox-1.01/temp/log.do_compile.1234</filename>. 250 <filename>tmp/work/armv5te-poky-linux-gnueabi/busybox-1.01/temp/log.do_compile.1234</filename>.
219 To see what BitBake runs to generate that log, look at the corresponding 251 To see what BitBake runs to generate that log, look at the corresponding
220 <filename>run.do_taskname.pid </filename> file located in the same directory. 252 <filename>run.do_taskname.pid </filename> file located in the same directory.
221 </para> 253 </para>
222 254
223 <para> 255 <para>
224 Presently, the output from python tasks is sent directly to the console. 256 Presently, the output from Python tasks is sent directly to the console.
225 </para> 257 </para>
226 </section> 258 </section>
227 259
@@ -230,28 +262,33 @@
230 262
231 <para> 263 <para>
232 Any given package consists of a set of tasks. 264 Any given package consists of a set of tasks.
233 In most cases the series is: fetch, unpack, patch, configure, 265 The standard BitBake behavior in most cases is: <filename>fetch</filename>,
234 compile, install, package, package_write and build. 266 <filename>unpack</filename>,
235 The default task is "build" and any tasks on which it depends build first - hence, 267 <filename>patch</filename>, <filename>configure</filename>,
236 the standard BitBake behaviour. 268 <filename>compile</filename>, <filename>install</filename>, <filename>package</filename>,
237 Some tasks exist, such as devshell, that are not part of the default build chain. 269 <filename>package_write</filename>, and <filename>build</filename>.
238 If you wish to run a task that is not part of the default build chain you can use the 270 The default task is <filename>build</filename> and any tasks on which it depends
239 "-c" option in BitBake as follows: 271 build first.
272 Some tasks exist, such as <filename>devshell</filename>, that are not part of the
273 default build chain.
274 If you wish to run a task that is not part of the default build chain, you can use the
275 <filename>-c</filename> option in BitBake as follows:
240 <literallayout class='monospaced'> 276 <literallayout class='monospaced'>
241 $ bitbake matchbox-desktop -c devshell 277 $ bitbake matchbox-desktop -c devshell
242 </literallayout> 278 </literallayout>
243 </para> 279 </para>
244 280
245 <para> 281 <para>
246 If you wish to rerun a task use the force option "-f". 282 If you wish to rerun a task, use the <filename>-f</filename> force option.
247 For example, the following sequence forces recompilation after changing files in the 283 For example, the following sequence forces recompilation after changing files in the
248 working directory. 284 working directory.
249 </para>
250
251 <para>
252 <literallayout class='monospaced'> 285 <literallayout class='monospaced'>
253 $ bitbake matchbox-desktop 286 $ bitbake matchbox-desktop
254 [make some changes to the source code in the WORKDIR] 287 .
288 .
289 [make some changes to the source code in the working directory]
290 .
291 .
255 $ bitbake matchbox-desktop -c compile -f 292 $ bitbake matchbox-desktop -c compile -f
256 $ bitbake matchbox-desktop 293 $ bitbake matchbox-desktop
257 </literallayout> 294 </literallayout>
@@ -259,14 +296,14 @@
259 296
260 <para> 297 <para>
261 This sequence first builds <filename>matchbox-desktop</filename> and then recompiles it. 298 This sequence first builds <filename>matchbox-desktop</filename> and then recompiles it.
262 The last command reruns all tasks, basically the packaging tasks, after the compile. 299 The last command reruns all tasks (basically the packaging tasks) after the compile.
263 BitBake recognizes that the "compile" task was rerun and therefore understands that the other 300 BitBake recognizes that the <filename>compile</filename> task was rerun and therefore
264 tasks also need to be run again. 301 understands that the other tasks also need to be run again.
265 </para> 302 </para>
266 303
267 <para> 304 <para>
268 You can view a list of tasks in a given package by running the "listtasks" task. 305 You can view a list of tasks in a given package by running the
269 For example: 306 <filename>listtasks</filename> task as follows:
270 <literallayout class='monospaced'> 307 <literallayout class='monospaced'>
271 $ bitbake matchbox-desktop -c 308 $ bitbake matchbox-desktop -c
272 </literallayout> 309 </literallayout>
@@ -279,12 +316,13 @@
279 316
280 <para> 317 <para>
281 Sometimes it can be hard to see why BitBake wants to build some other packages before a given 318 Sometimes it can be hard to see why BitBake wants to build some other packages before a given
282 package you've specified. 319 package you have specified.
283 The <filename>bitbake -g targetname</filename> command creates the <filename>depends.dot</filename> and 320 The <filename>bitbake -g targetname</filename> command creates the
284 <filename>task-depends.dot</filename> files in the current directory. 321 <filename>depends.dot</filename> and <filename>task-depends.dot</filename> files
322 in the current directory.
285 These files show the package and task dependencies and are useful for debugging problems. 323 These files show the package and task dependencies and are useful for debugging problems.
286 You can use the <filename>bitbake -g -u depexp targetname</filename> command to display the results 324 You can use the <filename>bitbake -g -u depexp targetname</filename> command to
287 in a more human-readable form. 325 display the results in a more human-readable form.
288 </para> 326 </para>
289 </section> 327 </section>
290 328
@@ -292,10 +330,10 @@
292 <title>General BitBake Problems</title> 330 <title>General BitBake Problems</title>
293 331
294 <para> 332 <para>
295 You can see debug output from BitBake by using the "-D" option. 333 You can see debug output from BitBake by using the <filename>-D</filename> option.
296 The debug output gives more information about what BitBake 334 The debug output gives more information about what BitBake
297 is doing and the reason behind it. 335 is doing and the reason behind it.
298 Each "-D" option you use increases the logging level. 336 Each <filename>-D</filename> option you use increases the logging level.
299 The most common usage is <filename>-DDD</filename>. 337 The most common usage is <filename>-DDD</filename>.
300 </para> 338 </para>
301 339
@@ -312,19 +350,20 @@
312 <title>Building with No Dependencies</title> 350 <title>Building with No Dependencies</title>
313 <para> 351 <para>
314 If you really want to build a specific <filename>.bb</filename> file, you can use 352 If you really want to build a specific <filename>.bb</filename> file, you can use
315 the command form <filename>bitbake -b somepath/somefile.bb</filename>. 353 the command form <filename>bitbake -b &lt;somepath/somefile.bb&gt;</filename>.
316 This command form does not check for dependencies so you should use it 354 This command form does not check for dependencies so you should use it
317 only when you know its dependencies already exist. 355 only when you know its dependencies already exist.
318 You can also specify fragments of the filename and BitBake checks for a unique match. 356 You can also specify fragments of the filename.
357 In this case, BitBake checks for a unique match.
319 </para> 358 </para>
320 </section> 359 </section>
321 360
322 <section id='usingpoky-debugging-variables'> 361 <section id='usingpoky-debugging-variables'>
323 <title>Variables</title> 362 <title>Variables</title>
324 <para> 363 <para>
325 The "-e" option dumps the resulting environment for 364 The <filename>-e</filename> option dumps the resulting environment for
326 either the configuration (no package specified) or for a 365 either the configuration (no package specified) or for a
327 specific package when specified with the "-b" option. 366 specific package when specified with the <filename>-b</filename> option.
328 </para> 367 </para>
329 </section> 368 </section>
330 369
@@ -422,23 +461,23 @@
422 461
423 <section id='usingpoky-debugging-others'> 462 <section id='usingpoky-debugging-others'>
424 <title>Other Tips</title> 463 <title>Other Tips</title>
425 <tip> 464
426 <para>
427 When adding new packages it is worth watching for undesireable items making their way
428 into compiler command lines.
429 For example, you do not want references to local system files like
430 <filename>/usr/lib/</filename> or <filename>/usr/include/</filename>.
431 </para>
432 </tip>
433 <tip>
434 <para> 465 <para>
435 If you want to remove the psplash boot splashscreen, add "psplash=false" 466 Here are some other tips that you might find useful:
436 to the kernel command line. 467 <itemizedlist>
437 Doing so prevents psplash from loading thus allowing you to see the console. 468 <listitem><para>When adding new packages, it is worth watching for
438 It is also possible to switch out of the splashscreen by 469 undesireable items making their way into compiler command lines.
439 switching the virtual console (e.g. Fn+Left or Fn+Right on a Zaurus). 470 For example, you do not want references to local system files like
471 <filename>/usr/lib/</filename> or <filename>/usr/include/</filename>.
472 </para></listitem>
473 <listitem><para>If you want to remove the psplash boot splashscreen,
474 add <filename>psplash=false</filename> to the kernel command line.
475 Doing so prevents psplash from loading and thus allows you to see the console.
476 It is also possible to switch out of the splashscreen by
477 switching the virtual console (e.g. Fn+Left or Fn+Right on a Zaurus).
478 </para></listitem>
479 </itemizedlist>
440 </para> 480 </para>
441 </tip>
442 </section> 481 </section>
443</section> 482</section>
444 483