diff options
Diffstat (limited to 'documentation/poky-ref-manual')
-rw-r--r-- | documentation/poky-ref-manual/ref-classes.xml | 376 |
1 files changed, 191 insertions, 185 deletions
diff --git a/documentation/poky-ref-manual/ref-classes.xml b/documentation/poky-ref-manual/ref-classes.xml index 8eb94c268b..d054df1204 100644 --- a/documentation/poky-ref-manual/ref-classes.xml +++ b/documentation/poky-ref-manual/ref-classes.xml | |||
@@ -6,21 +6,21 @@ | |||
6 | 6 | ||
7 | <para> | 7 | <para> |
8 | Class files are used to abstract common functionality and share it amongst multiple | 8 | Class files are used to abstract common functionality and share it amongst multiple |
9 | <filename>.bb</filename> files. Any metadata usually found in a | 9 | <filename>.bb</filename> files. |
10 | <filename>.bb</filename> file can also be placed in a class | 10 | Any metadata usually found in a <filename>.bb</filename> file can also be placed in a class |
11 | file. Class files are identified by the extension | 11 | file. |
12 | <filename>.bbclass</filename> and are usually placed | 12 | Class files are identified by the extension <filename>.bbclass</filename> and are usually placed |
13 | in a <filename>classes/</filename> directory beneath the | 13 | in a <filename>classes/</filename> directory beneath the |
14 | <filename>meta*/</filename> directory or the directory pointed | 14 | <filename>meta*/</filename> directory found in the Yocto Project file's area |
15 | by BUILDDIR (e.g. <filename>build/</filename>)in the same way as | 15 | Class files can also be pointed to by BUILDDIR (e.g. <filename>build/</filename>)in the same way as |
16 | <filename>.conf</filename> files in the <filename | 16 | <filename>.conf</filename> files in the <filename>conf</filename> directory. |
17 | class="directory">conf</filename> directory. Class files are searched for | 17 | Class files are searched for in <filename>BBPATH</filename> |
18 | in BBPATH in the same was as <filename>.conf</filename> files too. | 18 | using the same method by which <filename>.conf</filename> files are searched. |
19 | </para> | 19 | </para> |
20 | 20 | ||
21 | <para> | 21 | <para> |
22 | In most cases inheriting the class is enough to enable its features, although | 22 | In most cases inheriting the class is enough to enable its features, although |
23 | for some classes you may need to set variables and/or override some of the | 23 | for some classes you might need to set variables or override some of the |
24 | default behaviour. | 24 | default behaviour. |
25 | </para> | 25 | </para> |
26 | 26 | ||
@@ -29,13 +29,14 @@ | |||
29 | 29 | ||
30 | <para> | 30 | <para> |
31 | The base class is special in that every <filename>.bb</filename> | 31 | The base class is special in that every <filename>.bb</filename> |
32 | file inherits it automatically. It contains definitions of standard basic | 32 | file inherits it automatically. |
33 | This class contains definitions for standard basic | ||
33 | tasks such as fetching, unpacking, configuring (empty by default), compiling | 34 | tasks such as fetching, unpacking, configuring (empty by default), compiling |
34 | (runs any Makefile present), installing (empty by default) and packaging | 35 | (runs any <filename>Makefile</filename> present), installing (empty by default) and packaging |
35 | (empty by default). These are often overridden or extended by other classes | 36 | (empty by default). |
36 | such as <filename>autotools.bbclass</filename> or | 37 | These classes are often overridden or extended by other classes |
37 | <filename>package.bbclass</filename>. The class also contains some commonly | 38 | such as <filename>autotools.bbclass</filename> or <filename>package.bbclass</filename>. |
38 | used functions such as <filename>oe_runmake</filename>. | 39 | The class also contains some commonly used functions such as <filename>oe_runmake</filename>. |
39 | </para> | 40 | </para> |
40 | </section> | 41 | </section> |
41 | 42 | ||
@@ -43,84 +44,71 @@ | |||
43 | <title>Autotooled Packages - <filename>autotools.bbclass</filename></title> | 44 | <title>Autotooled Packages - <filename>autotools.bbclass</filename></title> |
44 | 45 | ||
45 | <para> | 46 | <para> |
46 | Autotools (autoconf, automake, libtool) bring standardization. | 47 | Autotools (<filename>autoconf</filename>, <filename>automake</filename>, |
48 | and <filename>libtool</filename>) bring standardization. | ||
47 | This class defines a set of tasks (configure, compile etc.) that | 49 | This class defines a set of tasks (configure, compile etc.) that |
48 | work for all autotooled packages. | 50 | work for all Autotooled packages. |
49 | It should usually be enough to define a few standard variables as documented in the | 51 | It should usually be enough to define a few standard variables as documented in the |
50 | <link linkend='usingpoky-extend-addpkg-autotools'>simple autotools | 52 | <link linkend='usingpoky-extend-addpkg-autotools'>Autotooled Package</link> section |
51 | example</link> section and then simply "inherit autotools". | 53 | and then simply <filename>inherit autotools</filename>. |
52 | This class can also work with software that emulates autotools. | 54 | This class can also work with software that emulates Autotools. |
53 | </para> | 55 | </para> |
54 | 56 | ||
55 | <para> | 57 | <para> |
56 | It's useful to have some idea of how the tasks defined by this class work | 58 | It's useful to have some idea of how the tasks defined by this class work |
57 | and what they do behind the scenes. | 59 | and what they do behind the scenes. |
60 | <itemizedlist> | ||
61 | <listitem><para><filename>do_configure</filename> ‐ regenerates the | ||
62 | configure script (using <filename>autoreconf</filename>) and then launches it | ||
63 | with a standard set of arguments used during cross-compilation. | ||
64 | You can pass additional parameters to <filename>configure</filename> through the | ||
65 | <filename><link linkend='var-EXTRA_OECONF'>EXTRA_OECONF</link></filename> variable. | ||
66 | </para></listitem> | ||
67 | <listitem><para><filename>do_compile</filename> ‐ runs <filename>make</filename> with | ||
68 | arguments that specify the compiler and linker. | ||
69 | You can pass additional arguments through | ||
70 | the <filename><link linkend='var-EXTRA_OEMAKE'>EXTRA_OEMAKE</link></filename> variable. | ||
71 | </para></listitem> | ||
72 | <listitem><para><filename>do_install</filename> ‐ runs <filename>make install</filename> | ||
73 | and passes a DESTDIR option, which takes its value from the standard | ||
74 | <filename><link linkend='var-DESTDIR'>DESTDIR</link></filename> variable. | ||
75 | </para></listitem> | ||
76 | </itemizedlist> | ||
58 | </para> | 77 | </para> |
59 | |||
60 | <itemizedlist> | ||
61 | <listitem> | ||
62 | <para> | ||
63 | <filename>do_configure</filename> ‐ regenerates the configure script (using autoreconf) | ||
64 | and then launches it with a standard set of arguments used during | ||
65 | cross-compilation. | ||
66 | You can pass additional parameters to | ||
67 | <filename>configure</filename> through the | ||
68 | <glossterm><link linkend='var-EXTRA_OECONF'>EXTRA_OECONF</link></glossterm> variable. | ||
69 | </para> | ||
70 | </listitem> | ||
71 | <listitem> | ||
72 | <para> | ||
73 | <filename>do_compile</filename> ‐ runs <filename>make</filename> with | ||
74 | arguments that specify the compiler and linker. | ||
75 | You can pass additional arguments through | ||
76 | the <glossterm><link linkend='var-EXTRA_OEMAKE'>EXTRA_OEMAKE</link> | ||
77 | </glossterm> variable. | ||
78 | </para> | ||
79 | </listitem> | ||
80 | <listitem> | ||
81 | <para> | ||
82 | <filename>do_install</filename> ‐ runs <filename>make install</filename> | ||
83 | and passes a <filename>DESTDIR</filename> | ||
84 | option, which takes its value from the standard | ||
85 | <glossterm><link linkend='var-DESTDIR'>DESTDIR</link></glossterm> variable. | ||
86 | </para> | ||
87 | </listitem> | ||
88 | </itemizedlist> | ||
89 | |||
90 | </section> | 78 | </section> |
91 | 79 | ||
92 | <section id='ref-classes-update-alternatives'> | 80 | <section id='ref-classes-update-alternatives'> |
93 | <title>Alternatives - <filename>update-alternatives.bbclass</filename></title> | 81 | <title>Alternatives - <filename>update-alternatives.bbclass</filename></title> |
94 | 82 | ||
95 | <para> | 83 | <para> |
96 | Several programs can fulfill the same or similar function and | 84 | Several programs can fulfill the same or similar function and be installed with the same name. |
97 | be installed with the same name. | 85 | For example, the <filename>ar</filename> command is available from the |
98 | For example, the <filename>ar</filename> | 86 | <filename>busybox</filename>, <filename>binutils</filename> and |
99 | command is available from the "busybox", "binutils" and "elfutils" packages. | 87 | <filename>elfutils</filename> packages. |
100 | The <filename>update-alternatives.bbclass</filename> class handles renaming the | 88 | The <filename>update-alternatives.bbclass</filename> class handles renaming the |
101 | binaries so that multiple packages can be installed without conflicts. | 89 | binaries so that multiple packages can be installed without conflicts. |
102 | The <filename>ar</filename> command still works regardless of which packages are installed | 90 | The <filename>ar</filename> command still works regardless of which packages are installed |
103 | or subsequently removed. | 91 | or subsequently removed. |
104 | The class renames the conflicting binary in each package | 92 | The class renames the conflicting binary in each package and symlinks the highest |
105 | and symlinks the highest priority binary during installation or removal | 93 | priority binary during installation or removal of packages. |
106 | of packages. | ||
107 | </para> | 94 | </para> |
108 | <para> | 95 | <para> |
109 | Four variables control this class: | 96 | Four variables control this class: |
97 | <itemizedlist> | ||
98 | <listitem><para><filename>ALTERNATIVE_NAME</filename> ‐ The name of the | ||
99 | binary that is replaced (<filename>ar</filename> in this example).</para></listitem> | ||
100 | <listitem><para><filename>ALTERNATIVE_LINK</filename> ‐ The path to | ||
101 | the resulting binary (<filename>/bin/ar</filename> in this example).</para></listitem> | ||
102 | <listitem><para><filename>ALTERNATIVE_PATH</filename> ‐ The path to the | ||
103 | real binary (<filename>/usr/bin/ar.binutils</filename> in this example).</para></listitem> | ||
104 | <listitem><para><filename>ALTERNATIVE_PRIORITY</filename> ‐ The priority of | ||
105 | the binary. | ||
106 | The version with the most features should have the highest priority.</para></listitem> | ||
107 | </itemizedlist> | ||
110 | </para> | 108 | </para> |
111 | <itemizedlist> | 109 | |
112 | <listitem><para><filename>ALTERNATIVE_NAME</filename> ‐ The name of the | ||
113 | binary that is replaced (<filename>ar</filename> in this example).</para></listitem> | ||
114 | <listitem><para><filename>ALTERNATIVE_LINK</filename> ‐ The path to | ||
115 | the resulting binary (<filename>/bin/ar</filename> in this example).</para></listitem> | ||
116 | <listitem><para><filename>ALTERNATIVE_PATH</filename> ‐ The path to the | ||
117 | real binary (<filename>/usr/bin/ar.binutils</filename> in this example).</para></listitem> | ||
118 | <listitem><para><filename>ALTERNATIVE_PRIORITY</filename> ‐ The priority of | ||
119 | the binary. | ||
120 | The version with the most features should have the highest priority.</para></listitem> | ||
121 | </itemizedlist> | ||
122 | <para> | 110 | <para> |
123 | Currently, only one binary per package is supported. | 111 | Currently, the Yocto Project supports only one binary per package. |
124 | </para> | 112 | </para> |
125 | </section> | 113 | </section> |
126 | 114 | ||
@@ -128,14 +116,15 @@ | |||
128 | <title>Initscripts - <filename>update-rc.d.bbclass</filename></title> | 116 | <title>Initscripts - <filename>update-rc.d.bbclass</filename></title> |
129 | 117 | ||
130 | <para> | 118 | <para> |
131 | This class uses update-rc.d to safely install an initscript on behalf of | 119 | This class uses <filename>update-rc.d</filename> to safely install an |
132 | the package. Details such as making sure the initscript is stopped before | 120 | initialization script on behalf of the package. |
133 | a package is removed and started when the package is installed are taken | 121 | The Yocto Project takes care of details such as making sure the script is stopped before |
134 | care of. Three variables control this class, | 122 | a package is removed and started when the package is installed. |
135 | <link linkend='var-INITSCRIPT_PACKAGES'>INITSCRIPT_PACKAGES</link>, | 123 | Three variables control this class: |
136 | <link linkend='var-INITSCRIPT_NAME'>INITSCRIPT_NAME</link> and | 124 | <filename><link linkend='var-INITSCRIPT_PACKAGES'>INITSCRIPT_PACKAGES</link></filename>, |
137 | <link linkend='var-INITSCRIPT_PARAMS'>INITSCRIPT_PARAMS</link>. See the | 125 | <filename><link linkend='var-INITSCRIPT_NAME'>INITSCRIPT_NAME</link></filename> and |
138 | links for details. | 126 | <filename><link linkend='var-INITSCRIPT_PARAMS'>INITSCRIPT_PARAMS</link></filename>. |
127 | See the variable links for details. | ||
139 | </para> | 128 | </para> |
140 | </section> | 129 | </section> |
141 | 130 | ||
@@ -143,17 +132,17 @@ | |||
143 | <title>Binary config scripts - <filename>binconfig.bbclass</filename></title> | 132 | <title>Binary config scripts - <filename>binconfig.bbclass</filename></title> |
144 | 133 | ||
145 | <para> | 134 | <para> |
146 | Before pkg-config had become widespread, libraries shipped shell | 135 | Before <filename>pkg-config</filename> had become widespread, libraries shipped shell |
147 | scripts to give information about the libraries and include paths needed | 136 | scripts to give information about the libraries and include paths needed |
148 | to build software (usually named 'LIBNAME-config'). This class assists | 137 | to build software (usually named <filename>LIBNAME-config</filename>). |
149 | any recipe using such scripts. | 138 | This class assists any recipe using such scripts. |
150 | </para> | 139 | </para> |
151 | 140 | ||
152 | <para> | 141 | <para> |
153 | During staging Bitbake installs such scripts into the <filename | 142 | During staging, Bitbake installs such scripts into the |
154 | class="directory">sysroots/</filename> directory. It also changes all | 143 | <filename>sysroots/</filename> directory. |
155 | paths to point into the <filename>sysroots/</filename> | 144 | BitBake also changes all paths to point into the <filename>sysroots/</filename> |
156 | directory so all builds which use the script will use the correct | 145 | directory so all builds that use the script will use the correct |
157 | directories for the cross compiling layout. | 146 | directories for the cross compiling layout. |
158 | </para> | 147 | </para> |
159 | </section> | 148 | </section> |
@@ -163,8 +152,8 @@ | |||
163 | 152 | ||
164 | <para> | 153 | <para> |
165 | This class renames packages so that they follow the Debian naming | 154 | This class renames packages so that they follow the Debian naming |
166 | policy, i.e. 'glibc' becomes 'libc6' and 'glibc-devel' becomes | 155 | policy (i.e. <filename>glibc</filename> becomes <filename>libc6</filename> |
167 | 'libc6-dev'. | 156 | and <filename>glibc-devel</filename> becomes <filename>libc6-dev</filename>. |
168 | </para> | 157 | </para> |
169 | </section> | 158 | </section> |
170 | 159 | ||
@@ -172,15 +161,15 @@ | |||
172 | <title>Pkg-config - <filename>pkgconfig.bbclass</filename></title> | 161 | <title>Pkg-config - <filename>pkgconfig.bbclass</filename></title> |
173 | 162 | ||
174 | <para> | 163 | <para> |
175 | Pkg-config brought standardisation and this class aims to make its | 164 | <filename>pkg-config</filename> brought standardization and this class aims to make its |
176 | integration smooth for all libraries which make use of it. | 165 | integration smooth for all libraries that make use of it. |
177 | </para> | 166 | </para> |
178 | 167 | ||
179 | <para> | 168 | <para> |
180 | During staging Bitbake installs pkg-config data into the <filename | 169 | During staging, Bitbake installs <filename>pkg-config</filename> data into the |
181 | class="directory">sysroots/</filename> directory. By making use of | 170 | <filename>sysroots/</filename> directory. |
182 | sysroot functionality within pkgconfig this class no longer has to | 171 | By making use of sysroot functionality within <filename>pkg-config</filename>, |
183 | manipulate the files. | 172 | this class no longer has to manipulate the files. |
184 | </para> | 173 | </para> |
185 | </section> | 174 | </section> |
186 | 175 | ||
@@ -188,126 +177,131 @@ | |||
188 | <title>Distribution of sources - <filename>src_distribute_local.bbclass</filename></title> | 177 | <title>Distribution of sources - <filename>src_distribute_local.bbclass</filename></title> |
189 | 178 | ||
190 | <para> | 179 | <para> |
191 | Many software licenses require providing the sources for compiled | 180 | Many software licenses require that source files be provided along with the binaries. |
192 | binaries. To simplify this process two classes were created: | 181 | To simplify this process, two classes were created: |
193 | <filename>src_distribute.bbclass</filename> and | 182 | <filename>src_distribute.bbclass</filename> and |
194 | <filename>src_distribute_local.bbclass</filename>. | 183 | <filename>src_distribute_local.bbclass</filename>. |
195 | </para> | 184 | </para> |
196 | 185 | ||
197 | <para> | 186 | <para> |
198 | Result of their work are <filename>tmp/deploy/source/</filename> | 187 | The results of these classes are <filename>tmp/deploy/source/</filename> |
199 | subdirs with sources sorted by <glossterm><link linkend='var-LICENSE'>LICENSE</link> | 188 | subdirs with sources sorted by |
200 | </glossterm> field. If recipe lists few licenses (or has entries like "Bitstream Vera") source archive is put in each | 189 | <filename><link linkend='var-LICENSE'>LICENSE</link></filename> field. |
201 | license dir. | 190 | If recipes list few licenses (or have entries like "Bitstream Vera"), |
191 | the source archive is placed in each license directory. | ||
202 | </para> | 192 | </para> |
203 | 193 | ||
204 | <para> | 194 | <para> |
205 | Src_distribute_local class has three modes of operating: | 195 | This class operates using three modes: |
196 | <itemizedlist> | ||
197 | <listitem><para><emphasis>copy:</emphasis> Copies the files to the | ||
198 | distribute directory.</para></listitem> | ||
199 | <listitem><para><emphasis>symlink:</emphasis> Symlinks the files to the | ||
200 | distribute directory.</para></listitem> | ||
201 | <listitem><para><emphasis>move+symlink:</emphasis> Moves the files into | ||
202 | the distribute directory and then symlinks them back.</para></listitem> | ||
203 | </itemizedlist> | ||
206 | </para> | 204 | </para> |
207 | |||
208 | <itemizedlist> | ||
209 | <listitem><para>copy - copies the files to the distribute dir</para></listitem> | ||
210 | <listitem><para>symlink - symlinks the files to the distribute dir</para></listitem> | ||
211 | <listitem><para>move+symlink - moves the files into distribute dir, and symlinks them back</para></listitem> | ||
212 | </itemizedlist> | ||
213 | </section> | 205 | </section> |
214 | 206 | ||
215 | <section id='ref-classes-perl'> | 207 | <section id='ref-classes-perl'> |
216 | <title>Perl modules - <filename>cpan.bbclass</filename></title> | 208 | <title>Perl modules - <filename>cpan.bbclass</filename></title> |
217 | 209 | ||
218 | <para> | 210 | <para> |
219 | Recipes for Perl modules are simple - usually needs only | 211 | Recipes for Perl modules are simple. |
220 | pointing to source archive and inheriting of proper bbclass. | 212 | These recipes usually only need to point to the source's archive and then inherit the |
221 | Building is split into two methods dependly on method used by | 213 | proper <filename>.bbclass</filename> file. |
222 | module authors. | 214 | Building is split into two methods dependling on which method the module authors used. |
223 | </para> | 215 | </para> |
224 | 216 | ||
225 | <para> | 217 | <para> |
226 | Modules which use old Makefile.PL based build system require | 218 | Modules that use old <filename>Makefile.PL</filename>-based build system require |
227 | using of <filename>cpan.bbclass</filename> in their recipes. | 219 | <filename>cpan.bbclass</filename> in their recipes. |
228 | </para> | 220 | </para> |
229 | 221 | ||
230 | <para> | 222 | <para> |
231 | Modules which use Build.PL based build system require | 223 | Modules that use <filename>Build.PL</filename>-based build system require |
232 | using of <filename>cpan_build.bbclass</filename> in their recipes. | 224 | using <filename>cpan_build.bbclass</filename> in their recipes. |
233 | </para> | 225 | </para> |
234 | |||
235 | </section> | 226 | </section> |
236 | 227 | ||
237 | <section id='ref-classes-distutils'> | 228 | <section id='ref-classes-distutils'> |
238 | <title>Python extensions - <filename>distutils.bbclass</filename></title> | 229 | <title>Python extensions - <filename>distutils.bbclass</filename></title> |
239 | 230 | ||
240 | <para> | 231 | <para> |
241 | Recipes for Python extensions are simple - they usually only | 232 | Recipes for Python extensions are simple. |
242 | require pointing to the source archive and inheriting the proper | 233 | These recipes usually only need to point to the source's archive and then inherit |
243 | bbclasses. | 234 | the proper <filename>.bbclass</filename> file. |
244 | Building is split into two methods depending on the build method | 235 | Building is split into two methods dependling on which method the module authors used. |
245 | used by the module authors. | ||
246 | </para> | 236 | </para> |
247 | 237 | ||
248 | <para> | 238 | <para> |
249 | Extensions which use autotools based build system require use | 239 | Extensions that use an Autotools-based build system require Autotools and |
250 | of autotools and distutils-base bbclasses in their recipes. | 240 | <filename>distutils</filename>-based <filename>.bbclasse</filename> files in their recipes. |
251 | </para> | 241 | </para> |
252 | 242 | ||
253 | <para> | 243 | <para> |
254 | Extensions which use distutils build system require use | 244 | Extensions that use <filename>distutils</filename>-based build systems require |
255 | of <filename>distutils.bbclass</filename> in their recipes. | 245 | <filename>distutils.bbclass</filename> in their recipes. |
256 | </para> | 246 | </para> |
257 | |||
258 | </section> | 247 | </section> |
259 | 248 | ||
260 | <section id='ref-classes-devshell'> | 249 | <section id='ref-classes-devshell'> |
261 | <title>Developer Shell - <filename>devshell.bbclass</filename></title> | 250 | <title>Developer Shell - <filename>devshell.bbclass</filename></title> |
262 | 251 | ||
263 | <para> | 252 | <para> |
264 | This class adds the devshell task. Its usually up to distribution policy | 253 | This class adds the <filename>devshell</filename> task. |
265 | to include this class (Poky does). See the <link | 254 | Distribution policy dictates whether to include this class as the Yocto Project does. |
266 | linkend='platdev-appdev-devshell'>developing with 'devshell' section</link> | 255 | See the <link |
256 | linkend='platdev-appdev-devshell'>Development Within a Development Shell</link> section | ||
267 | for more information about using devshell. | 257 | for more information about using devshell. |
268 | </para> | 258 | </para> |
269 | |||
270 | </section> | 259 | </section> |
271 | 260 | ||
272 | <section id='ref-classes-package'> | 261 | <section id='ref-classes-package'> |
273 | <title>Packaging - <filename>package*.bbclass</filename></title> | 262 | <title>Packaging - <filename>package*.bbclass</filename></title> |
274 | 263 | ||
275 | <para> | 264 | <para> |
276 | The packaging classes add support for generating packages from a builds | 265 | The packaging classes add support for generating packages from a build's |
277 | output. The core generic functionality is in | 266 | output. |
278 | <filename>package.bbclass</filename>, code specific to particular package | 267 | The core generic functionality is in <filename>package.bbclass</filename>. |
279 | types is contained in various sub classes such as | 268 | The code specific |
280 | <filename>package_deb.bbclass</filename>, <filename>package_ipk.bbclass</filename> | 269 | to particular package types is contained in various sub-classes such as |
281 | and <filename>package_rpm.bbclass</filename>. Most users will | 270 | <filename>package_deb.bbclass</filename>, <filename>package_ipk.bbclass</filename>, |
282 | want one or more of these classes and this is controlled by the <glossterm> | 271 | and <filename>package_rpm.bbclass</filename>. |
283 | <link linkend='var-PACKAGE_CLASSES'>PACKAGE_CLASSES</link></glossterm> | 272 | Most users will want one or more of these classes. |
284 | variable. The first class listed in this variable will be used for image | 273 | You can control the list of resulting package formats by using the |
285 | generation. Since images are generated from packages a packaging class is | 274 | <filename><link linkend='var-PACKAGE_CLASSES'>PACKAGE_CLASSES</link></filename> |
275 | variable. | ||
276 | The first class listed in this variable is be used for image generation. | ||
277 | Since images are generated from packages, a packaging class is | ||
286 | needed to enable image generation. | 278 | needed to enable image generation. |
287 | </para> | 279 | </para> |
288 | |||
289 | </section> | 280 | </section> |
290 | 281 | ||
291 | <section id='ref-classes-kernel'> | 282 | <section id='ref-classes-kernel'> |
292 | <title>Building kernels - <filename>kernel.bbclass</filename></title> | 283 | <title>Building kernels - <filename>kernel.bbclass</filename></title> |
293 | 284 | ||
294 | <para> | 285 | <para> |
295 | This class handles building of Linux kernels and the class contains code to know how to build both 2.4 and 2.6 kernel trees. All needed headers are | 286 | This class handles building Linux kernels. |
296 | staged into <glossterm><link | 287 | The class contains code to build all kernel trees. |
297 | linkend='var-STAGING_KERNEL_DIR'>STAGING_KERNEL_DIR</link></glossterm> | 288 | All needed headers are staged into the |
298 | directory to allow building of out-of-tree modules using <filename>module.bbclass</filename>. | 289 | <filename><link linkend='var-STAGING_KERNEL_DIR'>STAGING_KERNEL_DIR</link></filename> |
290 | directory to allow out-of-tree module builds using <filename>module.bbclass</filename>. | ||
299 | </para> | 291 | </para> |
292 | |||
300 | <para> | 293 | <para> |
301 | This means that each kernel module built is packaged separately and inter-module dependencies are | 294 | This means that each built kernel module is packaged separately and inter-module |
302 | created by parsing the <filename>modinfo</filename> output. If all modules are | 295 | dependencies are created by parsing the <filename>modinfo</filename> output. |
303 | required then installing the "kernel-modules" package will install all | 296 | If all modules are required, then installing the <filename>kernel-modules</filename> |
304 | packages with modules and various other kernel packages such as "kernel-vmlinux". | 297 | package installs all packages with modules and various other kernel packages |
298 | such as <filename>kernel-vmlinux</filename>. | ||
305 | </para> | 299 | </para> |
306 | 300 | ||
307 | <para> | 301 | <para> |
308 | Various other classes are used by the kernel and module classes internally including | 302 | Various other classes are used by the kernel and module classes internally including |
309 | <filename>kernel-arch.bbclass</filename>, <filename>module_strip.bbclass</filename>, | 303 | <filename>kernel-arch.bbclass</filename>, <filename>module_strip.bbclass</filename>, |
310 | <filename>module-base.bbclass</filename> and <filename>linux-kernel-base.bbclass</filename>. | 304 | <filename>module-base.bbclass</filename>, and <filename>linux-kernel-base.bbclass</filename>. |
311 | </para> | 305 | </para> |
312 | </section> | 306 | </section> |
313 | 307 | ||
@@ -315,18 +309,20 @@ | |||
315 | <title>Creating images - <filename>image.bbclass</filename> and <filename>rootfs*.bbclass</filename></title> | 309 | <title>Creating images - <filename>image.bbclass</filename> and <filename>rootfs*.bbclass</filename></title> |
316 | 310 | ||
317 | <para> | 311 | <para> |
318 | Those classes add support for creating images in many formats. First the | 312 | These classes add support for creating images in several formats. |
319 | rootfs is created from packages by one of the <filename>rootfs_*.bbclass</filename> | 313 | First, the root filesystem is created from packages using |
320 | files (depending on package format used) and then image is created. | 314 | one of the <filename>rootfs_*.bbclass</filename> |
315 | files (depending on the package format used) and then the image is created. | ||
316 | </para> | ||
321 | 317 | ||
322 | The <glossterm><link | 318 | <para> |
323 | linkend='var-IMAGE_FSTYPES'>IMAGE_FSTYPES</link></glossterm> | 319 | The <filename><link linkend='var-IMAGE_FSTYPES'>IMAGE_FSTYPES</link></filename> |
324 | variable controls which types of image to generate. | 320 | variable controls the types of images to generate. |
325 | 321 | </para> | |
326 | The list of packages to install into the image is controlled by the | 322 | |
327 | <glossterm><link | 323 | <para> |
328 | linkend='var-IMAGE_INSTALL'>IMAGE_INSTALL</link></glossterm> | 324 | The <filename><link linkend='var-IMAGE_INSTALL'>IMAGE_INSTALL</link></filename> |
329 | variable. | 325 | variable controls the list of packages to install into the image. |
330 | </para> | 326 | </para> |
331 | </section> | 327 | </section> |
332 | 328 | ||
@@ -334,11 +330,12 @@ | |||
334 | <title>Host System sanity checks - <filename>sanity.bbclass</filename></title> | 330 | <title>Host System sanity checks - <filename>sanity.bbclass</filename></title> |
335 | 331 | ||
336 | <para> | 332 | <para> |
337 | This class checks prerequisite software is present to | 333 | This class checks to see if prerequisite software is present so that |
338 | notify the users of potential problems that will affect their build. It | 334 | users can be notified of potential problems that might affect their build. |
339 | also performs basic checks of the user configuration from local.conf to | 335 | The class also performs basic user configuration checks from |
340 | prevent common mistakes resulting in build failures. It's usually up to | 336 | the <filename>local.conf</filename> configuration file to |
341 | distribution policy whether to include this class (Poky does). | 337 | prevent common mistakes that cause build failures. |
338 | Distribution policy usually whether to include this class as the Yocto Project does. | ||
342 | </para> | 339 | </para> |
343 | </section> | 340 | </section> |
344 | 341 | ||
@@ -346,11 +343,11 @@ | |||
346 | <title>Generated output quality assurance checks - <filename>insane.bbclass</filename></title> | 343 | <title>Generated output quality assurance checks - <filename>insane.bbclass</filename></title> |
347 | 344 | ||
348 | <para> | 345 | <para> |
349 | This class adds a step to package generation which sanity checks the | 346 | This class adds a step to the package generation process that sanity checks the |
350 | packages generated by Poky. There are an ever increasing range of checks | 347 | packages generated by the Yocto Project. |
351 | it performs, checking for common problems which break builds/packages/images, | 348 | An ever-increasing range of checks are performed that check for |
352 | see the bbclass file for more information. It's usually up to distribution | 349 | common problems that break builds. |
353 | policy whether to include this class (Poky does). | 350 | Distribution policy usually dictates whether to include this class as the Yocto Project does. |
354 | </para> | 351 | </para> |
355 | </section> | 352 | </section> |
356 | 353 | ||
@@ -358,23 +355,28 @@ | |||
358 | <title>Autotools configuration data cache - <filename>siteinfo.bbclass</filename></title> | 355 | <title>Autotools configuration data cache - <filename>siteinfo.bbclass</filename></title> |
359 | 356 | ||
360 | <para> | 357 | <para> |
361 | Autotools can require tests which have to execute on the target hardware. | 358 | Autotools can require tests that must execute on the target hardware. |
362 | Since this isn't possible in general when cross compiling, siteinfo is | 359 | Since this is not possible in general when cross compiling, site information is |
363 | used to provide cached test results so these tests can be skipped over but | 360 | used to provide cached test results so these tests can be skipped over but |
364 | the correct values used. The <link linkend='structure-meta-site'>meta/site directory</link> | 361 | still make the correct values available. |
365 | contains test results sorted into different categories like architecture, endianess and | 362 | The <filename><link linkend='structure-meta-site'>meta/site directory</link></filename> |
366 | the libc used. Siteinfo provides a list of files containing data relevant to | 363 | contains test results sorted into different categories such as architecture, endianess, and |
367 | the current build in the <glossterm><link linkend='var-CONFIG_SITE'>CONFIG_SITE | 364 | the libc used. |
368 | </link></glossterm> variable which autotools will automatically pick up. | 365 | Site information provides a list of files containing data relevant to |
366 | the current build in the | ||
367 | <filename><link linkend='var-CONFIG_SITE'>CONFIG_SITE</link></filename> variable | ||
368 | that Autotools automatically picks up. | ||
369 | </para> | 369 | </para> |
370 | |||
370 | <para> | 371 | <para> |
371 | The class also provides variables like <glossterm><link | 372 | The class also provides variables like |
372 | linkend='var-SITEINFO_ENDIANESS'>SITEINFO_ENDIANESS</link></glossterm> | 373 | <filename><link linkend='var-SITEINFO_ENDIANESS'>SITEINFO_ENDIANESS</link></filename> |
373 | and <glossterm><link linkend='var-SITEINFO_BITS'>SITEINFO_BITS</link> | 374 | and <filename><link linkend='var-SITEINFO_BITS'>SITEINFO_BITS</link></filename> |
374 | </glossterm> which can be used elsewhere in the metadata. | 375 | that can be used elsewhere in the metadata. |
375 | </para> | 376 | </para> |
377 | |||
376 | <para> | 378 | <para> |
377 | This class is included from <filename>base.bbclass</filename> and is hence always active. | 379 | Because this class is included from <filename>base.bbclass</filename>, it is always active. |
378 | </para> | 380 | </para> |
379 | </section> | 381 | </section> |
380 | 382 | ||
@@ -382,8 +384,12 @@ | |||
382 | <title>Other Classes</title> | 384 | <title>Other Classes</title> |
383 | 385 | ||
384 | <para> | 386 | <para> |
385 | Only the most useful/important classes are covered here but there are | 387 | Thus far, this appendix has discussed only the most useful and important |
386 | others, see the <filename>meta/classes</filename> directory for the rest. | 388 | classes. |
389 | However, other classes exist within the <filename>meta/classes</filename> directory | ||
390 | in the Yocto Project file's directory structure. | ||
391 | You can examine the <filename>.bbclass</filename> files directly for more | ||
392 | information. | ||
387 | </para> | 393 | </para> |
388 | </section> | 394 | </section> |
389 | 395 | ||