diff options
author | Scott Rifenbark <scott.m.rifenbark@intel.com> | 2013-07-08 21:42:32 +0300 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-08-13 13:18:38 +0100 |
commit | 95cdad1c2edd8f4698a245ad88e2bccb0cf93e6d (patch) | |
tree | 8512729b5bbaa456237435d0ede335090a76a2d2 | |
parent | 482943bd2cd8b5a39dd8d8aa3ad1111fa3c72038 (diff) | |
download | poky-95cdad1c2edd8f4698a245ad88e2bccb0cf93e6d.tar.gz |
ref-manual: Start of new section on deeper look into dev env.
Start of the new section on the closer look into the development
environment.
(From yocto-docs rev: e1f1cee951433144d1adedcb4f0bbc8d8296c444)
Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | documentation/ref-manual/technical-details.xml | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/documentation/ref-manual/technical-details.xml b/documentation/ref-manual/technical-details.xml index 17f96b52ff..583d204566 100644 --- a/documentation/ref-manual/technical-details.xml +++ b/documentation/ref-manual/technical-details.xml | |||
@@ -153,6 +153,216 @@ | |||
153 | </section> | 153 | </section> |
154 | </section> | 154 | </section> |
155 | 155 | ||
156 | <section id="a-closer-look-at-the-yocto-project-development-environment"> | ||
157 | <title>A Closer Look at the Yocto Project Development Environment</title> | ||
158 | |||
159 | <para> | ||
160 | This section is a work-in-progress for an expanded discussion of the | ||
161 | Yocto Project Development Environment. | ||
162 | The section is rooted in the figure found in the | ||
163 | "<ulink url='&YOCTO_DOCS_QS_URL;#yp-intro'>Introducing the Yocto Project Development Environment</ulink>" | ||
164 | section of the Yocto Project Quick Start. | ||
165 | This expanded discussion presents a deeper level of detail regarding | ||
166 | sources of input, generated output, and controlling | ||
167 | <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>. | ||
168 | </para> | ||
169 | |||
170 | <para> | ||
171 | I will either replicate the exact figure from the YP Quick Start here | ||
172 | or I will create a more simplified version that can be used as the | ||
173 | top-level diagram from which to base subsequent sections and expanded | ||
174 | illustrations. | ||
175 | </para> | ||
176 | |||
177 | <para> | ||
178 | [NEED REPEATED FIGURE HERE OR A NEW FIGURE] | ||
179 | </para> | ||
180 | |||
181 | <para> | ||
182 | This paragraph will introduce the main blocks of the preceding figure | ||
183 | to overview and organize the remainder of the section: | ||
184 | <itemizedlist> | ||
185 | <listitem><para><emphasis>User Configuration:</emphasis> | ||
186 | Methods by with the user can directly control the build | ||
187 | process.</para></listitem> | ||
188 | <listitem><para><emphasis>Metadata Layers:</emphasis> | ||
189 | Various layers that provide software, machine, and | ||
190 | distro Metadata.</para></listitem> | ||
191 | <listitem><para><emphasis>Soure Files:</emphasis> | ||
192 | Upstream releases, local projects, and SCMs.</para></listitem> | ||
193 | <listitem><para><emphasis>Build System:</emphasis> | ||
194 | Processes inside the BitBake "box". | ||
195 | This block expands on how BitBake fetches source, applies | ||
196 | patches, completes compilation, analyzes output for package | ||
197 | generation, creates and tests packages, generates images, and | ||
198 | generates cross-development tools.</para></listitem> | ||
199 | <listitem><para><emphasis>Package Feeds</emphasis> | ||
200 | Package feeds into the BitBake process.</para></listitem> | ||
201 | <listitem><para><emphasis>Images</emphasis> | ||
202 | Images produced by the development process. | ||
203 | Where do they go? | ||
204 | Can you mess with them (i.e. freely delete them or move them?). | ||
205 | </para></listitem> | ||
206 | <listitem><para><emphasis>Application Development SDK</emphasis> | ||
207 | Cross-development tools that are produced along with an image | ||
208 | or separately with BitBake.</para></listitem> | ||
209 | </itemizedlist> | ||
210 | </para> | ||
211 | |||
212 | <section id="user-configuration"> | ||
213 | <title>User Configuration</title> | ||
214 | |||
215 | <para> | ||
216 | User configuration affects how you define the build. | ||
217 | The following figure shows an expanded representation of the | ||
218 | user configuration in the Yocto Project development environment: | ||
219 | </para> | ||
220 | |||
221 | <mediaobject> | ||
222 | <imageobject> | ||
223 | <imagedata fileref="figures/user-configuration.png" | ||
224 | format="PNG" align='center' scalefit='1' width="100%"/> | ||
225 | </imageobject> | ||
226 | </mediaobject> | ||
227 | |||
228 | <para> | ||
229 | BitBake needs some basic configuration files in order to complete | ||
230 | a build. | ||
231 | These files are <filename>*.conf</filename> files and the | ||
232 | minimally necessary ones reside as example files in the | ||
233 | <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>. | ||
234 | For simplicity, this section refers to the Source Directory as | ||
235 | the "Poky Directory." | ||
236 | <note> | ||
237 | Poky is primarily an aggregation of existing repositories and | ||
238 | is not actual canonical upstream source for anything. | ||
239 | </note> | ||
240 | When you clone the <filename>poky</filename> Git repository or you | ||
241 | download and unpack a Yocto Project release, you can set up the | ||
242 | Source Directory to be named anything you want. | ||
243 | Here, though, we will assume that you have a cloned repository that | ||
244 | has the default name <filename>poky</filename>. | ||
245 | </para> | ||
246 | |||
247 | <para> | ||
248 | The <filename>meta-yocto</filename> layer inside Poky contains | ||
249 | a <filename>conf</filename> directory that has example | ||
250 | configuration files. | ||
251 | These example files are used as a basis for creating actual | ||
252 | configuration files when you source the build environment | ||
253 | script <filename>oe-init-build-env</filename>. | ||
254 | <note> | ||
255 | The <filename>oe-init-build-env</filename> script also exists | ||
256 | in the <filename>meta</filename> directory of the OE-Core | ||
257 | root directory. | ||
258 | Both scripts look for sample configuration files through | ||
259 | a <filename>$TEMPLATECONF</filename> variable. | ||
260 | When using the Yocto Project Development Environment, | ||
261 | that location resolves to the samples found in the | ||
262 | <filename>poky/meta-yocto/conf</filename> directory. | ||
263 | </note> | ||
264 | </para> | ||
265 | |||
266 | <para> | ||
267 | When you source the build environment script, it creates a | ||
268 | <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink> | ||
269 | that BitBake uses as the area in which it does all its work | ||
270 | during builds. | ||
271 | The Build Directory has a <filename>conf</filename> directory that | ||
272 | contains default versions of your <filename>local.conf</filename> | ||
273 | and <filename>bblayers.conf</filename> configuration files. | ||
274 | These default configuration files are created by | ||
275 | <filename>oe-init-build-env</filename> only if versions of these | ||
276 | files do not already exist in the Build Directory you specify | ||
277 | when you run the script. | ||
278 | </para> | ||
279 | |||
280 | <para> | ||
281 | The <filename>local.conf</filename> file provides many | ||
282 | basic variables that define your build. | ||
283 | Here is a list of a few. | ||
284 | To see the default configurations in a <filename>local.conf</filename> | ||
285 | file created by the build environment script, see the | ||
286 | <filename>local.conf.sample</filename> in the | ||
287 | <filename>meta-yocto</filename> layer: | ||
288 | <itemizedlist> | ||
289 | <listitem><para><emphasis>Parallelism Options:</emphasis> | ||
290 | Controlled by the | ||
291 | <link linkend='var-BB_NUMBER_THREADS'><filename>BB_NUMBER_THREADS</filename></link> | ||
292 | and | ||
293 | <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link> | ||
294 | variables.</para></listitem> | ||
295 | <listitem><para><emphasis>Target Machine Selection:</emphasis> | ||
296 | Controlled by the | ||
297 | <link linkend='var-MACHINE'><filename>MACHINE</filename></link> | ||
298 | variable.</para></listitem> | ||
299 | <listitem><para><emphasis>Download Directory:</emphasis> | ||
300 | Controlled by the | ||
301 | <link linkend='var-DL_DIR'><filename>DL_DIR</filename></link> | ||
302 | variable.</para></listitem> | ||
303 | <listitem><para><emphasis>Shared State Directory:</emphasis> | ||
304 | Controlled by the | ||
305 | <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link> | ||
306 | variable.</para></listitem> | ||
307 | <listitem><para><emphasis>Build Output:</emphasis> | ||
308 | Controlled by the | ||
309 | <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> | ||
310 | variable.</para></listitem> | ||
311 | </itemizedlist> | ||
312 | </para> | ||
313 | |||
314 | <para> | ||
315 | The <filename>bblayers.conf</filename> file tells BitBake what | ||
316 | layers you want it to consider during the build. | ||
317 | The list of layers includes default layers needed by the build | ||
318 | system. | ||
319 | You have to manually add any custom layers that you have created. | ||
320 | You can find more information on working with the | ||
321 | <filename>bblayers.conf</filename> file in the | ||
322 | "<ulink url='&YOCTO_DOCS_DEV_URL;#enabling-your-layer'>Enabling Your Layer</ulink>" | ||
323 | section in the Yocto Project Development Manual. | ||
324 | </para> | ||
325 | |||
326 | <para> | ||
327 | The files <filename>site.conf</filename> and | ||
328 | <filename>auto.conf</filename> are not created by the environment | ||
329 | initialization script. | ||
330 | If you want these configuration files, you must create them | ||
331 | yourself. | ||
332 | Here a bit about what these files do: | ||
333 | <itemizedlist> | ||
334 | <listitem><para><emphasis><filename>site.conf</filename>:</emphasis> | ||
335 | I don't really know what this does. | ||
336 | All I know is that if you want it, you need to hand-create | ||
337 | it. | ||
338 | I need some information on it.</para></listitem> | ||
339 | <listitem><para><emphasis><filename>auto.conf</filename>:</emphasis> | ||
340 | This file is not hand-created. | ||
341 | Rather, the file is usually created and written to by | ||
342 | an autobuilder. | ||
343 | The settings put into the file are typically the same as | ||
344 | you would find in the <filename>local.conf</filename> | ||
345 | or <filename>site.conf</filename> files. | ||
346 | </para></listitem> | ||
347 | </itemizedlist> | ||
348 | </para> | ||
349 | |||
350 | <para> | ||
351 | All configuration files can undergo edits to further define | ||
352 | the build. | ||
353 | This process is represented by the "User Configuration Edits" | ||
354 | box in the figure. | ||
355 | </para> | ||
356 | |||
357 | <para> | ||
358 | When you launch your build with the | ||
359 | <filename>bitbake <target></filename> command, BitBake | ||
360 | draws on the user configurations you have provided in your | ||
361 | Build Directory. | ||
362 | </para> | ||
363 | </section> | ||
364 | </section> | ||
365 | |||
156 | <section id="cross-development-toolchain-generation"> | 366 | <section id="cross-development-toolchain-generation"> |
157 | <title>Cross-Development Toolchain Generation</title> | 367 | <title>Cross-Development Toolchain Generation</title> |
158 | 368 | ||