diff options
Diffstat (limited to 'bitbake/doc')
-rw-r--r-- | bitbake/doc/user-manual/user-manual-intro.xml | 230 |
1 files changed, 105 insertions, 125 deletions
diff --git a/bitbake/doc/user-manual/user-manual-intro.xml b/bitbake/doc/user-manual/user-manual-intro.xml index f013ee6f45..8ce046a340 100644 --- a/bitbake/doc/user-manual/user-manual-intro.xml +++ b/bitbake/doc/user-manual/user-manual-intro.xml | |||
@@ -2,7 +2,7 @@ | |||
2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> | 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> |
3 | 3 | ||
4 | <chapter id="user-manual-intro"> | 4 | <chapter id="user-manual-intro"> |
5 | <title>BitBake User Manual</title> | 5 | <title>Overview</title> |
6 | 6 | ||
7 | <section id="intro"> | 7 | <section id="intro"> |
8 | <title>Introduction</title> | 8 | <title>Introduction</title> |
@@ -63,7 +63,7 @@ | |||
63 | <itemizedlist> | 63 | <itemizedlist> |
64 | <listitem><para>BitBake, a generic task executor</para></listitem> | 64 | <listitem><para>BitBake, a generic task executor</para></listitem> |
65 | <listitem><para>OpenEmbedded, a metadata set utilized by | 65 | <listitem><para>OpenEmbedded, a metadata set utilized by |
66 | BitBake.</para></listitem> | 66 | BitBake</para></listitem> |
67 | </itemizedlist> | 67 | </itemizedlist> |
68 | Today, BitBake is the primary basis of the | 68 | Today, BitBake is the primary basis of the |
69 | <ulink url="http://www.openembedded.org/">OpenEmbedded</ulink> | 69 | <ulink url="http://www.openembedded.org/">OpenEmbedded</ulink> |
@@ -97,51 +97,50 @@ | |||
97 | Support running any number of tasks within a given | 97 | Support running any number of tasks within a given |
98 | package, including, but not limited to, fetching | 98 | package, including, but not limited to, fetching |
99 | upstream sources, unpacking them, patching them, | 99 | upstream sources, unpacking them, patching them, |
100 | configuring them, etc. | 100 | configuring them, and so forth. |
101 | </para></listitem> | 101 | </para></listitem> |
102 | <listitem><para> | 102 | <listitem><para> |
103 | Must be Linux distribution agnostic (both build and | 103 | Be Linux distribution agnostic for both build and |
104 | target). | 104 | target systems. |
105 | </para></listitem> | 105 | </para></listitem> |
106 | <listitem><para> | 106 | <listitem><para> |
107 | Must be architecture agnostic | 107 | Be architecture agnostic. |
108 | </para></listitem> | 108 | </para></listitem> |
109 | <listitem><para> | 109 | <listitem><para> |
110 | Must support multiple build and target operating systems | 110 | Support multiple build and target operating systems |
111 | (including Cygwin, the BSDs, etc). | 111 | (e.g. Cygwin, the BSDs, and so forth). |
112 | </para></listitem> | 112 | </para></listitem> |
113 | <listitem><para> | 113 | <listitem><para> |
114 | Must be able to be self contained, rather than tightly | 114 | Be self contained, rather than tightly |
115 | integrated into the build machine's root | 115 | integrated into the build machine's root |
116 | filesystem. | 116 | filesystem. |
117 | </para></listitem> | 117 | </para></listitem> |
118 | <listitem><para> | 118 | <listitem><para> |
119 | There must be a way to handle conditional metadata | 119 | Handle conditional metadata on the target architecture, |
120 | (on target architecture, operating system, | 120 | operating system, distribution, and machine. |
121 | distribution, machine). | ||
122 | </para></listitem> | 121 | </para></listitem> |
123 | <listitem><para> | 122 | <listitem><para> |
124 | It must be easy for the person using the tools to | 123 | Be easy to use the tools to supply local metadata and packages |
125 | supply their own local metadata and packages | 124 | against which to operate. |
126 | to operate against. | ||
127 | </para></listitem> | 125 | </para></listitem> |
128 | <listitem><para> | 126 | <listitem><para> |
129 | Must make it easy to collaborate between multiple | 127 | Be easy to use BitBake to collaborate between multiple |
130 | projects using BitBake for their builds. | 128 | projects for their builds. |
131 | </para></listitem> | 129 | </para></listitem> |
132 | <listitem><para> | 130 | <listitem><para> |
133 | Should provide an inheritance mechanism to share | 131 | Provide an inheritance mechanism that share |
134 | common metadata between many packages. | 132 | common metadata between many packages. |
135 | </para></listitem> | 133 | </para></listitem> |
136 | </itemizedlist> | 134 | </itemizedlist> |
137 | Over time it has become apparent that some further requirements | 135 | Over time it became apparent that some further requirements |
138 | were necessary: | 136 | were necessary: |
139 | <itemizedlist> | 137 | <itemizedlist> |
140 | <listitem><para> | 138 | <listitem><para> |
141 | Handle variants of a base recipe (native, sdk, multilib). | 139 | Handle variants of a base recipe (e.g. native, sdk, |
140 | and multilib). | ||
142 | </para></listitem> | 141 | </para></listitem> |
143 | <listitem><para> | 142 | <listitem><para> |
144 | Able to split metadata into layers and allow layers | 143 | Split metadata into layers and allow layers |
145 | to override each other. | 144 | to override each other. |
146 | </para></listitem> | 145 | </para></listitem> |
147 | <listitem><para> | 146 | <listitem><para> |
@@ -155,7 +154,7 @@ | |||
155 | with extensions being made to the basic functionality to | 154 | with extensions being made to the basic functionality to |
156 | reflect the additional requirements. | 155 | reflect the additional requirements. |
157 | Flexibility and power have always been the priorities. | 156 | Flexibility and power have always been the priorities. |
158 | It is highly extensible, supporting embedded Python code and | 157 | BitBake is highly extensible and supports embedded Python code and |
159 | execution of any arbitrary tasks. | 158 | execution of any arbitrary tasks. |
160 | </para> | 159 | </para> |
161 | </section> | 160 | </section> |
@@ -169,23 +168,30 @@ | |||
169 | what tasks are required to run, and executes those tasks. | 168 | what tasks are required to run, and executes those tasks. |
170 | Similar to GNU Make, BitBake controls how software is | 169 | Similar to GNU Make, BitBake controls how software is |
171 | built. | 170 | built. |
172 | GNU Make does this using "makefiles". BitBake uses | 171 | GNU Make achieves its control through "makefiles". |
173 | "recipes". | 172 | BitBake uses "recipes". |
173 | </para> | ||
174 | |||
175 | <para> | ||
174 | BitBake extends the capabilities of a simple | 176 | BitBake extends the capabilities of a simple |
175 | tool like GNU make by allowing for much more complex tasks | 177 | tool like GNU Make by allowing for much more complex tasks |
176 | to be completed, such as assembling entire embedded Linux | 178 | to be completed, such as assembling entire embedded Linux |
177 | distributions. Several concepts must be understood to be able | 179 | distributions. |
178 | to leverage the power of the tool. | 180 | </para> |
181 | |||
182 | <para> | ||
183 | The remainder of this section introduces several concepts | ||
184 | that should be understood in order to better leverage | ||
185 | the power of BitBake. | ||
179 | </para> | 186 | </para> |
180 | 187 | ||
181 | <section id='recipes'> | 188 | <section id='recipes'> |
182 | <title>Recipes</title> | 189 | <title>Recipes</title> |
183 | 190 | ||
184 | <para> | 191 | <para> |
185 | A BitBake Recipe, denoted by the file extension | 192 | BitBake Recipes, which are denoted by the file extension |
186 | <filename>.bb</filename> is the most | 193 | <filename>.bb</filename>, are the most basic metadata files. |
187 | basic metadata file. | 194 | These recipe files provide BitBake the following: |
188 | These recipe files tell BitBake the following: | ||
189 | <itemizedlist> | 195 | <itemizedlist> |
190 | <listitem><para>Descriptive information about the package</para></listitem> | 196 | <listitem><para>Descriptive information about the package</para></listitem> |
191 | <listitem><para>The version of the recipe</para></listitem> | 197 | <listitem><para>The version of the recipe</para></listitem> |
@@ -193,19 +199,21 @@ | |||
193 | <listitem><para>Where the source code resides</para></listitem> | 199 | <listitem><para>Where the source code resides</para></listitem> |
194 | <listitem><para>Whether the source code requires any patches</para></listitem> | 200 | <listitem><para>Whether the source code requires any patches</para></listitem> |
195 | <listitem><para>How to compile the source code</para></listitem> | 201 | <listitem><para>How to compile the source code</para></listitem> |
196 | <listitem><para>Where on the target machine to install the package being compiled</para></listitem> | 202 | <listitem><para>Where on the target machine to install the |
203 | package being compiled</para></listitem> | ||
197 | </itemizedlist> | 204 | </itemizedlist> |
198 | </para> | 205 | </para> |
199 | 206 | ||
200 | <para> | 207 | <para> |
201 | Within the context of BitBake, or any project utilizing BitBake | 208 | Within the context of BitBake, or any project utilizing BitBake |
202 | as it's build system, files with the <filename>.bb</filename> | 209 | as it's build system, files with the <filename>.bb</filename> |
203 | extension are referred | 210 | extension are referred to as recipes. |
204 | to as recipes. | 211 | <note> |
205 | The term "package" is also commonly used to describe recipes. | 212 | The term "package" is also commonly used to describe recipes. |
206 | However, since the same word is used to describe packaged | 213 | However, since the same word is used to describe packaged |
207 | output from a project, it is best to maintain a single | 214 | output from a project, it is best to maintain a single |
208 | descriptive term, "recipes". | 215 | descriptive term, "recipes". |
216 | </note> | ||
209 | </para> | 217 | </para> |
210 | </section> | 218 | </section> |
211 | 219 | ||
@@ -213,18 +221,18 @@ | |||
213 | <title>Configuration Files</title> | 221 | <title>Configuration Files</title> |
214 | 222 | ||
215 | <para> | 223 | <para> |
216 | Configuration files, denoted by the | 224 | Configuration files, which are denoted by the |
217 | <filename>.conf</filename> extension define | 225 | <filename>.conf</filename> extension, define |
218 | various configuration variables that govern the project build | 226 | various configuration variables that govern the project's build |
219 | process. | 227 | process. |
220 | These files fall into several areas that define | 228 | These files fall into several areas that define |
221 | machine configuration options, distribution configuration | 229 | machine configuration options, distribution configuration |
222 | options, compiler tuning options, general common | 230 | options, compiler tuning options, general common |
223 | configuration options and user configuration options. | 231 | configuration options, and user configuration options. |
224 | The main configuration file is the sample | 232 | The main configuration file is the sample |
225 | <filename>bitbake.conf</filename> file, | 233 | <filename>bitbake.conf</filename> file, which is |
226 | located within the bitbake source tree | 234 | located within the BitBake source tree |
227 | <filename>/conf</filename> directory. | 235 | <filename>conf</filename> directory. |
228 | </para> | 236 | </para> |
229 | </section> | 237 | </section> |
230 | 238 | ||
@@ -232,20 +240,21 @@ | |||
232 | <title>Classes</title> | 240 | <title>Classes</title> |
233 | 241 | ||
234 | <para> | 242 | <para> |
235 | Class files, denoted by the | 243 | Class files, which are denoted by the |
236 | <filename>.bbclass</filename> extension contain | 244 | <filename>.bbclass</filename> extension, contain |
237 | information that is useful to share between metadata files. | 245 | information that is useful to share between metadata files. |
238 | The BitBake source tree comes with one class metadata file | 246 | The BitBake source tree currently comes with one class metadata file |
239 | currently, called <filename>base.bbclass</filename> and it is | 247 | called <filename>base.bbclass</filename>. |
240 | found in the <filename>/classes</filename> directory. | 248 | You can find this file in the |
249 | <filename>classes</filename> directory. | ||
241 | The <filename>base.bbclass</filename> is special in that any | 250 | The <filename>base.bbclass</filename> is special in that any |
242 | new classes that a developer adds to a project is required to | 251 | new classes that a developer adds to a project are required to |
243 | inherit it automatically. | 252 | inherit <filename>base.bbclass</filename> automatically. |
244 | This class contains definitions for standard basic tasks such | 253 | This class contains definitions for standard basic tasks such |
245 | as fetching, unpacking, configuring (empty by default), | 254 | as fetching, unpacking, configuring (empty by default), |
246 | compiling (runs any Makefile present), installing (empty by | 255 | compiling (runs any Makefile present), installing (empty by |
247 | default) and packaging (empty by default). | 256 | default) and packaging (empty by default). |
248 | These classes are often overridden or extended by other classes | 257 | These tasks are often overridden or extended by other classes |
249 | added during the project development process. | 258 | added during the project development process. |
250 | </para> | 259 | </para> |
251 | </section> | 260 | </section> |
@@ -255,82 +264,53 @@ | |||
255 | <title>Obtaining BitBake</title> | 264 | <title>Obtaining BitBake</title> |
256 | 265 | ||
257 | <para> | 266 | <para> |
258 | There are several ways to obtain BitBake. | 267 | You can obtain BitBake several different ways: |
259 | These include installing using your Linux distribution's | 268 | <itemizedlist> |
260 | package management system (not recommended), downloading | 269 | <listitem><para><emphasis>Installation using your Distribution |
261 | a snapshot from the BitBake source | 270 | Package Management System:</emphasis> |
262 | code repository, or using Git to clone the BitBake source | 271 | This method is not |
263 | code repository. | 272 | recommended because the BitBake version, in most |
264 | The recommended method for daily BitBake use is to download | 273 | cases provided by your distribution, is several |
265 | a stable release from the BitBake source code repository. | 274 | releases behind a snapshot of the BitBake repository. |
266 | Using your distribution's version as provided in the package | 275 | </para></listitem> |
267 | management system is generally not | 276 | <listitem><para><emphasis>Taking a snapshot of BitBake:</emphasis> |
268 | recommended as in most cases, such as with the Ubuntu and | 277 | Downloading a snapshot of BitBake from the |
269 | Fedora distributions, the version provided is several releases | 278 | source code repository is the recommended method |
270 | behind the repository snapshot version and is missing | 279 | as you are assured of having the most recent stable |
271 | important bug fixes and enhancements. Similarly, daily use | 280 | BitBake release.</para> |
272 | of the latest clone of the Git repository is not recommended | 281 | <para>The following example downloads a snapshot of |
273 | as it can be unstable. | 282 | BitBake version 1.17.0: |
274 | However, the Git repository clone will provide the User | 283 | <literallayout class='monospaced'> |
275 | with the absolute latest version of BitBake. | ||
276 | </para> | ||
277 | </section> | ||
278 | |||
279 | <section id='downloading-a-snapshot-from-the-bitbake-source-tree'> | ||
280 | <title>Downloading a Snapshot from the BitBake Source Tree</title> | ||
281 | |||
282 | <para> | ||
283 | The recommended method for obtaining and using BitBake on | ||
284 | a daily basis is to download the most | ||
285 | recent stable snapshot from the Git source code repository | ||
286 | as follows: | ||
287 | <literallayout class='monospaced'> | ||
288 | $ wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz | 284 | $ wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz |
289 | $ tar zxpvf bitbake-1.17.0.tar.gz | 285 | $ tar zxpvf bitbake-1.17.0.tar.gz |
290 | </literallayout> | 286 | </literallayout> |
291 | After extraction of the tarball using the tar utility, | 287 | After extraction of the tarball using the tar utility, |
292 | you will have a directory entitled | 288 | you have a directory entitled |
293 | <filename>bitbake-1.17.0</filename>. | 289 | <filename>bitbake-1.17.0</filename>. |
294 | </para> | 290 | </para></listitem> |
295 | </section> | 291 | <listitem><para><emphasis>Cloning BitBake:</emphasis> |
296 | 292 | Using Git to clone the BitBake source code repository | |
297 | <section id='cloning-the-bitbake-git-repository'> | 293 | is also a recommended method when you need the absolute latest |
298 | <title>Cloning the BitBake Git Repository</title> | 294 | BitBake source. |
299 | 295 | Realize that using this method could expose you to areas of | |
300 | <para> | 296 | BitBake that are under development.</para> |
301 | To obtain the latest BitBake source code from the | 297 | <para>Here is an example: |
302 | BitBake Git repository: | 298 | <literallayout class='monospaced'> |
303 | <literallayout class='monospaced'> | ||
304 | $ git clone git://git.openembedded.org/bitbake | 299 | $ git clone git://git.openembedded.org/bitbake |
305 | </literallayout> | 300 | </literallayout> |
306 | This will clone the BitBake Git repository into a | 301 | This command clones the BitBake Git repository into a |
307 | directory called <filename>bitbake</filename>. | 302 | directory called <filename>bitbake</filename>. |
308 | Alternatively, you can | 303 | Alternatively, you can |
309 | designate a directory after the git clone command | 304 | designate a directory after the |
310 | if you'd prefer to call the new directory something | 305 | <filename>git clone</filename> command |
311 | other than <filename>bitbake</filename>. | 306 | if you want to call the new directory something |
312 | For example: | 307 | other than <filename>bitbake</filename>. |
313 | <literallayout class='monospaced'> | 308 | Here is an example that names the directory |
309 | <filename>bbdev</filename>: | ||
310 | <literallayout class='monospaced'> | ||
314 | $ git clone git://git.openembedded.org/bitbake bbdev | 311 | $ git clone git://git.openembedded.org/bitbake bbdev |
315 | </literallayout> | 312 | </literallayout></para></listitem> |
316 | This would clone the Git repository into a local directory | 313 | </itemizedlist> |
317 | called <filename>bbdev</filename>. | ||
318 | Please note that although this method of obtaining the | ||
319 | source code will provide the absolute latest version, | ||
320 | it is under active development and may not be as stable | ||
321 | as a released snapshot. | ||
322 | </para> | ||
323 | </section> | ||
324 | |||
325 | <section id='summary'> | ||
326 | <title>Summary</title> | ||
327 | |||
328 | <para> | ||
329 | At this point you should have a general idea of the concepts | ||
330 | that BitBake was built on and how the | ||
331 | source code is organized. | ||
332 | You should have a working version of BitBake installed | ||
333 | and understand how to setup your environment. | ||
334 | </para> | 314 | </para> |
335 | </section> | 315 | </section> |
336 | </chapter> | 316 | </chapter> |