blob: 807e24251f19e288481493c0b622b06882c3f23d [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
2"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
3[<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
4
5<!-- Dummy chapter -->
6<chapter id='ref-variables-glos'>
7
8<title>Variables Glossary</title>
9
10<para>
11 This chapter lists common variables used in the OpenEmbedded build system and gives an overview
12 of their function and contents.
13</para>
14
15<glossary id='ref-variables-glossary'>
16
17
18 <para>
19 <link linkend='var-ABIEXTENSION'>A</link>
20 <link linkend='var-B'>B</link>
21 <link linkend='var-CACHE'>C</link>
22 <link linkend='var-D'>D</link>
23 <link linkend='var-EFI_PROVIDER'>E</link>
24 <link linkend='var-FEATURE_PACKAGES'>F</link>
25 <link linkend='var-GDB'>G</link>
26 <link linkend='var-HOMEPAGE'>H</link>
27 <link linkend='var-ICECC_DISABLED'>I</link>
28<!-- <link linkend='var-glossary-j'>J</link> -->
29 <link linkend='var-KARCH'>K</link>
30 <link linkend='var-LABELS'>L</link>
31 <link linkend='var-MACHINE'>M</link>
32<!-- <link linkend='var-glossary-n'>N</link> -->
33 <link linkend='var-OBJCOPY'>O</link>
34 <link linkend='var-P'>P</link>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050035<!-- <link linkend='var-glossary-q'>Q</link> -->
Patrick Williamsc124f4f2015-09-15 14:41:29 -050036 <link linkend='var-RANLIB'>R</link>
37 <link linkend='var-S'>S</link>
38 <link linkend='var-T'>T</link>
39 <link linkend='var-UBOOT_CONFIG'>U</link>
40<!-- <link linkend='var-glossary-v'>V</link> -->
41 <link linkend='var-WARN_QA'>W</link>
42 <link linkend='var-XSERVER'>X</link>
43<!-- <link linkend='var-glossary-y'>Y</link> -->
44<!-- <link linkend='var-glossary-z'>Z</link>-->
45 </para>
46
47 <glossdiv id='var-glossary-a'><title>A</title>
48
49 <glossentry id='var-ABIEXTENSION'><glossterm>ABIEXTENSION</glossterm>
50 <info>
51 ABIEXTENSION[doc] = "Extension to the Application Binary Interface (ABI) field of the GNU canonical architecture name (e.g. "eabi")."
52 </info>
53 <glossdef>
54 <para role="glossdeffirst">
55<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
56 Extension to the Application Binary Interface (ABI)
57 field of the GNU canonical architecture name
58 (e.g. "eabi").
59 </para>
60
61 <para>
62 ABI extensions are set in the machine include files.
63 For example, the
64 <filename>meta/conf/machine/include/arm/arch-arm.inc</filename>
65 file sets the following extension:
66 <literallayout class='monospaced'>
67 ABIEXTENSION = "eabi"
68 </literallayout>
69 </para>
70 </glossdef>
71 </glossentry>
72
73 <glossentry id='var-ALLOW_EMPTY'><glossterm>ALLOW_EMPTY</glossterm>
74 <info>
75 ALLOW_EMPTY[doc] = "Specifies if an output package should still be produced if it is empty."
76 </info>
77 <glossdef>
78 <para role="glossdeffirst">
79<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
80 Specifies if an output package should still be produced if it is empty.
81 By default, BitBake does not produce empty packages.
82 This default behavior can cause issues when there is an
83 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link> or
84 some other hard runtime requirement on the existence of the package.
85 </para>
86
87 <para>
88 Like all package-controlling variables, you must always use them in
89 conjunction with a package name override, as in:
90 <literallayout class='monospaced'>
91 ALLOW_EMPTY_${PN} = "1"
92 ALLOW_EMPTY_${PN}-dev = "1"
93 ALLOW_EMPTY_${PN}-staticdev = "1"
94 </literallayout>
95 </para>
96 </glossdef>
97 </glossentry>
98
99 <glossentry id='var-ALTERNATIVE'><glossterm>ALTERNATIVE</glossterm>
100 <info>
101 ALTERNATIVE[doc] = "Lists commands in a package that need an alternative binary naming scheme."
102 </info>
103 <glossdef>
104 <para role="glossdeffirst">
105<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
106 Lists commands in a package that need an alternative
107 binary naming scheme.
108 Sometimes the same command is provided in multiple packages.
109 When this occurs, the OpenEmbedded build system needs to
110 use the alternatives system to create a different binary
111 naming scheme so the commands can co-exist.
112 </para>
113
114 <para>
115 To use the variable, list out the package's commands
116 that also exist as part of another package.
117 For example, if the <filename>busybox</filename> package
118 has four commands that also exist as part of another
119 package, you identify them as follows:
120 <literallayout class='monospaced'>
121 ALTERNATIVE_busybox = "sh sed test bracket"
122 </literallayout>
123 For more information on the alternatives system, see the
124 "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
125 section.
126 </para>
127 </glossdef>
128 </glossentry>
129
130 <glossentry id='var-ALTERNATIVE_LINK_NAME'><glossterm>ALTERNATIVE_LINK_NAME</glossterm>
131 <info>
132 ALTERNATIVE_LINK_NAME[doc] = "Used by the alternatives system to map duplicated commands to actual locations."
133 </info>
134 <glossdef>
135 <para role="glossdeffirst">
136<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
137 Used by the alternatives system to map duplicated commands
138 to actual locations.
139 For example, if the <filename>bracket</filename> command
140 provided by the <filename>busybox</filename> package is
141 duplicated through another package, you must use the
142 <filename>ALTERNATIVE_LINK_NAME</filename> variable to
143 specify the actual location:
144 <literallayout class='monospaced'>
145 ALTERNATIVE_LINK_NAME[bracket] = "/usr/bin/["
146 </literallayout>
147 </para>
148
149 <para>
150 In this example, the binary for the
151 <filename>bracket</filename> command (i.e.
152 <filename>[</filename>) from the
153 <filename>busybox</filename> package resides in
154 <filename>/usr/bin/</filename>.
155 <note>
156 If <filename>ALTERNATIVE_LINK_NAME</filename> is not
157 defined, it defaults to
158 <filename>${bindir}/<replaceable>name</replaceable></filename>.
159 </note>
160 </para>
161
162 <para>
163 For more information on the alternatives system, see the
164 "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
165 section.
166 </para>
167 </glossdef>
168 </glossentry>
169
170 <glossentry id='var-ALTERNATIVE_PRIORITY'><glossterm>ALTERNATIVE_PRIORITY</glossterm>
171 <info>
172 ALTERNATIVE_PRIORITY[doc] = "Used by the alternatives system to create default priorities for duplicated commands."
173 </info>
174 <glossdef>
175 <para role="glossdeffirst">
176<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
177 Used by the alternatives system to create default
178 priorities for duplicated commands.
179 You can use the variable to create a single default
180 regardless of the command name or package, a default for
181 specific duplicated commands regardless of the package, or
182 a default for specific commands tied to particular packages.
183 Here are the available syntax forms:
184 <literallayout class='monospaced'>
185 ALTERNATIVE_PRIORITY = "<replaceable>priority</replaceable>"
186 ALTERNATIVE_PRIORITY[<replaceable>name</replaceable>] = "<replaceable>priority</replaceable>"
187 ALTERNATIVE_PRIORITY_<replaceable>pkg</replaceable>[<replaceable>name</replaceable>] = "<replaceable>priority</replaceable>"
188 </literallayout>
189 </para>
190
191 <para>
192 For more information on the alternatives system, see the
193 "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
194 section.
195 </para>
196 </glossdef>
197 </glossentry>
198
199 <glossentry id='var-ALTERNATIVE_TARGET'><glossterm>ALTERNATIVE_TARGET</glossterm>
200 <info>
201 ALTERNATIVE_TARGET[doc] = "Used by the alternatives system to create default link locations for duplicated commands."
202 </info>
203 <glossdef>
204 <para role="glossdeffirst">
205<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
206 Used by the alternatives system to create default link
207 locations for duplicated commands.
208 You can use the variable to create a single default
209 location for all duplicated commands regardless of the
210 command name or package, a default for
211 specific duplicated commands regardless of the package, or
212 a default for specific commands tied to particular packages.
213 Here are the available syntax forms:
214 <literallayout class='monospaced'>
215 ALTERNATIVE_TARGET = "<replaceable>target</replaceable>"
216 ALTERNATIVE_TARGET[<replaceable>name</replaceable>] = "<replaceable>target</replaceable>"
217 ALTERNATIVE_TARGET_<replaceable>pkg</replaceable>[<replaceable>name</replaceable>] = "<replaceable>target</replaceable>"
218 </literallayout>
219 <note>
220 <para>
221 If <filename>ALTERNATIVE_TARGET</filename> is not
222 defined, it inherits the value from the
223 <link linkend='var-ALTERNATIVE_LINK_NAME'><filename>ALTERNATIVE_LINK_NAME</filename></link>
224 variable.
225 </para>
226
227 <para>
228 If <filename>ALTERNATIVE_LINK_NAME</filename> and
229 <filename>ALTERNATIVE_TARGET</filename> are the
230 same, the target for
231 <filename>ALTERNATIVE_TARGET</filename>
232 has "<filename>.{BPN}</filename>" appended to it.
233 </para>
234
235 <para>
236 Finally, if the file referenced has not been
237 renamed, the alternatives system will rename it to
238 avoid the need to rename alternative files in the
239 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
240 task while
241 retaining support for the command if necessary.
242 </para>
243 </note>
244 </para>
245
246 <para>
247 For more information on the alternatives system, see the
248 "<link linkend='ref-classes-update-alternatives'><filename>update-alternatives.bbclass</filename></link>"
249 section.
250 </para>
251 </glossdef>
252 </glossentry>
253
254 <glossentry id='var-APPEND'><glossterm>APPEND</glossterm>
255 <info>
256 APPEND[doc] = "An override list of append strings for each LABEL."
257 </info>
258 <glossdef>
259 <para role="glossdeffirst">
260<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
261 An override list of append strings for each
262 <link linkend='var-LABELS'><filename>LABEL</filename></link>.
263 </para>
264
265 <para>
266 See the
267 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
268 class for more information on how this variable is used.
269 </para>
270 </glossdef>
271 </glossentry>
272
273 <glossentry id='var-AR'><glossterm>AR</glossterm>
274 <info>
275 AR[doc] = "Minimal command and arguments to run 'ar'."
276 </info>
277 <glossdef>
278 <para role="glossdeffirst">
279<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
280 The minimal command and arguments used to run
281 <filename>ar</filename>.
282 </para>
283 </glossdef>
284 </glossentry>
285
286 <glossentry id='var-ARCHIVER_MODE'><glossterm>ARCHIVER_MODE</glossterm>
287 <info>
288 ARCHIVER_MODE[doc] = "Controls archive creation used when releasing source files."
289 </info>
290 <glossdef>
291 <para role="glossdeffirst">
292<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
293 When used with the
294 <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
295 class, determines the type of information used to create
296 a released archive.
297 You can use this variable to create archives of patched
298 source, original source, configured source, and so forth
299 by employing the following variable flags (varflags):
300 <literallayout class='monospaced'>
301 ARCHIVER_MODE[src] = "original" # Uses original (unpacked) source
302 # files.
303
304 ARCHIVER_MODE[src] = "patched" # Uses patched source files. This is
305 # the default.
306
307 ARCHIVER_MODE[src] = "configured" # Uses configured source files.
308
309 ARCHIVER_MODE[diff] = "1" # Uses patches between do_unpack and
310 # do_patch.
311
312 ARCHIVER_MODE[diff-exclude] ?= "<replaceable>file</replaceable> <replaceable>file</replaceable> ..." # Lists files and directories to
313 # exclude from diff.
314
315 ARCHIVER_MODE[dumpdata] = "1" # Uses environment data.
316
317 ARCHIVER_MODE[recipe] = "1" # Uses recipe and include files.
318
319 ARCHIVER_MODE[srpm] = "1" # Uses RPM package files.
320 </literallayout>
321 For information on how the variable works, see the
322 <filename>meta/classes/archiver.bbclass</filename> file
323 in the
324 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
325 </para>
326 </glossdef>
327 </glossentry>
328
329 <glossentry id='var-AS'><glossterm>AS</glossterm>
330 <info>
331 AS[doc] = "Minimal command and arguments to run the assembler."
332 </info>
333 <glossdef>
334 <para role="glossdeffirst">
335<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
336 The minimal command and arguments used to run the
337 assembler.
338 </para>
339 </glossdef>
340 </glossentry>
341
342 <glossentry id='var-ASSUME_PROVIDED'><glossterm>ASSUME_PROVIDED</glossterm>
343 <info>
344 ASSUME_PROVIDED[doc] = "Lists recipe names (PN values) BitBake does not attempt to build."
345 </info>
346 <glossdef>
347 <para role="glossdeffirst">
348<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
349 Lists recipe names
350 (<link linkend='var-PN'><filename>PN</filename></link>
351 values) BitBake does not attempt to build.
352 Instead, BitBake assumes these recipes have already been
353 built.
354 </para>
355
356 <para>
357 In OpenEmbedded Core, <filename>ASSUME_PROVIDED</filename>
358 mostly specifies native tools that should not be built.
359 An example is <filename>git-native</filename>, which when
360 specified, allows for the Git binary from the host to be
361 used rather than building <filename>git-native</filename>.
362 </para>
363 </glossdef>
364 </glossentry>
365
366 <glossentry id='var-ASSUME_SHLIBS'><glossterm>ASSUME_SHLIBS</glossterm>
367 <info>
368 ASSUME_SHLIBS[doc] = Provides additional shlibs provider mapping information, which adds to or overwrites the information provided automatically by the system."
369 </info>
370 <glossdef>
371 <para role="glossdeffirst">
372<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
373 Provides additional <filename>shlibs</filename> provider
374 mapping information, which adds to or overwrites the
375 information provided automatically by the system.
376 Separate multiple entries using spaces.
377 </para>
378
379 <para>
380 As an example, use the following form to add an
381 <filename>shlib</filename> provider of
382 <replaceable>shlibname</replaceable> in
383 <replaceable>packagename</replaceable> with the optional
384 <replaceable>version</replaceable>:
385 <literallayout class='monospaced'>
386 <replaceable>shlibname:packagename</replaceable>[_<replaceable>version</replaceable>]
387 </literallayout>
388 </para>
389
390 <para>
391 Here is an example that adds a shared library named
392 <filename>libEGL.so.1</filename> as being provided by
393 the <filename>libegl-implementation</filename> package:
394 <literallayout class='monospaced'>
395 ASSUME_SHLIBS = "libEGL.so.1:libegl-implementation"
396 </literallayout>
397 </para>
398 </glossdef>
399 </glossentry>
400
401 <glossentry id='var-AUTHOR'><glossterm>AUTHOR</glossterm>
402 <info>
403 AUTHOR[doc] = "Email address used to contact the original author or authors in order to send patches and forward bugs."
404 </info>
405 <glossdef>
406 <para role="glossdeffirst">
407<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
408 The email address used to contact the original author
409 or authors in order to send patches and forward bugs.
410 </para>
411 </glossdef>
412 </glossentry>
413
414 <glossentry id='var-AUTO_LIBNAME_PKGS'><glossterm>AUTO_LIBNAME_PKGS</glossterm>
415 <info>
416 AUTO_LIBNAME_PKGS[doc] = "Specifies which packages should be checked for libraries and renamed according to Debian library package naming."
417 </info>
418 <glossdef>
419 <para role="glossdeffirst">
420<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
421 When the
422 <link linkend='ref-classes-debian'><filename>debian</filename></link>
423 class is inherited, which is the default behavior,
424 <filename>AUTO_LIBNAME_PKGS</filename> specifies which
425 packages should be checked for libraries and renamed
426 according to Debian library package naming.
427 </para>
428
429 <para>
430 The default value is "${PACKAGES}", which causes the
431 debian class to act on all packages that are
432 explicitly generated by the recipe.
433 </para>
434 </glossdef>
435 </glossentry>
436
437 <glossentry id='var-AUTO_SYSLINUXMENU'><glossterm>AUTO_SYSLINUXMENU</glossterm>
438 <info>
439 AUTO_SYSLINUXMENU[doc] = "Enables creating an automatic menu for the syslinux bootloader."
440 </info>
441 <glossdef>
442 <para role="glossdeffirst">
443<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
444 Enables creating an automatic menu for the syslinux
445 bootloader.
446 You must set this variable in your recipe.
447 The
448 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
449 class checks this variable.
450 </para>
451 </glossdef>
452 </glossentry>
453
454 <glossentry id='var-AUTOREV'><glossterm>AUTOREV</glossterm>
455 <info>
456 AUTOREV[doc] = "When SRCREV is set to the value of this variable, it specifies to use the latest source revision in the repository."
457 </info>
458 <glossdef>
459 <para role="glossdeffirst">
460<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
461 When
462 <filename><link linkend='var-SRCREV'>SRCREV</link></filename>
463 is set to the value of this variable, it specifies to use
464 the latest source revision in the repository.
465 Here is an example:
466 <literallayout class='monospaced'>
467 SRCREV = "${AUTOREV}"
468 </literallayout>
469 </para>
470
471 <para>
472 If you use the previous statement to retrieve the latest
473 version of software, you need to be sure
474 <link linkend='var-PV'><filename>PV</filename></link>
475 contains
476 <filename>${</filename><link linkend='var-SRCPV'><filename>SRCPV</filename></link><filename>}</filename>.
477 For example, suppose you have a kernel recipe that
478 inherits the
479 <link linkend='ref-classes-kernel'>kernel</link> class
480 and you use the previous statement.
481 In this example, <filename>${SRCPV}</filename> does not
482 automatically get into <filename>PV</filename>.
483 Consequently, you need to change <filename>PV</filename>
484 in your recipe so that it does contain
485 <filename>${SRCPV}</filename>.
486 </para>
487 </glossdef>
488 </glossentry>
489
490 <glossentry id='var-AVAILTUNES'><glossterm>AVAILTUNES</glossterm>
491 <info>
492 AVAILTUNES[doc] = "The list of defined CPU and Application Binary Interface (ABI) tunings (i.e. "tunes") available for use by the OpenEmbedded build system."
493 </info>
494 <glossdef>
495 <para role="glossdeffirst">
496<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
497 The list of defined CPU and Application Binary Interface
498 (ABI) tunings (i.e. "tunes") available for use by the
499 OpenEmbedded build system.
500 </para>
501
502 <para>
503 The list simply presents the tunes that are available.
504 Not all tunes may be compatible with a particular
505 machine configuration, or with each other in a
506 <ulink url='&YOCTO_DOCS_DEV_URL;#combining-multiple-versions-library-files-into-one-image'>Multilib</ulink>
507 configuration.
508 </para>
509
510 <para>
511 To add a tune to the list, be sure to append it with
512 spaces using the "+=" BitBake operator.
513 Do not simply replace the list by using the "=" operator.
514 See the
515 "<ulink url='&YOCTO_DOCS_BB_URL;#basic-syntax'>Basic Syntax</ulink>"
516 section in the BitBake User Manual for more information.
517 </para>
518 </glossdef>
519 </glossentry>
520
521 </glossdiv>
522
523 <glossdiv id='var-glossary-b'><title>B</title>
524
525 <glossentry id='var-B'><glossterm>B</glossterm>
526 <info>
527 B[doc] = "The Build Directory. The OpenEmbedded build system places generated objects into the Build Directory during a recipe's build process."
528 </info>
529 <glossdef>
530 <para role="glossdeffirst">
531<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
532 The directory within the
533 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
534 in which the OpenEmbedded build system places generated
535 objects during a recipe's build process.
536 By default, this directory is the same as the <link linkend='var-S'><filename>S</filename></link>
537 directory, which is defined as:
538 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -0600539 S = "${WORKDIR}/${BP}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500540 </literallayout>
541 </para>
542
543 <para>
544 You can separate the (<filename>S</filename>) directory
545 and the directory pointed to by the <filename>B</filename>
546 variable.
547 Most Autotools-based recipes support separating these
548 directories.
549 The build system defaults to using separate directories for
550 <filename>gcc</filename> and some kernel recipes.
551 </para>
552 </glossdef>
553 </glossentry>
554
555 <glossentry id='var-BAD_RECOMMENDATIONS'><glossterm>BAD_RECOMMENDATIONS</glossterm>
556 <info>
557 BAD_RECOMMENDATIONS[doc] = "A list of packages not to install despite being recommended by a recipe. Support for this variable exists only when using the IPK packaging backend."
558 </info>
559 <glossdef>
560 <para role="glossdeffirst">
561<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
562 Lists "recommended-only" packages to not install.
563 Recommended-only packages are packages installed only
564 through the
565 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
566 variable.
567 You can prevent any of these "recommended" packages from
568 being installed by listing them with the
569 <filename>BAD_RECOMMENDATIONS</filename> variable:
570 <literallayout class='monospaced'>
571 BAD_RECOMMENDATIONS = "<replaceable>package_name</replaceable> <replaceable>package_name</replaceable> <replaceable>package_name</replaceable> ..."
572 </literallayout>
573 </para>
574
575 <para>
576 You can set this variable globally in your
577 <filename>local.conf</filename> file or you can attach it to
578 a specific image recipe by using the recipe name override:
579 <literallayout class='monospaced'>
580 BAD_RECOMMENDATIONS_pn-<replaceable>target_image</replaceable> = "<replaceable>package_name</replaceable>"
581 </literallayout>
582 </para>
583
584 <para>
585 It is important to realize that if you choose to not install
586 packages using this variable and some other packages are
587 dependent on them (i.e. listed in a recipe's
588 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
589 variable), the OpenEmbedded build system ignores your
590 request and will install the packages to avoid dependency
591 errors.
592 </para>
593
594 <para>
595 Support for this variable exists only when using the
596 IPK and RPM packaging backend.
597 Support does not exist for DEB.
598 </para>
599
600 <para>
601 See the
602 <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>
603 and the
604 <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
605 variables for related information.
606 </para>
607 </glossdef>
608 </glossentry>
609
610 <glossentry id='var-BASE_LIB'><glossterm>BASE_LIB</glossterm>
611 <info>
612 BASE_LIB[doc] = "The library directory name for the CPU or Application Binary Interface (ABI) tune."
613 </info>
614 <glossdef>
615 <para role="glossdeffirst">
616<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
617 The library directory name for the CPU or Application
618 Binary Interface (ABI) tune.
619 The <filename>BASE_LIB</filename> applies only in the
620 Multilib context.
621 See the
622 "<ulink url='&YOCTO_DOCS_DEV_URL;#combining-multiple-versions-library-files-into-one-image'>Combining Multiple Versions of Library Files into One Image</ulink>"
623 section in the Yocto Project Development Manual for
624 information on Multilib.
625 </para>
626
627 <para>
628 The <filename>BASE_LIB</filename> variable is defined in
629 the machine include files in the
630 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
631 If Multilib is not being used, the value defaults to "lib".
632 </para>
633 </glossdef>
634 </glossentry>
635
636 <glossentry id='var-BASE_WORKDIR'><glossterm>BASE_WORKDIR</glossterm>
637 <info>
638 BASE_WORKDIR[doc] = "Points to the base of the work directory for all recipes."
639 </info>
640 <glossdef>
641 <para role="glossdeffirst">
642<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
643 Points to the base of the work directory for all recipes.
644 The default value is "${TMPDIR}/work".
645 </para>
646 </glossdef>
647 </glossentry>
648
649 <glossentry id='var-BB_ALLOWED_NETWORKS'><glossterm>BB_ALLOWED_NETWORKS</glossterm>
650 <info>
651 BB_ALLOWED_NETWORKS[doc] = "A list of hosts that the fetcher is allowed to use to obtain the required source code."
652 </info>
653 <glossdef>
654 <para>
655 Specifies a space-delimited list of hosts that the fetcher
656 is allowed to use to obtain the required source code.
657 Following are considerations surrounding this variable:
658 <itemizedlist>
659 <listitem><para>
660 This host list is only used if
661 <filename>BB_NO_NETWORK</filename> is either not
662 set or set to "0".
663 </para></listitem>
664 <listitem><para>
665 Limited support for wildcard matching against the
666 beginning of host names exists.
667 For example, the following setting matches
668 <filename>git.gnu.org</filename>,
669 <filename>ftp.gnu.org</filename>, and
670 <filename>foo.git.gnu.org</filename>.
671 <literallayout class='monospaced'>
672 BB_ALLOWED_NETWORKS = "*.gnu.org"
673 </literallayout>
674 </para></listitem>
675 <listitem><para>
676 Mirrors not in the host list are skipped and
677 logged in debug.
678 </para></listitem>
679 <listitem><para>
680 Attempts to access networks not in the host list
681 cause a failure.
682 </para></listitem>
683 </itemizedlist>
684 Using <filename>BB_ALLOWED_NETWORKS</filename> in
685 conjunction with
686 <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
687 is very useful.
688 Adding the host you want to use to
689 <filename>PREMIRRORS</filename> results in the source code
690 being fetched from an allowed location and avoids raising
691 an error when a host that is not allowed is in a
692 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
693 statement.
694 This is because the fetcher does not attempt to use the
695 host listed in <filename>SRC_URI</filename> after a
696 successful fetch from the
697 <filename>PREMIRRORS</filename> occurs.
698 </para>
699 </glossdef>
700 </glossentry>
701
702 <glossentry id='var-BB_DANGLINGAPPENDS_WARNONLY'><glossterm>BB_DANGLINGAPPENDS_WARNONLY</glossterm>
703 <info>
704 BB_DANGLINGAPPENDS_WARNONLY[doc] = "Defines how BitBake handles situations where an append file (.bbappend) has no corresponding recipe file (.bb)."
705 </info>
706 <glossdef>
707 <para role="glossdeffirst">
708<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
709 Defines how BitBake handles situations where an append
710 file (<filename>.bbappend</filename>) has no
711 corresponding recipe file (<filename>.bb</filename>).
712 This condition often occurs when layers get out of sync
713 (e.g. <filename>oe-core</filename> bumps a
714 recipe version and the old recipe no longer exists and the
715 other layer has not been updated to the new version
716 of the recipe yet).
717 </para>
718
719 <para>
720 The default fatal behavior is safest because it is
721 the sane reaction given something is out of sync.
722 It is important to realize when your changes are no longer
723 being applied.
724 </para>
725
726 <para>
727 You can change the default behavior by setting this
728 variable to "1", "yes", or "true"
729 in your <filename>local.conf</filename> file, which is
730 located in the
731 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>:
732 Here is an example:
733 <literallayout class='monospaced'>
734 BB_DANGLINGAPPENDS_WARNONLY = "1"
735 </literallayout>
736 </para>
737 </glossdef>
738 </glossentry>
739
740 <glossentry id='var-BB_DISKMON_DIRS'><glossterm>BB_DISKMON_DIRS</glossterm>
741 <info>
742 BB_DISKMON_DIRS[doc] = "Monitors disk space and available inodes during the build and allows you to control the build based on these parameters."
743 </info>
744 <glossdef>
745 <para role="glossdeffirst">
746<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
747 Monitors disk space and available inodes during the build
748 and allows you to control the build based on these
749 parameters.
750 </para>
751
752 <para>
753 Disk space monitoring is disabled by default.
754 To enable monitoring, add the <filename>BB_DISKMON_DIRS</filename>
755 variable to your <filename>conf/local.conf</filename> file found in the
756 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
757 Use the following form:
758 <literallayout class='monospaced'>
759 BB_DISKMON_DIRS = "<replaceable>action</replaceable>,<replaceable>dir</replaceable>,<replaceable>threshold</replaceable> [...]"
760
761 where:
762
763 <replaceable>action</replaceable> is:
764 ABORT: Immediately abort the build when
765 a threshold is broken.
766 STOPTASKS: Stop the build after the currently
767 executing tasks have finished when
768 a threshold is broken.
769 WARN: Issue a warning but continue the
770 build when a threshold is broken.
771 Subsequent warnings are issued as
772 defined by the
773 <link linkend='var-BB_DISKMON_WARNINTERVAL'>BB_DISKMON_WARNINTERVAL</link> variable,
774 which must be defined in the
775 conf/local.conf file.
776
777 <replaceable>dir</replaceable> is:
778 Any directory you choose. You can specify one or
779 more directories to monitor by separating the
780 groupings with a space. If two directories are
781 on the same device, only the first directory
782 is monitored.
783
784 <replaceable>threshold</replaceable> is:
785 Either the minimum available disk space,
786 the minimum number of free inodes, or
787 both. You must specify at least one. To
788 omit one or the other, simply omit the value.
789 Specify the threshold using G, M, K for Gbytes,
790 Mbytes, and Kbytes, respectively. If you do
791 not specify G, M, or K, Kbytes is assumed by
792 default. Do not use GB, MB, or KB.
793 </literallayout>
794 </para>
795
796 <para>
797 Here are some examples:
798 <literallayout class='monospaced'>
799 BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
800 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
801 BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K"
802 </literallayout>
803 The first example works only if you also provide
804 the <link linkend='var-BB_DISKMON_WARNINTERVAL'><filename>BB_DISKMON_WARNINTERVAL</filename></link> variable
805 in the <filename>conf/local.conf</filename>.
806 This example causes the build system to immediately
807 abort when either the disk space in <filename>${TMPDIR}</filename> drops
808 below 1 Gbyte or the available free inodes drops below
809 100 Kbytes.
810 Because two directories are provided with the variable, the
811 build system also issue a
812 warning when the disk space in the
813 <filename>${SSTATE_DIR}</filename> directory drops
814 below 1 Gbyte or the number of free inodes drops
815 below 100 Kbytes.
816 Subsequent warnings are issued during intervals as
817 defined by the <filename>BB_DISKMON_WARNINTERVAL</filename>
818 variable.
819 </para>
820
821 <para>
822 The second example stops the build after all currently
823 executing tasks complete when the minimum disk space
824 in the <filename>${<link linkend='var-TMPDIR'>TMPDIR</link>}</filename>
825 directory drops below 1 Gbyte.
826 No disk monitoring occurs for the free inodes in this case.
827 </para>
828
829 <para>
830 The final example immediately aborts the build when the
831 number of free inodes in the <filename>${TMPDIR}</filename> directory
832 drops below 100 Kbytes.
833 No disk space monitoring for the directory itself occurs
834 in this case.
835 </para>
836 </glossdef>
837 </glossentry>
838
839 <glossentry id='var-BB_DISKMON_WARNINTERVAL'><glossterm>BB_DISKMON_WARNINTERVAL</glossterm>
840 <info>
841 BB_DISKMON_WARNINTERVAL[doc] = "Defines the disk space and free inode warning intervals. To set these intervals, define the variable in the conf/local.conf file in the Build Directory."
842 </info>
843 <glossdef>
844 <para role="glossdeffirst">
845<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
846 Defines the disk space and free inode warning intervals.
847 To set these intervals, define the variable in your
848 <filename>conf/local.conf</filename> file in the
849 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
850 </para>
851
852 <para>
853 If you are going to use the
854 <filename>BB_DISKMON_WARNINTERVAL</filename> variable, you must
855 also use the
856 <link linkend='var-BB_DISKMON_DIRS'><filename>BB_DISKMON_DIRS</filename></link> variable
857 and define its action as "WARN".
858 During the build, subsequent warnings are issued each time
859 disk space or number of free inodes further reduces by
860 the respective interval.
861 </para>
862
863 <para>
864 If you do not provide a <filename>BB_DISKMON_WARNINTERVAL</filename>
865 variable and you do use <filename>BB_DISKMON_DIRS</filename> with
866 the "WARN" action, the disk monitoring interval defaults to
867 the following:
868 <literallayout class='monospaced'>
869 BB_DISKMON_WARNINTERVAL = "50M,5K"
870 </literallayout>
871 </para>
872
873 <para>
874 When specifying the variable in your configuration file,
875 use the following form:
876 <literallayout class='monospaced'>
877 BB_DISKMON_WARNINTERVAL = "<replaceable>disk_space_interval</replaceable>,<replaceable>disk_inode_interval</replaceable>"
878
879 where:
880
881 <replaceable>disk_space_interval</replaceable> is:
882 An interval of memory expressed in either
883 G, M, or K for Gbytes, Mbytes, or Kbytes,
884 respectively. You cannot use GB, MB, or KB.
885
886 <replaceable>disk_inode_interval</replaceable> is:
887 An interval of free inodes expressed in either
888 G, M, or K for Gbytes, Mbytes, or Kbytes,
889 respectively. You cannot use GB, MB, or KB.
890 </literallayout>
891 </para>
892
893 <para>
894 Here is an example:
895 <literallayout class='monospaced'>
896 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
897 BB_DISKMON_WARNINTERVAL = "50M,5K"
898 </literallayout>
899 These variables cause the OpenEmbedded build system to
900 issue subsequent warnings each time the available
901 disk space further reduces by 50 Mbytes or the number
902 of free inodes further reduces by 5 Kbytes in the
903 <filename>${SSTATE_DIR}</filename> directory.
904 Subsequent warnings based on the interval occur each time
905 a respective interval is reached beyond the initial warning
906 (i.e. 1 Gbytes and 100 Kbytes).
907 </para>
908 </glossdef>
909 </glossentry>
910
911 <glossentry id='var-BB_GENERATE_MIRROR_TARBALLS'><glossterm>BB_GENERATE_MIRROR_TARBALLS</glossterm>
912 <info>
913 BB_GENERATE_MIRROR_TARBALLS[doc] = "Causes tarballs of the Git repositories to be placed in the DL_DIR directory."
914 </info>
915 <glossdef>
916 <para role="glossdeffirst">
917<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
918 Causes tarballs of the Git repositories, including the
919 Git metadata, to be placed in the
920 <link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
921 directory.
922 </para>
923
924 <para>
925 For performance reasons, creating and placing tarballs of
926 the Git repositories is not the default action by the
927 OpenEmbedded build system.
928 <literallayout class='monospaced'>
929 BB_GENERATE_MIRROR_TARBALLS = "1"
930 </literallayout>
931 Set this variable in your <filename>local.conf</filename>
932 file in the
933 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
934 </para>
935 </glossdef>
936 </glossentry>
937
938 <glossentry id='var-BB_NUMBER_THREADS'><glossterm>BB_NUMBER_THREADS</glossterm>
939 <info>
940 BB_NUMBER_THREADS[doc] = "The maximum number of tasks BitBake should run in parallel at any one time. This variable is automatically configured to be equal to the number of build system cores."
941 </info>
942 <glossdef>
943 <para role="glossdeffirst">
944<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
945 The maximum number of tasks BitBake should run in parallel
946 at any one time.
947 The OpenEmbedded build system automatically configures
948 this variable to be equal to the number of cores on the
949 build system.
950 For example, a system with a dual core processor that
951 also uses hyper-threading causes the
952 <filename>BB_NUMBER_THREADS</filename> variable to default
953 to "4".
954 </para>
955
956 <para>
957 For single socket systems (i.e. one CPU), you should not
958 have to override this variable to gain optimal parallelism
959 during builds.
960 However, if you have very large systems that employ
961 multiple physical CPUs, you might want to make sure the
962 <filename>BB_NUMBER_THREADS</filename> variable is not
963 set higher than "20".
964 </para>
965
966 <para>
967 For more information on speeding up builds, see the
968 "<link linkend='speeding-up-the-build'>Speeding Up the Build</link>"
969 section.
970 </para>
971 </glossdef>
972 </glossentry>
973
974 <glossentry id='var-BBCLASSEXTEND'><glossterm>BBCLASSEXTEND</glossterm>
975 <info>
976 BBCLASSEXTEND[doc] = "Allows you to extend a recipe so that it builds variants of the software. Common variants for recipes are 'native', 'cross', 'nativesdk' and multilibs."
977 </info>
978 <glossdef>
979 <para role="glossdeffirst">
980<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
981 Allows you to extend a recipe so that it builds variants of the software.
982 Common variants for recipes exist such as "natives" like <filename>quilt-native</filename>,
983 which is a copy of Quilt built to run on the build system;
984 "crosses" such as <filename>gcc-cross</filename>,
985 which is a compiler built to run on the build machine but produces binaries
986 that run on the target <link linkend='var-MACHINE'><filename>MACHINE</filename></link>;
987 "nativesdk", which targets the SDK machine instead of <filename>MACHINE</filename>;
988 and "mulitlibs" in the form "<filename>multilib:</filename><replaceable>multilib_name</replaceable>".
989 </para>
990
991 <para>
992 To build a different variant of the recipe with a minimal amount of code, it usually
993 is as simple as adding the following to your recipe:
994 <literallayout class='monospaced'>
995 BBCLASSEXTEND =+ "native nativesdk"
996 BBCLASSEXTEND =+ "multilib:<replaceable>multilib_name</replaceable>"
997 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -0600998 <note>
999 <para>
1000 Internally, the <filename>BBCLASSEXTEND</filename>
1001 mechanism generates recipe variants by rewriting
1002 variable values and applying overrides such as
1003 <filename>_class-native</filename>.
1004 For example, to generate a native version of a recipe,
1005 a
1006 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
1007 on "foo" is rewritten to a <filename>DEPENDS</filename>
1008 on "foo-native".
1009 </para>
1010
1011 <para>
1012 Even when using <filename>BBCLASSEXTEND</filename>, the
1013 recipe is only parsed once.
1014 Parsing once adds some limitations.
1015 For example, it is not possible to
1016 include a different file depending on the variant,
1017 since <filename>include</filename> statements are
1018 processed when the recipe is parsed.
1019 </para>
1020 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001021 </para>
1022 </glossdef>
1023 </glossentry>
1024
1025 <glossentry id='var-BBFILE_COLLECTIONS'><glossterm>BBFILE_COLLECTIONS</glossterm>
1026 <info>
1027 BBFILE_COLLECTIONS[doc] = "Lists the names of configured layers. These names are used to find the other BBFILE_* variables."
1028 </info>
1029 <glossdef>
1030 <para role="glossdeffirst">
1031<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1032 Lists the names of configured layers.
1033 These names are used to find the other <filename>BBFILE_*</filename>
1034 variables.
1035 Typically, each layer will append its name to this variable in its
1036 <filename>conf/layer.conf</filename> file.
1037 </para>
1038 </glossdef>
1039 </glossentry>
1040
1041 <glossentry id='var-BBFILE_PATTERN'><glossterm>BBFILE_PATTERN</glossterm>
1042 <info>
1043 BBFILE_PATTERN[doc] = "Variable that expands to match files from BBFILES in a particular layer. This variable is used in the layer.conf file and must be suffixed with the name of a layer."
1044 </info>
1045 <glossdef>
1046 <para role="glossdeffirst">
1047<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1048 Variable that expands to match files from
1049 <link linkend='var-BBFILES'><filename>BBFILES</filename></link>
1050 in a particular layer.
1051 This variable is used in the <filename>conf/layer.conf</filename> file and must
1052 be suffixed with the name of the specific layer (e.g.
1053 <filename>BBFILE_PATTERN_emenlow</filename>).
1054 </para>
1055 </glossdef>
1056 </glossentry>
1057
1058 <glossentry id='var-BBFILE_PRIORITY'><glossterm>BBFILE_PRIORITY</glossterm>
1059 <info>
1060 BBFILE_PRIORITY[doc] = "Assigns the priority for recipe files in each layer. Setting this variable allows you to prioritize a layer against other layers that contain the same recipe."
1061 </info>
1062 <glossdef>
1063 <para role="glossdeffirst">
1064<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1065 Assigns the priority for recipe files in each layer.
1066 </para>
1067
1068 <para>
1069 This variable is useful in situations where the same recipe appears in
1070 more than one layer.
1071 Setting this variable allows you to prioritize a
1072 layer against other layers that contain the same recipe - effectively
1073 letting you control the precedence for the multiple layers.
1074 The precedence established through this variable stands regardless of a
1075 recipe's version
1076 (<link linkend='var-PV'><filename>PV</filename></link> variable).
1077 For example, a layer that has a recipe with a higher <filename>PV</filename> value but for
1078 which the <filename>BBFILE_PRIORITY</filename> is set to have a lower precedence still has a
1079 lower precedence.
1080 </para>
1081
1082 <para>
1083 A larger value for the <filename>BBFILE_PRIORITY</filename> variable results in a higher
1084 precedence.
1085 For example, the value 6 has a higher precedence than the value 5.
1086 If not specified, the <filename>BBFILE_PRIORITY</filename> variable is set based on layer
1087 dependencies (see the
1088 <filename><link linkend='var-LAYERDEPENDS'>LAYERDEPENDS</link></filename> variable for
1089 more information.
1090 The default priority, if unspecified
1091 for a layer with no dependencies, is the lowest defined priority + 1
1092 (or 1 if no priorities are defined).
1093 </para>
1094 <tip>
1095 You can use the command <filename>bitbake-layers show-layers</filename> to list
1096 all configured layers along with their priorities.
1097 </tip>
1098 </glossdef>
1099 </glossentry>
1100
1101 <glossentry id='var-BBFILES'><glossterm>BBFILES</glossterm>
1102 <info>
1103 BBFILES[doc] = "List of recipe files used by BitBake to build software."
1104 </info>
1105 <glossdef>
1106 <para role="glossdeffirst">
1107<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1108 List of recipe files used by BitBake to build software.
1109 </para>
1110 </glossdef>
1111 </glossentry>
1112
1113 <glossentry id='var-BBINCLUDELOGS'><glossterm>BBINCLUDELOGS</glossterm>
1114 <info>
1115 BBINCLUDELOGS[doc] = "Variable that controls how BitBake displays logs on build failure."
1116 </info>
1117 <glossdef>
1118 <para role="glossdeffirst">
1119<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1120 Variable that controls how BitBake displays logs on build failure.
1121 </para>
1122 </glossdef>
1123 </glossentry>
1124
1125 <glossentry id='var-BBINCLUDELOGS_LINES'><glossterm>BBINCLUDELOGS_LINES</glossterm>
1126 <info>
1127 BBINCLUDELOGS_LINES[doc] = "Amount of log lines printed on failure."
1128 </info>
1129 <glossdef>
1130 <para role="glossdeffirst">
1131<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1132 If
1133 <link linkend='var-BBINCLUDELOGS'><filename>BBINCLUDELOGS</filename></link>
1134 is set, specifies the maximum number of lines from the
1135 task log file to print when reporting a failed task.
1136 If you do not set <filename>BBINCLUDELOGS_LINES</filename>,
1137 the entire log is printed.
1138 </para>
1139 </glossdef>
1140 </glossentry>
1141
1142 <glossentry id='var-BBLAYERS'><glossterm>BBLAYERS</glossterm>
1143 <info>
1144 BBLAYERS[doc] = "Lists the layers to enable during the build. This variable is defined in the bblayers.conf configuration file."
1145 </info>
1146 <glossdef>
1147 <para role="glossdeffirst">
1148<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1149 Lists the layers to enable during the build.
1150 This variable is defined in the <filename>bblayers.conf</filename> configuration
1151 file in the <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
1152 Here is an example:
1153 <literallayout class='monospaced'>
1154 BBLAYERS = " \
1155 /home/scottrif/poky/meta \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001156 /home/scottrif/poky/meta-poky \
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001157 /home/scottrif/poky/meta-yocto-bsp \
1158 /home/scottrif/poky/meta-mykernel \
1159 "
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001160 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001161 </para>
1162
1163 <para>
1164 This example enables four layers, one of which is a custom, user-defined layer
1165 named <filename>meta-mykernel</filename>.
1166 </para>
1167 </glossdef>
1168 </glossentry>
1169
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001170 <glossentry id='var-BBMASK'><glossterm>BBMASK</glossterm>
1171 <info>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001172 BBMASK[doc] = "Prevents BitBake from processing specific recipes or recipe append files."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001173 </info>
1174 <glossdef>
1175 <para role="glossdeffirst">
1176<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1177 Prevents BitBake from processing recipes and recipe
1178 append files.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001179 </para>
1180
1181 <para>
1182 You can use the <filename>BBMASK</filename> variable
1183 to "hide" these <filename>.bb</filename> and
1184 <filename>.bbappend</filename> files.
1185 BitBake ignores any recipe or recipe append files that
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001186 match any of the expressions.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001187 It is as if BitBake does not see them at all.
1188 Consequently, matching files are not parsed or otherwise
1189 used by BitBake.</para>
1190 <para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001191 The values you provide are passed to Python's regular
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001192 expression compiler.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001193 The expressions are compared against the full paths to
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001194 the files.
1195 For complete syntax information, see Python's
1196 documentation at
1197 <ulink url='http://docs.python.org/release/2.3/lib/re-syntax.html'></ulink>.
1198 </para>
1199
1200 <para>
1201 The following example uses a complete regular expression
1202 to tell BitBake to ignore all recipe and recipe append
1203 files in the <filename>meta-ti/recipes-misc/</filename>
1204 directory:
1205 <literallayout class='monospaced'>
1206 BBMASK = "meta-ti/recipes-misc/"
1207 </literallayout>
1208 If you want to mask out multiple directories or recipes,
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001209 you can specify multiple regular expression fragments.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001210 This next example masks out multiple directories and
1211 individual recipes:
1212 <literallayout class='monospaced'>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001213 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
1214 BBMASK += "/meta-oe/recipes-support/"
1215 BBMASK += "/meta-foo/.*/openldap"
1216 BBMASK += "opencv.*\.bbappend"
1217 BBMASK += "lzma"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001218 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001219 <note>
1220 When specifying a directory name, use the trailing
1221 slash character to ensure you match just that directory
1222 name.
1223 </note>
1224 </para>
1225 </glossdef>
1226 </glossentry>
1227
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001228 <glossentry id='var-BBMULTICONFIG'><glossterm>BBMULTICONFIG</glossterm>
1229 <info>
1230 BBMULTICONFIG[doc] = "Specifies each separate configuration when you are building targets with multiple configurations."
1231 </info>
1232 <glossdef>
1233 <para role="glossdeffirst">
1234<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1235 Specifies each separate configuration when you are
1236 building targets with multiple configurations.
1237 Use this variable in your
1238 <filename>conf/local.conf</filename> configuration file.
1239 Specify a <replaceable>multiconfigname</replaceable> for
1240 each configuration file you are using.
1241 For example, the following line specifies three
1242 configuration files:
1243 <literallayout class='monospaced'>
1244 BBMULTIFONFIG = "configA configB configC"
1245 </literallayout>
1246 Each configuration file you use must reside in the
1247 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory's</ulink>
1248 <filename>conf/multiconfig</filename> directory
1249 (e.g.
1250 <replaceable>build_directory</replaceable><filename>/conf/multiconfig/configA.conf</filename>).
1251 </para>
1252
1253 <para>
1254 For information on how to use
1255 <filename>BBMULTICONFIG</filename> in an environment that
1256 supports building targets with multiple configurations,
1257 see the
1258 "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-building-targets-with-multiple-configurations'>Building Targets with Multiple Configurations</ulink>"
1259 section in the Yocto Project Development Manual.
1260 </para>
1261 </glossdef>
1262 </glossentry>
1263
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001264 <glossentry id='var-BBPATH'><glossterm>BBPATH</glossterm>
1265 <info>
1266 BBPATH[doc] = "Used by BitBake to locate .bbclass and configuration files. This variable is analogous to the PATH variable."
1267 </info>
1268 <glossdef>
1269 <para role="glossdeffirst">
1270<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1271 Used by BitBake to locate
1272 <filename>.bbclass</filename> and configuration files.
1273 This variable is analogous to the
1274 <filename>PATH</filename> variable.
1275 <note>
1276 If you run BitBake from a directory outside of the
1277 <ulink url='&YOCTO_DOCS_DEV_URL;build-directory'>Build Directory</ulink>,
1278 you must be sure to set
1279 <filename>BBPATH</filename> to point to the
1280 Build Directory.
1281 Set the variable as you would any environment variable
1282 and then run BitBake:
1283 <literallayout class='monospaced'>
1284 $ BBPATH = "<replaceable>build_directory</replaceable>"
1285 $ export BBPATH
1286 $ bitbake <replaceable>target</replaceable>
1287 </literallayout>
1288 </note>
1289 </para>
1290 </glossdef>
1291 </glossentry>
1292
1293 <glossentry id='var-BBSERVER'><glossterm>BBSERVER</glossterm>
1294 <info>
1295 BBSERVER[doc] = "Points to the server that runs memory-resident BitBake."
1296 </info>
1297 <glossdef>
1298 <para role="glossdeffirst">
1299<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1300 Points to the server that runs memory-resident BitBake.
1301 This variable is set by the
1302 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>
1303 setup script and should not be hand-edited.
1304 The variable is only used when you employ memory-resident
1305 BitBake.
1306 The setup script exports the value as follows:
1307 <literallayout class='monospaced'>
1308 export BBSERVER=localhost:$port
1309 </literallayout>
1310 </para>
1311
1312 <para>
1313 For more information on how the
1314 <filename>BBSERVER</filename> is used, see the
1315 <filename>oe-init-build-env-memres</filename> script, which
1316 is located in the
1317 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
1318 </para>
1319 </glossdef>
1320 </glossentry>
1321
1322 <glossentry id='var-BINCONFIG'><glossterm>BINCONFIG</glossterm>
1323 <info>
1324 BINCONFIG[doc] = "When inheriting the binconfig-disabled class, this variable specifies binary configuration scripts to disable in favor of using pkg-config to query the information."
1325 </info>
1326 <glossdef>
1327 <para role="glossdeffirst">
1328<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1329 When inheriting the
1330 <link linkend='ref-classes-binconfig-disabled'><filename>binconfig-disabled</filename></link>
1331 class, this variable specifies binary configuration
1332 scripts to disable in favor of using
1333 <filename>pkg-config</filename> to query the information.
1334 The <filename>binconfig-disabled</filename> class will
1335 modify the specified scripts to return an error so that
1336 calls to them can be easily found and replaced.
1337 </para>
1338
1339 <para>
1340 To add multiple scripts, separate them by spaces.
1341 Here is an example from the <filename>libpng</filename>
1342 recipe:
1343 <literallayout class='monospaced'>
1344 BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
1345 </literallayout>
1346 </para>
1347 </glossdef>
1348 </glossentry>
1349
1350 <glossentry id='var-BINCONFIG_GLOB'><glossterm>BINCONFIG_GLOB</glossterm>
1351 <info>
1352 BINCONFIG_GLOB[doc] = "When inheriting binconfig.bbclass from a recipe, this variable specifies a wildcard for configuration scripts that need editing."
1353 </info>
1354 <glossdef>
1355 <para role="glossdeffirst">
1356<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1357 When inheriting the
1358 <link linkend='ref-classes-binconfig'><filename>binconfig</filename></link>
1359 class, this variable specifies a wildcard for
1360 configuration scripts that need editing.
1361 The scripts are edited to correct any paths that have been
1362 set up during compilation so that they are correct for
1363 use when installed into the sysroot and called by the
1364 build processes of other recipes.
1365 </para>
1366
1367 <para>
1368 For more information on how this variable works, see
1369 <filename>meta/classes/binconfig.bbclass</filename> in the
1370 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
1371 You can also find general information on the class in the
1372 "<link linkend='ref-classes-binconfig'><filename>binconfig.bbclass</filename></link>"
1373 section.
1374 </para>
1375 </glossdef>
1376 </glossentry>
1377
1378 <glossentry id='var-BP'><glossterm>BP</glossterm>
1379 <info>
1380 BP[doc] = "The base recipe name and version but without any special recipe name suffix (i.e. -native, lib64-, and so forth). BP is comprised of ${BPN}-${PV}"
1381 </info>
1382 <glossdef>
1383 <para role="glossdeffirst">
1384<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1385 The base recipe name and version but without any special
1386 recipe name suffix (i.e. <filename>-native</filename>, <filename>lib64-</filename>,
1387 and so forth).
1388 <filename>BP</filename> is comprised of the following:
1389 <literallayout class="monospaced">
1390 ${BPN}-${PV}
1391 </literallayout>
1392 </para>
1393 </glossdef>
1394 </glossentry>
1395
1396 <glossentry id='var-BPN'><glossterm>BPN</glossterm>
1397 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001398 BPN[doc] = "This variable is a version of the PN variable but removes common suffixes and prefixes."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001399 </info>
1400 <glossdef>
1401 <para role="glossdeffirst">
1402<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001403 This variable is a version of the
1404 <link linkend='var-PN'><filename>PN</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001405 variable with common prefixes and suffixes
1406 removed, such as <filename>nativesdk-</filename>,
1407 <filename>-cross</filename>,
1408 <filename>-native</filename>, and multilib's
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001409 <filename>lib64-</filename> and
1410 <filename>lib32-</filename>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001411 The exact lists of prefixes and suffixes removed are
1412 specified by the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001413 <link linkend='var-MLPREFIX'><filename>MLPREFIX</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001414 and
1415 <link linkend='var-SPECIAL_PKGSUFFIX'><filename>SPECIAL_PKGSUFFIX</filename></link>
1416 variables, respectively.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001417 </para>
1418 </glossdef>
1419 </glossentry>
1420
1421 <glossentry id='var-BUGTRACKER'><glossterm>BUGTRACKER</glossterm>
1422 <info>
1423 BUGTRACKER[doc] = "Specifies a URL for an upstream bug tracking website for a recipe."
1424 </info>
1425 <glossdef>
1426 <para role="glossdeffirst">
1427<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1428 Specifies a URL for an upstream bug tracking website for
1429 a recipe.
1430 The OpenEmbedded build system does not use this variable.
1431 Rather, the variable is a useful pointer in case a bug
1432 in the software being built needs to be manually reported.
1433 </para>
1434 </glossdef>
1435 </glossentry>
1436
1437 <glossentry id='var-BUILD_ARCH'><glossterm>BUILD_ARCH</glossterm>
1438 <info>
1439 BUILD_ARCH[doc] = "The name of the building architecture (e.g. i686)."
1440 </info>
1441 <glossdef>
1442 <para role="glossdeffirst">
1443<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1444 Specifies the architecture of the build host
1445 (e.g. <filename>i686</filename>).
1446 The OpenEmbedded build system sets the value of
1447 <filename>BUILD_ARCH</filename> from the machine name
1448 reported by the <filename>uname</filename> command.
1449 </para>
1450 </glossdef>
1451 </glossentry>
1452
1453 <glossentry id='var-BUILD_CFLAGS'><glossterm>BUILD_CFLAGS</glossterm>
1454 <info>
1455 BUILD_CFLAGS[doc] = "Specifies the flags to pass to the C compiler when building for the build host."
1456 </info>
1457 <glossdef>
1458 <para role="glossdeffirst">
1459<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1460 Specifies the flags to pass to the C compiler when building
1461 for the build host.
1462 When building in the <filename>-native</filename> context,
1463 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
1464 is set to the value of this variable by default.
1465 </para>
1466 </glossdef>
1467 </glossentry>
1468
1469 <glossentry id='var-BUILD_CPPFLAGS'><glossterm>BUILD_CPPFLAGS</glossterm>
1470 <info>
1471 BUILD_CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers) when building for the build host."
1472 </info>
1473 <glossdef>
1474 <para role="glossdeffirst">
1475<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1476 Specifies the flags to pass to the C pre-processor
1477 (i.e. to both the C and the C++ compilers) when building
1478 for the build host.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001479 When building in the <filename>-native</filename> context,
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001480 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
1481 is set to the value of this variable by default.
1482 </para>
1483 </glossdef>
1484 </glossentry>
1485
1486 <glossentry id='var-BUILD_CXXFLAGS'><glossterm>BUILD_CXXFLAGS</glossterm>
1487 <info>
1488 BUILD_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the build host."
1489 </info>
1490 <glossdef>
1491 <para role="glossdeffirst">
1492<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1493 Specifies the flags to pass to the C++ compiler when
1494 building for the build host.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001495 When building in the <filename>-native</filename> context,
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001496 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
1497 is set to the value of this variable by default.
1498 </para>
1499 </glossdef>
1500 </glossentry>
1501
1502 <glossentry id='var-BUILD_LDFLAGS'><glossterm>BUILD_LDFLAGS</glossterm>
1503 <info>
1504 BUILD_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the build host."
1505 </info>
1506 <glossdef>
1507 <para role="glossdeffirst">
1508<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1509 Specifies the flags to pass to the linker when building
1510 for the build host.
1511 When building in the <filename>-native</filename> context,
1512 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
1513 is set to the value of this variable by default.
1514 </para>
1515 </glossdef>
1516 </glossentry>
1517
1518 <glossentry id='var-BUILD_OPTIMIZATION'><glossterm>BUILD_OPTIMIZATION</glossterm>
1519 <info>
1520 BUILD_OPTIMIZATION[doc] = "Specifies the optimization flags passed to the C compiler when building for the build host or the SDK."
1521 </info>
1522 <glossdef>
1523 <para role="glossdeffirst">
1524<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1525 Specifies the optimization flags passed to the C compiler
1526 when building for the build host or the SDK.
1527 The flags are passed through the
1528 <link linkend='var-BUILD_CFLAGS'><filename>BUILD_CFLAGS</filename></link>
1529 and
1530 <link linkend='var-BUILDSDK_CFLAGS'><filename>BUILDSDK_CFLAGS</filename></link>
1531 default values.
1532 </para>
1533
1534 <para>
1535 The default value of the
1536 <filename>BUILD_OPTIMIZATION</filename> variable is
1537 "-O2 -pipe".
1538 </para>
1539 </glossdef>
1540 </glossentry>
1541
1542 <glossentry id='var-BUILD_OS'><glossterm>BUILD_OS</glossterm>
1543 <info>
1544 BUILD_OS[doc] = "The operating system (in lower case) of the building architecture (e.g. Linux)."
1545 </info>
1546 <glossdef>
1547 <para role="glossdeffirst">
1548<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1549 Specifies the operating system in use on the build
1550 host (e.g. "linux").
1551 The OpenEmbedded build system sets the value of
1552 <filename>BUILD_OS</filename> from the OS reported by
1553 the <filename>uname</filename> command - the first word,
1554 converted to lower-case characters.
1555 </para>
1556 </glossdef>
1557 </glossentry>
1558
1559 <glossentry id='var-BUILD_PREFIX'><glossterm>BUILD_PREFIX</glossterm>
1560 <info>
1561 BUILD_PREFIX[doc] = "The toolchain binary prefix used for native recipes."
1562 </info>
1563 <glossdef>
1564 <para role="glossdeffirst">
1565<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1566 The toolchain binary prefix used for native recipes.
1567 The OpenEmbedded build system uses the
1568 <filename>BUILD_PREFIX</filename> value to set the
1569 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001570 when building for <filename>native</filename> recipes.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001571 </para>
1572 </glossdef>
1573 </glossentry>
1574
1575 <glossentry id='var-BUILD_SYS'><glossterm>BUILD_SYS</glossterm>
1576 <info>
1577 BUILD_SYS[doc] = "The toolchain binary prefix used for native recipes."
1578 </info>
1579 <glossdef>
1580 <para role="glossdeffirst">
1581<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1582 Specifies the system, including the architecture and
1583 the operating system, to use when building for the build
1584 host (i.e. when building <filename>native</filename>
1585 recipes).
1586 </para>
1587
1588 <para>
1589 The OpenEmbedded build system automatically sets this
1590 variable based on
1591 <link linkend='var-BUILD_ARCH'><filename>BUILD_ARCH</filename></link>,
1592 <link linkend='var-BUILD_VENDOR'><filename>BUILD_VENDOR</filename></link>,
1593 and
1594 <link linkend='var-BUILD_OS'><filename>BUILD_OS</filename></link>.
1595 You do not need to set the <filename>BUILD_SYS</filename>
1596 variable yourself.
1597 </para>
1598 </glossdef>
1599 </glossentry>
1600
1601 <glossentry id='var-BUILD_VENDOR'><glossterm>BUILD_VENDOR</glossterm>
1602 <info>
1603 BUILD_VENDOR[doc] = "The vendor name to use when building for the build host."
1604 </info>
1605 <glossdef>
1606 <para role="glossdeffirst">
1607<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1608 Specifies the vendor name to use when building for the
1609 build host.
1610 The default value is an empty string ("").
1611 </para>
1612 </glossdef>
1613 </glossentry>
1614
1615 <glossentry id='var-BUILDDIR'><glossterm>BUILDDIR</glossterm>
1616 <info>
1617 BUILDDIR[doc] = "Points to the location of the Build Directory."
1618 </info>
1619 <glossdef>
1620 <para role="glossdeffirst">
1621<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1622 Points to the location of the
1623 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
1624 You can define this directory indirectly through the
1625 <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
1626 and
1627 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>
1628 scripts by passing in a Build Directory path when you run
1629 the scripts.
1630 If you run the scripts and do not provide a Build Directory
1631 path, the <filename>BUILDDIR</filename> defaults to
1632 <filename>build</filename> in the current directory.
1633 </para>
1634 </glossdef>
1635 </glossentry>
1636
1637 <glossentry id='var-BUILDHISTORY_COMMIT'><glossterm>BUILDHISTORY_COMMIT</glossterm>
1638 <info>
1639 BUILDHISTORY_COMMIT[doc] = "When inheriting the buildhistory class, this variable specifies whether or not to commit the build history output in a local Git repository."
1640 </info>
1641 <glossdef>
1642 <para role="glossdeffirst">
1643<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1644 When inheriting the
1645 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1646 class, this variable specifies whether or not to commit the
1647 build history output in a local Git repository.
1648 If set to "1", this local repository will be maintained
1649 automatically by the
1650 <filename>buildhistory</filename>
1651 class and a commit will be created on every
1652 build for changes to each top-level subdirectory of the
1653 build history output (images, packages, and sdk).
1654 If you want to track changes to build history over
1655 time, you should set this value to "1".
1656 </para>
1657
1658 <para>
1659 By default, the <filename>buildhistory</filename> class
1660 does not commit the build history output in a local
1661 Git repository:
1662 <literallayout class='monospaced'>
1663 BUILDHISTORY_COMMIT ?= "0"
1664 </literallayout>
1665 </para>
1666 </glossdef>
1667 </glossentry>
1668
1669 <glossentry id='var-BUILDHISTORY_COMMIT_AUTHOR'><glossterm>BUILDHISTORY_COMMIT_AUTHOR</glossterm>
1670 <info>
1671 BUILDHISTORY_COMMIT_AUTHOR[doc] = "When inheriting the buildhistory class, this variable specifies the author to use for each Git commit."
1672 </info>
1673 <glossdef>
1674 <para role="glossdeffirst">
1675<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1676 When inheriting the
1677 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1678 class, this variable specifies the author to use for each
1679 Git commit.
1680 In order for the <filename>BUILDHISTORY_COMMIT_AUTHOR</filename>
1681 variable to work, the
1682 <link linkend='var-BUILDHISTORY_COMMIT'><filename>BUILDHISTORY_COMMIT</filename></link>
1683 variable must be set to "1".
1684 </para>
1685
1686 <para>
1687 Git requires that the value you provide for the
1688 <filename>BUILDHISTORY_COMMIT_AUTHOR</filename> variable
1689 takes the form of "name &lt;email@host&gt;".
1690 Providing an email address or host that is not valid does
1691 not produce an error.
1692 </para>
1693
1694 <para>
1695 By default, the <filename>buildhistory</filename> class
1696 sets the variable as follows:
1697 <literallayout class='monospaced'>
1698 BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory &lt;buildhistory@${DISTRO}&gt;"
1699 </literallayout>
1700 </para>
1701 </glossdef>
1702 </glossentry>
1703
1704 <glossentry id='var-BUILDHISTORY_DIR'><glossterm>BUILDHISTORY_DIR</glossterm>
1705 <info>
1706 BUILDHISTORY_DIR[doc] = "When inheriting the buildhistory class, this variable specifies the directory in which build history information is kept."
1707 </info>
1708 <glossdef>
1709 <para role="glossdeffirst">
1710<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1711 When inheriting the
1712 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1713 class, this variable specifies the directory in which
1714 build history information is kept.
1715 For more information on how the variable works, see the
1716 <filename>buildhistory.class</filename>.
1717 </para>
1718
1719 <para>
1720 By default, the <filename>buildhistory</filename> class
1721 sets the directory as follows:
1722 <literallayout class='monospaced'>
1723 BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
1724 </literallayout>
1725 </para>
1726 </glossdef>
1727 </glossentry>
1728
1729 <glossentry id='var-BUILDHISTORY_FEATURES'><glossterm>BUILDHISTORY_FEATURES</glossterm>
1730 <info>
1731 BUILDHISTORY_FEATURES[doc] = "When inheriting the buildhistory class, this variable specifies the build history features to be enabled."
1732 </info>
1733 <glossdef>
1734 <para role="glossdeffirst">
1735<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1736 When inheriting the
1737 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1738 class, this variable specifies the build history features
1739 to be enabled.
1740 For more information on how build history works, see the
1741 "<link linkend='maintaining-build-output-quality'>Maintaining Build Output Quality</link>"
1742 section.
1743 </para>
1744
1745 <para>
1746 You can specify three features in the form of a
1747 space-separated list:
1748 <itemizedlist>
1749 <listitem><para><emphasis>image:</emphasis>
1750 Analysis of the contents of images, which
1751 includes the list of installed packages among other
1752 things.
1753 </para></listitem>
1754 <listitem><para><emphasis>package:</emphasis>
1755 Analysis of the contents of individual packages.
1756 </para></listitem>
1757 <listitem><para><emphasis>sdk:</emphasis>
1758 Analysis of the contents of the software
1759 development kit (SDK).
1760 </para></listitem>
1761 </itemizedlist>
1762 </para>
1763
1764 <para>
1765 By default, the <filename>buildhistory</filename> class
1766 enables all three features:
1767 <literallayout class='monospaced'>
1768 BUILDHISTORY_FEATURES ?= "image package sdk"
1769 </literallayout>
1770 </para>
1771 </glossdef>
1772 </glossentry>
1773
1774 <glossentry id='var-BUILDHISTORY_IMAGE_FILES'><glossterm>BUILDHISTORY_IMAGE_FILES</glossterm>
1775 <info>
1776 BUILDHISTORY_IMAGE_FILES[doc] = "When inheriting the buildhistory class, this variable specifies a list of paths to files copied from the image contents into the build history directory under an "image-files" directory in the directory for the image, so that you can track the contents of each file."
1777 </info>
1778 <glossdef>
1779 <para role="glossdeffirst">
1780<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1781 When inheriting the
1782 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1783 class, this variable specifies a list of paths to files
1784 copied from the
1785 image contents into the build history directory under
1786 an "image-files" directory in the directory for
1787 the image, so that you can track the contents of each file.
1788 The default is to copy <filename>/etc/passwd</filename>
1789 and <filename>/etc/group</filename>, which allows you to
1790 monitor for changes in user and group entries.
1791 You can modify the list to include any file.
1792 Specifying an invalid path does not produce an error.
1793 Consequently, you can include files that might
1794 not always be present.
1795 </para>
1796
1797 <para>
1798 By default, the <filename>buildhistory</filename> class
1799 provides paths to the following files:
1800 <literallayout class='monospaced'>
1801 BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
1802 </literallayout>
1803 </para>
1804 </glossdef>
1805 </glossentry>
1806
1807 <glossentry id='var-BUILDHISTORY_PUSH_REPO'><glossterm>BUILDHISTORY_PUSH_REPO</glossterm>
1808 <info>
1809 BUILDHISTORY_PUSH_REPO[doc] = "When inheriting the buildhistory class, this variable optionally specifies a remote repository to which build history pushes Git changes."
1810 </info>
1811 <glossdef>
1812 <para role="glossdeffirst">
1813<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1814 When inheriting the
1815 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1816 class, this variable optionally specifies a remote
1817 repository to which build history pushes Git changes.
1818 In order for <filename>BUILDHISTORY_PUSH_REPO</filename>
1819 to work,
1820 <link linkend='var-BUILDHISTORY_COMMIT'><filename>BUILDHISTORY_COMMIT</filename></link>
1821 must be set to "1".
1822 </para>
1823
1824 <para>
1825 The repository should correspond to a remote
1826 address that specifies a repository as understood by
1827 Git, or alternatively to a remote name that you have
1828 set up manually using <filename>git remote</filename>
1829 within the local repository.
1830 </para>
1831
1832 <para>
1833 By default, the <filename>buildhistory</filename> class
1834 sets the variable as follows:
1835 <literallayout class='monospaced'>
1836 BUILDHISTORY_PUSH_REPO ?= ""
1837 </literallayout>
1838 </para>
1839 </glossdef>
1840 </glossentry>
1841
1842 <glossentry id='var-BUILDSDK_CFLAGS'><glossterm>BUILDSDK_CFLAGS</glossterm>
1843 <info>
1844 BUILDSDK_CFLAGS[doc] = "Specifies the flags to pass to the C compiler when building for the SDK."
1845 </info>
1846 <glossdef>
1847 <para role="glossdeffirst">
1848<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1849 Specifies the flags to pass to the C compiler when building
1850 for the SDK.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001851 When building in the <filename>nativesdk-</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001852 context,
1853 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
1854 is set to the value of this variable by default.
1855 </para>
1856 </glossdef>
1857 </glossentry>
1858
1859 <glossentry id='var-BUILDSDK_CPPFLAGS'><glossterm>BUILDSDK_CPPFLAGS</glossterm>
1860 <info>
1861 BUILDSDK_CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers) when building for the SDK."
1862 </info>
1863 <glossdef>
1864 <para role="glossdeffirst">
1865<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1866 Specifies the flags to pass to the C pre-processor
1867 (i.e. to both the C and the C++ compilers) when building
1868 for the SDK.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001869 When building in the <filename>nativesdk-</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001870 context,
1871 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
1872 is set to the value of this variable by default.
1873 </para>
1874 </glossdef>
1875 </glossentry>
1876
1877 <glossentry id='var-BUILDSDK_CXXFLAGS'><glossterm>BUILDSDK_CXXFLAGS</glossterm>
1878 <info>
1879 BUILDSDK_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the SDK."
1880 </info>
1881 <glossdef>
1882 <para role="glossdeffirst">
1883<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1884 Specifies the flags to pass to the C++ compiler when
1885 building for the SDK.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001886 When building in the <filename>nativesdk-</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001887 context,
1888 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
1889 is set to the value of this variable by default.
1890 </para>
1891 </glossdef>
1892 </glossentry>
1893
1894 <glossentry id='var-BUILDSDK_LDFLAGS'><glossterm>BUILDSDK_LDFLAGS</glossterm>
1895 <info>
1896 BUILDSDK_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the SDK."
1897 </info>
1898 <glossdef>
1899 <para role="glossdeffirst">
1900<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1901 Specifies the flags to pass to the linker when building
1902 for the SDK.
1903 When building in the <filename>nativesdk-</filename>
1904 context,
1905 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
1906 is set to the value of this variable by default.
1907 </para>
1908 </glossdef>
1909 </glossentry>
1910
1911 <glossentry id='var-BUILDSTATS_BASE'><glossterm>BUILDSTATS_BASE</glossterm>
1912 <info>
1913 BUILDSTATS_BASE[doc] = "Points to the location of the directory that holds build statistics when you use and enable the buildstats class."
1914 </info>
1915 <glossdef>
1916 <para role="glossdeffirst">
1917<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1918 Points to the location of the directory that holds build
1919 statistics when you use and enable the
1920 <link linkend='ref-classes-buildstats'><filename>buildstats</filename></link>
1921 class.
1922 The <filename>BUILDSTATS_BASE</filename> directory defaults
1923 to
1924 <filename>${</filename><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>}/buildstats/</filename>.
1925 </para>
1926 </glossdef>
1927 </glossentry>
1928
1929 <glossentry id='var-BUSYBOX_SPLIT_SUID'><glossterm>BUSYBOX_SPLIT_SUID</glossterm>
1930 <info>
1931 BUSYBOX_SPLIT_SUID[doc] = "For the BusyBox recipe, specifies whether to split the output executable file into two parts: one for features that require setuid root, and one for the remaining features."
1932 </info>
1933 <glossdef>
1934 <para role="glossdeffirst">
1935<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1936 For the BusyBox recipe, specifies whether to split the
1937 output executable file into two parts: one for features
1938 that require <filename>setuid root</filename>, and one for
1939 the remaining features (i.e. those that do not require
1940 <filename>setuid root</filename>).
1941 </para>
1942
1943 <para>
1944 The <filename>BUSYBOX_SPLIT_SUID</filename> variable
1945 defaults to "1", which results in a single output
1946 executable file.
1947 Set the variable to "0" to split the output file.
1948 </para>
1949 </glossdef>
1950 </glossentry>
1951
1952 </glossdiv>
1953
1954 <glossdiv id='var-glossary-c'><title>C</title>
1955
1956 <glossentry id='var-CACHE'><glossterm>CACHE</glossterm>
1957 <info>
1958 CACHE[doc] = "The directory BitBake uses to store a cache of the metadata."
1959 </info>
1960 <glossdef>
1961 <para role="glossdeffirst">
1962<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1963 Specifies the directory BitBake uses to store a cache
1964 of the
1965 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
1966 so it does not need to be parsed every time BitBake is
1967 started.
1968 </para>
1969 </glossdef>
1970 </glossentry>
1971
1972 <glossentry id='var-CC'><glossterm>CC</glossterm>
1973 <info>
1974 CC[doc] = "Minimum command and arguments to run the C compiler."
1975 </info>
1976 <glossdef>
1977 <para role="glossdeffirst">
1978<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1979 The minimal command and arguments used to run the C
1980 compiler.
1981 </para>
1982 </glossdef>
1983 </glossentry>
1984
1985 <glossentry id='var-CFLAGS'><glossterm>CFLAGS</glossterm>
1986 <info>
1987 CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as TARGET_CFLAGS."
1988 </info>
1989 <glossdef>
1990 <para role="glossdeffirst">
1991<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1992 Specifies the flags to pass to the C compiler.
1993 This variable is exported to an environment
1994 variable and thus made visible to the software being
1995 built during the compilation step.
1996 </para>
1997
1998 <para>
1999 Default initialization for <filename>CFLAGS</filename>
2000 varies depending on what is being built:
2001 <itemizedlist>
2002 <listitem><para>
2003 <link linkend='var-TARGET_CFLAGS'><filename>TARGET_CFLAGS</filename></link>
2004 when building for the target
2005 </para></listitem>
2006 <listitem><para>
2007 <link linkend='var-BUILD_CFLAGS'><filename>BUILD_CFLAGS</filename></link>
2008 when building for the build host (i.e.
2009 <filename>-native</filename>)
2010 </para></listitem>
2011 <listitem><para>
2012 <link linkend='var-BUILDSDK_CFLAGS'><filename>BUILDSDK_CFLAGS</filename></link>
2013 when building for an SDK (i.e.
2014 <filename>nativesdk-</filename>)
2015 </para></listitem>
2016 </itemizedlist>
2017 </para>
2018 </glossdef>
2019 </glossentry>
2020
2021 <glossentry id='var-CLASSOVERRIDE'><glossterm>CLASSOVERRIDE</glossterm>
2022 <info>
2023 CLASSOVERRIDE[doc] = "An internal variable specifying the special class override that should currently apply (e.g. "class-target", "class-native", and so forth)."
2024 </info>
2025 <glossdef>
2026 <para role="glossdeffirst">
2027<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2028 An internal variable specifying the special class override
2029 that should currently apply (e.g. "class-target",
2030 "class-native", and so forth).
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002031 The classes that use this variable (e.g.
2032 <link linkend='ref-classes-native'><filename>native</filename></link>,
2033 <link linkend='ref-classes-nativesdk'><filename>nativesdk</filename></link>,
2034 and so forth) set the variable to appropriate values.
2035 <note>
2036 <filename>CLASSOVERRIDE</filename> gets its default
2037 "class-target" value from the
2038 <filename>bitbake.conf</filename> file.
2039 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002040 </para>
2041
2042 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002043 As an example, the following override allows you to install
2044 extra files, but only when building for the target:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002045 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002046 do_install_append_class-target() {
2047 install my-extra-file ${D}${sysconfdir}
2048 }
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002049 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002050 Here is an example where <filename>FOO</filename>
2051 is set to "native" when building for the build host, and
2052 to "other" when not building for the build host:
2053 <literallayout class='monospaced'>
2054 FOO_class-native = "native"
2055 FOO = "other"
2056 </literallayout>
2057 The underlying mechanism behind
2058 <filename>CLASSOVERRIDE</filename> is simply that it is
2059 included in the default value of
2060 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002061 </para>
2062 </glossdef>
2063 </glossentry>
2064
2065 <glossentry id='var-CLEANBROKEN'><glossterm>CLEANBROKEN</glossterm>
2066 <info>
2067 CLEANBROKEN[doc] = "Prevents the build system from running 'make clean' during the do_configure task."
2068 </info>
2069 <glossdef>
2070 <para role="glossdeffirst">
2071<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2072 If set to "1" within a recipe,
2073 <filename>CLEANBROKEN</filename> specifies that
2074 the <filename>make clean</filename> command does
2075 not work for the software being built.
2076 Consequently, the OpenEmbedded build system will not try
2077 to run <filename>make clean</filename> during the
2078 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
2079 task, which is the default behavior.
2080 </para>
2081 </glossdef>
2082 </glossentry>
2083
2084 <glossentry id='var-COMBINED_FEATURES'><glossterm>COMBINED_FEATURES</glossterm>
2085 <info>
2086 COMBINED_FEATURES[doc] = "A set of features common between MACHINE_FEATURES and DISTRO_FEATURES."
2087 </info>
2088 <glossdef>
2089 <para role="glossdeffirst">
2090<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2091 Provides a list of hardware features that are enabled in
2092 both
2093 <link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>
2094 and
2095 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
2096 This select list of features contains features that make
2097 sense to be controlled both at the machine and distribution
2098 configuration level.
2099 For example, the "bluetooth" feature requires hardware
2100 support but should also be optional at the distribution
2101 level, in case the hardware supports Bluetooth but you
2102 do not ever intend to use it.
2103 </para>
2104
2105 <para>
2106 For more information, see the
2107 <link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>
2108 and <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
2109 variables.
2110 </para>
2111 </glossdef>
2112 </glossentry>
2113
2114 <glossentry id='var-COMMON_LICENSE_DIR'><glossterm>COMMON_LICENSE_DIR</glossterm>
2115 <info>
2116 COMMON_LICENSE_DIR[doc] = "Points to meta/files/common-licenses in the Source Directory, which is where generic license files reside."
2117 </info>
2118 <glossdef>
2119 <para role="glossdeffirst">
2120<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2121 Points to <filename>meta/files/common-licenses</filename>
2122 in the
2123 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
2124 which is where generic license files reside.
2125 </para>
2126 </glossdef>
2127 </glossentry>
2128
2129 <glossentry id='var-COMPATIBLE_HOST'><glossterm>COMPATIBLE_HOST</glossterm>
2130 <info>
2131 COMPATIBLE_HOST[doc] = "A regular expression that resolves to one or more hosts (when the recipe is native) or one or more targets (when the recipe is non-native) with which a recipe is compatible."
2132 </info>
2133 <glossdef>
2134 <para role="glossdeffirst">
2135<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2136 A regular expression that resolves to one or more hosts
2137 (when the recipe is native) or one or more targets (when
2138 the recipe is non-native) with which a recipe is compatible.
2139 The regular expression is matched against
2140 <link linkend="var-HOST_SYS"><filename>HOST_SYS</filename></link>.
2141 You can use the variable to stop recipes from being built
2142 for classes of systems with which the recipes are not
2143 compatible.
2144 Stopping these builds is particularly useful with kernels.
2145 The variable also helps to increase parsing speed
2146 since the build system skips parsing recipes not
2147 compatible with the current system.
2148 </para>
2149 </glossdef>
2150 </glossentry>
2151
2152 <glossentry id='var-COMPATIBLE_MACHINE'><glossterm>COMPATIBLE_MACHINE</glossterm>
2153 <info>
2154 COMPATIBLE_MACHINE[doc] = "A regular expression that resolves to one or more target machines with which a recipe is compatible."
2155 </info>
2156 <glossdef>
2157 <para role="glossdeffirst">
2158<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2159 A regular expression that resolves to one or more
2160 target machines with which a recipe is compatible.
2161 The regular expression is matched against
2162 <link linkend="var-MACHINEOVERRIDES"><filename>MACHINEOVERRIDES</filename></link>.
2163 You can use the variable to stop recipes from being built
2164 for machines with which the recipes are not compatible.
2165 Stopping these builds is particularly useful with kernels.
2166 The variable also helps to increase parsing speed
2167 since the build system skips parsing recipes not
2168 compatible with the current machine.
2169 </para>
2170 </glossdef>
2171 </glossentry>
2172
2173 <glossentry id='var-COMPLEMENTARY_GLOB'><glossterm>COMPLEMENTARY_GLOB</glossterm>
2174 <info>
2175 COMPLEMENTARY_GLOB[doc] = "Defines wildcards to match when installing a list of complementary packages for all the packages installed in an image."
2176 </info>
2177 <glossdef>
2178 <para role="glossdeffirst">
2179<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2180 Defines wildcards to match when installing a list of
2181 complementary packages for all the packages explicitly
2182 (or implicitly) installed in an image.
2183 The resulting list of complementary packages is associated
2184 with an item that can be added to
2185 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
2186 An example usage of this is the "dev-pkgs" item that when
2187 added to <filename>IMAGE_FEATURES</filename> will
2188 install -dev packages (containing headers and other
2189 development files) for every package in the image.
2190 </para>
2191
2192 <para>
2193 To add a new feature item pointing to a wildcard, use a
2194 variable flag to specify the feature item name and
2195 use the value to specify the wildcard.
2196 Here is an example:
2197 <literallayout class='monospaced'>
2198 COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
2199 </literallayout>
2200 </para>
2201 </glossdef>
2202 </glossentry>
2203
2204 <glossentry id='var-CONF_VERSION'><glossterm>CONF_VERSION</glossterm>
2205 <info>
2206 CONF_VERSION[doc] = "Tracks the version of local.conf. Increased each time build/conf/ changes incompatibly."
2207 </info>
2208 <glossdef>
2209 <para role="glossdeffirst">
2210<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2211 Tracks the version of the local configuration file
2212 (i.e. <filename>local.conf</filename>).
2213 The value for <filename>CONF_VERSION</filename>
2214 increments each time <filename>build/conf/</filename>
2215 compatibility changes.
2216 </para>
2217 </glossdef>
2218 </glossentry>
2219
2220 <glossentry id='var-CONFFILES'><glossterm>CONFFILES</glossterm>
2221 <info>
2222 CONFFILES[doc] = "Identifies editable or configurable files that are part of a package."
2223 </info>
2224 <glossdef>
2225 <para role="glossdeffirst">
2226<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2227 Identifies editable or configurable files that are part of a package.
2228 If the Package Management System (PMS) is being used to update
2229 packages on the target system, it is possible that
2230 configuration files you have changed after the original installation
2231 and that you now want to remain unchanged are overwritten.
2232 In other words, editable files might exist in the package that you do not
2233 want reset as part of the package update process.
2234 You can use the <filename>CONFFILES</filename> variable to list the files in the
2235 package that you wish to prevent the PMS from overwriting during this update process.
2236 </para>
2237
2238 <para>
2239 To use the <filename>CONFFILES</filename> variable, provide a package name
2240 override that identifies the resulting package.
2241 Then, provide a space-separated list of files.
2242 Here is an example:
2243 <literallayout class='monospaced'>
2244 CONFFILES_${PN} += "${sysconfdir}/file1 \
2245 ${sysconfdir}/file2 ${sysconfdir}/file3"
2246 </literallayout>
2247 </para>
2248
2249 <para>
2250 A relationship exists between the <filename>CONFFILES</filename> and
2251 <filename><link linkend='var-FILES'>FILES</link></filename> variables.
2252 The files listed within <filename>CONFFILES</filename> must be a subset of
2253 the files listed within <filename>FILES</filename>.
2254 Because the configuration files you provide with <filename>CONFFILES</filename>
2255 are simply being identified so that the PMS will not overwrite them,
2256 it makes sense that
2257 the files must already be included as part of the package through the
2258 <filename>FILES</filename> variable.
2259 </para>
2260
2261 <note>
2262 When specifying paths as part of the <filename>CONFFILES</filename> variable,
2263 it is good practice to use appropriate path variables.
2264 For example, <filename>${sysconfdir}</filename> rather than
2265 <filename>/etc</filename> or <filename>${bindir}</filename> rather
2266 than <filename>/usr/bin</filename>.
2267 You can find a list of these variables at the top of the
2268 <filename>meta/conf/bitbake.conf</filename> file in the
2269 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
2270 </note>
2271 </glossdef>
2272 </glossentry>
2273
2274 <glossentry id='var-CONFIG_INITRAMFS_SOURCE'><glossterm>CONFIG_INITRAMFS_SOURCE</glossterm>
2275 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05002276 CONFIG_INITRAMFS_SOURCE[doc] = "Identifies the initial RAM filesystem (initramfs) source files. The OpenEmbedded build system receives and uses this kernel Kconfig variable as an environment variable."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002277 </info>
2278 <glossdef>
2279 <para role="glossdeffirst">
2280<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Brad Bishop37a0e4d2017-12-04 01:01:44 -05002281 Identifies the initial RAM filesystem (initramfs) source
2282 files.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002283 The OpenEmbedded build system receives and uses
2284 this kernel Kconfig variable as an environment variable.
2285 By default, the variable is set to null ("").
2286 </para>
2287
2288 <para>
2289 The <filename>CONFIG_INITRAMFS_SOURCE</filename> can be
2290 either a single cpio archive with a
2291 <filename>.cpio</filename> suffix or a
2292 space-separated list of directories and files for building
2293 the initramfs image.
2294 A cpio archive should contain a filesystem archive
2295 to be used as an initramfs image.
2296 Directories should contain a filesystem layout to be
2297 included in the initramfs image.
2298 Files should contain entries according to the format
2299 described by the
2300 <filename>usr/gen_init_cpio</filename> program in the
2301 kernel tree.
2302 </para>
2303
2304 <para>
2305 If you specify multiple directories and files, the
2306 initramfs image will be the aggregate of all of them.
2307 </para>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05002308
2309 <para>
2310 For information on creating an initramfs, see the
2311 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
2312 section in the Yocto Project Development Manual.
2313 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002314 </glossdef>
2315 </glossentry>
2316
2317 <glossentry id='var-CONFIG_SITE'><glossterm>CONFIG_SITE</glossterm>
2318 <info>
2319 CONFIG_SITE[doc] = "A list of files that contains autoconf test results relevant to the current build. This variable is used by the Autotools utilities when running configure."
2320 </info>
2321 <glossdef>
2322 <para role="glossdeffirst">
2323<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2324 A list of files that contains <filename>autoconf</filename> test results relevant
2325 to the current build.
2326 This variable is used by the Autotools utilities when running
2327 <filename>configure</filename>.
2328 </para>
2329 </glossdef>
2330 </glossentry>
2331
2332 <glossentry id='var-CONFIGURE_FLAGS'><glossterm>CONFIGURE_FLAGS</glossterm>
2333 <info>
2334 CONFIGURE_FLAGS[doc] = "The minimal arguments for GNU configure."
2335 </info>
2336 <glossdef>
2337 <para role="glossdeffirst">
2338<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2339 The minimal arguments for GNU configure.
2340 </para>
2341 </glossdef>
2342 </glossentry>
2343
2344 <glossentry id='var-CONFLICT_DISTRO_FEATURES'><glossterm>CONFLICT_DISTRO_FEATURES</glossterm>
2345 <info>
2346 CONFLICT_DISTRO_FEATURES[doc] = "When a recipe inherits the distro_features_check class, this variable identifies distribution features that would be in conflict should the recipe be built."
2347 </info>
2348 <glossdef>
2349 <para role="glossdeffirst">
2350<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2351 When inheriting the
2352 <link linkend='ref-classes-distro_features_check'><filename>distro_features_check</filename></link>
2353 class, this
2354 variable identifies distribution features that would
2355 be in conflict should the recipe
2356 be built.
2357 In other words, if the
2358 <filename>CONFLICT_DISTRO_FEATURES</filename> variable
2359 lists a feature that also appears in
2360 <filename>DISTRO_FEATURES</filename> within the
2361 current configuration, an error occurs and the
2362 build stops.
2363 </para>
2364 </glossdef>
2365 </glossentry>
2366
2367 <glossentry id='var-COPY_LIC_DIRS'><glossterm>COPY_LIC_DIRS</glossterm>
2368 <info>
2369 COPY_LIC_DIRS[doc] = "If set to "1" along with the COPY_LIC_MANIFEST variable, the OpenEmbedded build system copies into the image the license files, which are located in /usr/share/common-licenses, for each package."
2370 </info>
2371 <glossdef>
2372 <para role="glossdeffirst">
2373<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2374 If set to "1" along with the
2375 <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
2376 variable, the OpenEmbedded build system copies
2377 into the image the license files, which are located in
2378 <filename>/usr/share/common-licenses</filename>,
2379 for each package.
2380 The license files are placed
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002381 in directories within the image itself during build time.
2382 <note>
2383 The <filename>COPY_LIC_DIRS</filename> does not
2384 offer a path for adding licenses for newly installed
2385 packages to an image, which might be most suitable
2386 for read-only filesystems that cannot be upgraded.
2387 See the
2388 <link linkend='var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></link>
2389 variable for additional information.
2390 You can also reference the
2391 "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
2392 section in the Yocto Project Development Manual for
2393 information on providing license text.
2394 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002395 </para>
2396 </glossdef>
2397 </glossentry>
2398
2399 <glossentry id='var-COPY_LIC_MANIFEST'><glossterm>COPY_LIC_MANIFEST</glossterm>
2400 <info>
2401 COPY_LIC_MANIFEST[doc] = "If set to "1", the OpenEmbedded build system copies the license manifest for the image to /usr/share/common-licenses/license.manifest within the image itself."
2402 </info>
2403 <glossdef>
2404 <para role="glossdeffirst">
2405<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2406 If set to "1", the OpenEmbedded build system copies
2407 the license manifest for the image to
2408 <filename>/usr/share/common-licenses/license.manifest</filename>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002409 within the image itself during build time.
2410 <note>
2411 The <filename>COPY_LIC_MANIFEST</filename> does not
2412 offer a path for adding licenses for newly installed
2413 packages to an image, which might be most suitable
2414 for read-only filesystems that cannot be upgraded.
2415 See the
2416 <link linkend='var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></link>
2417 variable for additional information.
2418 You can also reference the
2419 "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
2420 section in the Yocto Project Development Manual for
2421 information on providing license text.
2422 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002423 </para>
2424 </glossdef>
2425 </glossentry>
2426
2427 <glossentry id='var-CORE_IMAGE_EXTRA_INSTALL'><glossterm>CORE_IMAGE_EXTRA_INSTALL</glossterm>
2428 <info>
2429 CORE_IMAGE_EXTRA_INSTALL[doc] = "Specifies the list of packages to be added to the image. You should only set this variable in the conf/local.conf file in the Build Directory."
2430 </info>
2431 <glossdef>
2432 <para role="glossdeffirst">
2433<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2434 Specifies the list of packages to be added to the image.
2435 You should only set this variable in the
2436 <filename>local.conf</filename> configuration file found
2437 in the
2438 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
2439 </para>
2440
2441 <para>
2442 This variable replaces <filename>POKY_EXTRA_INSTALL</filename>, which is no longer supported.
2443 </para>
2444 </glossdef>
2445 </glossentry>
2446
2447 <glossentry id='var-COREBASE'><glossterm>COREBASE</glossterm>
2448 <info>
2449 COREBASE[doc] = "Specifies the parent directory of the OpenEmbedded Core Metadata layer (i.e. meta)."
2450 </info>
2451 <glossdef>
2452 <para role="glossdeffirst">
2453<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2454 Specifies the parent directory of the OpenEmbedded
2455 Core Metadata layer (i.e. <filename>meta</filename>).
2456 </para>
2457
2458 <para>
2459 It is an important distinction that
2460 <filename>COREBASE</filename> points to the parent of this
2461 layer and not the layer itself.
2462 Consider an example where you have cloned the Poky Git
2463 repository and retained the <filename>poky</filename>
2464 name for your local copy of the repository.
2465 In this case, <filename>COREBASE</filename> points to
2466 the <filename>poky</filename> folder because it is the
2467 parent directory of the <filename>poky/meta</filename>
2468 layer.
2469 </para>
2470 </glossdef>
2471 </glossentry>
2472
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002473 <glossentry id='var-COREBASE_FILES'><glossterm>COREBASE_FILES</glossterm>
2474 <info>
2475 COREBASE_FILES[doc] = "Lists files from the COREBASE directory that should be copied other than the layers listed in the bblayers.conf file."
2476 </info>
2477 <glossdef>
2478 <para role="glossdeffirst">
2479<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2480 Lists files from the
2481 <link linkend='var-COREBASE'><filename>COREBASE</filename></link>
2482 directory that should be copied other than the layers
2483 listed in the <filename>bblayers.conf</filename> file.
2484 The <filename>COREBASE_FILES</filename> variable exists
2485 for the purpose of copying metadata from the
2486 OpenEmbedded build system into the extensible
2487 SDK.
2488 </para>
2489
2490 <para>
2491 Explicitly listing files in <filename>COREBASE</filename>
2492 is needed because it typically contains build
2493 directories and other files that should not normally
2494 be copied into the extensible SDK.
2495 Consequently, the value of
2496 <filename>COREBASE_FILES</filename> is used in order to
2497 only copy the files that are actually needed.
2498 </para>
2499 </glossdef>
2500 </glossentry>
2501
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002502 <glossentry id='var-CPP'><glossterm>CPP</glossterm>
2503 <info>
2504 CPP[doc] = "Minimum command and arguments to run the C preprocessor."
2505 </info>
2506 <glossdef>
2507 <para role="glossdeffirst">
2508<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2509 The minimal command and arguments used to run the C
2510 preprocessor.
2511 </para>
2512 </glossdef>
2513 </glossentry>
2514
2515 <glossentry id='var-CPPFLAGS'><glossterm>CPPFLAGS</glossterm>
2516 <info>
2517 CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers)."
2518 </info>
2519 <glossdef>
2520 <para role="glossdeffirst">
2521<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2522 Specifies the flags to pass to the C pre-processor
2523 (i.e. to both the C and the C++ compilers).
2524 This variable is exported to an environment
2525 variable and thus made visible to the software being
2526 built during the compilation step.
2527 </para>
2528
2529 <para>
2530 Default initialization for <filename>CPPFLAGS</filename>
2531 varies depending on what is being built:
2532 <itemizedlist>
2533 <listitem><para>
2534 <link linkend='var-TARGET_CPPFLAGS'><filename>TARGET_CPPFLAGS</filename></link>
2535 when building for the target
2536 </para></listitem>
2537 <listitem><para>
2538 <link linkend='var-BUILD_CPPFLAGS'><filename>BUILD_CPPFLAGS</filename></link>
2539 when building for the build host (i.e.
2540 <filename>-native</filename>)
2541 </para></listitem>
2542 <listitem><para>
2543 <link linkend='var-BUILDSDK_CPPFLAGS'><filename>BUILDSDK_CPPFLAGS</filename></link>
2544 when building for an SDK (i.e.
2545 <filename>nativesdk-</filename>)
2546 </para></listitem>
2547 </itemizedlist>
2548 </para>
2549 </glossdef>
2550 </glossentry>
2551
2552 <glossentry id='var-CROSS_COMPILE'><glossterm>CROSS_COMPILE</glossterm>
2553 <info>
2554 CROSS_COMPILE[doc] = "The toolchain binary prefix for the target tools."
2555 </info>
2556 <glossdef>
2557 <para role="glossdeffirst">
2558<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2559 The toolchain binary prefix for the target tools.
2560 The <filename>CROSS_COMPILE</filename> variable is the
2561 same as the
2562 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
2563 variable.
2564 <note>
2565 The OpenEmbedded build system sets the
2566 <filename>CROSS_COMPILE</filename> variable only in
2567 certain contexts (e.g. when building for kernel
2568 and kernel module recipes).
2569 </note>
2570 </para>
2571 </glossdef>
2572 </glossentry>
2573
2574 <glossentry id='var-CVSDIR'><glossterm>CVSDIR</glossterm>
2575 <info>
2576 CVSDIR[doc] = "The directory where cvs checkouts will be stored in."
2577 </info>
2578 <glossdef>
2579 <para role="glossdeffirst">
2580<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2581 The directory in which files checked out under the
2582 CVS system are stored.
2583 </para>
2584 </glossdef>
2585 </glossentry>
2586
2587 <glossentry id='var-CXX'><glossterm>CXX</glossterm>
2588 <info>
2589 CXX[doc] = "Minimum command and arguments to run the C++ compiler."
2590 </info>
2591 <glossdef>
2592 <para role="glossdeffirst">
2593<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2594 The minimal command and arguments used to run the C++
2595 compiler.
2596 </para>
2597 </glossdef>
2598 </glossentry>
2599
2600 <glossentry id='var-CXXFLAGS'><glossterm>CXXFLAGS</glossterm>
2601 <info>
2602 CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler."
2603 </info>
2604 <glossdef>
2605 <para role="glossdeffirst">
2606<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2607 Specifies the flags to pass to the C++ compiler.
2608 This variable is exported to an environment
2609 variable and thus made visible to the software being
2610 built during the compilation step.
2611 </para>
2612
2613 <para>
2614 Default initialization for <filename>CXXFLAGS</filename>
2615 varies depending on what is being built:
2616 <itemizedlist>
2617 <listitem><para>
2618 <link linkend='var-TARGET_CXXFLAGS'><filename>TARGET_CXXFLAGS</filename></link>
2619 when building for the target
2620 </para></listitem>
2621 <listitem><para>
2622 <link linkend='var-BUILD_CXXFLAGS'><filename>BUILD_CXXFLAGS</filename></link>
2623 when building for the build host (i.e.
2624 <filename>-native</filename>)
2625 </para></listitem>
2626 <listitem><para>
2627 <link linkend='var-BUILDSDK_CXXFLAGS'><filename>BUILDSDK_CXXFLAGS</filename></link>
2628 when building for an SDK (i.e.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002629 <filename>nativesdk-</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002630 </para></listitem>
2631 </itemizedlist>
2632 </para>
2633 </glossdef>
2634 </glossentry>
2635
2636 </glossdiv>
2637
2638 <glossdiv id='var-glossary-d'><title>D</title>
2639
2640 <glossentry id='var-D'><glossterm>D</glossterm>
2641 <info>
2642 D[doc] = "The destination directory."
2643 </info>
2644 <glossdef>
2645 <para role="glossdeffirst">
2646<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2647 The destination directory.
2648 The location in the <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
2649 where components are installed by the
2650 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
2651 task.
2652 This location defaults to:
2653 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002654 ${<link linkend='var-WORKDIR'>WORKDIR</link>}/image
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002655 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002656 <note><title>Caution</title>
2657 Tasks that read from or write to this directory should
2658 run under
2659 <link linkend='fakeroot-and-pseudo'>fakeroot</link>.
2660 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002661 </para>
2662 </glossdef>
2663 </glossentry>
2664
2665 <glossentry id='var-DATE'><glossterm>DATE</glossterm>
2666 <info>
2667 DATE[doc] = "The date the build was started using YMD format."
2668 </info>
2669 <glossdef>
2670 <para role="glossdeffirst">
2671<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2672 The date the build was started.
2673 Dates appear using the year, month, and day (YMD) format
2674 (e.g. "20150209" for February 9th, 2015).
2675 </para>
2676 </glossdef>
2677 </glossentry>
2678
2679 <glossentry id='var-DATETIME'><glossterm>DATETIME</glossterm>
2680 <info>
2681 DATETIME[doc] = "The date and time the build was started."
2682 </info>
2683 <glossdef>
2684 <para role="glossdeffirst">
2685<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2686 The date and time on which the current build started.
2687 The format is suitable for timestamps.
2688 </para>
2689 </glossdef>
2690 </glossentry>
2691
2692 <glossentry id='var-DEBIAN_NOAUTONAME'><glossterm>DEBIAN_NOAUTONAME</glossterm>
2693 <info>
2694 DEBIAN_NOAUTONAME[doc] = "Prevents a particular package from being renamed according to Debian package naming."
2695 </info>
2696 <glossdef>
2697 <para role="glossdeffirst">
2698<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2699 When the
2700 <link linkend='ref-classes-debian'><filename>debian</filename></link>
2701 class is inherited, which is the default behavior,
2702 <filename>DEBIAN_NOAUTONAME</filename> specifies a
2703 particular package should not be renamed according to
2704 Debian library package naming.
2705 You must use the package name as an override when you
2706 set this variable.
2707 Here is an example from the <filename>fontconfig</filename>
2708 recipe:
2709 <literallayout class='monospaced'>
2710 DEBIAN_NOAUTONAME_fontconfig-utils = "1"
2711 </literallayout>
2712 </para>
2713 </glossdef>
2714 </glossentry>
2715
2716 <glossentry id='var-DEBIANNAME'><glossterm>DEBIANNAME</glossterm>
2717 <info>
2718 DEBIANNAME[doc] = "Allows you to override the library name for an individual package for Debian library package renaming."
2719 </info>
2720 <glossdef>
2721 <para role="glossdeffirst">
2722<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2723 When the
2724 <link linkend='ref-classes-debian'><filename>debian</filename></link>
2725 class is inherited, which is the default behavior,
2726 <filename>DEBIANNAME</filename> allows you to override the
2727 library name for an individual package.
2728 Overriding the library name in these cases is rare.
2729 You must use the package name as an override when you
2730 set this variable.
2731 Here is an example from the <filename>dbus</filename>
2732 recipe:
2733 <literallayout class='monospaced'>
2734 DEBIANNAME_${PN} = "dbus-1"
2735 </literallayout>
2736 </para>
2737 </glossdef>
2738 </glossentry>
2739
2740 <glossentry id='var-DEBUG_BUILD'><glossterm>DEBUG_BUILD</glossterm>
2741 <info>
2742 DEBUG_BUILD[doc] = "Specifies to build packages with debugging information. This influences the value of the SELECTED_OPTIMIZATION variable."
2743 </info>
2744 <glossdef>
2745 <para role="glossdeffirst">
2746<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2747 Specifies to build packages with debugging information.
2748 This influences the value of the
2749 <filename><link linkend='var-SELECTED_OPTIMIZATION'>SELECTED_OPTIMIZATION</link></filename>
2750 variable.
2751 </para>
2752 </glossdef>
2753 </glossentry>
2754
2755 <glossentry id='var-DEBUG_OPTIMIZATION'><glossterm>DEBUG_OPTIMIZATION</glossterm>
2756 <info>
2757 DEBUG_OPTIMIZATION[doc] = "The options to pass in TARGET_CFLAGS and CFLAGS when compiling a system for debugging. This variable defaults to '-O -fno-omit-frame-pointer -g'."
2758 </info>
2759 <glossdef>
2760 <para role="glossdeffirst">
2761<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2762 The options to pass in
2763 <filename><link linkend='var-TARGET_CFLAGS'>TARGET_CFLAGS</link></filename>
2764 and <filename><link linkend='var-CFLAGS'>CFLAGS</link></filename> when compiling
2765 a system for debugging.
2766 This variable defaults to "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
2767 </para>
2768 </glossdef>
2769 </glossentry>
2770
2771 <glossentry id='var-DEFAULT_PREFERENCE'><glossterm>DEFAULT_PREFERENCE</glossterm>
2772 <info>
2773 DEFAULT_PREFERENCE[doc] = "Specifies a weak bias for recipe selection priority."
2774 </info>
2775 <glossdef>
2776 <para role="glossdeffirst">
2777<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2778 Specifies a weak bias for recipe selection priority.
2779 </para>
2780
2781 <para>
2782 The most common usage of this is variable is to set
2783 it to "-1" within a recipe for a development version of a
2784 piece of software.
2785 Using the variable in this way causes the stable version
2786 of the recipe to build by default in the absence of
2787 <filename><link linkend='var-PREFERRED_VERSION'>PREFERRED_VERSION</link></filename>
2788 being used to build the development version.
2789 </para>
2790
2791 <note>
2792 The bias provided by <filename>DEFAULT_PREFERENCE</filename>
2793 is weak and is overridden by
2794 <filename><link linkend='var-BBFILE_PRIORITY'>BBFILE_PRIORITY</link></filename>
2795 if that variable is different between two layers
2796 that contain different versions of the same recipe.
2797 </note>
2798 </glossdef>
2799 </glossentry>
2800
2801 <glossentry id='var-DEFAULTTUNE'><glossterm>DEFAULTTUNE</glossterm>
2802 <info>
2803 DEFAULTTUNE[doc] = "The default CPU and Application Binary Interface (ABI) tunings (i.e. the "tune") used by the OpenEmbedded build system."
2804 </info>
2805 <glossdef>
2806 <para role="glossdeffirst">
2807<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2808 The default CPU and Application Binary Interface (ABI)
2809 tunings (i.e. the "tune") used by the OpenEmbedded build
2810 system.
2811 The <filename>DEFAULTTUNE</filename> helps define
2812 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
2813 </para>
2814
2815 <para>
2816 The default tune is either implicitly or explicitly set
2817 by the machine
2818 (<link linkend='var-MACHINE'><filename>MACHINE</filename></link>).
2819 However, you can override the setting using available tunes
2820 as defined with
2821 <link linkend='var-AVAILTUNES'><filename>AVAILTUNES</filename></link>.
2822 </para>
2823 </glossdef>
2824 </glossentry>
2825
2826 <glossentry id='var-DEPENDS'><glossterm>DEPENDS</glossterm>
2827 <info>
2828 DEPENDS[doc] = "Lists a recipe's build-time dependencies (i.e. other recipe files)."
2829 </info>
2830 <glossdef>
2831 <para role="glossdeffirst">
2832<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002833 Lists a recipe's build-time dependencies.
2834 These are dependencies on other recipes whose
2835 contents (e.g. headers and shared libraries) are needed
2836 by the recipe at build time.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002837 </para>
2838
2839 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002840 As an example, consider a recipe <filename>foo</filename>
2841 that contains the following assignment:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002842 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002843 DEPENDS = "bar"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002844 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002845 The practical effect of the previous assignment is that
2846 all files installed by bar will be available in the
2847 appropriate staging sysroot, given by the
2848 <link linkend='var-STAGING_DIR'><filename>STAGING_DIR*</filename></link>
2849 variables, by the time the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002850 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002851 task for <filename>foo</filename> runs.
2852 This mechanism is implemented by having
2853 <filename>do_configure</filename> depend on the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002854 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002855 task of each recipe listed in <filename>DEPENDS</filename>,
2856 through a
2857 <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>deptask</filename></ulink><filename>]</filename>
2858 declaration in the
2859 <link linkend='ref-classes-base'><filename>base</filename></link>
2860 class.
2861 <note>
2862 It seldom is necessary to reference, for example,
2863 <filename>STAGING_DIR_HOST</filename> explicitly.
2864 The standard classes and build-related variables are
2865 configured to automatically use the appropriate staging
2866 sysroots.
2867 </note>
2868 As another example, <filename>DEPENDS</filename> can also
2869 be used to add utilities that run on the build machine
2870 during the build.
2871 For example, a recipe that makes use of a code generator
2872 built by the recipe <filename>codegen</filename> might have
2873 the following:
2874 <literallayout class='monospaced'>
2875 DEPENDS = "codegen-native"
2876 </literallayout>
2877 For more information, see the
2878 <link linkend='ref-classes-native'><filename>native</filename></link>
2879 class and the
2880 <link linkend='var-EXTRANATIVEPATH'><filename>EXTRANATIVEPATH</filename></link>
2881 variable.
2882 <note>
2883 <title>Notes</title>
2884 <itemizedlist>
2885 <listitem><para>
2886 <filename>DEPENDS</filename> is a list of
2887 recipe names.
2888 Or, to be more precise, it is a list of
2889 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
2890 names, which usually match recipe names.
2891 Putting a package name such as "foo-dev" in
2892 <filename>DEPENDS</filename> does not make
2893 sense.
2894 Use "foo" instead, as this will put files
2895 from all the packages that make up
2896 <filename>foo</filename>, which includes
2897 those from <filename>foo-dev</filename>, into
2898 the sysroot.
2899 </para></listitem>
2900 <listitem><para>
2901 One recipe having another recipe in
2902 <filename>DEPENDS</filename> does not by itself
2903 add any runtime dependencies between the
2904 packages produced by the two recipes.
2905 However, as explained in the
2906 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
2907 section, runtime dependencies will often be
2908 added automatically, meaning
2909 <filename>DEPENDS</filename> alone is
2910 sufficient for most recipes.
2911 </para></listitem>
2912 <listitem><para>
2913 Counterintuitively,
2914 <filename>DEPENDS</filename> is often necessary
2915 even for recipes that install precompiled
2916 components.
2917 For example, if <filename>libfoo</filename>
2918 is a precompiled library that links against
2919 <filename>libbar</filename>, then
2920 linking against <filename>libfoo</filename>
2921 requires both <filename>libfoo</filename>
2922 and <filename>libbar</filename> to be available
2923 in the sysroot.
2924 Without a <filename>DEPENDS</filename> from the
2925 recipe that installs <filename>libfoo</filename>
2926 to the recipe that installs
2927 <filename>libbar</filename>, other recipes might
2928 fail to link against
2929 <filename>libfoo</filename>.
2930 </para></listitem>
2931 </itemizedlist>
2932 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002933 </para>
2934
2935 <para>
2936 For information on runtime dependencies, see the
2937 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
2938 variable.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002939 You can also see the
2940 "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
2941 "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
2942 sections in the BitBake User Manual for additional
2943 information on tasks and dependencies.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002944 </para>
2945 </glossdef>
2946 </glossentry>
2947
2948 <glossentry id='var-DEPLOY_DIR'><glossterm>DEPLOY_DIR</glossterm>
2949 <info>
2950 DEPLOY_DIR[doc] = "Points to the general area that the OpenEmbedded build system uses to place images, packages, SDKs and other output files that are ready to be used outside of the build system."
2951 </info>
2952 <glossdef>
2953 <para role="glossdeffirst">
2954<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2955 Points to the general area that the OpenEmbedded build
2956 system uses to place images, packages, SDKs and other output
2957 files that are ready to be used outside of the build system.
2958 By default, this directory resides within the
2959 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
2960 as <filename>${TMPDIR}/deploy</filename>.
2961 </para>
2962
2963 <para>
2964 For more information on the structure of the Build
2965 Directory, see
2966 "<link linkend='structure-build'>The Build Directory - <filename>build/</filename></link>"
2967 section.
2968 For more detail on the contents of the
2969 <filename>deploy</filename> directory, see the
2970 "<link linkend='images-dev-environment'>Images</link>",
2971 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>",
2972 and
2973 "<link linkend='sdk-dev-environment'>Application Development SDK</link>"
2974 sections.
2975 </para>
2976 </glossdef>
2977 </glossentry>
2978
2979 <glossentry id='var-DEPLOY_DIR_DEB'><glossterm>DEPLOY_DIR_DEB</glossterm>
2980 <info>
2981 DEPLOY_DIR_DEB[doc] = "Points to a Debian-specific area that the OpenEmbedded build system uses to place images, packages, SDKs and other output files that are ready to be used outside of the build system."
2982 </info>
2983 <glossdef>
2984 <para role="glossdeffirst">
2985<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2986 Points to the area that the OpenEmbedded build system uses
2987 to place Debian packages that are ready to be used outside
2988 of the build system.
2989 This variable applies only when
2990 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
2991 contains "package_deb".
2992 </para>
2993
2994 <para>
2995 The BitBake configuration file initially defines the
2996 <filename>DEPLOY_DIR_DEB</filename> variable as a
2997 sub-folder of
2998 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
2999 <literallayout class='monospaced'>
3000 DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
3001 </literallayout>
3002 </para>
3003
3004 <para>
3005 The
3006 <link linkend='ref-classes-package_deb'><filename>package_deb</filename></link>
3007 class uses the
3008 <filename>DEPLOY_DIR_DEB</filename> variable to make sure
3009 the
3010 <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_deb</filename></link>
3011 task writes Debian packages into the appropriate folder.
3012 For more information on how packaging works, see the
3013 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3014 section.
3015 </para>
3016 </glossdef>
3017 </glossentry>
3018
3019 <glossentry id='var-DEPLOY_DIR_IMAGE'><glossterm>DEPLOY_DIR_IMAGE</glossterm>
3020 <info>
3021 DEPLOY_DIR_IMAGE[doc] = "Points to the area that the OpenEmbedded build system uses to place images and other associated output files that are ready to be deployed onto the target machine."
3022 </info>
3023 <glossdef>
3024 <para role="glossdeffirst">
3025<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3026 Points to the area that the OpenEmbedded build system uses
3027 to place images and other associated output files that are
3028 ready to be deployed onto the target machine.
3029 The directory is machine-specific as it contains the
3030 <filename>${MACHINE}</filename> name.
3031 By default, this directory resides within the
3032 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
3033 as <filename>${DEPLOY_DIR}/images/${MACHINE}/</filename>.
3034 </para>
3035
3036 <para>
3037 For more information on the structure of the Build
3038 Directory, see
3039 "<link linkend='structure-build'>The Build Directory - <filename>build/</filename></link>"
3040 section.
3041 For more detail on the contents of the
3042 <filename>deploy</filename> directory, see the
3043 "<link linkend='images-dev-environment'>Images</link>" and
3044 "<link linkend='sdk-dev-environment'>Application Development SDK</link>"
3045 sections.
3046 </para>
3047 </glossdef>
3048 </glossentry>
3049
3050 <glossentry id='var-DEPLOY_DIR_IPK'><glossterm>DEPLOY_DIR_IPK</glossterm>
3051 <info>
3052 DEPLOY_DIR_IPK[doc] = "Points to a IPK-specific area that the OpenEmbedded build system uses to place images, packages, SDKs and other output files that are ready to be used outside of the build system."
3053 </info>
3054 <glossdef>
3055 <para role="glossdeffirst">
3056<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3057 Points to the area that the OpenEmbedded build system uses
3058 to place IPK packages that are ready to be used outside of
3059 the build system.
3060 This variable applies only when
3061 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
3062 contains "package_ipk".
3063 </para>
3064
3065 <para>
3066 The BitBake configuration file initially defines this
3067 variable as a sub-folder of
3068 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
3069 <literallayout class='monospaced'>
3070 DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
3071 </literallayout>
3072 </para>
3073
3074 <para>
3075 The
3076 <link linkend='ref-classes-package_ipk'><filename>package_ipk</filename></link>
3077 class uses the
3078 <filename>DEPLOY_DIR_IPK</filename> variable to make sure
3079 the
3080 <link linkend='ref-tasks-package_write_ipk'><filename>do_package_write_ipk</filename></link>
3081 task writes IPK packages into the appropriate folder.
3082 For more information on how packaging works, see the
3083 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3084 section.
3085 </para>
3086 </glossdef>
3087 </glossentry>
3088
3089 <glossentry id='var-DEPLOY_DIR_RPM'><glossterm>DEPLOY_DIR_RPM</glossterm>
3090 <info>
3091 DEPLOY_DIR_RPM[doc] = "Points to a RPM-specific area that the OpenEmbedded build system uses to place images, packages, SDKs and other output files that are ready to be used outside of the build system."
3092 </info>
3093 <glossdef>
3094 <para role="glossdeffirst">
3095<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3096 Points to the area that the OpenEmbedded build system uses
3097 to place RPM packages that are ready to be used outside
3098 of the build system.
3099 This variable applies only when
3100 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
3101 contains "package_rpm".
3102 </para>
3103
3104 <para>
3105 The BitBake configuration file initially defines this
3106 variable as a sub-folder of
3107 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
3108 <literallayout class='monospaced'>
3109 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
3110 </literallayout>
3111 </para>
3112
3113 <para>
3114 The
3115 <link linkend='ref-classes-package_rpm'><filename>package_rpm</filename></link>
3116 class uses the
3117 <filename>DEPLOY_DIR_RPM</filename> variable to make sure
3118 the
3119 <link linkend='ref-tasks-package_write_rpm'><filename>do_package_write_rpm</filename></link>
3120 task writes RPM packages into the appropriate folder.
3121 For more information on how packaging works, see the
3122 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3123 section.
3124 </para>
3125 </glossdef>
3126 </glossentry>
3127
3128 <glossentry id='var-DEPLOY_DIR_TAR'><glossterm>DEPLOY_DIR_TAR</glossterm>
3129 <info>
3130 DEPLOY_DIR_TAR[doc] = "Points to a tarball area that the OpenEmbedded build system uses to place images, packages, SDKs and other output files that are ready to be used outside of the build system."
3131 </info>
3132 <glossdef>
3133 <para role="glossdeffirst">
3134<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3135 Points to the area that the OpenEmbedded build system uses
3136 to place tarballs that are ready to be used outside of
3137 the build system.
3138 This variable applies only when
3139 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
3140 contains "package_tar".
3141 </para>
3142
3143 <para>
3144 The BitBake configuration file initially defines this
3145 variable as a sub-folder of
3146 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
3147 <literallayout class='monospaced'>
3148 DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
3149 </literallayout>
3150 </para>
3151
3152 <para>
3153 The
3154 <link linkend='ref-classes-package_tar'><filename>package_tar</filename></link>
3155 class uses the
3156 <filename>DEPLOY_DIR_TAR</filename> variable to make sure
3157 the
3158 <link linkend='ref-tasks-package_write_tar'><filename>do_package_write_tar</filename></link>
3159 task writes TAR packages into the appropriate folder.
3160 For more information on how packaging works, see the
3161 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3162 section.
3163 </para>
3164 </glossdef>
3165 </glossentry>
3166
3167 <glossentry id='var-DEPLOYDIR'><glossterm>DEPLOYDIR</glossterm>
3168 <info>
3169 DEPLOYDIR[doc] = "For recipes that inherit the deploy class, the DEPLOYDIR points to a temporary work area for deployed files."
3170 </info>
3171 <glossdef>
3172 <para role="glossdeffirst">
3173<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3174 When inheriting the
3175 <link linkend='ref-classes-deploy'><filename>deploy</filename></link>
3176 class, the <filename>DEPLOYDIR</filename> points to a
3177 temporary work area for deployed files that is set in the
3178 <filename>deploy</filename> class as follows:
3179 <literallayout class='monospaced'>
3180 DEPLOYDIR = "${WORKDIR}/deploy-${<link linkend='var-PN'><filename>PN</filename></link>}"
3181 </literallayout>
3182 </para>
3183
3184 <para>
3185 Recipes inheriting the <filename>deploy</filename> class
3186 should copy files to be deployed into
3187 <filename>DEPLOYDIR</filename>, and the class will take
3188 care of copying them into
3189 <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
3190 afterwards.
3191 </para>
3192 </glossdef>
3193 </glossentry>
3194
3195 <glossentry id='var-DESCRIPTION'><glossterm>DESCRIPTION</glossterm>
3196 <info>
3197 DESCRIPTION[doc] = "The package description used by package managers. If not set, DESCRIPTION takes the value of the SUMMARY variable."
3198 </info>
3199 <glossdef>
3200 <para role="glossdeffirst">
3201<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3202 The package description used by package managers.
3203 If not set, <filename>DESCRIPTION</filename> takes
3204 the value of the
3205 <link linkend='var-SUMMARY'><filename>SUMMARY</filename></link>
3206 variable.
3207 </para>
3208 </glossdef>
3209 </glossentry>
3210
3211 <glossentry id='var-DISK_SIGNATURE'><glossterm>DISK_SIGNATURE</glossterm>
3212 <info>
3213 DISK_SIGNATURE[doc] = "A 32-bit MBR disk signature used by directdisk images."
3214 </info>
3215 <glossdef>
3216 <para role="glossdeffirst">
3217<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3218 A 32-bit MBR disk signature used by
3219 <filename>directdisk</filename> images.
3220 </para>
3221
3222 <para>
3223 By default, the signature is set to an automatically
3224 generated random value that allows the OpenEmbedded
3225 build system to create a boot loader.
3226 You can override the signature in the image recipe
3227 by setting <filename>DISK_SIGNATURE</filename> to an
3228 8-digit hex string.
3229 You might want to override
3230 <filename>DISK_SIGNATURE</filename> if you want the disk
3231 signature to remain constant between image builds.
3232 </para>
3233
3234 <para>
3235 When using Linux 3.8 or later, you can use
3236 <filename>DISK_SIGNATURE</filename> to specify the root
3237 by UUID to allow the kernel to locate the root device
3238 even if the device name changes due to differences in
3239 hardware configuration.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003240 By default, <filename>ROOT_VM</filename> is set
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003241 as follows:
3242 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003243 ROOT_VM ?= "root=/dev/sda2"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003244 </literallayout>
3245 However, you can change this to locate the root device
3246 using the disk signature instead:
3247 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003248 ROOT_VM = "root=PARTUUID=${DISK_SIGNATURE}-02"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003249 </literallayout>
3250 </para>
3251
3252 <para>
3253 As previously mentioned, it is possible to set the
3254 <filename>DISK_SIGNATURE</filename> variable in your
3255 <filename>local.conf</filename> file to a fixed
3256 value if you do not want <filename>syslinux.cfg</filename>
3257 changing for each build.
3258 You might find this useful when you want to upgrade the
3259 root filesystem on a device without having to recreate or
3260 modify the master boot record.
3261 </para>
3262 </glossdef>
3263 </glossentry>
3264
3265 <glossentry id='var-DISTRO'><glossterm>DISTRO</glossterm>
3266 <info>
3267 DISTRO[doc] = "The short name of the distribution. If the variable is blank, meta/conf/distro/defaultsetup.conf will be used."
3268 </info>
3269 <glossdef>
3270 <para role="glossdeffirst">
3271<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3272 The short name of the distribution.
3273 This variable corresponds to a distribution
3274 configuration file whose root name is the same as the
3275 variable's argument and whose filename extension is
3276 <filename>.conf</filename>.
3277 For example, the distribution configuration file for the
3278 Poky distribution is named <filename>poky.conf</filename>
3279 and resides in the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003280 <filename>meta-poky/conf/distro</filename> directory of
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003281 the
3282 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
3283 </para>
3284
3285 <para>
3286 Within that <filename>poky.conf</filename> file, the
3287 <filename>DISTRO</filename> variable is set as follows:
3288 <literallayout class='monospaced'>
3289 DISTRO = "poky"
3290 </literallayout>
3291 </para>
3292
3293 <para>
3294 Distribution configuration files are located in a
3295 <filename>conf/distro</filename> directory within the
3296 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
3297 that contains the distribution configuration.
3298 The value for <filename>DISTRO</filename> must not contain
3299 spaces, and is typically all lower-case.
3300 <note>
3301 If the <filename>DISTRO</filename> variable is blank, a set
3302 of default configurations are used, which are specified
3303 within
3304 <filename>meta/conf/distro/defaultsetup.conf</filename>
3305 also in the Source Directory.
3306 </note>
3307 </para>
3308 </glossdef>
3309 </glossentry>
3310
3311 <glossentry id='var-DISTRO_CODENAME'><glossterm>DISTRO_CODENAME</glossterm>
3312 <info>
3313 DISTRO_CODENAME[doc] = "Specifies a codename for the distribution being built."
3314 </info>
3315 <glossdef>
3316 <para role="glossdeffirst">
3317<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3318 Specifies a codename for the distribution being built.
3319 </para>
3320 </glossdef>
3321 </glossentry>
3322
3323 <glossentry id='var-DISTRO_EXTRA_RDEPENDS'><glossterm>DISTRO_EXTRA_RDEPENDS</glossterm>
3324 <info>
3325 DISTRO_EXTRA_RDEPENDS[doc] = "Specifies a list of distro-specific packages to add to all images. The variable only applies to the images that include packagegroup-base."
3326 </info>
3327 <glossdef>
3328 <para role="glossdeffirst">
3329<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3330 Specifies a list of distro-specific packages to add to all images.
3331 This variable takes affect through
3332 <filename>packagegroup-base</filename> so the
3333 variable only really applies to the more full-featured
3334 images that include <filename>packagegroup-base</filename>.
3335 You can use this variable to keep distro policy out of
3336 generic images.
3337 As with all other distro variables, you set this variable
3338 in the distro <filename>.conf</filename> file.
3339 </para>
3340 </glossdef>
3341 </glossentry>
3342
3343 <glossentry id='var-DISTRO_EXTRA_RRECOMMENDS'><glossterm>DISTRO_EXTRA_RRECOMMENDS</glossterm>
3344 <info>
3345 DISTRO_EXTRA_RRECOMMENDS[doc] = "Specifies a list of distro-specific packages to add to all images if the packages exist. The list of packages are automatically installed but you can remove them."
3346 </info>
3347 <glossdef>
3348 <para role="glossdeffirst">
3349<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3350 Specifies a list of distro-specific packages to add to all images
3351 if the packages exist.
3352 The packages might not exist or be empty (e.g. kernel modules).
3353 The list of packages are automatically installed but you can
3354 remove them.
3355 </para>
3356 </glossdef>
3357 </glossentry>
3358
3359 <glossentry id='var-DISTRO_FEATURES'><glossterm>DISTRO_FEATURES</glossterm>
3360 <info>
3361 DISTRO_FEATURES[doc] = "The features enabled for the distribution."
3362 </info>
3363 <glossdef>
3364 <para role="glossdeffirst">
3365<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3366 The software support you want in your distribution for
3367 various features.
3368 You define your distribution features in the distribution
3369 configuration file.
3370 </para>
3371
3372 <para>
3373 In most cases, the presence or absence of a feature in
3374 <filename>DISTRO_FEATURES</filename> is translated to the
3375 appropriate option supplied to the configure script
3376 during the
3377 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
3378 task for recipes that optionally support the feature.
3379 For example, specifying "x11" in
3380 <filename>DISTRO_FEATURES</filename>, causes
3381 every piece of software built for the target that can
3382 optionally support X11 to have its X11 support enabled.
3383 </para>
3384
3385 <para>
3386 Two more examples are Bluetooth and NFS support.
3387 For a more complete list of features that ships with the
3388 Yocto Project and that you can provide with this variable,
3389 see the
3390 "<link linkend='ref-features-distro'>Distro Features</link>"
3391 section.
3392 </para>
3393 </glossdef>
3394 </glossentry>
3395
3396 <glossentry id='var-DISTRO_FEATURES_BACKFILL'><glossterm>DISTRO_FEATURES_BACKFILL</glossterm>
3397 <info>
3398 DISTRO_FEATURES_BACKFILL[doc] = "Features to be added to DISTRO_FEATURES if not also present in DISTRO_FEATURES_BACKFILL_CONSIDERED. This variable is set in the meta/conf/bitbake.conf file and it is not intended to be user-configurable."
3399 </info>
3400 <glossdef>
3401 <para role="glossdeffirst">
3402<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3403 Features to be added to
3404 <filename><link linkend='var-DISTRO_FEATURES'>DISTRO_FEATURES</link></filename>
3405 if not also present in
3406 <filename><link linkend='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'>DISTRO_FEATURES_BACKFILL_CONSIDERED</link></filename>.
3407 </para>
3408
3409 <para>
3410 This variable is set in the <filename>meta/conf/bitbake.conf</filename> file.
3411 It is not intended to be user-configurable.
3412 It is best to just reference the variable to see which distro features are
3413 being backfilled for all distro configurations.
3414 See the <link linkend='ref-features-backfill'>Feature backfilling</link> section for
3415 more information.
3416 </para>
3417 </glossdef>
3418 </glossentry>
3419
3420 <glossentry id='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><glossterm>DISTRO_FEATURES_BACKFILL_CONSIDERED</glossterm>
3421 <info>
3422 DISTRO_FEATURES_BACKFILL_CONSIDERED[doc] = "Features from DISTRO_FEATURES_BACKFILL that should not be backfilled (i.e. added to DISTRO_FEATURES) during the build."
3423 </info>
3424 <glossdef>
3425 <para role="glossdeffirst">
3426<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3427 Features from
3428 <filename><link linkend='var-DISTRO_FEATURES_BACKFILL'>DISTRO_FEATURES_BACKFILL</link></filename>
3429 that should not be backfilled (i.e. added to
3430 <filename><link linkend='var-DISTRO_FEATURES'>DISTRO_FEATURES</link></filename>)
3431 during the build.
3432 See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
3433 more information.
3434 </para>
3435 </glossdef>
3436 </glossentry>
3437
3438 <glossentry id='var-DISTRO_FEATURES_DEFAULT'><glossterm>DISTRO_FEATURES_DEFAULT</glossterm>
3439 <info>
3440 DISTRO_FEATURES_DEFAULT[doc] = "Provides the default list of distro features with the exception of any libc-specific features."
3441 </info>
3442 <glossdef>
3443 <para role="glossdeffirst">
3444<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3445 A convenience variable that gives you the default
3446 list of distro features with the exception of any
3447 features specific to the C library
3448 (<filename>libc</filename>).
3449 </para>
3450
3451 <para>
3452 When creating a custom distribution, you might find it
3453 useful to be able to reuse the default
3454 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
3455 options without the need to write out the full set.
3456 Here is an example that uses
3457 <filename>DISTRO_FEATURES_DEFAULT</filename> from a
3458 custom distro configuration file:
3459 <literallayout class='monospaced'>
3460 DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} myfeature"
3461 </literallayout>
3462 </para>
3463 </glossdef>
3464 </glossentry>
3465
3466 <glossentry id='var-DISTRO_FEATURES_LIBC'><glossterm>DISTRO_FEATURES_LIBC</glossterm>
3467 <info>
3468 DISTRO_FEATURES_LIBC[doc] = "Specifies the list of distro features that are specific to the C library (libc)."
3469 </info>
3470 <glossdef>
3471 <para role="glossdeffirst">
3472<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3473 A convenience variable that specifies the list of distro
3474 features that are specific to the C library
3475 (<filename>libc</filename>).
3476 Typically, these features are prefixed with "libc-" and
3477 control which features are enabled at during the build
3478 within the C library itself.
3479 </para>
3480 </glossdef>
3481 </glossentry>
3482
3483 <glossentry id='var-DISTRO_NAME'><glossterm>DISTRO_NAME</glossterm>
3484 <info>
3485 DISTRO_NAME[doc] = "The long name of the distribution."
3486 </info>
3487 <glossdef>
3488 <para role="glossdeffirst">
3489<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3490 The long name of the distribution.
3491 </para>
3492 </glossdef>
3493 </glossentry>
3494
3495 <glossentry id='var-DISTRO_VERSION'><glossterm>DISTRO_VERSION</glossterm>
3496 <info>
3497 DISTRO_VERSION[doc] = "The version of the distribution."
3498 </info>
3499 <glossdef>
3500 <para role="glossdeffirst">
3501<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3502 The version of the distribution.
3503 </para>
3504 </glossdef>
3505 </glossentry>
3506
3507 <glossentry id='var-DISTROOVERRIDES'><glossterm>DISTROOVERRIDES</glossterm>
3508 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003509 DISTROOVERRIDES[doc] = "A colon-separated list of overrides specific to the current distribution."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003510 </info>
3511 <glossdef>
3512 <para role="glossdeffirst">
3513<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003514 A colon-separated list of overrides specific to the
3515 current distribution.
3516 By default, this list includes the value of
3517 <link linkend='var-DISTRO'><filename>DISTRO</filename></link>.
3518 </para>
3519
3520 <para>
3521 You can extend <filename>DISTROOVERRIDES</filename>
3522 to add extra overrides that should apply to
3523 the distribution.
3524 </para>
3525
3526 <para>
3527 The underlying mechanism behind
3528 <filename>DISTROOVERRIDES</filename> is simply that it
3529 is included in the default value of
3530 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003531 </para>
3532 </glossdef>
3533 </glossentry>
3534
3535 <glossentry id='var-DL_DIR'><glossterm>DL_DIR</glossterm>
3536 <info>
3537 DL_DIR[doc] = "The central download directory used by the build process to store downloads. By default, the directory is 'downloads' in the Build Directory."
3538 </info>
3539 <glossdef>
3540 <para role="glossdeffirst">
3541<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3542 The central download directory used by the build process to
3543 store downloads.
3544 By default, <filename>DL_DIR</filename> gets files
3545 suitable for mirroring for everything except Git
3546 repositories.
3547 If you want tarballs of Git repositories, use the
3548 <link linkend='var-BB_GENERATE_MIRROR_TARBALLS'><filename>BB_GENERATE_MIRROR_TARBALLS</filename></link>
3549 variable.
3550 </para>
3551
3552 <para>
3553 You can set this directory by defining the
3554 <filename>DL_DIR</filename> variable in the
3555 <filename>conf/local.conf</filename> file.
3556 This directory is self-maintaining and you should not have
3557 to touch it.
3558 By default, the directory is <filename>downloads</filename>
3559 in the
3560 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
3561 <literallayout class='monospaced'>
3562 #DL_DIR ?= "${TOPDIR}/downloads"
3563 </literallayout>
3564 To specify a different download directory, simply remove
3565 the comment from the line and provide your directory.
3566 </para>
3567
3568 <para>
3569 During a first build, the system downloads many different
3570 source code tarballs from various upstream projects.
3571 Downloading can take a while, particularly if your network
3572 connection is slow.
3573 Tarballs are all stored in the directory defined by
3574 <filename>DL_DIR</filename> and the build system looks there
3575 first to find source tarballs.
3576 <note>
3577 When wiping and rebuilding, you can preserve this
3578 directory to speed up this part of subsequent
3579 builds.
3580 </note>
3581 </para>
3582
3583 <para>
3584 You can safely share this directory between multiple builds
3585 on the same development machine.
3586 For additional information on how the build process gets
3587 source files when working behind a firewall or proxy server,
3588 see this specific question in the
3589 "<link linkend='how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>FAQ</link>"
3590 chapter.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003591 You can also refer to the
3592 "<ulink url='&YOCTO_WIKI_URL;/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
3593 Wiki page.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003594 </para>
3595 </glossdef>
3596 </glossentry>
3597
3598 <glossentry id='var-DOC_COMPRESS'><glossterm>DOC_COMPRESS</glossterm>
3599 <info>
3600 DOC_COMPRESS[doc] = "When inheriting the compress_doc class, this variable sets the compression policy used when the OpenEmbedded build system compresses man pages and info pages."
3601 </info>
3602 <glossdef>
3603 <para role="glossdeffirst">
3604<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3605 When inheriting the
3606 <link linkend='ref-classes-compress_doc'><filename>compress_doc</filename></link>
3607 class, this variable sets the compression policy used when
3608 the OpenEmbedded build system compresses man pages and info
3609 pages.
3610 By default, the compression method used is gz (gzip).
3611 Other policies available are xz and bz2.
3612 </para>
3613
3614 <para>
3615 For information on policies and on how to use this
3616 variable, see the comments in the
3617 <filename>meta/classes/compress_doc.bbclass</filename> file.
3618 </para>
3619 </glossdef>
3620 </glossentry>
3621
3622 </glossdiv>
3623
3624 <glossdiv id='var-glossary-e'><title>E</title>
3625
3626 <glossentry id='var-EFI_PROVIDER'><glossterm>EFI_PROVIDER</glossterm>
3627 <info>
3628 EFI_PROVIDER[doc] = "When building bootable images (i.e. where hddimg or vmdk is in IMAGE_FSTYPES), the EFI_PROVIDER variable specifies the EFI bootloader to use."
3629 </info>
3630 <glossdef>
3631 <para role="glossdeffirst">
3632<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3633 When building bootable images (i.e. where
3634 <filename>hddimg</filename> or <filename>vmdk</filename>
3635 is in
3636 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>),
3637 the <filename>EFI_PROVIDER</filename> variable specifies
3638 the EFI bootloader to use.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003639 The default is "grub-efi", but "systemd-boot" can be used
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003640 instead.
3641 </para>
3642
3643 <para>
3644 See the
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003645 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003646 class for more information.
3647 </para>
3648 </glossdef>
3649 </glossentry>
3650
3651 <glossentry id='var-ENABLE_BINARY_LOCALE_GENERATION'><glossterm>ENABLE_BINARY_LOCALE_GENERATION</glossterm>
3652 <info>
3653 ENABLE_BINARY_LOCALE_GENERATION[doc] = "Controls which locales for glibc are generated during the build. The variable is useful if the target device has 64Mbytes of RAM or less."
3654 </info>
3655 <glossdef>
3656 <para role="glossdeffirst">
3657<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3658 Variable that controls which locales for
3659 <filename>glibc</filename> are generated during the
3660 build (useful if the target device has 64Mbytes
3661 of RAM or less).
3662 </para>
3663 </glossdef>
3664 </glossentry>
3665
3666 <glossentry id='var-ERR_REPORT_DIR'><glossterm>ERR_REPORT_DIR</glossterm>
3667 <info>
3668 ERR_REPORT_DIR[doc] = "When used with the report-error class, specifies the path used for storing the debug files created by the error reporting tool, which allows you to submit build errors you encounter to a central database."
3669 </info>
3670 <glossdef>
3671 <para role="glossdeffirst">
3672<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3673 When used with the
3674 <link linkend='ref-classes-report-error'><filename>report-error</filename></link>
3675 class, specifies the path used for storing the debug files
3676 created by the
3677 <ulink url='&YOCTO_DOCS_DEV_URL;#using-the-error-reporting-tool'>error reporting tool</ulink>,
3678 which allows you to submit build errors you encounter to a
3679 central database.
3680 By default, the value of this variable is
3681 <filename>${</filename><link linkend='var-LOG_DIR'><filename>LOG_DIR</filename></link><filename>}/error-report</filename>.
3682 </para>
3683
3684 <para>
3685 You can set <filename>ERR_REPORT_DIR</filename> to the path
3686 you want the error reporting tool to store the debug files
3687 as follows in your <filename>local.conf</filename> file:
3688 <literallayout class='monospaced'>
3689 ERR_REPORT_DIR = "<replaceable>path</replaceable>"
3690 </literallayout>
3691 </para>
3692 </glossdef>
3693 </glossentry>
3694
3695 <glossentry id='var-ERROR_QA'><glossterm>ERROR_QA</glossterm>
3696 <info>
3697 ERROR_QA[doc] = "Specifies the quality assurance checks whose failures are reported as errors by the OpenEmbedded build system."
3698 </info>
3699 <glossdef>
3700 <para role="glossdeffirst">
3701<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3702 Specifies the quality assurance checks whose failures are
3703 reported as errors by the OpenEmbedded build system.
3704 You set this variable in your distribution configuration
3705 file.
3706 For a list of the checks you can control with this variable,
3707 see the
3708 "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
3709 section.
3710 </para>
3711 </glossdef>
3712 </glossentry>
3713
Patrick Williamsf1e5d692016-03-30 15:21:19 -05003714 <glossentry id='var-EXCLUDE_FROM_SHLIBS'><glossterm>EXCLUDE_FROM_SHLIBS</glossterm>
3715 <info>
3716 EXCLUDE_FROM_SHLIBS[doc] = "Causes the OpenEmbedded build system's shared libraries resolver to exclude an entire package when scanning for shared libraries."
3717 </info>
3718 <glossdef>
3719 <para role="glossdeffirst">
3720<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3721 Triggers the OpenEmbedded build system's shared libraries
3722 resolver to exclude an entire package when scanning for
3723 shared libraries.
3724 <note>
3725 The shared libraries resolver's functionality results
3726 in part from the internal function
3727 <filename>package_do_shlibs</filename>, which is part of
3728 the
3729 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
3730 task.
3731 You should be aware that the shared libraries resolver
3732 might implicitly define some dependencies between
3733 packages.
3734 </note>
3735 The <filename>EXCLUDE_FROM_SHLIBS</filename> variable is
3736 similar to the
3737 <link linkend='var-PRIVATE_LIBS'><filename>PRIVATE_LIBS</filename></link>
3738 variable, which excludes a package's particular libraries
3739 only and not the whole package.
3740 </para>
3741
3742 <para>
3743 Use the
3744 <filename>EXCLUDE_FROM_SHLIBS</filename> variable by
3745 setting it to "1" for a particular package:
3746 <literallayout class='monospaced'>
3747 EXCLUDE_FROM_SHLIBS = "1"
3748 </literallayout>
3749 </para>
3750 </glossdef>
3751 </glossentry>
3752
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003753 <glossentry id='var-EXCLUDE_FROM_WORLD'><glossterm>EXCLUDE_FROM_WORLD</glossterm>
3754 <info>
3755 EXCLUDE_FROM_WORLD[doc] = "Directs BitBake to exclude a recipe from world builds (i.e. bitbake world)."
3756 </info>
3757 <glossdef>
3758 <para role="glossdeffirst">
3759<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3760 Directs BitBake to exclude a recipe from world builds (i.e.
3761 <filename>bitbake world</filename>).
3762 During world builds, BitBake locates, parses and builds all
3763 recipes found in every layer exposed in the
3764 <filename>bblayers.conf</filename> configuration file.
3765 </para>
3766
3767 <para>
3768 To exclude a recipe from a world build using this variable,
3769 set the variable to "1" in the recipe.
3770 </para>
3771
3772 <note>
3773 Recipes added to <filename>EXCLUDE_FROM_WORLD</filename>
3774 may still be built during a world build in order to satisfy
3775 dependencies of other recipes.
3776 Adding a recipe to <filename>EXCLUDE_FROM_WORLD</filename>
3777 only ensures that the recipe is not explicitly added
3778 to the list of build targets in a world build.
3779 </note>
3780 </glossdef>
3781 </glossentry>
3782
3783 <glossentry id='var-EXTENDPE'><glossterm>EXTENDPE</glossterm>
3784 <info>
3785 EXTENDPE[doc] = "Used with file and pathnames to create a prefix for a recipe's version based on the recipe's PE value. If PE is set and greater than zero for a recipe, EXTENDPE becomes that value."
3786 </info>
3787 <glossdef>
3788 <para role="glossdeffirst">
3789<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3790 Used with file and pathnames to create a prefix for a recipe's
3791 version based on the recipe's
3792 <link linkend='var-PE'><filename>PE</filename></link> value.
3793 If <filename>PE</filename> is set and greater than zero for a recipe,
3794 <filename>EXTENDPE</filename> becomes that value (e.g if
3795 <filename>PE</filename> is equal to "1" then <filename>EXTENDPE</filename>
3796 becomes "1_").
3797 If a recipe's <filename>PE</filename> is not set (the default) or is equal to
3798 zero, <filename>EXTENDPE</filename> becomes "".</para>
3799 <para>See the <link linkend='var-STAMP'><filename>STAMP</filename></link>
3800 variable for an example.
3801 </para>
3802 </glossdef>
3803 </glossentry>
3804
3805 <glossentry id='var-EXTENDPKGV'><glossterm>EXTENDPKGV</glossterm>
3806 <info>
3807 EXTENDPKGV[doc] = "The full package version specification as it appears on the final packages produced by a recipe."
3808 </info>
3809 <glossdef>
3810 <para role="glossdeffirst">
3811<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3812 The full package version specification as it appears on the
3813 final packages produced by a recipe.
3814 The variable's value is normally used to fix a runtime
3815 dependency to the exact same version of another package
3816 in the same recipe:
3817 <literallayout class='monospaced'>
3818 RDEPENDS_${PN}-additional-module = "${PN} (= ${EXTENDPKGV})"
3819 </literallayout>
3820 </para>
3821
3822 <para>
3823 The dependency relationships are intended to force the
3824 package manager to upgrade these types of packages in
3825 lock-step.
3826 </para>
3827 </glossdef>
3828 </glossentry>
3829
3830 <glossentry id='var-EXTERNAL_KERNEL_TOOLS'><glossterm>EXTERNAL_KERNEL_TOOLS</glossterm>
3831 <info>
3832 EXTERNAL_KERNEL_TOOLS[doc] = "Indicates kernel tools are external to the source tree."
3833 </info>
3834 <glossdef>
3835 <para role="glossdeffirst">
3836<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3837 When set, the <filename>EXTERNAL_KERNEL_TOOLS</filename>
3838 variable indicates that these tools are not in the
3839 source tree.
3840 </para>
3841
3842 <para>
3843 When kernel tools are available in the tree, they are
3844 preferred over any externally installed tools.
3845 Setting the <filename>EXTERNAL_KERNEL_TOOLS</filename>
3846 variable tells the OpenEmbedded build system to prefer
3847 the installed external tools.
3848 See the
3849 <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
3850 class in <filename>meta/classes</filename> to see how
3851 the variable is used.
3852 </para>
3853 </glossdef>
3854 </glossentry>
3855
3856 <glossentry id='var-EXTERNALSRC'><glossterm>EXTERNALSRC</glossterm>
3857 <info>
3858 EXTERNALSRC[doc] = "If externalsrc.bbclass is inherited, this variable points to the source tree, which is outside of the OpenEmbedded build system."
3859 </info>
3860 <glossdef>
3861 <para role="glossdeffirst">
3862<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3863 When inheriting the
3864 <link linkend='ref-classes-externalsrc'><filename>externalsrc</filename></link>
3865 class, this variable points to the source tree, which is
3866 outside of the OpenEmbedded build system.
3867 When set, this variable sets the
3868 <link linkend='var-S'><filename>S</filename></link>
3869 variable, which is what the OpenEmbedded build system uses
3870 to locate unpacked recipe source code.
3871 </para>
3872
3873 <para>
3874 For more information on
3875 <filename>externalsrc.bbclass</filename>, see the
3876 "<link linkend='ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></link>"
3877 section.
3878 You can also find information on how to use this variable
3879 in the
3880 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-software-from-an-external-source'>Building Software from an External Source</ulink>"
3881 section in the Yocto Project Development Manual.
3882 </para>
3883 </glossdef>
3884 </glossentry>
3885
3886 <glossentry id='var-EXTERNALSRC_BUILD'><glossterm>EXTERNALSRC_BUILD</glossterm>
3887 <info>
3888 EXTERNALSRC_BUILD[doc] = "If externalsrc.bbclass is inherited, this variable points to the directory in which the recipe's source code is built, which is outside of the OpenEmbedded build system."
3889 </info>
3890 <glossdef>
3891 <para role="glossdeffirst">
3892<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3893 When inheriting the
3894 <link linkend='ref-classes-externalsrc'><filename>externalsrc</filename></link>
3895 class, this variable points to the directory in which the
3896 recipe's source code is built, which is outside of the
3897 OpenEmbedded build system.
3898 When set, this variable sets the
3899 <link linkend='var-B'><filename>B</filename></link>
3900 variable, which is what the OpenEmbedded build system uses
3901 to locate the Build Directory.
3902 </para>
3903
3904 <para>
3905 For more information on
3906 <filename>externalsrc.bbclass</filename>, see the
3907 "<link linkend='ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></link>"
3908 section.
3909 You can also find information on how to use this variable
3910 in the
3911 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-software-from-an-external-source'>Building Software from an External Source</ulink>"
3912 section in the Yocto Project Development Manual.
3913 </para>
3914 </glossdef>
3915 </glossentry>
3916
3917 <glossentry id='var-EXTRA_AUTORECONF'><glossterm>EXTRA_AUTORECONF</glossterm>
3918 <info>
3919 EXTRA_AUTORECONF[doc] = "Extra options passed to the autoreconf command, which is executed during do_configure."
3920 </info>
3921 <glossdef>
3922 <para role="glossdeffirst">
3923<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3924 For recipes inheriting the
3925 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
3926 class, you can use <filename>EXTRA_AUTORECONF</filename> to
3927 specify extra options to pass to the
3928 <filename>autoreconf</filename> command that is
3929 executed during the
3930 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
3931 task.
3932 </para>
3933
3934 <para>
3935 The default value is "--exclude=autopoint".
3936 </para>
3937 </glossdef>
3938 </glossentry>
3939
3940 <glossentry id='var-EXTRA_IMAGE_FEATURES'><glossterm>EXTRA_IMAGE_FEATURES</glossterm>
3941 <info>
3942 EXTRA_IMAGE_FEATURES[doc] = "The list of additional features to include in an image. Configure this variable in the conf/local.conf file in the Build Directory."
3943 </info>
3944 <glossdef>
3945 <para role="glossdeffirst">
3946<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3947 A list of additional features to include in an image.
3948 When listing more than one feature, separate them with
3949 a space.
3950 </para>
3951
3952 <para>
3953 Typically, you configure this variable in your
3954 <filename>local.conf</filename> file, which is found in the
3955 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
3956 Although you can use this variable from within a recipe,
3957 best practices dictate that you do not.
3958 <note>
3959 To enable primary features from within the image
3960 recipe, use the
3961 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
3962 variable.
3963 </note>
3964 </para>
3965
3966 <para>
3967 Here are some examples of features you can add:
3968 <literallayout class='monospaced'>
3969"dbg-pkgs" - Adds -dbg packages for all installed packages
3970 including symbol information for debugging and
3971 profiling.
3972
3973"debug-tweaks" - Makes an image suitable for debugging.
3974 For example, allows root logins without
3975 passwords and enables post-installation
3976 logging. See the 'allow-empty-password'
3977 and 'post-install-logging' features in
3978 the "<link linkend='ref-features-image'>Image Features</link>" section for
3979 more information.
3980
3981"dev-pkgs" - Adds -dev packages for all installed packages.
3982 This is useful if you want to develop against
3983 the libraries in the image.
3984
3985"read-only-rootfs" - Creates an image whose root
3986 filesystem is read-only. See the
3987 "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-read-only-root-filesystem'>Creating a Read-Only Root Filesystem</ulink>"
3988 section in the Yocto Project
3989 Development Manual for more
3990 information
3991
3992"tools-debug" - Adds debugging tools such as gdb and
3993 strace.
3994
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003995"tools-sdk" - Adds development tools such as gcc, make,
3996 pkgconfig and so forth.
3997
3998"tools-testapps" - Adds useful testing tools such as
3999 ts_print, aplay, arecord and so
4000 forth.
4001
4002 </literallayout>
4003 </para>
4004
4005 <para>
4006 For a complete list of image features that ships with the
4007 Yocto Project, see the
4008 "<link linkend="ref-features-image">Image Features</link>"
4009 section.
4010 </para>
4011
4012 <para>
4013 For an example that shows how to customize your image by
4014 using this variable, see the
4015 "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-extend-customimage-imagefeatures'>Customizing Images Using Custom <filename>IMAGE_FEATURES</filename> and <filename>EXTRA_IMAGE_FEATURES</filename></ulink>"
4016 section in the Yocto Project Development Manual.
4017 </para>
4018 </glossdef>
4019 </glossentry>
4020
4021 <glossentry id='var-EXTRA_IMAGECMD'><glossterm>EXTRA_IMAGECMD</glossterm>
4022 <info>
4023 EXTRA_IMAGECMD[doc] = "Specifies additional options for the image creation command that has been specified in IMAGE_CMD. When setting this variable, you should use an override for the associated type."
4024 </info>
4025 <glossdef>
4026 <para role="glossdeffirst">
4027<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4028 Specifies additional options for the image
4029 creation command that has been specified in
4030 <link linkend='var-IMAGE_CMD'><filename>IMAGE_CMD</filename></link>.
4031 When setting this variable, you should
4032 use an override for the associated type.
4033 Here is an example:
4034 <literallayout class='monospaced'>
4035 EXTRA_IMAGECMD_ext3 ?= "-i 4096"
4036 </literallayout>
4037 </para>
4038 </glossdef>
4039 </glossentry>
4040
4041 <glossentry id='var-EXTRA_IMAGEDEPENDS'><glossterm>EXTRA_IMAGEDEPENDS</glossterm>
4042 <info>
4043 EXTRA_IMAGEDEPENDS[doc] = "A list of recipes to build that do not provide packages for installing into the root filesystem. Use this variable to list recipes that are required to build the final image, but not needed in the root filesystem."
4044 </info>
4045 <glossdef>
4046 <para role="glossdeffirst">
4047<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4048 A list of recipes to build that do not provide packages
4049 for installing into the root filesystem.
4050 </para>
4051
4052 <para>
4053 Sometimes a recipe is required to build the final image but is not
4054 needed in the root filesystem.
4055 You can use the <filename>EXTRA_IMAGEDEPENDS</filename> variable to
4056 list these recipes and thus specify the dependencies.
4057 A typical example is a required bootloader in a machine configuration.
4058 </para>
4059
4060 <note>
4061 To add packages to the root filesystem, see the various
4062 <filename>*<link linkend='var-RDEPENDS'>RDEPENDS</link></filename>
4063 and <filename>*<link linkend='var-RRECOMMENDS'>RRECOMMENDS</link></filename>
4064 variables.
4065 </note>
4066 </glossdef>
4067 </glossentry>
4068
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004069 <glossentry id='var-EXTRANATIVEPATH'><glossterm>EXTRANATIVEPATH</glossterm>
4070 <info>
4071 EXTRANATIVEPATH[doc] = "A list of subdirectories of ${STAGING_BINDIR_NATIVE} added to the beginning of the environment variable PATH."
4072 </info>
4073 <glossdef>
4074 <para role="glossdeffirst">
4075<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4076 A list of subdirectories of
4077 <filename>${</filename><link linkend='var-STAGING_BINDIR_NATIVE'><filename>STAGING_BINDIR_NATIVE</filename></link><filename>}</filename>
4078 added to the beginning of the environment variable
4079 <filename>PATH</filename>.
4080 As an example, the following prepends
4081 "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:"
4082 to <filename>PATH</filename>:
4083 <literallayout class='monospaced'>
4084 EXTRANATIVEPATH = "foo bar"
4085 </literallayout>
4086 </para>
4087 </glossdef>
4088 </glossentry>
4089
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004090 <glossentry id='var-EXTRA_OECMAKE'><glossterm>EXTRA_OECMAKE</glossterm>
4091 <info>
4092 EXTRA_OECMAKE[doc] = "Additional cmake options."
4093 </info>
4094 <glossdef>
4095 <para role="glossdeffirst">
4096<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4097 Additional <filename>cmake</filename> options.
4098 </para>
4099 </glossdef>
4100 </glossentry>
4101
4102 <glossentry id='var-EXTRA_OECONF'><glossterm>EXTRA_OECONF</glossterm>
4103 <info>
4104 EXTRA_OECONF[doc] = "Additional configure script options."
4105 </info>
4106 <glossdef>
4107 <para role="glossdeffirst">
4108<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4109 Additional <filename>configure</filename> script options.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004110 See
4111 <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>
4112 for additional information on passing configure script
4113 options.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004114 </para>
4115 </glossdef>
4116 </glossentry>
4117
4118 <glossentry id='var-EXTRA_OEMAKE'><glossterm>EXTRA_OEMAKE</glossterm>
4119 <info>
4120 EXTRA_OEMAKE[doc] = "Additional GNU make options."
4121 </info>
4122 <glossdef>
4123 <para role="glossdeffirst">
4124<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4125 Additional GNU <filename>make</filename> options.
4126 </para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05004127
4128 <para>
4129 Because the <filename>EXTRA_OEMAKE</filename> defaults to
4130 "", you need to set the variable to specify any required
4131 GNU options.
4132 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004133
4134 <para>
4135 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
4136 and
4137 <link linkend='var-PARALLEL_MAKEINST'><filename>PARALLEL_MAKEINST</filename></link>
4138 also make use of
4139 <filename>EXTRA_OEMAKE</filename> to pass the required
4140 flags.
4141 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004142 </glossdef>
4143 </glossentry>
4144
4145 <glossentry id='var-EXTRA_OESCONS'><glossterm>EXTRA_OESCONS</glossterm>
4146 <info>
4147 EXTRA_OESCONS[doc] = "When a recipe inherits the scons class, this variable specifies additional configuration options you want to pass to the scons command line."
4148 </info>
4149 <glossdef>
4150 <para role="glossdeffirst">
4151<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4152 When inheriting the
4153 <link linkend='ref-classes-scons'><filename>scons</filename></link>
4154 class, this variable specifies additional configuration
4155 options you want to pass to the
4156 <filename>scons</filename> command line.
4157 </para>
4158 </glossdef>
4159 </glossentry>
4160
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004161 <glossentry id='var-EXTRA_USERS_PARAMS'><glossterm>EXTRA_USERS_PARAMS</glossterm>
4162 <info>
4163 EXTRA_USERS_PARAMS[doc] = "When a recipe inherits the extrausers class, this variable provides image level user and group operations."
4164 </info>
4165 <glossdef>
4166 <para role="glossdeffirst">
4167<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4168 When inheriting the
4169 <link linkend='ref-classes-extrausers'><filename>extrausers</filename></link>
4170 class, this variable provides image level user and group
4171 operations.
4172 This is a more global method of providing user and group
4173 configuration as compared to using the
4174 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
4175 class, which ties user and group configurations to a
4176 specific recipe.
4177 </para>
4178
4179 <para>
4180 The set list of commands you can configure using the
4181 <filename>EXTRA_USERS_PARAMS</filename> is shown in the
4182 <filename>extrausers</filename> class.
4183 These commands map to the normal Unix commands of the same
4184 names:
4185 <literallayout class='monospaced'>
4186 # EXTRA_USERS_PARAMS = "\
4187 # useradd -p '' tester; \
4188 # groupadd developers; \
4189 # userdel nobody; \
4190 # groupdel -g video; \
4191 # groupmod -g 1020 developers; \
4192 # usermod -s /bin/sh tester; \
4193 # "
4194 </literallayout>
4195 </para>
4196 </glossdef>
4197 </glossentry>
4198
4199 </glossdiv>
4200
4201 <glossdiv id='var-glossary-f'><title>F</title>
4202
4203 <glossentry id='var-FEATURE_PACKAGES'><glossterm>FEATURE_PACKAGES</glossterm>
4204 <info>
4205 FEATURE_PACKAGES[doc] = "Defines one or more packages to include in an image when a specific item is included in IMAGE_FEATURES. When setting the value, FEATURE_PACKAGES should have the name of the feature item as an override."
4206 </info>
4207 <glossdef>
4208 <para role="glossdeffirst">
4209<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4210 Defines one or more packages to include in an image when
4211 a specific item is included in
4212 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
4213 When setting the value, <filename>FEATURE_PACKAGES</filename>
4214 should have the name of the feature item as an override.
4215 Here is an example:
4216 <literallayout class='monospaced'>
4217 FEATURE_PACKAGES_widget = "<replaceable>package1</replaceable> <replaceable>package2</replaceable>"
4218 </literallayout>
4219 </para>
4220
4221 <para>
4222 In this example, if "widget" were added to
4223 <filename>IMAGE_FEATURES</filename>, <replaceable>package1</replaceable> and
4224 <replaceable>package2</replaceable> would be included in the image.
4225 <note>
4226 Packages installed by features defined through
4227 <filename>FEATURE_PACKAGES</filename> are often package
4228 groups.
4229 While similarly named, you should not confuse the
4230 <filename>FEATURE_PACKAGES</filename> variable with
4231 package groups, which are discussed elsewhere in the
4232 documentation.
4233 </note>
4234 </para>
4235 </glossdef>
4236 </glossentry>
4237
4238 <glossentry id='var-FEED_DEPLOYDIR_BASE_URI'><glossterm>FEED_DEPLOYDIR_BASE_URI</glossterm>
4239 <info>
4240 FEED_DEPLOYDIR_BASE_URI[doc] = "Allow to serve ipk deploy directory as an ad hoc feed (bogofeed). Set to base URL of the directory as exported by HTTP. Set of ad hoc feed configs will be generated in the image."
4241 </info>
4242 <glossdef>
4243 <para role="glossdeffirst">
4244<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4245 Points to the base URL of the server and location within
4246 the document-root that provides the metadata and
4247 packages required by OPKG to support runtime package
4248 management of IPK packages.
4249 You set this variable in your
4250 <filename>local.conf</filename> file.
4251 </para>
4252
4253 <para>
4254 Consider the following example:
4255 <literallayout class='monospaced'>
4256 FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir"
4257 </literallayout>
4258 This example assumes you are serving your packages over
4259 HTTP and your databases are located in a directory
4260 named <filename>BOARD-dir</filename>, which is underneath
4261 your HTTP server's document-root.
4262 In this case, the OpenEmbedded build system generates a set
4263 of configuration files for you in your target that work
4264 with the feed.
4265 </para>
4266 </glossdef>
4267 </glossentry>
4268
4269 <glossentry id='var-FILES'><glossterm>FILES</glossterm>
4270 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004271 FILES[doc] = "The list of directories or files that are placed in a package."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004272 </info>
4273 <glossdef>
4274 <para role="glossdeffirst">
4275<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004276 The list of files and directories that are placed in a
4277 package.
4278 The
4279 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
4280 variable lists the packages generated by a recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004281 </para>
4282
4283 <para>
4284 To use the <filename>FILES</filename> variable, provide a
4285 package name override that identifies the resulting package.
4286 Then, provide a space-separated list of files or paths
4287 that identify the files you want included as part of the
4288 resulting package.
4289 Here is an example:
4290 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004291 FILES_${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004292 </literallayout>
4293 </para>
4294
4295 <note>
4296 When specifying paths as part of the
4297 <filename>FILES</filename> variable, it is good practice
4298 to use appropriate path variables.
4299 For example, use <filename>${sysconfdir}</filename> rather
4300 than <filename>/etc</filename>, or
4301 <filename>${bindir}</filename> rather than
4302 <filename>/usr/bin</filename>.
4303 You can find a list of these variables at the top of the
4304 <filename>meta/conf/bitbake.conf</filename> file in the
4305 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004306 You will also find the default values of the various
4307 <filename>FILES_*</filename> variables in this file.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004308 </note>
4309
4310 <para>
4311 If some of the files you provide with the
4312 <filename>FILES</filename> variable are editable and you
4313 know they should not be overwritten during the package
4314 update process by the Package Management System (PMS), you
4315 can identify these files so that the PMS will not
4316 overwrite them.
4317 See the
4318 <link linkend='var-CONFFILES'><filename>CONFFILES</filename></link>
4319 variable for information on how to identify these files to
4320 the PMS.
4321 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004322 </glossdef>
4323 </glossentry>
4324
4325 <glossentry id='var-FILES_SOLIBSDEV'><glossterm>FILES_SOLIBSDEV</glossterm>
4326 <info>
4327 FILES_SOLIBSDEV[doc] = "Defines the full path name of the development symbolic link (symlink) for shared libraries on the target platform."
4328 </info>
4329 <glossdef>
4330 <para role="glossdeffirst">
4331<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4332 Defines the file specification to match
4333 <link linkend='var-SOLIBSDEV'><filename>SOLIBSDEV</filename></link>.
4334 In other words, <filename>FILES_SOLIBSDEV</filename>
4335 defines the full path name of the development symbolic link
4336 (symlink) for shared libraries on the target platform.
4337 </para>
4338
4339 <para>
4340 The following statement from the
4341 <filename>bitbake.conf</filename> shows how it is set:
4342 <literallayout class='monospaced'>
4343 FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
4344 </literallayout>
4345 </para>
4346 </glossdef>
4347 </glossentry>
4348
4349 <glossentry id='var-FILESEXTRAPATHS'><glossterm>FILESEXTRAPATHS</glossterm>
4350 <info>
4351 FILESEXTRAPATHS[doc] = "Extends the search path the OpenEmbedded build system uses when looking for files and patches as it processes recipes and append files."
4352 </info>
4353 <glossdef>
4354 <para role="glossdeffirst">
4355<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4356 Extends the search path the OpenEmbedded build system uses
4357 when looking for files and patches as it processes recipes
4358 and append files.
4359 The default directories BitBake uses when it processes
4360 recipes are initially defined by the
4361 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
4362 variable.
4363 You can extend <filename>FILESPATH</filename> variable
4364 by using <filename>FILESEXTRAPATHS</filename>.
4365 </para>
4366
4367 <para>
4368 Best practices dictate that you accomplish this by using
4369 <filename>FILESEXTRAPATHS</filename> from within a
4370 <filename>.bbappend</filename> file and that you prepend
4371 paths as follows:
4372 <literallayout class='monospaced'>
4373 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
4374 </literallayout>
4375 In the above example, the build system first looks for files
4376 in a directory that has the same name as the corresponding
4377 append file.
4378 <note>
4379 <para>When extending <filename>FILESEXTRAPATHS</filename>,
4380 be sure to use the immediate expansion
4381 (<filename>:=</filename>) operator.
4382 Immediate expansion makes sure that BitBake evaluates
4383 <link linkend='var-THISDIR'><filename>THISDIR</filename></link>
4384 at the time the directive is encountered rather than at
4385 some later time when expansion might result in a
4386 directory that does not contain the files you need.
4387 </para>
4388 <para>Also, include the trailing separating colon
4389 character if you are prepending.
4390 The trailing colon character is necessary because you
4391 are directing BitBake to extend the path by prepending
4392 directories to the search path.</para>
4393 </note>
4394 Here is another common use:
4395 <literallayout class='monospaced'>
4396 FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
4397 </literallayout>
4398 In this example, the build system extends the
4399 <filename>FILESPATH</filename> variable to include a
4400 directory named <filename>files</filename> that is in the
4401 same directory as the corresponding append file.
4402 </para>
4403
4404 <para>
4405 Here is a final example that specifically adds three paths:
4406 <literallayout class='monospaced'>
4407 FILESEXTRAPATHS_prepend := "path_1:path_2:path_3:"
4408 </literallayout>
4409 </para>
4410
4411 <para>
4412 By prepending paths in <filename>.bbappend</filename>
4413 files, you allow multiple append files that reside in
4414 different layers but are used for the same recipe to
4415 correctly extend the path.
4416 </para>
4417 </glossdef>
4418 </glossentry>
4419
4420 <glossentry id='var-FILESOVERRIDES'><glossterm>FILESOVERRIDES</glossterm>
4421 <info>
4422 FILESOVERRIDES[doc] = "A subset of OVERRIDES used by the OpenEmbedded build system for creating FILESPATH."
4423 </info>
4424 <glossdef>
4425 <para role="glossdeffirst">
4426<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4427 A subset of <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
4428 used by the OpenEmbedded build system for creating
4429 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>.
4430 You can find more information on how overrides are handled
4431 in the
4432 <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake Manual</ulink>.
4433 </para>
4434
4435 <para>
4436 By default, the <filename>FILESOVERRIDES</filename>
4437 variable is defined as:
4438 <literallayout class='monospaced'>
4439 FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}"
4440 </literallayout>
4441
4442 <note>
4443 Do not hand-edit the <filename>FILESOVERRIDES</filename>
4444 variable.
4445 The values match up with expected overrides and are
4446 used in an expected manner by the build system.
4447 </note>
4448 </para>
4449 </glossdef>
4450 </glossentry>
4451
4452 <glossentry id='var-FILESPATH'><glossterm>FILESPATH</glossterm>
4453 <info>
4454 FILESPATH[doc] = "The default set of directories the OpenEmbedded build system uses when searching for patches and files. It is defined in the base.bbclass class found in meta/classes in the Source Directory. Do not hand-edit the FILESPATH variable."
4455 </info>
4456 <glossdef>
4457 <para role="glossdeffirst">
4458<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4459 The default set of directories the OpenEmbedded build system
4460 uses when searching for patches and files.
4461 During the build process, BitBake searches each directory in
4462 <filename>FILESPATH</filename> in the specified order when
4463 looking for files and patches specified by each
4464 <filename>file://</filename> URI in a recipe.
4465 </para>
4466
4467 <para>
4468 The default value for the <filename>FILESPATH</filename>
4469 variable is defined in the <filename>base.bbclass</filename>
4470 class found in <filename>meta/classes</filename> in the
4471 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>:
4472 <literallayout class='monospaced'>
4473 FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
4474 "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
4475 </literallayout>
4476 <note>
4477 Do not hand-edit the <filename>FILESPATH</filename>
4478 variable.
4479 If you want the build system to look in directories
4480 other than the defaults, extend the
4481 <filename>FILESPATH</filename> variable by using the
4482 <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
4483 variable.
4484 </note>
4485 Be aware that the default <filename>FILESPATH</filename>
4486 directories do not map to directories in custom layers
4487 where append files (<filename>.bbappend</filename>)
4488 are used.
4489 If you want the build system to find patches or files
4490 that reside with your append files, you need to extend
4491 the <filename>FILESPATH</filename> variable by using
4492 the
4493 <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
4494 variable.
4495 </para>
4496 </glossdef>
4497 </glossentry>
4498
4499 <glossentry id='var-FILESYSTEM_PERMS_TABLES'><glossterm>FILESYSTEM_PERMS_TABLES</glossterm>
4500 <info>
4501 FILESYSTEM_PERMS_TABLES[doc] = "Allows you to define your own file permissions settings table as part of your configuration for the packaging process."
4502 </info>
4503 <glossdef>
4504 <para role="glossdeffirst">
4505<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4506 Allows you to define your own file permissions settings table as part of
4507 your configuration for the packaging process.
4508 For example, suppose you need a consistent set of custom permissions for
4509 a set of groups and users across an entire work project.
4510 It is best to do this in the packages themselves but this is not always
4511 possible.
4512 </para>
4513
4514 <para>
4515 By default, the OpenEmbedded build system uses the <filename>fs-perms.txt</filename>, which
4516 is located in the <filename>meta/files</filename> folder in the
4517 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
4518 If you create your own file permissions setting table, you should place it in your
4519 layer or the distro's layer.
4520 </para>
4521
4522 <para>
4523 You define the <filename>FILESYSTEM_PERMS_TABLES</filename> variable in the
4524 <filename>conf/local.conf</filename> file, which is found in the
4525 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>, to
4526 point to your custom <filename>fs-perms.txt</filename>.
4527 You can specify more than a single file permissions setting table.
4528 The paths you specify to these files must be defined within the
4529 <link linkend='var-BBPATH'><filename>BBPATH</filename></link> variable.
4530 </para>
4531
4532 <para>
4533 For guidance on how to create your own file permissions settings table file,
4534 examine the existing <filename>fs-perms.txt</filename>.
4535 </para>
4536 </glossdef>
4537 </glossentry>
4538
4539 <glossentry id='var-FONT_EXTRA_RDEPENDS'><glossterm>FONT_EXTRA_RDEPENDS</glossterm>
4540 <info>
4541 FONT_EXTRA_RDEPENDS[doc] = "When a recipe inherits the fontcache class, this variable specifies runtime dependencies for font packages. This variable defaults to 'fontconfig-utils'."
4542 </info>
4543 <glossdef>
4544 <para role="glossdeffirst">
4545<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4546 When inheriting the
4547 <link linkend='ref-classes-fontcache'><filename>fontcache</filename></link>
4548 class, this variable specifies the runtime dependencies
4549 for font packages.
4550 By default, the <filename>FONT_EXTRA_RDEPENDS</filename>
4551 is set to "fontconfig-utils".
4552 </para>
4553 </glossdef>
4554 </glossentry>
4555
4556 <glossentry id='var-FONT_PACKAGES'><glossterm>FONT_PACKAGES</glossterm>
4557 <info>
4558 FONT_PACKAGES[doc] = "When a recipe inherits the fontcache class, this variable identifies packages containing font files that need to be cached by Fontconfig."
4559 </info>
4560 <glossdef>
4561 <para role="glossdeffirst">
4562<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4563 When inheriting the
4564 <link linkend='ref-classes-fontcache'><filename>fontcache</filename></link>
4565 class, this variable identifies packages containing font
4566 files that need to be cached by Fontconfig.
4567 By default, the <filename>fontcache</filename> class assumes
4568 that fonts are in the recipe's main package
4569 (i.e. <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
4570 Use this variable if fonts you need are in a package
4571 other than that main package.
4572 </para>
4573 </glossdef>
4574 </glossentry>
4575
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004576 <glossentry id='var-FORCE_RO_REMOVE'><glossterm>FORCE_RO_REMOVE</glossterm>
4577 <info>
4578 FORCE_RO_REMOVE[doc] = "Forces the removal of the packages listed in ROOTFS_RO_UNNEEDED during the generation of the root filesystem."
4579 </info>
4580 <glossdef>
4581 <para role="glossdeffirst">
4582<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4583 Forces the removal of the packages listed in
4584 <filename>ROOTFS_RO_UNNEEDED</filename> during the
4585 generation of the root filesystem.
4586 </para>
4587
4588 <para>
4589 Set the variable to "1" to force the removal of these
4590 packages.
4591 </para>
4592 </glossdef>
4593 </glossentry>
4594
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004595 <glossentry id='var-FULL_OPTIMIZATION'><glossterm>FULL_OPTIMIZATION</glossterm>
4596 <info>
4597 FULL_OPTIMIZATION[doc]= "The options to pass in TARGET_CFLAGS and CFLAGS when compiling an optimized system. This variable defaults to '-fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2'."
4598 </info>
4599 <glossdef>
4600 <para role="glossdeffirst">
4601<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4602 The options to pass in
4603 <filename><link linkend='var-TARGET_CFLAGS'>TARGET_CFLAGS</link></filename>
4604 and <filename><link linkend='var-CFLAGS'>CFLAGS</link></filename>
4605 when compiling an optimized system.
4606 This variable defaults to
4607 "-O2 -pipe ${DEBUG_FLAGS}".
4608 </para>
4609 </glossdef>
4610 </glossentry>
4611 </glossdiv>
4612
4613 <glossdiv id='var-glossary-g'><title>G</title>
4614
4615 <glossentry id='var-GDB'><glossterm>GDB</glossterm>
4616 <info>
4617 GDB[doc] = "The minimal command and arguments to run the GNU Debugger."
4618 </info>
4619 <glossdef>
4620 <para role="glossdeffirst">
4621<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4622 The minimal command and arguments to run the GNU Debugger.
4623 </para>
4624 </glossdef>
4625 </glossentry>
4626
4627 <glossentry id='var-GITDIR'><glossterm>GITDIR</glossterm>
4628 <info>
4629 GITDIR[doc] = "The directory where Git clones will be stored."
4630 </info>
4631 <glossdef>
4632 <para role="glossdeffirst">
4633<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4634 The directory in which a local copy of a Git repository
4635 is stored when it is cloned.
4636 </para>
4637 </glossdef>
4638 </glossentry>
4639
4640 <glossentry id='var-GLIBC_GENERATE_LOCALES'><glossterm>GLIBC_GENERATE_LOCALES</glossterm>
4641 <info>
4642 GLIBC_GENERATE_LOCALES[doc]= "Specifies the list of GLIBC locales to generate should you not wish generate all LIBC locals, which can be time consuming."
4643 </info>
4644 <glossdef>
4645 <para role="glossdeffirst">
4646<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4647 Specifies the list of GLIBC locales to generate should you
4648 not wish generate all LIBC locals, which can be time
4649 consuming.
4650 <note>
4651 If you specifically remove the locale
4652 <filename>en_US.UTF-8</filename>, you must set
4653 <link linkend='var-IMAGE_LINGUAS'><filename>IMAGE_LINGUAS</filename></link>
4654 appropriately.
4655 </note>
4656 </para>
4657
4658 <para>
4659 You can set <filename>GLIBC_GENERATE_LOCALES</filename>
4660 in your <filename>local.conf</filename> file.
4661 By default, all locales are generated.
4662 <literallayout class='monospaced'>
4663 GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
4664 </literallayout>
4665 </para>
4666 </glossdef>
4667 </glossentry>
4668
4669 <glossentry id='var-GROUPADD_PARAM'><glossterm>GROUPADD_PARAM</glossterm>
4670 <info>
4671 GROUPADD_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the groupadd command if you wish to add a group to the system when the package is installed."
4672 </info>
4673 <glossdef>
4674 <para role="glossdeffirst">
4675<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4676 When inheriting the
4677 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
4678 class, this variable
4679 specifies for a package what parameters should be passed
4680 to the <filename>groupadd</filename> command
4681 if you wish to add a group to the system when the package
4682 is installed.
4683 </para>
4684
4685 <para>
4686 Here is an example from the <filename>dbus</filename>
4687 recipe:
4688 <literallayout class='monospaced'>
4689 GROUPADD_PARAM_${PN} = "-r netdev"
4690 </literallayout>
4691 For information on the standard Linux shell command
4692 <filename>groupadd</filename>, see
4693 <ulink url='http://linux.die.net/man/8/groupadd'></ulink>.
4694 </para>
4695 </glossdef>
4696 </glossentry>
4697
4698 <glossentry id='var-GROUPMEMS_PARAM'><glossterm>GROUPMEMS_PARAM</glossterm>
4699 <info>
4700 GROUPMEMS_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the groupmems command if you wish to modify the members of a group when the package is installed."
4701 </info>
4702 <glossdef>
4703 <para role="glossdeffirst">
4704<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4705 When inheriting the
4706 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
4707 class, this variable
4708 specifies for a package what parameters should be passed
4709 to the <filename>groupmems</filename> command
4710 if you wish to modify the members of a group when the
4711 package is installed.
4712 </para>
4713
4714 <para>
4715 For information on the standard Linux shell command
4716 <filename>groupmems</filename>, see
4717 <ulink url='http://linux.die.net/man/8/groupmems'></ulink>.
4718 </para>
4719 </glossdef>
4720 </glossentry>
4721
4722 <glossentry id='var-GRUB_GFXSERIAL'><glossterm>GRUB_GFXSERIAL</glossterm>
4723 <info>
4724 GRUB_GFXSERIAL[doc] = "Configures the GNU GRand Unified Bootloader (GRUB) to have graphics and serial in the boot menu."
4725 </info>
4726 <glossdef>
4727 <para role="glossdeffirst">
4728<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4729 Configures the GNU GRand Unified Bootloader (GRUB) to have
4730 graphics and serial in the boot menu.
4731 Set this variable to "1" in your
4732 <filename>local.conf</filename> or distribution
4733 configuration file to enable graphics and serial
4734 in the menu.
4735 </para>
4736
4737 <para>
4738 See the
4739 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
4740 class for more information on how this variable is used.
4741 </para>
4742 </glossdef>
4743 </glossentry>
4744
4745 <glossentry id='var-GRUB_OPTS'><glossterm>GRUB_OPTS</glossterm>
4746 <info>
4747 GRUB_OPTS[doc] = "Additional options to add to the GNU GRand Unified Bootloader (GRUB) configuration."
4748 </info>
4749 <glossdef>
4750 <para role="glossdeffirst">
4751<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4752 Additional options to add to the GNU GRand Unified
4753 Bootloader (GRUB) configuration.
4754 Use a semi-colon character (<filename>;</filename>) to
4755 separate multiple options.
4756 </para>
4757
4758 <para>
4759 The <filename>GRUB_OPTS</filename> variable is optional.
4760 See the
4761 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
4762 class for more information on how this variable is used.
4763 </para>
4764 </glossdef>
4765 </glossentry>
4766
4767 <glossentry id='var-GRUB_TIMEOUT'><glossterm>GRUB_TIMEOUT</glossterm>
4768 <info>
4769 GRUB_TIMEOUT[doc] = "Specifies the timeout before executing the default LABEL in the GNU GRand Unified Bootloader (GRUB)."
4770 </info>
4771 <glossdef>
4772 <para role="glossdeffirst">
4773<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4774 Specifies the timeout before executing the default
4775 <filename>LABEL</filename> in the GNU GRand Unified
4776 Bootloader (GRUB).
4777 </para>
4778
4779 <para>
4780 The <filename>GRUB_TIMEOUT</filename> variable is optional.
4781 See the
4782 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
4783 class for more information on how this variable is used.
4784 </para>
4785 </glossdef>
4786 </glossentry>
4787
4788 <glossentry id='var-GTKIMMODULES_PACKAGES'><glossterm>GTKIMMODULES_PACKAGES</glossterm>
4789 <info>
4790 GTKIMMODULES_PACKAGES[doc] = "For recipes that inherit the gtk-immodules-cache class, this variable specifies the packages that contain the GTK+ input method modules being installed when the modules are in packages other than the main package."
4791 </info>
4792 <glossdef>
4793 <para role="glossdeffirst">
4794<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4795 When inheriting the
4796 <link linkend='ref-classes-gtk-immodules-cache'><filename>gtk-immodules-cache</filename></link>
4797 class, this variable specifies the packages that contain the
4798 GTK+ input method modules being installed when the modules
4799 are in packages other than the main package.
4800 </para>
4801 </glossdef>
4802 </glossentry>
4803
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004804 </glossdiv>
4805
4806 <glossdiv id='var-glossary-h'><title>H</title>
4807
4808 <glossentry id='var-HOMEPAGE'><glossterm>HOMEPAGE</glossterm>
4809 <info>
4810 HOMEPAGE[doc] = "Website where more information about the software the recipe is building can be found."
4811 </info>
4812 <glossdef>
4813 <para role="glossdeffirst">
4814<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4815 Website where more information about the software the recipe is building
4816 can be found.
4817 </para>
4818 </glossdef>
4819 </glossentry>
4820
4821 <glossentry id='var-HOST_ARCH'><glossterm>HOST_ARCH</glossterm>
4822 <info>
4823 HOST_ARCH[doc] = "The name of the target architecture. Normally same as the TARGET_ARCH."
4824
4825 </info>
4826 <glossdef>
4827 <para role="glossdeffirst">
4828<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4829 The name of the target architecture, which is normally
4830 the same as
4831 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>.
4832 The OpenEmbedded build system supports many
4833 architectures.
4834 Here is an example list of architectures supported.
4835 This list is by no means complete as the architecture
4836 is configurable:
4837 <literallayout class='monospaced'>
4838 arm
4839 i586
4840 x86_64
4841 powerpc
4842 powerpc64
4843 mips
4844 mipsel
4845 </literallayout>
4846 </para>
4847 </glossdef>
4848 </glossentry>
4849
4850 <glossentry id='var-HOST_CC_ARCH'><glossterm>HOST_CC_ARCH</glossterm>
4851 <info>
4852 HOST_CC_ARCH[doc] = "The name of the host architecture. Normally same as the TARGET_CC_ARCH."
4853 </info>
4854 <glossdef>
4855 <para role="glossdeffirst">
4856<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4857 Specifies architecture-specific compiler flags that are
4858 passed to the C compiler.
4859 </para>
4860
4861 <para>
4862 Default initialization for <filename>HOST_CC_ARCH</filename>
4863 varies depending on what is being built:
4864 <itemizedlist>
4865 <listitem><para>
4866 <link linkend='var-TARGET_CC_ARCH'><filename>TARGET_CC_ARCH</filename></link>
4867 when building for the target
4868 </para></listitem>
4869 <listitem><para>
4870 <filename>BUILD_CC_ARCH</filename>
4871 when building for the build host (i.e.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05004872 <filename>-native</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004873 </para></listitem>
4874 <listitem><para>
4875 <filename>BUILDSDK_CC_ARCH</filename>
4876 when building for an SDK (i.e.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05004877 <filename>nativesdk-</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004878 </para></listitem>
4879 </itemizedlist>
4880 </para>
4881 </glossdef>
4882 </glossentry>
4883
4884 <glossentry id='var-HOST_OS'><glossterm>HOST_OS</glossterm>
4885 <info>
4886 HOST_OS[doc] = "The name of the target operating system. Normally the same as the TARGET_OS."
4887 </info>
4888 <glossdef>
4889 <para role="glossdeffirst">
4890<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4891 Specifies the name of the target operating system, which
4892 is normally the same as the
4893 <link linkend='var-TARGET_OS'><filename>TARGET_OS</filename></link>.
4894 The variable can be set to "linux" for <filename>glibc</filename>-based systems and
Brad Bishop37a0e4d2017-12-04 01:01:44 -05004895 to "linux-musl" for <filename>musl</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004896 For ARM/EABI targets, there are also "linux-gnueabi" and
Brad Bishop37a0e4d2017-12-04 01:01:44 -05004897 "linux-musleabi" values possible.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004898 </para>
4899 </glossdef>
4900 </glossentry>
4901
4902 <glossentry id='var-HOST_PREFIX'><glossterm>HOST_PREFIX</glossterm>
4903 <info>
4904 HOST_PREFIX[doc] = "The prefix for the cross compile toolchain. Normally same as the TARGET_PREFIX."
4905 </info>
4906 <glossdef>
4907 <para role="glossdeffirst">
4908<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4909 Specifies the prefix for the cross-compile toolchain.
4910 <filename>HOST_PREFIX</filename> is normally the same as
4911 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>.
4912 </para>
4913 </glossdef>
4914 </glossentry>
4915
4916 <glossentry id='var-HOST_SYS'><glossterm>HOST_SYS</glossterm>
4917 <info>
4918 HOST_SYS[doc] = "Specifies the system, including the architecture and the operating system, for with the build is occurring in the context of the current recipe."
4919 </info>
4920 <glossdef>
4921 <para role="glossdeffirst">
4922<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4923 Specifies the system, including the architecture and the
4924 operating system, for which the build is occurring
4925 in the context of the current recipe.
4926 </para>
4927
4928 <para>
4929 The OpenEmbedded build system automatically sets this
4930 variable based on
4931 <link linkend='var-HOST_ARCH'><filename>HOST_ARCH</filename></link>,
4932 <link linkend='var-HOST_VENDOR'><filename>HOST_VENDOR</filename></link>,
4933 and
4934 <link linkend='var-HOST_OS'><filename>HOST_OS</filename></link>
4935 variables.
4936 <note>
4937 You do not need to set the variable yourself.
4938 </note>
4939 </para>
4940
4941 <para>
4942 Consider these two examples:
4943 <itemizedlist>
4944 <listitem><para>Given a native recipe on a 32-bit
4945 x86 machine running Linux, the value is
4946 "i686-linux".
4947 </para></listitem>
4948 <listitem><para>Given a recipe being built for a
4949 little-endian MIPS target running Linux,
4950 the value might be "mipsel-linux".
4951 </para></listitem>
4952 </itemizedlist>
4953 </para>
4954 </glossdef>
4955 </glossentry>
4956
4957 <glossentry id='var-HOST_VENDOR'><glossterm>HOST_VENDOR</glossterm>
4958 <info>
4959 HOST_VENDOR[doc] = "The name of the vendor. Normally same as the TARGET_VENDOR."
4960 </info>
4961 <glossdef>
4962 <para role="glossdeffirst">
4963<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4964 Specifies the name of the vendor.
4965 <filename>HOST_VENDOR</filename> is normally the same as
4966 <link linkend='var-TARGET_PREFIX'><filename>TARGET_VENDOR</filename></link>.
4967 </para>
4968 </glossdef>
4969 </glossentry>
4970
4971 </glossdiv>
4972
4973 <glossdiv id='var-glossary-i'><title>I</title>
4974
4975 <glossentry id='var-ICECC_DISABLED'><glossterm>ICECC_DISABLED</glossterm>
4976 <info>
4977 ICECC_DISABLED[doc] = "Disables or enables the icecc (Icecream) function."
4978 </info>
4979 <glossdef>
4980 <para role="glossdeffirst">
4981<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4982 Disables or enables the <filename>icecc</filename>
4983 (Icecream) function.
4984 For more information on this function and best practices
4985 for using this variable, see the
4986 "<link linkend='ref-classes-icecc'><filename>icecc.bbclass</filename></link>"
4987 section.
4988 </para>
4989
4990 <para>
4991 Setting this variable to "1" in your
4992 <filename>local.conf</filename> disables the function:
4993 <literallayout class='monospaced'>
4994 ICECC_DISABLED ??= "1"
4995 </literallayout>
4996 To enable the function, set the variable as follows:
4997 <literallayout class='monospaced'>
4998 ICECC_DISABLED = ""
4999 </literallayout>
5000 </para>
5001 </glossdef>
5002 </glossentry>
5003
5004 <glossentry id='var-ICECC_ENV_EXEC'><glossterm>ICECC_ENV_EXEC</glossterm>
5005 <info>
5006 ICECC_ENV_EXEC[doc] = "Points to the icecc-create-env script that you provide."
5007 </info>
5008 <glossdef>
5009 <para role="glossdeffirst">
5010<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5011 Points to the <filename>icecc-create-env</filename> script
5012 that you provide.
5013 This variable is used by the
5014 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5015 class.
5016 You set this variable in your
5017 <filename>local.conf</filename> file.
5018 </para>
5019
5020 <para>
5021 If you do not point to a script that you provide, the
5022 OpenEmbedded build system uses the default script provided
5023 by the <filename>icecc-create-env.bb</filename> recipe,
5024 which is a modified version and not the one that comes with
5025 <filename>icecc</filename>.
5026 </para>
5027 </glossdef>
5028 </glossentry>
5029
5030 <glossentry id='var-ICECC_PARALLEL_MAKE'><glossterm>ICECC_PARALLEL_MAKE</glossterm>
5031 <info>
5032 ICECC_PARALLEL_MAKE[doc] = "Extra options passed to the make command during the do_compile task that specify parallel compilation."
5033 </info>
5034 <glossdef>
5035 <para role="glossdeffirst">
5036<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5037 Extra options passed to the <filename>make</filename>
5038 command during the
5039 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>
5040 task that specify parallel compilation.
5041 This variable usually takes the form of
5042 "-j <replaceable>x</replaceable>", where
5043 <replaceable>x</replaceable> represents the maximum
5044 number of parallel threads <filename>make</filename> can
5045 run.
5046 <note>
5047 The options passed affect builds on all enabled
5048 machines on the network, which are machines running the
5049 <filename>iceccd</filename> daemon.
5050 </note>
5051 </para>
5052
5053 <para>
5054 If your enabled machines support multiple cores,
5055 coming up with the maximum number of parallel threads
5056 that gives you the best performance could take some
5057 experimentation since machine speed, network lag,
5058 available memory, and existing machine loads can all
5059 affect build time.
5060 Consequently, unlike the
5061 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
5062 variable, there is no rule-of-thumb for setting
5063 <filename>ICECC_PARALLEL_MAKE</filename> to achieve
5064 optimal performance.
5065 </para>
5066
5067 <para>
5068 If you do not set <filename>ICECC_PARALLEL_MAKE</filename>,
5069 the build system does not use it (i.e. the system does
5070 not detect and assign the number of cores as is done with
5071 <filename>PARALLEL_MAKE</filename>).
5072 </para>
5073 </glossdef>
5074 </glossentry>
5075
5076 <glossentry id='var-ICECC_PATH'><glossterm>ICECC_PATH</glossterm>
5077 <info>
5078 ICECC_PATH[doc] = "The location of the icecc binary."
5079 </info>
5080 <glossdef>
5081 <para role="glossdeffirst">
5082<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5083 The location of the <filename>icecc</filename> binary.
5084 You can set this variable in your
5085 <filename>local.conf</filename> file.
5086 If your <filename>local.conf</filename> file does not define
5087 this variable, the
5088 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5089 class attempts to define it by locating
5090 <filename>icecc</filename> using <filename>which</filename>.
5091 </para>
5092 </glossdef>
5093 </glossentry>
5094
5095 <glossentry id='var-ICECC_USER_CLASS_BL'><glossterm>ICECC_USER_CLASS_BL</glossterm>
5096 <info>
5097 ICECC_USER_CLASS_BL[doc] = "Identifies user classes that you do not want the Icecream distributed compile support to consider."
5098 </info>
5099 <glossdef>
5100 <para role="glossdeffirst">
5101<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5102 Identifies user classes that you do not want the
5103 Icecream distributed compile support to consider.
5104 This variable is used by the
5105 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5106 class.
5107 You set this variable in your
5108 <filename>local.conf</filename> file.
5109 </para>
5110
5111 <para>
5112 When you list classes using this variable, you are
5113 "blacklisting" them from distributed compilation across
5114 remote hosts.
5115 Any classes you list will be distributed and compiled
5116 locally.
5117 </para>
5118 </glossdef>
5119 </glossentry>
5120
5121 <glossentry id='var-ICECC_USER_PACKAGE_BL'><glossterm>ICECC_USER_PACKAGE_BL</glossterm>
5122 <info>
5123 ICECC_USER_PACKAGE_BL[doc] = "Identifies user recipes that you do not want the Icecream distributed compile support to consider."
5124 </info>
5125 <glossdef>
5126 <para role="glossdeffirst">
5127<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5128 Identifies user recipes that you do not want the
5129 Icecream distributed compile support to consider.
5130 This variable is used by the
5131 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5132 class.
5133 You set this variable in your
5134 <filename>local.conf</filename> file.
5135 </para>
5136
5137 <para>
5138 When you list packages using this variable, you are
5139 "blacklisting" them from distributed compilation across
5140 remote hosts.
5141 Any packages you list will be distributed and compiled
5142 locally.
5143 </para>
5144 </glossdef>
5145 </glossentry>
5146
5147 <glossentry id='var-ICECC_USER_PACKAGE_WL'><glossterm>ICECC_USER_PACKAGE_WL</glossterm>
5148 <info>
5149 ICECC_USER_PACKAGE_WL[doc] = "Identifies user recipes that use an empty PARALLEL_MAKE variable that you want to force remote distributed compilation on using the Icecream distributed compile support."
5150 </info>
5151 <glossdef>
5152 <para role="glossdeffirst">
5153<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5154 Identifies user recipes that use an empty
5155 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
5156 variable that you want to force remote distributed
5157 compilation on using the Icecream distributed compile
5158 support.
5159 This variable is used by the
5160 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5161 class.
5162 You set this variable in your
5163 <filename>local.conf</filename> file.
5164 </para>
5165 </glossdef>
5166 </glossentry>
5167
5168 <glossentry id='var-IMAGE_BASENAME'><glossterm>IMAGE_BASENAME</glossterm>
5169 <info>
5170 IMAGE_BASENAME[doc] = "The base name of image output files."
5171 </info>
5172 <glossdef>
5173 <para role="glossdeffirst">
5174<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5175 The base name of image output files.
5176 This variable defaults to the recipe name
5177 (<filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
5178 </para>
5179 </glossdef>
5180 </glossentry>
5181
5182 <glossentry id='var-IMAGE_BOOT_FILES'><glossterm>IMAGE_BOOT_FILES</glossterm>
5183 <info>
5184 IMAGE_BOOT_FILES[doc] = "Whitespace separated list of files from ${DEPLOY_DIR_IMAGE} to place in boot partition. Entries will be installed under a same name as the source file. To change the destination file name, pass a desired name after a semicolon (eg. u-boot.img;uboot)."
5185 </info>
5186 <glossdef>
5187 <para role="glossdeffirst">
5188<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5189 A space-separated list of files installed into the
5190 boot partition when preparing an image using the
5191 <filename>wic</filename> tool with the
5192 <filename>bootimg-partition</filename> source
5193 plugin.
5194 By default, the files are installed under
5195 the same name as the source files.
5196 To change the installed name, separate it from the
5197 original name with a semi-colon (;).
5198 Source files need to be located in
5199 <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>.
5200 Here are two examples:
5201
5202 <literallayout class="monospaced">
5203 IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"
5204 IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}"
5205 </literallayout>
5206 </para>
5207
5208 <para>
5209 Alternatively, source files can be picked up using
5210 a glob pattern.
5211 In this case, the destination file
5212 will have the same name as the base name of the source file
5213 path.
5214 To install files into a directory within the
5215 target location, pass its name after a semi-colon
5216 (;).
5217 Here are two examples:
5218 <literallayout class="monospaced">
5219 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*"
5220 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"
5221 </literallayout>
5222 The first example installs all files from
5223 <filename>${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles</filename>
5224 into the root of the target partition.
5225 The second example installs the same files into a
5226 <filename>boot</filename> directory within the
5227 target partition.
5228 </para>
5229 </glossdef>
5230 </glossentry>
5231
5232 <glossentry id='var-IMAGE_CLASSES'><glossterm>IMAGE_CLASSES</glossterm>
5233 <info>
5234 IMAGE_CLASSES[doc] = "A list of classes that all images should inherit."
5235 </info>
5236 <glossdef>
5237 <para role="glossdeffirst">
5238<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5239 A list of classes that all images should inherit.
5240 You typically use this variable to specify the list of
5241 classes that register the different types of images
5242 the OpenEmbedded build system creates.
5243 </para>
5244
5245 <para>
5246 The default value for <filename>IMAGE_CLASSES</filename> is
5247 <filename>image_types</filename>.
5248 You can set this variable in your
5249 <filename>local.conf</filename> or in a distribution
5250 configuration file.
5251 </para>
5252
5253 <para>
5254 For more information, see
5255 <filename>meta/classes/image_types.bbclass</filename> in the
5256 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
5257 </para>
5258 </glossdef>
5259 </glossentry>
5260
5261 <glossentry id='var-IMAGE_CMD'><glossterm>IMAGE_CMD</glossterm>
5262 <info>
5263 IMAGE_CMD[doc] = "Specifies the command to create the image file for a specific image type, which corresponds to the value set set in IMAGE_FSTYPES, (e.g. ext3, btrfs, and so forth)."
5264 </info>
5265 <glossdef>
5266 <para role="glossdeffirst">
5267<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5268 Specifies the command to create the image file for a
5269 specific image type, which corresponds to the value set
5270 set in
5271 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>,
5272 (e.g. <filename>ext3</filename>,
5273 <filename>btrfs</filename>, and so forth).
5274 When setting this variable, you should use
5275 an override for the associated type.
5276 Here is an example:
5277 <literallayout class='monospaced'>
5278 IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} \
5279 --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
5280 ${EXTRA_IMAGECMD}"
5281 </literallayout>
5282 </para>
5283
5284 <para>
5285 You typically do not need to set this variable unless
5286 you are adding support for a new image type.
5287 For more examples on how to set this variable, see the
5288 <link linkend='ref-classes-image_types'><filename>image_types</filename></link>
5289 class file, which is
5290 <filename>meta/classes/image_types.bbclass</filename>.
5291 </para>
5292 </glossdef>
5293 </glossentry>
5294
5295 <glossentry id='var-IMAGE_DEVICE_TABLES'><glossterm>IMAGE_DEVICE_TABLES</glossterm>
5296 <info>
5297 IMAGE_DEVICE_TABLES[doc] = "Specifies one or more files that contain custom device tables that are passed to the makedevs command as part of creating an image."
5298 </info>
5299 <glossdef>
5300 <para role="glossdeffirst">
5301<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5302 Specifies one or more files that contain custom device
5303 tables that are passed to the
5304 <filename>makedevs</filename> command as part of creating
5305 an image.
5306 These files list basic device nodes that should be
5307 created under <filename>/dev</filename> within the image.
5308 If <filename>IMAGE_DEVICE_TABLES</filename> is not set,
5309 <filename>files/device_table-minimal.txt</filename> is
5310 used, which is located by
5311 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>.
5312 For details on how you should write device table files,
5313 see <filename>meta/files/device_table-minimal.txt</filename>
5314 as an example.
5315 </para>
5316 </glossdef>
5317 </glossentry>
5318
5319 <glossentry id='var-IMAGE_FEATURES'><glossterm>IMAGE_FEATURES</glossterm>
5320 <info>
5321 IMAGE_FEATURES[doc] = "The primary list of features to include in an image. Configure this variable in an image recipe."
5322 </info>
5323 <glossdef>
5324 <para role="glossdeffirst">
5325<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5326 The primary list of features to include in an image.
5327 Typically, you configure this variable in an image recipe.
5328 Although you can use this variable from your
5329 <filename>local.conf</filename> file, which is found in the
5330 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
5331 best practices dictate that you do not.
5332 <note>
5333 To enable extra features from outside the image recipe,
5334 use the
5335 <filename><link linkend='var-EXTRA_IMAGE_FEATURES'>EXTRA_IMAGE_FEATURES</link></filename> variable.
5336 </note>
5337 </para>
5338
5339 <para>
5340 For a list of image features that ships with the Yocto
5341 Project, see the
5342 "<link linkend="ref-features-image">Image Features</link>"
5343 section.
5344 </para>
5345
5346 <para>
5347 For an example that shows how to customize your image by
5348 using this variable, see the
5349 "<ulink url='&YOCTO_DOCS_DEV_URL;#usingpoky-extend-customimage-imagefeatures'>Customizing Images Using Custom <filename>IMAGE_FEATURES</filename> and <filename>EXTRA_IMAGE_FEATURES</filename></ulink>"
5350 section in the Yocto Project Development Manual.
5351 </para>
5352 </glossdef>
5353 </glossentry>
5354
5355 <glossentry id='var-IMAGE_FSTYPES'><glossterm>IMAGE_FSTYPES</glossterm>
5356 <info>
5357 IMAGE_FSTYPES[doc] = "Formats of root filesystem images that you want to have created."
5358 </info>
5359 <glossdef>
5360 <para role="glossdeffirst">
5361<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5362 Specifies the formats the OpenEmbedded build system uses
5363 during the build when creating the root filesystem.
5364 For example, setting <filename>IMAGE_FSTYPES</filename>
5365 as follows causes the build system to create root
5366 filesystems using two formats: <filename>.ext3</filename>
5367 and <filename>.tar.bz2</filename>:
5368 <literallayout class='monospaced'>
5369 IMAGE_FSTYPES = "ext3 tar.bz2"
5370 </literallayout>
5371 </para>
5372
5373 <para>
5374 For the complete list of supported image formats from which
5375 you can choose, see
5376 <link linkend='var-IMAGE_TYPES'><filename>IMAGE_TYPES</filename></link>.
5377 </para>
5378
5379 <note>
5380 If you add "live" to <filename>IMAGE_FSTYPES</filename>
5381 inside an image recipe, be sure that you do so prior to the
5382 "inherit image" line of the recipe or the live image will
5383 not build.
5384 </note>
5385
5386 <note>
5387 Due to the way this variable is processed, it is not
5388 possible to update its contents using
5389 <filename>_append</filename> or
5390 <filename>_prepend</filename>. To add one or more
5391 additional options to this variable the
5392 <filename>+=</filename> operator must be used.
5393 </note>
5394 </glossdef>
5395 </glossentry>
5396
5397 <glossentry id='var-IMAGE_INSTALL'><glossterm>IMAGE_INSTALL</glossterm>
5398 <info>
5399 IMAGE_INSTALL[doc] = "Specifies the packages to install into an image. Image recipes set IMAGE_INSTALL to specify the packages to install into an image through image.bbclass."
5400 </info>
5401 <glossdef>
5402 <para role="glossdeffirst">
5403<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5404 Specifies the packages to install into an image.
5405 The <filename>IMAGE_INSTALL</filename> variable is a
5406 mechanism for an image recipe and you should use it
5407 with care to avoid ordering issues.
5408 <note>
5409 When working with an
5410 <link linkend='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename></link>
5411 image, do not use the <filename>IMAGE_INSTALL</filename>
5412 variable to specify packages for installation.
5413 Instead, use the
5414 <link linkend='var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></link>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05005415 variable, which allows the initial RAM filesystem
5416 (initramfs) recipe to use a fixed set of packages and
5417 not be affected by <filename>IMAGE_INSTALL</filename>.
5418 For information on creating an initramfs, see the
5419 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
5420 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005421 </note>
5422 </para>
5423
5424 <para>
5425 Image recipes set <filename>IMAGE_INSTALL</filename>
5426 to specify the packages to install into an image through
5427 <filename>image.bbclass</filename>.
5428 Additionally, "helper" classes exist, such as
5429 <filename>core-image.bbclass</filename>, that can take
5430 <filename><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></filename>
5431 lists and turn these into auto-generated entries in
5432 <filename>IMAGE_INSTALL</filename> in addition to its
5433 default contents.
5434 </para>
5435
5436 <para>
5437 Using <filename>IMAGE_INSTALL</filename> with the
5438 <filename>+=</filename> operator from the
5439 <filename>/conf/local.conf</filename> file or from within
5440 an image recipe is not recommended as it can cause ordering
5441 issues.
5442 Since <filename>core-image.bbclass</filename> sets
5443 <filename>IMAGE_INSTALL</filename> to a default value using
5444 the <filename>?=</filename> operator, using a
5445 <filename>+=</filename> operation against
5446 <filename>IMAGE_INSTALL</filename> will result in
5447 unexpected behavior when used in
5448 <filename>conf/local.conf</filename>.
5449 Furthermore, the same operation from within an image
5450 recipe may or may not succeed depending on the specific
5451 situation.
5452 In both these cases, the behavior is contrary to how most
5453 users expect the <filename>+=</filename> operator to work.
5454 </para>
5455
5456 <para>
5457 When you use this variable, it is best to use it as follows:
5458 <literallayout class='monospaced'>
5459 IMAGE_INSTALL_append = " <replaceable>package-name</replaceable>"
5460 </literallayout>
5461 Be sure to include the space between the quotation character
5462 and the start of the package name or names.
5463 </para>
5464 </glossdef>
5465 </glossentry>
5466
5467 <glossentry id='var-IMAGE_LINGUAS'><glossterm>IMAGE_LINGUAS</glossterm>
5468 <info>
5469 IMAGE_LINGUAS[doc] = "Specifies the list of locales to install into the image during the root filesystem construction process."
5470 </info>
5471 <glossdef>
5472 <para role="glossdeffirst">
5473<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5474 Specifies the list of locales to install into the image
5475 during the root filesystem construction process.
5476 The OpenEmbedded build system automatically splits locale
5477 files, which are used for localization, into separate
5478 packages.
5479 Setting the <filename>IMAGE_LINGUAS</filename> variable
5480 ensures that any locale packages that correspond to packages
5481 already selected for installation into the image are also
5482 installed.
5483 Here is an example:
5484 <literallayout class='monospaced'>
5485 IMAGE_LINGUAS = "pt-br de-de"
5486 </literallayout>
5487 </para>
5488
5489 <para>
5490 In this example, the build system ensures any Brazilian
5491 Portuguese and German locale files that correspond to
5492 packages in the image are installed (i.e.
5493 <filename>*-locale-pt-br</filename>
5494 and <filename>*-locale-de-de</filename> as well as
5495 <filename>*-locale-pt</filename>
5496 and <filename>*-locale-de</filename>, since some software
5497 packages only provide locale files by language and not by
5498 country-specific language).
5499 </para>
5500
5501 <para>
5502 See the
5503 <link linkend='var-GLIBC_GENERATE_LOCALES'><filename>GLIBC_GENERATE_LOCALES</filename></link>
5504 variable for information on generating GLIBC locales.
5505 </para>
5506 </glossdef>
5507 </glossentry>
5508
5509 <glossentry id='var-IMAGE_MANIFEST'><glossterm>IMAGE_MANIFEST</glossterm>
5510 <info>
5511 IMAGE_MANIFEST[doc] = "The manifest file for the image. This file lists all the installed packages that make up the image."
5512 </info>
5513 <glossdef>
5514 <para role="glossdeffirst">
5515<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5516 The manifest file for the image.
5517 This file lists all the installed packages that make up
5518 the image.
5519 The file contains package information on a line-per-package
5520 basis as follows:
5521 <literallayout class='monospaced'>
5522 <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
5523 </literallayout>
5524 </para>
5525
5526 <para>
5527 The
5528 <link linkend='ref-classes-image'><filename>image</filename></link>
5529 class defines the manifest file as follows:
5530 <literallayout class='monospaced'>
5531 IMAGE_MANIFEST = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest"
5532 </literallayout>
5533 The location is derived using the
5534 <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
5535 and
5536 <link linkend='var-IMAGE_NAME'><filename>IMAGE_NAME</filename></link>
5537 variables.
5538 You can find information on how the image
5539 is created in the
5540 "<link linkend='image-generation-dev-environment'>Image Generation</link>"
5541 section.
5542 </para>
5543 </glossdef>
5544 </glossentry>
5545
5546 <glossentry id='var-IMAGE_NAME'><glossterm>IMAGE_NAME</glossterm>
5547 <info>
5548 IMAGE_NAME[doc] = "The name of the output image files minus the extension."
5549 </info>
5550 <glossdef>
5551 <para role="glossdeffirst">
5552<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5553 The name of the output image files minus the extension.
5554 This variable is derived using the
5555 <link linkend='var-IMAGE_BASENAME'><filename>IMAGE_BASENAME</filename></link>,
5556 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
5557 and
5558 <link linkend='var-DATETIME'><filename>DATETIME</filename></link>
5559 variables:
5560 <literallayout class='monospaced'>
5561 IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DATETIME}"
5562 </literallayout>
5563 </para>
5564 </glossdef>
5565 </glossentry>
5566
5567 <glossentry id='var-IMAGE_OVERHEAD_FACTOR'><glossterm>IMAGE_OVERHEAD_FACTOR</glossterm>
5568 <info>
5569 IMAGE_OVERHEAD_FACTOR[doc] = "Defines a multiplier that the build system applies to the initial image size for cases when the multiplier times the returned disk usage value for the image is greater than the sum of IMAGE_ROOTFS_SIZE and IMAGE_ROOTFS_EXTRA_SPACE."
5570 </info>
5571 <glossdef>
5572 <para role="glossdeffirst">
5573<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5574 Defines a multiplier that the build system applies to the initial image
5575 size for cases when the multiplier times the returned disk usage value
5576 for the image is greater than the sum of
5577 <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>
5578 and
5579 <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>.
5580 The result of the multiplier applied to the initial image size creates
5581 free disk space in the image as overhead.
5582 By default, the build process uses a multiplier of 1.3 for this variable.
5583 This default value results in 30% free disk space added to the image when this
5584 method is used to determine the final generated image size.
5585 You should be aware that post install scripts and the package management
5586 system uses disk space inside this overhead area.
5587 Consequently, the multiplier does not produce an image with
5588 all the theoretical free disk space.
5589 See <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>
5590 for information on how the build system determines the overall image size.
5591 </para>
5592
5593 <para>
5594 The default 30% free disk space typically gives the image enough room to boot
5595 and allows for basic post installs while still leaving a small amount of
5596 free disk space.
5597 If 30% free space is inadequate, you can increase the default value.
5598 For example, the following setting gives you 50% free space added to the image:
5599 <literallayout class='monospaced'>
5600 IMAGE_OVERHEAD_FACTOR = "1.5"
5601 </literallayout>
5602 </para>
5603
5604 <para>
5605 Alternatively, you can ensure a specific amount of free disk space is added
5606 to the image by using the
5607 <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>
5608 variable.
5609 </para>
5610 </glossdef>
5611 </glossentry>
5612
5613 <glossentry id='var-IMAGE_PKGTYPE'><glossterm>IMAGE_PKGTYPE</glossterm>
5614 <info>
5615 IMAGE_PKGTYPE[doc] = "Defines the package type (DEB, RPM, IPK, or TAR) used by the OpenEmbedded build system."
5616 </info>
5617 <glossdef>
5618 <para role="glossdeffirst">
5619<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5620 Defines the package type (DEB, RPM, IPK, or TAR) used
5621 by the OpenEmbedded build system.
5622 The variable is defined appropriately by the
5623 <link linkend='ref-classes-package_deb'><filename>package_deb</filename></link>,
5624 <link linkend='ref-classes-package_rpm'><filename>package_rpm</filename></link>,
5625 <link linkend='ref-classes-package_ipk'><filename>package_ipk</filename></link>,
5626 or
5627 <link linkend='ref-classes-package_tar'><filename>package_tar</filename></link>
5628 class.
5629 <note><title>Warning</title>
5630 The <filename>package_tar</filename> class is broken
5631 and is not supported.
5632 It is recommended that you do not use it.
5633 </note>
5634 </para>
5635
5636 <para>
5637 The
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05005638 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_*</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005639 and
5640 <link linkend='ref-classes-image'><filename>image</filename></link>
5641 classes use the <filename>IMAGE_PKGTYPE</filename> for
5642 packaging up images and SDKs.
5643 </para>
5644
5645 <para>
5646 You should not set the <filename>IMAGE_PKGTYPE</filename>
5647 manually.
5648 Rather, the variable is set indirectly through the
5649 appropriate
5650 <link linkend='ref-classes-package'><filename>package_*</filename></link>
5651 class using the
5652 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
5653 variable.
5654 The OpenEmbedded build system uses the first package type
5655 (e.g. DEB, RPM, or IPK) that appears with the variable
5656 <note>
5657 Files using the <filename>.tar</filename> format are
5658 never used as a substitute packaging format for DEB,
5659 RPM, and IPK formatted files for your image or SDK.
5660 </note>
5661 </para>
5662 </glossdef>
5663 </glossentry>
5664
5665 <glossentry id='var-IMAGE_POSTPROCESS_COMMAND'><glossterm>IMAGE_POSTPROCESS_COMMAND</glossterm>
5666 <info>
5667 IMAGE_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created the final image output files."
5668 </info>
5669 <glossdef>
5670 <para role="glossdeffirst">
5671<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5672 Specifies a list of functions to call once the
5673 OpenEmbedded build system has created the final image
5674 output files.
5675 You can specify functions separated by semicolons:
5676 <literallayout class='monospaced'>
5677 IMAGE_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
5678 </literallayout>
5679 </para>
5680
5681 <para>
5682 If you need to pass the root filesystem path to a command
5683 within the function, you can use
5684 <filename>${IMAGE_ROOTFS}</filename>, which points to
5685 the directory that becomes the root filesystem image.
Patrick Williamsf1e5d692016-03-30 15:21:19 -05005686 See the
5687 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
5688 variable for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005689 </para>
5690 </glossdef>
5691 </glossentry>
5692
5693 <glossentry id='var-IMAGE_PREPROCESS_COMMAND'><glossterm>IMAGE_PREPROCESS_COMMAND</glossterm>
5694 <info>
5695 IMAGE_PREPROCESS_COMMAND[doc] = "Specifies a list of functions to call before the OpenEmbedded build system has created the final image output files."
5696 </info>
5697 <glossdef>
5698 <para role="glossdeffirst">
5699<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5700 Specifies a list of functions to call before the
5701 OpenEmbedded build system has created the final image
5702 output files.
5703 You can specify functions separated by semicolons:
5704 <literallayout class='monospaced'>
5705 IMAGE_PREPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
5706 </literallayout>
5707 </para>
5708
5709 <para>
5710 If you need to pass the root filesystem path to a command
5711 within the function, you can use
5712 <filename>${IMAGE_ROOTFS}</filename>, which points to
5713 the directory that becomes the root filesystem image.
Patrick Williamsf1e5d692016-03-30 15:21:19 -05005714 See the
5715 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
5716 variable for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005717 </para>
5718 </glossdef>
5719 </glossentry>
5720
5721 <glossentry id='var-IMAGE_ROOTFS'><glossterm>IMAGE_ROOTFS</glossterm>
5722 <info>
5723 IMAGE_ROOTFS[doc] = "The location of the root filesystem while it is under construction (i.e. during do_rootfs)."
5724 </info>
5725 <glossdef>
5726 <para role="glossdeffirst">
5727<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5728 The location of the root filesystem while it is under
5729 construction (i.e. during the
5730 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
5731 task).
5732 This variable is not configurable.
5733 Do not change it.
5734 </para>
5735 </glossdef>
5736 </glossentry>
5737
5738 <glossentry id='var-IMAGE_ROOTFS_ALIGNMENT'><glossterm>IMAGE_ROOTFS_ALIGNMENT</glossterm>
5739 <info>
5740 IMAGE_ROOTFS_ALIGNMENT[doc] = "Specifies the alignment for the output image file in Kbytes."
5741 </info>
5742 <glossdef>
5743 <para role="glossdeffirst">
5744<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5745 Specifies the alignment for the output image file in
5746 Kbytes.
5747 If the size of the image is not a multiple of
5748 this value, then the size is rounded up to the nearest
5749 multiple of the value.
5750 The default value is "1".
5751 See
5752 <link linkend='var-IMAGE_ROOTFS_SIZE'><filename>IMAGE_ROOTFS_SIZE</filename></link>
5753 for additional information.
5754 </para>
5755 </glossdef>
5756 </glossentry>
5757
5758 <glossentry id='var-IMAGE_ROOTFS_EXTRA_SPACE'><glossterm>IMAGE_ROOTFS_EXTRA_SPACE</glossterm>
5759 <info>
5760 IMAGE_ROOTFS_EXTRA_SPACE[doc] = "Defines additional free disk space created in the image in Kbytes. By default, this variable is set to '0'."
5761 </info>
5762 <glossdef>
5763 <para role="glossdeffirst">
5764<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5765 Defines additional free disk space created in the image in Kbytes.
5766 By default, this variable is set to "0".
5767 This free disk space is added to the image after the build system determines
5768 the image size as described in
5769 <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>.
5770 </para>
5771
5772 <para>
5773 This variable is particularly useful when you want to ensure that a
5774 specific amount of free disk space is available on a device after an image
5775 is installed and running.
5776 For example, to be sure 5 Gbytes of free disk space is available, set the
5777 variable as follows:
5778 <literallayout class='monospaced'>
5779 IMAGE_ROOTFS_EXTRA_SPACE = "5242880"
5780 </literallayout>
5781 </para>
5782
5783 <para>
5784 For example, the Yocto Project Build Appliance specifically requests 40 Gbytes
5785 of extra space with the line:
5786 <literallayout class='monospaced'>
5787 IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
5788 </literallayout>
5789 </para>
5790 </glossdef>
5791 </glossentry>
5792
5793 <glossentry id='var-IMAGE_ROOTFS_SIZE'><glossterm>IMAGE_ROOTFS_SIZE</glossterm>
5794 <info>
5795 IMAGE_ROOTFS_SIZE[doc] = "Defines the size in Kbytes for the generated image."
5796 </info>
5797 <glossdef>
5798 <para role="glossdeffirst">
5799<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5800 Defines the size in Kbytes for the generated image.
5801 The OpenEmbedded build system determines the final size for the generated
5802 image using an algorithm that takes into account the initial disk space used
5803 for the generated image, a requested size for the image, and requested
5804 additional free disk space to be added to the image.
5805 Programatically, the build system determines the final size of the
5806 generated image as follows:
5807 <literallayout class='monospaced'>
5808 if (image-du * overhead) &lt; rootfs-size:
5809 internal-rootfs-size = rootfs-size + xspace
5810 else:
5811 internal-rootfs-size = (image-du * overhead) + xspace
5812
5813 where:
5814
5815 image-du = Returned value of the du command on
5816 the image.
5817
5818 overhead = IMAGE_OVERHEAD_FACTOR
5819
5820 rootfs-size = IMAGE_ROOTFS_SIZE
5821
5822 internal-rootfs-size = Initial root filesystem
5823 size before any modifications.
5824
5825 xspace = IMAGE_ROOTFS_EXTRA_SPACE
5826 </literallayout>
5827 </para>
5828
5829 <para>
5830 See the <link linkend='var-IMAGE_OVERHEAD_FACTOR'><filename>IMAGE_OVERHEAD_FACTOR</filename></link>
5831 and <link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'><filename>IMAGE_ROOTFS_EXTRA_SPACE</filename></link>
5832 variables for related information.
5833<!-- In the above example, <filename>overhead</filename> is defined by the
5834 <filename><link linkend='var-IMAGE_OVERHEAD_FACTOR'>IMAGE_OVERHEAD_FACTOR</link></filename>
5835 variable, <filename>xspace</filename> is defined by the
5836 <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>
5837 variable, and <filename>du</filename> is the results of the disk usage command
5838 on the initially generated image. -->
5839 </para>
5840 </glossdef>
5841 </glossentry>
5842
5843 <glossentry id='var-IMAGE_TYPEDEP'><glossterm>IMAGE_TYPEDEP</glossterm>
5844 <info>
5845 IMAGE_TYPEDEP[doc] = "Specifies a dependency from one image type on another."
5846 </info>
5847 <glossdef>
5848 <para role="glossdeffirst">
5849<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5850 Specifies a dependency from one image type on another.
5851 Here is an example from the
5852 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
5853 class:
5854 <literallayout class='monospaced'>
5855 IMAGE_TYPEDEP_live = "ext3"
5856 </literallayout>
5857 </para>
5858
5859 <para>
5860 In the previous example, the variable ensures that when
5861 "live" is listed with the
5862 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
5863 variable, the OpenEmbedded build system produces an
5864 <filename>ext3</filename> image first since one of the
5865 components of the live
5866 image is an <filename>ext3</filename>
5867 formatted partition containing the root
5868 filesystem.
5869 </para>
5870 </glossdef>
5871 </glossentry>
5872
5873 <glossentry id='var-IMAGE_TYPES'><glossterm>IMAGE_TYPES</glossterm>
5874 <info>
5875 IMAGE_TYPES[doc] = "Specifies the complete list of supported image types by default."
5876 </info>
5877 <glossdef>
5878 <para role="glossdeffirst">
5879<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5880 Specifies the complete list of supported image types
5881 by default:
5882 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005883 btrfs
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005884 cpio
5885 cpio.gz
Patrick Williamsf1e5d692016-03-30 15:21:19 -05005886 cpio.lz4
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005887 cpio.lzma
Patrick Williamsf1e5d692016-03-30 15:21:19 -05005888 cpio.xz
5889 cramfs
5890 elf
5891 ext2
5892 ext2.bz2
5893 ext2.gz
5894 ext2.lzma
5895 ext3
5896 ext3.gz
5897 ext4
5898 ext4.gz
5899 hdddirect
5900 hddimg
5901 iso
5902 jffs2
5903 jffs2.sum
5904 multiubi
5905 qcow2
5906 squashfs
5907 squashfs-lzo
5908 squashfs-xz
5909 tar
5910 tar.bz2
5911 tar.gz
5912 tar.lz4
5913 tar.xz
5914 ubi
5915 ubifs
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005916 vdi
5917 vmdk
Patrick Williamsf1e5d692016-03-30 15:21:19 -05005918 wic
5919 wic.bz2
5920 wic.gz
5921 wic.lzma
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005922 </literallayout>
5923 </para>
5924
5925 <para>
5926 For more information about these types of images, see
5927 <filename>meta/classes/image_types*.bbclass</filename>
5928 in the
5929 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
5930 </para>
5931 </glossdef>
5932 </glossentry>
5933
5934 <glossentry id='var-INC_PR'><glossterm>INC_PR</glossterm>
5935 <info>
5936 INC_PR[doc] = "Helps define the recipe revision for recipes that share a common include file."
5937 </info>
5938 <glossdef>
5939 <para role="glossdeffirst">
5940<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5941 Helps define the recipe revision for recipes that share
5942 a common <filename>include</filename> file.
5943 You can think of this variable as part of the recipe revision
5944 as set from within an include file.
5945 </para>
5946
5947 <para>
5948 Suppose, for example, you have a set of recipes that
5949 are used across several projects.
5950 And, within each of those recipes the revision
5951 (its <link linkend='var-PR'><filename>PR</filename></link>
5952 value) is set accordingly.
5953 In this case, when the revision of those recipes changes,
5954 the burden is on you to find all those recipes and
5955 be sure that they get changed to reflect the updated
5956 version of the recipe.
5957 In this scenario, it can get complicated when recipes
5958 that are used in many places and provide common functionality
5959 are upgraded to a new revision.
5960 </para>
5961
5962 <para>
5963 A more efficient way of dealing with this situation is
5964 to set the <filename>INC_PR</filename> variable inside
5965 the <filename>include</filename> files that the recipes
5966 share and then expand the <filename>INC_PR</filename>
5967 variable within the recipes to help
5968 define the recipe revision.
5969 </para>
5970
5971 <para>
5972 The following provides an example that shows how to use
5973 the <filename>INC_PR</filename> variable
5974 given a common <filename>include</filename> file that
5975 defines the variable.
5976 Once the variable is defined in the
5977 <filename>include</filename> file, you can use the
5978 variable to set the <filename>PR</filename> values in
5979 each recipe.
5980 You will notice that when you set a recipe's
5981 <filename>PR</filename> you can provide more granular
5982 revisioning by appending values to the
5983 <filename>INC_PR</filename> variable:
5984 <literallayout class='monospaced'>
5985recipes-graphics/xorg-font/xorg-font-common.inc:INC_PR = "r2"
5986recipes-graphics/xorg-font/encodings_1.0.4.bb:PR = "${INC_PR}.1"
5987recipes-graphics/xorg-font/font-util_1.3.0.bb:PR = "${INC_PR}.0"
5988recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
5989 </literallayout>
5990 The first line of the example establishes the baseline
5991 revision to be used for all recipes that use the
5992 <filename>include</filename> file.
5993 The remaining lines in the example are from individual
5994 recipes and show how the <filename>PR</filename> value
5995 is set.
5996 </para>
5997 </glossdef>
5998 </glossentry>
5999
6000 <glossentry id='var-INCOMPATIBLE_LICENSE'><glossterm>INCOMPATIBLE_LICENSE</glossterm>
6001 <info>
6002 INCOMPATIBLE_LICENSE[doc] = "Specifies a space-separated list of license names (as they would appear in LICENSE) that should be excluded from the build."
6003 </info>
6004 <glossdef>
6005 <para role="glossdeffirst">
6006<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6007 Specifies a space-separated list of license names
6008 (as they would appear in
6009 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>)
6010 that should be excluded from the build.
6011 Recipes that provide no alternatives to listed incompatible
6012 licenses are not built.
6013 Packages that are individually licensed with the specified
6014 incompatible licenses will be deleted.
6015 </para>
6016
6017 <note>
6018 This functionality is only regularly tested using
6019 the following setting:
6020 <literallayout class='monospaced'>
6021 INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0"
6022 </literallayout>
6023 Although you can use other settings, you might be required
6024 to remove dependencies on or provide alternatives to
6025 components that are required to produce a functional system
6026 image.
6027 </note>
6028 </glossdef>
6029 </glossentry>
6030
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006031 <glossentry id='var-INHERIT'><glossterm>INHERIT</glossterm>
6032 <info>
6033 INHERIT[doc] = "Causes the named class to be inherited at this point during parsing. The variable is only valid in configuration files."
6034 </info>
6035 <glossdef>
6036 <para role="glossdeffirst">
6037<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6038 Causes the named class to be inherited at
6039 this point during parsing.
6040 The variable is only valid in configuration files.
6041 </para>
6042 </glossdef>
6043 </glossentry>
6044
6045 <glossentry id='var-INHERIT_DISTRO'><glossterm>INHERIT_DISTRO</glossterm>
6046 <info>
6047 INHERIT_DISTRO[doc] = "Lists classes that will be inherited at the distribution level. It is unlikely that you want to edit this variable."
6048 </info>
6049 <glossdef>
6050 <para role="glossdeffirst">
6051<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6052 Lists classes that will be inherited at the
6053 distribution level.
6054 It is unlikely that you want to edit this variable.
6055 </para>
6056
6057 <para>
6058 The default value of the variable is set as follows in the
6059 <filename>meta/conf/distro/defaultsetup.conf</filename>
6060 file:
6061 <literallayout class='monospaced'>
6062 INHERIT_DISTRO ?= "debian devshell sstate license"
6063 </literallayout>
6064 </para>
6065 </glossdef>
6066 </glossentry>
6067
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006068 <glossentry id='var-INHIBIT_DEFAULT_DEPS'><glossterm>INHIBIT_DEFAULT_DEPS</glossterm>
6069 <info>
6070 INHIBIT_DEFAULT_DEPS[doc] = "Prevents the default dependencies, namely the C compiler and standard C library (libc), from being added to DEPENDS."
6071 </info>
6072 <glossdef>
6073 <para role="glossdeffirst">
6074<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6075 Prevents the default dependencies, namely the C compiler
6076 and standard C library (libc), from being added to
6077 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>.
6078 This variable is usually used within recipes that do not
6079 require any compilation using the C compiler.
6080 </para>
6081
6082 <para>
6083 Set the variable to "1" to prevent the default dependencies
6084 from being added.
6085 </para>
6086 </glossdef>
6087 </glossentry>
6088
6089 <glossentry id='var-INHIBIT_PACKAGE_DEBUG_SPLIT'><glossterm>INHIBIT_PACKAGE_DEBUG_SPLIT</glossterm>
6090 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006091 INHIBIT_PACKAGE_DEBUG_SPLIT[doc] = "If set to "1", prevents the OpenEmbedded build system from splitting out debug information during packaging"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006092 </info>
6093 <glossdef>
6094 <para role="glossdeffirst">
6095<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6096 Prevents the OpenEmbedded build system from splitting
6097 out debug information during packaging.
6098 By default, the build system splits out debugging
6099 information during the
6100 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
6101 task.
6102 For more information on how debug information is split out,
6103 see the
6104 <link linkend='var-PACKAGE_DEBUG_SPLIT_STYLE'><filename>PACKAGE_DEBUG_SPLIT_STYLE</filename></link>
6105 variable.
6106 </para>
6107
6108 <para>
6109 To prevent the build system from splitting out
6110 debug information during packaging, set the
6111 <filename>INHIBIT_PACKAGE_DEBUG_SPLIT</filename> variable
6112 as follows:
6113 <literallayout class='monospaced'>
6114 INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
6115 </literallayout>
6116 </para>
6117 </glossdef>
6118 </glossentry>
6119
6120 <glossentry id='var-INHIBIT_PACKAGE_STRIP'><glossterm>INHIBIT_PACKAGE_STRIP</glossterm>
6121 <info>
6122 INHIBIT_PACKAGE_STRIP[doc] = "If set to "1", causes the build to not strip binaries in resulting packages."
6123 </info>
6124 <glossdef>
6125 <para role="glossdeffirst">
6126<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006127 If set to "1", causes the build to not strip binaries in
6128 resulting packages and prevents the
6129 <filename>-dbg</filename> package from containing the
6130 source files.
6131 </para>
6132
6133 <para>
6134 By default, the OpenEmbedded build system strips
6135 binaries and puts the debugging symbols into
6136 <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}-dbg</filename>.
6137 Consequently, you should not set
6138 <filename>INHIBIT_PACKAGE_STRIP</filename> when you plan
6139 to debug in general.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006140 </para>
6141 </glossdef>
6142 </glossentry>
6143
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006144 <glossentry id='var-INITRAMFS_FSTYPES'><glossterm>INITRAMFS_FSTYPES</glossterm>
6145 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006146 INITRAMFS_FSTYPES[doc] = "Defines the format for the output image of an initial RAM filesystem (initramfs), which is used during boot."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006147 </info>
6148 <glossdef>
6149 <para role="glossdeffirst">
6150<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6151 Defines the format for the output image of an initial
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006152 RAM filesystem (initramfs), which is used during boot.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006153 Supported formats are the same as those supported by the
6154 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6155 variable.
6156 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006157
6158 <para>
6159 The default value of this variable, which is set in the
6160 <filename>meta/conf/bitbake.conf</filename> configuration
6161 file in the
6162 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
6163 is "cpio.gz".
6164 The Linux kernel's initramfs mechanism, as opposed to the
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006165 initial RAM filesystem
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006166 <ulink url='https://en.wikipedia.org/wiki/Initrd'>initrd</ulink>
6167 mechanism, expects an optionally compressed cpio
6168 archive.
6169 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006170 </glossdef>
6171 </glossentry>
6172
6173 <glossentry id='var-INITRAMFS_IMAGE'><glossterm>INITRAMFS_IMAGE</glossterm>
6174 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006175 INITRAMFS_IMAGE[doc] = "Specifies the PROVIDES name of an image recipe that is used to build an initial RAM filesystem (initramfs) image."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006176 </info>
6177 <glossdef>
6178 <para role="glossdeffirst">
6179<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006180 Specifies the
6181 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
6182 name of an image recipe that is used to build an initial
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006183 RAM filesystem (initramfs) image.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006184 An initramfs provides a temporary root filesystem used for
6185 early system initialization (e.g. loading of modules
6186 needed to locate and mount the "real" root filesystem).
6187 The specified recipe is added as a dependency of the root
6188 filesystem recipe (e.g.
6189 <filename>core-image-sato</filename>).
6190 See the <filename>meta/recipes-core/images/core-image-minimal-initramfs.bb</filename>
6191 recipe in the
6192 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
6193 for an example initramfs recipe.
6194 To select this recipe to provide the initramfs,
6195 set <filename>INITRAMFS_IMAGE</filename> to
6196 "core-image-minimal-initramfs".
6197 <note>
6198 The initramfs image recipe should set
6199 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6200 to
6201 <link linkend='var-INITRAMFS_FSTYPES'><filename>INITRAMFS_FSTYPES</filename></link>.
6202 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006203 </para>
6204
6205 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006206 You can also find more information by referencing the
6207 <filename>meta/poky/conf/local.conf.sample.extended</filename>
6208 configuration file in the
6209 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
6210 the
6211 <link linkend='ref-classes-image'><filename>image</filename></link>
6212 class, and the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006213 <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006214 class to see how to use the
6215 <filename>INITRAMFS_IMAGE</filename> variable.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006216 </para>
6217
6218 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006219 If <filename>INITRAMFS_IMAGE</filename> is empty, which is
6220 the default, then no initramfs is built.
6221 </para>
6222
6223 <para>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006224 For more information, you can also see the
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006225 <link linkend='var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></link>
6226 variable, which allows the generated image to be bundled
6227 inside the kernel image.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006228 Additionally, for information on creating an initramfs, see
6229 the
6230 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
6231 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006232 </para>
6233 </glossdef>
6234 </glossentry>
6235
6236 <glossentry id='var-INITRAMFS_IMAGE_BUNDLE'><glossterm>INITRAMFS_IMAGE_BUNDLE</glossterm>
6237 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006238 INITRAMFS_IMAGE_BUNDLE[doc] = "Controls whether or not the image recipe specified by INITRAMFS_IMAGE is run through an extra pass (do_bundle_initramfs) during kernel compilation in order to build a single binary that contains both the kernel image and the initial RAM filesystem (initramfs)."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006239 </info>
6240 <glossdef>
6241 <para role="glossdeffirst">
6242<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6243 Controls whether or not the image recipe specified by
6244 <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006245 is run through an extra pass
6246 (<link linkend='ref-tasks-bundle_initramfs'><filename>do_bundle_initramfs</filename></link>)
6247 during kernel compilation in order to build a single binary
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006248 that contains both the kernel image and the initial RAM
6249 filesystem (initramfs) image.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006250 This makes use of the
6251 <link linkend='var-CONFIG_INITRAMFS_SOURCE'><filename>CONFIG_INITRAMFS_SOURCE</filename></link>
6252 kernel feature.
6253 <note>
6254 Using an extra compilation pass to bundle the initramfs
6255 avoids a circular dependency between the kernel recipe and
6256 the initramfs recipe should the initramfs include kernel
6257 modules.
6258 Should that be the case, the initramfs recipe depends on
6259 the kernel for the kernel modules, and the kernel depends
6260 on the initramfs recipe since the initramfs is bundled
6261 inside the kernel image.
6262 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006263 </para>
6264
6265 <para>
6266 The combined binary is deposited into the
6267 <filename>tmp/deploy</filename> directory, which is part
6268 of the
6269 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
6270 </para>
6271
6272 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006273 Setting the variable to "1" in a configuration file causes the
6274 OpenEmbedded build system to generate a kernel image with the
6275 initramfs specified in
6276 <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
6277 bundled within:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006278 <literallayout class='monospaced'>
6279 INITRAMFS_IMAGE_BUNDLE = "1"
6280 </literallayout>
6281 By default, the
6282 <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
6283 class sets this variable to a null string as follows:
6284 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006285 INITRAMFS_IMAGE_BUNDLE ?= ""
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006286 </literallayout>
6287 <note>
6288 You must set the
6289 <filename>INITRAMFS_IMAGE_BUNDLE</filename> variable in
6290 a configuration file.
6291 You cannot set the variable in a recipe file.
6292 </note>
6293 See the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006294 <ulink url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/meta-poky/conf/local.conf.sample.extended'><filename>local.conf.sample.extended</filename></ulink>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006295 file for additional information.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006296 Also, for information on creating an initramfs, see the
6297 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
6298 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006299 </para>
6300 </glossdef>
6301 </glossentry>
6302
6303 <glossentry id='var-INITRD'><glossterm>INITRD</glossterm>
6304 <info>
6305 INITRD[doc] = "Indicates a list of filesystem images to concatenate and use as an initial RAM disk (initrd)."
6306 </info>
6307 <glossdef>
6308 <para role="glossdeffirst">
6309<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6310 Indicates list of filesystem images to concatenate and use
6311 as an initial RAM disk (<filename>initrd</filename>).
6312 </para>
6313
6314 <para>
6315 The <filename>INITRD</filename> variable is an optional
6316 variable used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006317 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006318 class.
6319 </para>
6320 </glossdef>
6321 </glossentry>
6322
6323 <glossentry id='var-INITRD_IMAGE'><glossterm>INITRD_IMAGE</glossterm>
6324 <info>
6325 INITRD_IMAGE[doc] = "When building a "live" bootable image (i.e. when IMAGE_FSTYPES contains "live"), INITRD_IMAGE specifies the image recipe that should be built to provide the initial RAM disk image."
6326 </info>
6327 <glossdef>
6328 <para role="glossdeffirst">
6329<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6330 When building a "live" bootable image (i.e. when
6331 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6332 contains "live"), <filename>INITRD_IMAGE</filename>
6333 specifies the image recipe that should be built
6334 to provide the initial RAM disk image.
6335 The default value is "core-image-minimal-initramfs".
6336 </para>
6337
6338 <para>
6339 See the
6340 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
6341 class for more information.
6342 </para>
6343 </glossdef>
6344 </glossentry>
6345
6346 <glossentry id='var-INITSCRIPT_NAME'><glossterm>INITSCRIPT_NAME</glossterm>
6347 <info>
6348 INITSCRIPT_NAME[doc] = "The filename of the initialization script as installed to ${sysconfdir}/init.d."
6349 </info>
6350 <glossdef>
6351 <para role="glossdeffirst">
6352<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6353 The filename of the initialization script as installed to
6354 <filename>${sysconfdir}/init.d</filename>.
6355 </para>
6356
6357 <para>
6358 This variable is used in recipes when using <filename>update-rc.d.bbclass</filename>.
6359 The variable is mandatory.
6360 </para>
6361 </glossdef>
6362 </glossentry>
6363
6364 <glossentry id='var-INITSCRIPT_PACKAGES'><glossterm>INITSCRIPT_PACKAGES</glossterm>
6365 <info>
6366 INITSCRIPT_PACKAGES[doc] = "A list of the packages that contain initscripts. This variable is used in recipes when using update-rc.d.bbclass. The variable is optional and defaults to the PN variable."
6367 </info>
6368 <glossdef>
6369 <para role="glossdeffirst">
6370<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6371 A list of the packages that contain initscripts.
6372 If multiple packages are specified, you need to append the package name
6373 to the other <filename>INITSCRIPT_*</filename> as an override.
6374 </para>
6375
6376 <para>
6377 This variable is used in recipes when using <filename>update-rc.d.bbclass</filename>.
6378 The variable is optional and defaults to the
6379 <link linkend='var-PN'><filename>PN</filename></link> variable.
6380 </para>
6381 </glossdef>
6382 </glossentry>
6383
6384 <glossentry id='var-INITSCRIPT_PARAMS'><glossterm>INITSCRIPT_PARAMS</glossterm>
6385 <info>
6386 INITSCRIPT_PARAMS[doc] = "Specifies the options to pass to update-rc.d. The variable is mandatory and is used in recipes when using update-rc.d.bbclass."
6387 </info>
6388 <glossdef>
6389 <para role="glossdeffirst">
6390<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6391 Specifies the options to pass to <filename>update-rc.d</filename>.
6392 Here is an example:
6393 <literallayout class='monospaced'>
6394 INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
6395 </literallayout>
6396 </para>
6397
6398 <para>
6399 In this example, the script has a runlevel of 99,
6400 starts the script in initlevels 2 and 5, and
6401 stops the script in levels 0, 1 and 6.
6402 </para>
6403
6404 <para>
6405 The variable's default value is "defaults", which is
6406 set in the
6407 <link linkend='ref-classes-update-rc.d'><filename>update-rc.d</filename></link>
6408 class.
6409 </para>
6410
6411 <para>
6412 The value in
6413 <filename>INITSCRIPT_PARAMS</filename> is passed through
6414 to the <filename>update-rc.d</filename> command.
6415 For more information on valid parameters, please see the
6416 <filename>update-rc.d</filename> manual page at
6417 <ulink url='http://www.tin.org/bin/man.cgi?section=8&amp;topic=update-rc.d'></ulink>.
6418 </para>
6419 </glossdef>
6420 </glossentry>
6421
6422 <glossentry id='var-INSANE_SKIP'><glossterm>INSANE_SKIP</glossterm>
6423 <info>
6424 INSANE_SKIP[doc] = "Specifies the QA checks to skip for a specific package within a recipe."
6425 </info>
6426 <glossdef>
6427 <para role="glossdeffirst">
6428<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6429 Specifies the QA checks to skip for a specific package
6430 within a recipe.
6431 For example, to skip the check for symbolic link
6432 <filename>.so</filename> files in the main package of a
6433 recipe, add the following to the recipe.
6434 The package name override must be used, which in this
6435 example is <filename>${PN}</filename>:
6436 <literallayout class='monospaced'>
6437 INSANE_SKIP_${PN} += "dev-so"
6438 </literallayout>
6439 </para>
6440
6441 <para>
6442 See the "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
6443 section for a list of the valid QA checks you can
6444 specify using this variable.
6445 </para>
6446 </glossdef>
6447 </glossentry>
6448
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006449 <glossentry id='var-INSTALL_TIMEZONE_FILE'><glossterm>INSTALL_TIMEZONE_FILE</glossterm>
6450 <info>
6451 INSTALL_TIMEZONE_FILE[doc] = "Enables installation of the /etc/timezone file."
6452 </info>
6453 <glossdef>
6454 <para role="glossdeffirst">
6455<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6456 By default, the <filename>tzdata</filename> recipe packages
6457 an <filename>/etc/timezone</filename> file.
6458 Set the <filename>INSTALL_TIMEZONE_FILE</filename>
6459 variable to "0" at the configuration level to disable this
6460 behavior.
6461 </para>
6462 </glossdef>
6463 </glossentry>
6464
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006465 <glossentry id='var-IPK_FEED_URIS'><glossterm>IPK_FEED_URIS</glossterm>
6466 <info>
6467 IPK_FEED_URIS[doc] = "List of ipkg feed records to put into generated image."
6468 </info>
6469 <glossdef>
6470 <para role="glossdeffirst">
6471<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6472 When the IPK backend is in use and package management
6473 is enabled on the target, you can use this variable to
6474 set up <filename>opkg</filename> in the target image
6475 to point to package feeds on a nominated server.
6476 Once the feed is established, you can perform
6477 installations or upgrades using the package manager
6478 at runtime.
6479 </para>
6480 </glossdef>
6481 </glossentry>
6482
6483<!--
6484 <glossentry id='var-INTERCEPT_DIR'><glossterm>INTERCEPT_DIR</glossterm>
6485 <glossdef>
6486 <para>
6487 An environment variable that defines the directory where
6488 post installation hooks are installed for the
6489 post install environment.
6490 This variable is fixed as follows:
6491 <literallayout class='monospaced'>
6492 ${WORKDIR}/intercept_scripts
6493 </literallayout>
6494 </para>
6495
6496 <para>
6497 After installation of a target's root filesystem,
6498 post installation scripts, which are essentially bash scripts,
6499 are all executed just a single time.
6500 Limiting execution of these scripts minimizes installation
6501 time that would be lengthened due to certain packages
6502 triggering redundant operations.
6503 For example, consider the installation of font packages
6504 as a common example.
6505 Without limiting the execution of post installation scripts,
6506 all font directories would be rescanned to create the
6507 cache after each individual font package was installed.
6508 </para>
6509
6510 <para>
6511 Do not edit the <filename>INTERCEPT_DIR</filename>
6512 variable.
6513 </para>
6514 </glossdef>
6515 </glossentry>
6516-->
6517
6518 </glossdiv>
6519
6520<!-- <glossdiv id='var-glossary-j'><title>J</title>-->
6521<!-- </glossdiv>-->
6522
6523 <glossdiv id='var-glossary-k'><title>K</title>
6524
6525 <glossentry id='var-KARCH'><glossterm>KARCH</glossterm>
6526 <info>
6527 KARCH[doc] = "Defines the kernel architecture used when assembling the configuration. You define the KARCH variable in the BSP Descriptions."
6528 </info>
6529 <glossdef>
6530 <para role="glossdeffirst">
6531<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6532 Defines the kernel architecture used when assembling
6533 the configuration.
6534 Architectures supported for this release are:
6535 <literallayout class='monospaced'>
6536 powerpc
6537 i386
6538 x86_64
6539 arm
6540 qemu
6541 mips
6542 </literallayout>
6543 </para>
6544
6545 <para>
6546 You define the <filename>KARCH</filename> variable in the
6547 <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#bsp-descriptions'>BSP Descriptions</ulink>.
6548 </para>
6549 </glossdef>
6550 </glossentry>
6551
6552 <glossentry id='var-KBRANCH'><glossterm>KBRANCH</glossterm>
6553 <info>
6554 KBRANCH[doc] = "A regular expression used by the build process to explicitly identify the kernel branch that is validated, patched and configured during a build."
6555 </info>
6556 <glossdef>
6557 <para role="glossdeffirst">
6558<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6559 A regular expression used by the build process to explicitly
6560 identify the kernel branch that is validated, patched,
6561 and configured during a build.
6562 You must set this variable to ensure the exact kernel
6563 branch you want is being used by the build process.
6564 </para>
6565
6566 <para>
6567 Values for this variable are set in the kernel's recipe
6568 file and the kernel's append file.
6569 For example, if you are using the Yocto Project kernel that
6570 is based on the Linux 3.14 kernel, the kernel recipe file
6571 is the
6572 <filename>meta/recipes-kernel/linux/linux-yocto_3.14.bb</filename>
6573 file.
6574 Following is an example for a kernel recipe file:
6575 <literallayout class='monospaced'>
6576 KBRANCH ?= "standard/base"
6577 </literallayout>
6578 </para>
6579
6580 <para>
6581 This variable is also used from the kernel's append file
6582 to identify the kernel branch specific to a particular
6583 machine or target hardware.
6584 The kernel's append file is located in the BSP layer for
6585 a given machine.
6586 For example, the kernel append file for the Emenlow BSP is in the
6587 <filename>meta-intel</filename> Git repository and is named
6588 <filename>meta-emenlow/recipes-kernel/linux/linux-yocto_3.14.bbappend</filename>.
6589 Here are the related statements from the append file:
6590 <literallayout class='monospaced'>
6591 COMPATIBLE_MACHINE_emenlow-noemgd = "emenlow-noemgd"
6592 KMACHINE_emenlow-noemgd = "emenlow"
6593 KBRANCH_emenlow-noemgd = "standard/base"
6594 KERNEL_FEATURES_append_emenlow-noemgd = " features/drm-gma500/drm-gma500.scc"
6595 </literallayout>
6596 The <filename>KBRANCH</filename> statement identifies
6597 the kernel branch to use when building for the Emenlow
6598 BSP.
6599 </para>
6600 </glossdef>
6601 </glossentry>
6602
6603 <glossentry id='var-KBUILD_DEFCONFIG'><glossterm>KBUILD_DEFCONFIG</glossterm>
6604 <info>
6605 KBUILD_DEFCONFIG[doc] = "Specifies an "in-tree" kernel configuration file for use during a kernel build."
6606 </info>
6607 <glossdef>
6608 <para role="glossdeffirst">
6609<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6610 When used with the
6611 <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
6612 class, specifies an "in-tree" kernel configuration file
6613 for use during a kernel build.
6614 </para>
6615
6616 <para>
6617 Typically, when using a <filename>defconfig</filename> to
6618 configure a kernel during a build, you place the
6619 file in your layer in the same manner as you would
6620 patch files and configuration fragment files (i.e.
6621 "out-of-tree").
6622 However, if you want to use a <filename>defconfig</filename>
6623 file that is part of the kernel tree (i.e. "in-tree"),
6624 you can use the
6625 <filename>KBUILD_DEFCONFIG</filename> variable to point
6626 to the <filename>defconfig</filename> file.
6627 </para>
6628
6629 <para>
6630 To use the variable, set it in the append file for your
6631 kernel recipe using the following form:
6632 <literallayout class='monospaced'>
6633 KBUILD_DEFCONFIG_<link linkend='var-KMACHINE'>KMACHINE</link> ?= <replaceable>defconfig_file</replaceable>
6634 </literallayout>
6635 Here is an example from a "raspberrypi2"
6636 <filename>KMACHINE</filename> build that uses a
6637 <filename>defconfig</filename> file named
6638 "bcm2709_defconfig":
6639 <literallayout class='monospaced'>
6640 KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig"
6641 </literallayout>
6642 As an alternative, you can use the following within your
6643 append file:
6644 <literallayout class='monospaced'>
6645 KBUILD_DEFCONFIG_pn-linux-yocto ?= <replaceable>defconfig_file</replaceable>
6646 </literallayout>
6647 For more information on how to use the
6648 <filename>KBUILD_DEFCONFIG</filename> variable, see the
6649 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-an-in-tree-defconfig-file'>Using an "In-Tree" <filename>defconfig</filename> File</ulink>"
6650 section.
6651 </para>
6652 </glossdef>
6653 </glossentry>
6654
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006655 <glossentry id='var-KERNEL_ALT_IMAGETYPE'><glossterm>KERNEL_ALT_IMAGETYPE</glossterm>
6656 <info>
6657 KERNEL_ALT_IMAGETYPE[doc] = "Specifies an alternate kernel image type for creation."
6658 </info>
6659 <glossdef>
6660 <para role="glossdeffirst">
6661<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6662 Specifies an alternate kernel image type for creation in
6663 addition to the kernel image type specified using the
6664 <link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
6665 variable.
6666 </para>
6667 </glossdef>
6668 </glossentry>
6669
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006670 <glossentry id='var-KERNEL_CLASSES'><glossterm>KERNEL_CLASSES</glossterm>
6671 <info>
6672 KERNEL_CLASSES[doc] = "A list of classes defining kernel image types that kernel class should inherit."
6673 </info>
6674 <glossdef>
6675 <para role="glossdeffirst">
6676<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6677 A list of classes defining kernel image types that the
6678 <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
6679 class should inherit.
6680 You typically append this variable to enable extended image
6681 types.
6682 An example is the "kernel-fitimage", which enables
6683 fitImage support and resides in
6684 <filename>meta/classes/kernel-fitimage.bbclass</filename>.
6685 You can register custom kernel image types with the
6686 <filename>kernel</filename> class using this variable.
6687 </para>
6688 </glossdef>
6689 </glossentry>
6690
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006691 <glossentry id='var-KERNEL_DEVICETREE'><glossterm>KERNEL_DEVICETREE</glossterm>
6692 <info>
6693 KERNEL_DEVICETREE[doc] = "Specifies the name of the generated Linux kernel device tree (i.e. the <filename>.dtb</filename>) file."
6694 </info>
6695 <glossdef>
6696 <para role="glossdeffirst">
6697<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6698 Specifies the name of the generated Linux kernel device tree
6699 (i.e. the <filename>.dtb</filename>) file.
6700 <note>
6701 Legacy support exists for specifying the full path
6702 to the device tree.
6703 However, providing just the <filename>.dtb</filename>
6704 file is preferred.
6705 </note>
6706 In order to use this variable, you must have the include
6707 files in your kernel recipe:
6708 <literallayout class='monospaced'>
6709 require recipes-kernel/linux/linux-dtb.inc
6710 </literallayout>
6711 or
6712 <literallayout class='monospaced'>
6713 require recipes-kernel/linux/linux-yocto.inc
6714 </literallayout>
6715 </para>
6716 </glossdef>
6717 </glossentry>
6718
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006719 <glossentry id='var-KERNEL_EXTRA_ARGS'><glossterm>KERNEL_EXTRA_ARGS</glossterm>
6720 <info>
6721 KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line arguments the OpenEmbedded build system passes on when compiling the kernel."
6722 </info>
6723 <glossdef>
6724 <para role="glossdeffirst">
6725<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6726 Specifies additional <filename>make</filename>
6727 command-line arguments the OpenEmbedded build system
6728 passes on when compiling the kernel.
6729 </para>
6730 </glossdef>
6731 </glossentry>
6732
6733 <glossentry id='var-KERNEL_FEATURES'><glossterm>KERNEL_FEATURES</glossterm>
6734 <info>
6735 KERNEL_FEATURES[doc] = "Includes additional metadata from the Yocto Project kernel Git repository. The metadata you add through this variable includes config fragments and features descriptions."
6736 </info>
6737 <glossdef>
6738 <para role="glossdeffirst">
6739<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6740 Includes additional metadata from the Yocto Project kernel Git repository.
6741 In the OpenEmbedded build system, the default Board Support Packages (BSPs)
6742 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
6743 is provided through
6744 the <link linkend='var-KMACHINE'><filename>KMACHINE</filename></link>
6745 and <link linkend='var-KBRANCH'><filename>KBRANCH</filename></link> variables.
6746 You can use the <filename>KERNEL_FEATURES</filename> variable to further
6747 add metadata for all BSPs.
6748 </para>
6749
6750 <para>
6751 The metadata you add through this variable includes config fragments and
6752 features descriptions,
6753 which usually includes patches as well as config fragments.
6754 You typically override the <filename>KERNEL_FEATURES</filename> variable
6755 for a specific machine.
6756 In this way, you can provide validated, but optional, sets of kernel
6757 configurations and features.
6758 </para>
6759
6760 <para>
6761 For example, the following adds <filename>netfilter</filename> to all
6762 the Yocto Project kernels and adds sound support to the <filename>qemux86</filename>
6763 machine:
6764 <literallayout class='monospaced'>
6765 # Add netfilter to all linux-yocto kernels
6766 KERNEL_FEATURES="features/netfilter/netfilter.scc"
6767
6768 # Add sound support to the qemux86 machine
6769 KERNEL_FEATURES_append_qemux86=" cfg/sound.scc"
6770 </literallayout></para>
6771 </glossdef>
6772 </glossentry>
6773
6774 <glossentry id='var-KERNEL_IMAGE_BASE_NAME'><glossterm>KERNEL_IMAGE_BASE_NAME</glossterm>
6775 <info>
6776 KERNEL_IMAGE_BASE_NAME[doc] = "The base name of the kernel image."
6777 </info>
6778 <glossdef>
6779 <para role="glossdeffirst">
6780<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6781 The base name of the kernel image.
6782 This variable is set in the
6783 <link linkend='ref-classes-kernel'>kernel</link> class
6784 as follows:
6785 <literallayout class='monospaced'>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006786 KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006787 </literallayout>
6788 </para>
6789
6790 <para>
6791 See the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006792 <link linkend='var-PKGE'><filename>PKGE</filename></link>,
6793 <link linkend='var-PKGV'><filename>PKGV</filename></link>,
6794 <link linkend='var-PKGR'><filename>PKGR</filename></link>,
6795 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
6796 and
6797 <link linkend='var-DATETIME'><filename>DATETIME</filename></link>
6798 variables for additional information.
6799 </para>
6800 </glossdef>
6801 </glossentry>
6802
6803 <glossentry id='var-KERNEL_IMAGE_MAXSIZE'><glossterm>KERNEL_IMAGE_MAXSIZE</glossterm>
6804 <info>
6805 KERNEL_IMAGE_MAXSIZE[doc] = "The maximum allowable size in kilobytes of the kernel image file."
6806 </info>
6807 <glossdef>
6808 <para role="glossdeffirst">
6809<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6810 Specifies the maximum size of the kernel image file in
6811 kilobytes.
6812 If <filename>KERNEL_IMAGE_MAXSIZE</filename> is set,
6813 the size of the kernel image file is checked against
6814 the set value during the
6815 <link linkend='ref-tasks-sizecheck'><filename>do_sizecheck</filename></link>
6816 task.
6817 The task fails if the kernel image file is larger than
6818 the setting.
6819 </para>
6820
6821 <para>
6822 <filename>KERNEL_IMAGE_MAXSIZE</filename> is useful for
6823 target devices that have a limited amount of space in
6824 which the kernel image must be stored.
6825 </para>
6826
6827 <para>
6828 By default, this variable is not set, which means the
6829 size of the kernel image is not checked.
6830 </para>
6831 </glossdef>
6832 </glossentry>
6833
6834 <glossentry id='var-KERNEL_IMAGETYPE'><glossterm>KERNEL_IMAGETYPE</glossterm>
6835 <info>
6836 KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."
6837 </info>
6838 <glossdef>
6839 <para role="glossdeffirst">
6840<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6841 The type of kernel to build for a device, usually set by the
6842 machine configuration files and defaults to "zImage".
6843 This variable is used
6844 when building the kernel and is passed to <filename>make</filename> as the target to
6845 build.
6846 </para>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006847
6848 <para>
6849 If you want to build an alternate kernel image type, use the
6850 <link linkend='var-KERNEL_ALT_IMAGETYPE'><filename>KERNEL_ALT_IMAGETYPE</filename></link>
6851 variable.
6852 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006853 </glossdef>
6854 </glossentry>
6855
6856 <glossentry id='var-KERNEL_MODULE_AUTOLOAD'><glossterm>KERNEL_MODULE_AUTOLOAD</glossterm>
6857 <info>
6858 KERNEL_MODULE_AUTOLOAD[doc] = "Lists kernel modules that need to be auto-loaded during boot"
6859 </info>
6860 <glossdef>
6861 <para role="glossdeffirst">
6862<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6863 Lists kernel modules that need to be auto-loaded during
6864 boot.
6865 <note>
6866 This variable replaces the deprecated
6867 <link linkend='var-module_autoload'><filename>module_autoload</filename></link>
6868 variable.
6869 </note>
6870 </para>
6871
6872 <para>
6873 You can use the <filename>KERNEL_MODULE_AUTOLOAD</filename>
6874 variable anywhere that it can be
6875 recognized by the kernel recipe or by an out-of-tree kernel
6876 module recipe (e.g. a machine configuration file, a
6877 distribution configuration file, an append file for the
6878 recipe, or the recipe itself).
6879 </para>
6880
6881 <para>
6882 Specify it as follows:
6883 <literallayout class='monospaced'>
6884 KERNEL_MODULE_AUTOLOAD += "<replaceable>module_name1</replaceable> <replaceable>module_name2</replaceable> <replaceable>module_name3</replaceable>"
6885 </literallayout>
6886 </para>
6887
6888 <para>
6889 Including <filename>KERNEL_MODULE_AUTOLOAD</filename> causes
6890 the OpenEmbedded build system to populate the
6891 <filename>/etc/modules-load.d/modname.conf</filename>
6892 file with the list of modules to be auto-loaded on boot.
6893 The modules appear one-per-line in the file.
6894 Here is an example of the most common use case:
6895 <literallayout class='monospaced'>
6896 KERNEL_MODULE_AUTOLOAD += "<replaceable>module_name</replaceable>"
6897 </literallayout>
6898 </para>
6899
6900 <para>
6901 For information on how to populate the
6902 <filename>modname.conf</filename> file with
6903 <filename>modprobe.d</filename> syntax lines, see the
6904 <link linkend='var-KERNEL_MODULE_PROBECONF'><filename>KERNEL_MODULE_PROBECONF</filename></link>
6905 variable.
6906 </para>
6907 </glossdef>
6908 </glossentry>
6909
6910 <glossentry id='var-KERNEL_MODULE_PROBECONF'><glossterm>KERNEL_MODULE_PROBECONF</glossterm>
6911 <info>
6912 KERNEL_MODULE_PROBECONF[doc] = "Lists kernel modules for which the build system expects to find module_conf_* values that specify configuration for each of the modules."
6913 </info>
6914 <glossdef>
6915 <para role="glossdeffirst">
6916<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6917 Provides a list of modules for which the OpenEmbedded
6918 build system expects to find
6919 <filename>module_conf_</filename><replaceable>modname</replaceable>
6920 values that specify configuration for each of the modules.
6921 For information on how to provide those module
6922 configurations, see the
6923 <link linkend='var-module_conf'><filename>module_conf_*</filename></link>
6924 variable.
6925 </para>
6926 </glossdef>
6927 </glossentry>
6928
6929 <glossentry id='var-KERNEL_PATH'><glossterm>KERNEL_PATH</glossterm>
6930 <info>
6931 KERNEL_PATH[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)."
6932 </info>
6933 <glossdef>
6934 <para role="glossdeffirst">
6935<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6936 The location of the kernel sources.
6937 This variable is set to the value of the
6938 <link linkend='var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></link>
6939 within the
6940 <link linkend='ref-classes-module'><filename>module</filename></link>
6941 class.
6942 For information on how this variable is used, see the
6943 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
6944 section.
6945 </para>
6946
6947 <para>
6948 To help maximize compatibility with out-of-tree drivers
6949 used to build modules, the OpenEmbedded build system also
6950 recognizes and uses the
6951 <link linkend='var-KERNEL_SRC'><filename>KERNEL_SRC</filename></link>
6952 variable, which is identical to the
6953 <filename>KERNEL_PATH</filename> variable.
6954 Both variables are common variables used by external
6955 Makefiles to point to the kernel source directory.
6956 </para>
6957 </glossdef>
6958 </glossentry>
6959
6960 <glossentry id='var-KERNEL_SRC'><glossterm>KERNEL_SRC</glossterm>
6961 <info>
6962 KERNEL_SRC[doc] = "The location of the kernel sources. This variable is set to the value of the STAGING_KERNEL_DIR within the module class (module.bbclass)."
6963 </info>
6964 <glossdef>
6965 <para role="glossdeffirst">
6966<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6967 The location of the kernel sources.
6968 This variable is set to the value of the
6969 <link linkend='var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></link>
6970 within the
6971 <link linkend='ref-classes-module'><filename>module</filename></link>
6972 class.
6973 For information on how this variable is used, see the
6974 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
6975 section.
6976 </para>
6977
6978 <para>
6979 To help maximize compatibility with out-of-tree drivers
6980 used to build modules, the OpenEmbedded build system also
6981 recognizes and uses the
6982 <link linkend='var-KERNEL_PATH'><filename>KERNEL_PATH</filename></link>
6983 variable, which is identical to the
6984 <filename>KERNEL_SRC</filename> variable.
6985 Both variables are common variables used by external
6986 Makefiles to point to the kernel source directory.
6987 </para>
6988 </glossdef>
6989 </glossentry>
6990
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006991 <glossentry id='var-KERNEL_VERSION'><glossterm>KERNEL_VERSION</glossterm>
6992 <info>
6993 KERNEL_VERSION[doc] = "Specifies the version of the kernel as extracted from version.h or utsrelease.h within the kernel sources."
6994 </info>
6995 <glossdef>
6996 <para role="glossdeffirst">
6997<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6998 Specifies the version of the kernel as extracted from
6999 <filename>version.h</filename> or
7000 <filename>utsrelease.h</filename> within the kernel sources.
7001 Effects of setting this variable do not take affect until
7002 the kernel has been configured.
7003 Consequently, attempting to refer to this variable in
7004 contexts prior to configuration will not work.
7005 </para>
7006 </glossdef>
7007 </glossentry>
7008
7009 <glossentry id='var-KERNELDEPMODDEPEND'><glossterm>KERNELDEPMODDEPEND</glossterm>
7010 <info>
7011 KERNELDEPMODDEPEND[doc] = "Specifies whether or not to use the data referenced through the PKGDATA_DIR directory."
7012 </info>
7013 <glossdef>
7014 <para role="glossdeffirst">
7015<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7016 Specifies whether the data referenced through
7017 <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
7018 is needed or not.
7019 The <filename>KERNELDEPMODDEPEND</filename> does not
7020 control whether or not that data exists,
7021 but simply whether or not it is used.
7022 If you do not need to use the data, set the
7023 <filename>KERNELDEPMODDEPEND</filename> variable in your
7024 <filename>initramfs</filename> recipe.
7025 Setting the variable there when the data is not needed
7026 avoids a potential dependency loop.
7027 </para>
7028 </glossdef>
7029 </glossentry>
7030
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007031 <glossentry id='var-KFEATURE_DESCRIPTION'><glossterm>KFEATURE_DESCRIPTION</glossterm>
7032 <info>
7033 KFEATURE_DESCRIPTION[doc] = "Provides a short description of a configuration fragment. You use this variable in the .scc file that describes a configuration fragment file."
7034 </info>
7035 <glossdef>
7036 <para role="glossdeffirst">
7037<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7038 Provides a short description of a configuration fragment.
7039 You use this variable in the <filename>.scc</filename>
7040 file that describes a configuration fragment file.
7041 Here is the variable used in a file named
7042 <filename>smp.scc</filename> to describe SMP being
7043 enabled:
7044 <literallayout class='monospaced'>
7045 define KFEATURE_DESCRIPTION "Enable SMP"
7046 </literallayout>
7047 </para>
7048 </glossdef>
7049 </glossentry>
7050
7051 <glossentry id='var-KMACHINE'><glossterm>KMACHINE</glossterm>
7052 <info>
7053 KMACHINE[doc] = "The machine as known by the kernel."
7054 </info>
7055 <glossdef>
7056 <para role="glossdeffirst">
7057<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7058 The machine as known by the kernel.
7059 Sometimes the machine name used by the kernel does not
7060 match the machine name used by the OpenEmbedded build
7061 system.
7062 For example, the machine name that the OpenEmbedded build
7063 system understands as
7064 <filename>core2-32-intel-common</filename> goes by a
7065 different name in the Linux Yocto kernel.
7066 The kernel understands that machine as
7067 <filename>intel-core2-32</filename>.
7068 For cases like these, the <filename>KMACHINE</filename>
7069 variable maps the kernel machine name to the OpenEmbedded
7070 build system machine name.
7071 </para>
7072
7073 <para>
7074 These mappings between different names occur in the
7075 Yocto Linux Kernel's <filename>meta</filename> branch.
7076 As an example take a look in the
7077 <filename>common/recipes-kernel/linux/linux-yocto_3.19.bbappend</filename>
7078 file:
7079 <literallayout class='monospaced'>
7080 LINUX_VERSION_core2-32-intel-common = "3.19.0"
7081 COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
7082 SRCREV_meta_core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974"
7083 SRCREV_machine_core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
7084 KMACHINE_core2-32-intel-common = "intel-core2-32"
7085 KBRANCH_core2-32-intel-common = "standard/base"
7086 KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
7087 </literallayout>
7088 The <filename>KMACHINE</filename> statement says that
7089 the kernel understands the machine name as
7090 "intel-core2-32".
7091 However, the OpenEmbedded build system understands the
7092 machine as "core2-32-intel-common".
7093 </para>
7094
7095 </glossdef>
7096 </glossentry>
7097
7098 <glossentry id='var-KTYPE'><glossterm>KTYPE</glossterm>
7099 <info>
7100 KTYPE[doc] = "Defines the kernel type to be used in assembling the configuration."
7101 </info>
7102 <glossdef>
7103 <para role="glossdeffirst">
7104<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7105 Defines the kernel type to be used in assembling the
7106 configuration.
7107 The linux-yocto recipes define "standard", "tiny",
7108 and "preempt-rt" kernel types.
7109 See the
7110 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#kernel-types'>Kernel Types</ulink>"
7111 section in the Yocto Project Linux Kernel Development
7112 Manual for more information on kernel types.
7113 </para>
7114
7115 <para>
7116 You define the <filename>KTYPE</filename> variable in the
7117 <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#bsp-descriptions'>BSP Descriptions</ulink>.
7118 The value you use must match the value used for the
7119 <link linkend='var-LINUX_KERNEL_TYPE'><filename>LINUX_KERNEL_TYPE</filename></link>
7120 value used by the kernel recipe.
7121 </para>
7122 </glossdef>
7123 </glossentry>
7124 </glossdiv>
7125
7126 <glossdiv id='var-glossary-l'><title>L</title>
7127
7128 <glossentry id='var-LABELS'><glossterm>LABELS</glossterm>
7129 <info>
7130 LABELS[doc] = "Provides a list of targets for automatic configuration."
7131 </info>
7132 <glossdef>
7133 <para role="glossdeffirst">
7134<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7135 Provides a list of targets for automatic configuration.
7136 </para>
7137
7138 <para>
7139 See the
7140 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
7141 class for more information on how this variable is used.
7142 </para>
7143 </glossdef>
7144 </glossentry>
7145
7146 <glossentry id='var-LAYERDEPENDS'><glossterm>LAYERDEPENDS</glossterm>
7147 <info>
7148 LAYERDEPENDS[doc] = "Lists the layers, separated by spaces, upon which this recipe depends. This variable is used in the conf/layer.conf file and must be suffixed with the name of the specific layer."
7149 </info>
7150 <glossdef>
7151 <para role="glossdeffirst">
7152<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7153 Lists the layers that this recipe depends upon, separated by spaces.
7154 Optionally, you can specify a specific layer version for a dependency
7155 by adding it to the end of the layer name with a colon, (e.g. "anotherlayer:3"
7156 to be compared against
7157 <link linkend='var-LAYERVERSION'><filename>LAYERVERSION</filename></link><filename>_anotherlayer</filename>
7158 in this case).
7159 An error will be produced if any dependency is missing or
7160 the version numbers do not match exactly (if specified).
7161 This variable is used in the <filename>conf/layer.conf</filename> file
7162 and must be suffixed with the name of the specific layer (e.g.
7163 <filename>LAYERDEPENDS_mylayer</filename>).
7164 </para>
7165 </glossdef>
7166 </glossentry>
7167
7168 <glossentry id='var-LAYERDIR'><glossterm>LAYERDIR</glossterm>
7169 <info>
7170 LAYERDIR[doc] = "When used inside the layer.conf configuration file, this variable provides the path of the current layer."
7171 </info>
7172 <glossdef>
7173 <para role="glossdeffirst">
7174<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7175 When used inside the <filename>layer.conf</filename> configuration
7176 file, this variable provides the path of the current layer.
7177 This variable is not available outside of <filename>layer.conf</filename>
7178 and references are expanded immediately when parsing of the file completes.
7179 </para>
7180 </glossdef>
7181 </glossentry>
7182
7183 <glossentry id='var-LAYERVERSION'><glossterm>LAYERVERSION</glossterm>
7184 <info>
7185 LAYERVERSION[doc] = "Optionally specifies the version of a layer as a single number. This variable is used in the conf/layer.conf file and must be suffixed with the name of the specific layer."
7186 </info>
7187 <glossdef>
7188 <para role="glossdeffirst">
7189<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7190 Optionally specifies the version of a layer as a single number.
7191 You can use this within
7192 <link linkend='var-LAYERDEPENDS'><filename>LAYERDEPENDS</filename></link>
7193 for another layer in order to depend on a specific version
7194 of the layer.
7195 This variable is used in the <filename>conf/layer.conf</filename> file
7196 and must be suffixed with the name of the specific layer (e.g.
7197 <filename>LAYERVERSION_mylayer</filename>).
7198 </para>
7199 </glossdef>
7200 </glossentry>
7201
7202 <glossentry id='var-LD'><glossterm>LD</glossterm>
7203 <info>
7204 LD[doc] = "Minimal command and arguments to run the linker."
7205 </info>
7206 <glossdef>
7207 <para role="glossdeffirst">
7208<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7209 The minimal command and arguments used to run the
7210 linker.
7211 </para>
7212 </glossdef>
7213 </glossentry>
7214
7215 <glossentry id='var-LDFLAGS'><glossterm>LDFLAGS</glossterm>
7216 <info>
7217 LDFLAGS[doc] = "Specifies the flags to pass to the linker."
7218 </info>
7219 <glossdef>
7220 <para role="glossdeffirst">
7221<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7222 Specifies the flags to pass to the linker.
7223 This variable is exported to an environment
7224 variable and thus made visible to the software being
7225 built during the compilation step.
7226 </para>
7227
7228 <para>
7229 Default initialization for <filename>LDFLAGS</filename>
7230 varies depending on what is being built:
7231 <itemizedlist>
7232 <listitem><para>
7233 <link linkend='var-TARGET_LDFLAGS'><filename>TARGET_LDFLAGS</filename></link>
7234 when building for the target
7235 </para></listitem>
7236 <listitem><para>
7237 <link linkend='var-BUILD_LDFLAGS'><filename>BUILD_LDFLAGS</filename></link>
7238 when building for the build host (i.e.
7239 <filename>-native</filename>)
7240 </para></listitem>
7241 <listitem><para>
7242 <link linkend='var-BUILDSDK_LDFLAGS'><filename>BUILDSDK_LDFLAGS</filename></link>
7243 when building for an SDK (i.e.
7244 <filename>nativesdk-</filename>)
7245 </para></listitem>
7246 </itemizedlist>
7247 </para>
7248 </glossdef>
7249 </glossentry>
7250
7251 <glossentry id='var-LEAD_SONAME'><glossterm>LEAD_SONAME</glossterm>
7252 <info>
7253 LEAD_SONAME[doc] = "Specifies the lead (or primary) compiled library file (.so) that the debian class applies its naming policy to given a recipe that packages multiple libraries."
7254 </info>
7255 <glossdef>
7256 <para role="glossdeffirst">
7257<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7258 Specifies the lead (or primary) compiled library file
7259 (<filename>.so</filename>) that the
7260 <link linkend='ref-classes-debian'><filename>debian</filename></link>
7261 class applies its naming policy to given a recipe that
7262 packages multiple libraries.
7263 </para>
7264
7265 <para>
7266 This variable works in conjunction with the
7267 <filename>debian</filename> class.
7268 </para>
7269 </glossdef>
7270 </glossentry>
7271
7272 <glossentry id='var-LIC_FILES_CHKSUM'><glossterm>LIC_FILES_CHKSUM</glossterm>
7273 <info>
7274 LIC_FILES_CHKSUM[doc] = "Checksums of the license text in the recipe source code."
7275 </info>
7276 <glossdef>
7277 <para role="glossdeffirst">
7278<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7279 Checksums of the license text in the recipe source code.
7280 </para>
7281
7282 <para>
7283 This variable tracks changes in license text of the source
7284 code files.
7285 If the license text is changed, it will trigger a build
7286 failure, which gives the developer an opportunity to review any
7287 license change.
7288 </para>
7289
7290 <para>
7291 This variable must be defined for all recipes (unless
7292 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
7293 is set to "CLOSED").</para>
7294 <para>For more information, see the
7295 "<link linkend='usingpoky-configuring-LIC_FILES_CHKSUM'>
7296 Tracking License Changes</link>" section.
7297 </para>
7298 </glossdef>
7299 </glossentry>
7300
7301 <glossentry id='var-LICENSE'><glossterm>LICENSE</glossterm>
7302 <info>
7303 LICENSE[doc] = "The list of source licenses for the recipe. The logical operators &amp;, '|', and parentheses can be used."
7304 </info>
7305 <glossdef>
7306 <para role="glossdeffirst">
7307<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7308 The list of source licenses for the recipe.
7309 Follow these rules:
7310 <itemizedlist>
7311 <listitem><para>Do not use spaces within individual
7312 license names.</para></listitem>
7313 <listitem><para>Separate license names using
7314 | (pipe) when there is a choice between licenses.
7315 </para></listitem>
7316 <listitem><para>Separate license names using
7317 &amp; (ampersand) when multiple licenses exist
7318 that cover different parts of the source.
7319 </para></listitem>
7320 <listitem><para>You can use spaces between license
7321 names.</para></listitem>
7322 <listitem><para>For standard licenses, use the names
7323 of the files in
7324 <filename>meta/files/common-licenses/</filename>
7325 or the
7326 <link linkend='var-SPDXLICENSEMAP'><filename>SPDXLICENSEMAP</filename></link>
7327 flag names defined in
7328 <filename>meta/conf/licenses.conf</filename>.
7329 </para></listitem>
7330 </itemizedlist>
7331 </para>
7332
7333 <para>
7334 Here are some examples:
7335 <literallayout class='monospaced'>
7336 LICENSE = "LGPLv2.1 | GPLv3"
7337 LICENSE = "MPL-1 &amp; LGPLv2.1"
7338 LICENSE = "GPLv2+"
7339 </literallayout>
7340 The first example is from the recipes for Qt, which the user
7341 may choose to distribute under either the LGPL version
7342 2.1 or GPL version 3.
7343 The second example is from Cairo where two licenses cover
7344 different parts of the source code.
7345 The final example is from <filename>sysstat</filename>,
7346 which presents a single license.
7347 </para>
7348
7349 <para>
7350 You can also specify licenses on a per-package basis to
7351 handle situations where components of the output have
7352 different licenses.
7353 For example, a piece of software whose code is
7354 licensed under GPLv2 but has accompanying documentation
7355 licensed under the GNU Free Documentation License 1.2 could
7356 be specified as follows:
7357 <literallayout class='monospaced'>
7358 LICENSE = "GFDL-1.2 &amp; GPLv2"
7359 LICENSE_${PN} = "GPLv2"
7360 LICENSE_${PN}-doc = "GFDL-1.2"
7361 </literallayout>
7362 </para>
7363 </glossdef>
7364 </glossentry>
7365
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05007366 <glossentry id='var-LICENSE_CREATE_PACKAGE'><glossterm>LICENSE_CREATE_PACKAGE</glossterm>
7367 <info>
7368 LICENSE_CREATE_PACKAGE[doc] = "Creates an extra package (i.e. ${PN}-lic) for each recipe and adds that package to the RRECOMMENDS+${PN}."
7369 </info>
7370 <glossdef>
7371 <para role="glossdeffirst">
7372<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7373 Setting <filename>LICENSE_CREATE_PACKAGE</filename>
7374 to "1" causes the OpenEmbedded build system to create
7375 an extra package (i.e.
7376 <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}-lic</filename>)
7377 for each recipe and to add those packages to the
7378 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link><filename>_${PN}</filename>.
7379 </para>
7380
7381 <para>
7382 The <filename>${PN}-lic</filename> package installs a
7383 directory in <filename>/usr/share/licenses</filename>
7384 named <filename>${PN}</filename>, which is the recipe's
7385 base name, and installs files in that directory that
7386 contain license and copyright information (i.e. copies of
7387 the appropriate license files from
7388 <filename>meta/common-licenses</filename> that match the
7389 licenses specified in the
7390 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
7391 variable of the recipe metadata and copies of files marked
7392 in
7393 <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>
7394 as containing license text).
7395 </para>
7396
7397 <para>
7398 For related information on providing license text, see the
7399 <link linkend='var-COPY_LIC_DIRS'><filename>COPY_LIC_DIRS</filename></link>
7400 variable, the
7401 <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
7402 variable, and the
7403 "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
7404 section in the Yocto Project Development Manual.
7405 </para>
7406 </glossdef>
7407 </glossentry>
7408
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007409 <glossentry id='var-LICENSE_FLAGS'><glossterm>LICENSE_FLAGS</glossterm>
7410 <info>
7411 LICENSE_FLAGS[doc] = "Specifies additional flags for a recipe you must whitelist through LICENSE_FLAGS_WHITELIST in order to allow the recipe to be built."
7412 </info>
7413 <glossdef>
7414 <para role="glossdeffirst">
7415<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7416 Specifies additional flags for a recipe you must
7417 whitelist through
7418 <link linkend='var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></link>
7419 in order to allow the recipe to be built.
7420 When providing multiple flags, separate them with
7421 spaces.
7422 </para>
7423
7424 <para>
7425 This value is independent of
7426 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
7427 and is typically used to mark recipes that might
7428 require additional licenses in order to be used in a
7429 commercial product.
7430 For more information, see the
7431 "<link linkend='enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</link>"
7432 section.
7433 </para>
7434 </glossdef>
7435 </glossentry>
7436
7437 <glossentry id='var-LICENSE_FLAGS_WHITELIST'><glossterm>LICENSE_FLAGS_WHITELIST</glossterm>
7438 <info>
7439 LICENSE_FLAGS_WHITELIST[doc] = "Lists license flags that when specified in LICENSE_FLAGS within a recipe should not prevent that recipe from being built."
7440 </info>
7441 <glossdef>
7442 <para role="glossdeffirst">
7443<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7444 Lists license flags that when specified in
7445 <link linkend='var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></link>
7446 within a recipe should not prevent that recipe from being
7447 built.
7448 This practice is otherwise known as "whitelisting"
7449 license flags.
7450 For more information, see the
7451 <link linkend='enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</link>"
7452 section.
7453 </para>
7454 </glossdef>
7455 </glossentry>
7456
7457 <glossentry id='var-LICENSE_PATH'><glossterm>LICENSE_PATH</glossterm>
7458 <info>
7459 LICENSE_PATH[doc] = "Path to additional licenses used during the build."
7460 </info>
7461 <glossdef>
7462 <para role="glossdeffirst">
7463<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7464 Path to additional licenses used during the build.
7465 By default, the OpenEmbedded build system uses <filename>COMMON_LICENSE_DIR</filename>
7466 to define the directory that holds common license text used during the build.
7467 The <filename>LICENSE_PATH</filename> variable allows you to extend that
7468 location to other areas that have additional licenses:
7469 <literallayout class='monospaced'>
7470 LICENSE_PATH += "<replaceable>path-to-additional-common-licenses</replaceable>"
7471 </literallayout>
7472 </para>
7473 </glossdef>
7474 </glossentry>
7475
7476 <glossentry id='var-LINUX_KERNEL_TYPE'><glossterm>LINUX_KERNEL_TYPE</glossterm>
7477 <info>
7478 LINUX_KERNEL_TYPE[doc] = "Defines the kernel type to be used in assembling the configuration."
7479 </info>
7480 <glossdef>
7481 <para role="glossdeffirst">
7482<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7483 Defines the kernel type to be used in assembling the
7484 configuration.
7485 The linux-yocto recipes define "standard", "tiny", and
7486 "preempt-rt" kernel types.
7487 See the
7488 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#kernel-types'>Kernel Types</ulink>"
7489 section in the Yocto Project Linux Kernel Development
7490 Manual for more information on kernel types.
7491 </para>
7492
7493 <para>
7494 If you do not specify a
7495 <filename>LINUX_KERNEL_TYPE</filename>, it defaults to
7496 "standard".
7497 Together with
7498 <link linkend='var-KMACHINE'><filename>KMACHINE</filename></link>,
7499 the <filename>LINUX_KERNEL_TYPE</filename> variable
7500 defines the search
7501 arguments used by the kernel tools to find the appropriate
7502 description within the kernel
7503 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
7504 with which to build out the sources and configuration.
7505 </para>
7506 </glossdef>
7507 </glossentry>
7508
7509 <glossentry id='var-LINUX_VERSION'><glossterm>LINUX_VERSION</glossterm>
7510 <info>
7511 LINUX_VERSION[doc] = "The Linux version from kernel.org on which the Linux kernel image being built using the OpenEmbedded build system is based. You define this variable in the kernel recipe."
7512 </info>
7513 <glossdef>
7514 <para role="glossdeffirst">
7515<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7516 The Linux version from <filename>kernel.org</filename>
7517 on which the Linux kernel image being built using the
7518 OpenEmbedded build system is based.
7519 You define this variable in the kernel recipe.
7520 For example, the <filename>linux-yocto-3.4.bb</filename>
7521 kernel recipe found in
7522 <filename>meta/recipes-kernel/linux</filename>
7523 defines the variables as follows:
7524 <literallayout class='monospaced'>
7525 LINUX_VERSION ?= "3.4.24"
7526 </literallayout>
7527 </para>
7528
7529 <para>
7530 The <filename>LINUX_VERSION</filename> variable is used to
7531 define <link linkend='var-PV'><filename>PV</filename></link>
7532 for the recipe:
7533 <literallayout class='monospaced'>
7534 PV = "${LINUX_VERSION}+git${SRCPV}"
7535 </literallayout>
7536 </para>
7537 </glossdef>
7538 </glossentry>
7539
7540 <glossentry id='var-LINUX_VERSION_EXTENSION'><glossterm>LINUX_VERSION_EXTENSION</glossterm>
7541 <info>
7542 LINUX_VERSION_EXTENSION[doc] = "A string extension compiled into the version string of the Linux kernel built with the OpenEmbedded build system. You define this variable in the kernel recipe."
7543 </info>
7544 <glossdef>
7545 <para role="glossdeffirst">
7546<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7547 A string extension compiled into the version
7548 string of the Linux kernel built with the OpenEmbedded
7549 build system.
7550 You define this variable in the kernel recipe.
7551 For example, the linux-yocto kernel recipes all define
7552 the variable as follows:
7553 <literallayout class='monospaced'>
7554 LINUX_VERSION_EXTENSION ?= "-yocto-${<link linkend='var-LINUX_KERNEL_TYPE'>LINUX_KERNEL_TYPE</link>}"
7555 </literallayout>
7556 </para>
7557
7558 <para>
7559 Defining this variable essentially sets the
7560 Linux kernel configuration item
7561 <filename>CONFIG_LOCALVERSION</filename>, which is visible
7562 through the <filename>uname</filename> command.
7563 Here is an example that shows the extension assuming it
7564 was set as previously shown:
7565 <literallayout class='monospaced'>
7566 $ uname -r
7567 3.7.0-rc8-custom
7568 </literallayout>
7569 </para>
7570 </glossdef>
7571 </glossentry>
7572
7573 <glossentry id='var-LOG_DIR'><glossterm>LOG_DIR</glossterm>
7574 <info>
7575 LOG_DIR[doc] = "Specifies the directory to which the OpenEmbedded build system writes overall log files. The default directory is ${TMPDIR}/log"
7576 </info>
7577 <glossdef>
7578 <para role="glossdeffirst">
7579<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7580 Specifies the directory to which the OpenEmbedded build
7581 system writes overall log files.
7582 The default directory is <filename>${TMPDIR}/log</filename>.
7583 </para>
7584
7585 <para>
7586 For the directory containing logs specific to each task,
7587 see the <link linkend='var-T'><filename>T</filename></link>
7588 variable.
7589 </para>
7590 </glossdef>
7591 </glossentry>
7592
7593 </glossdiv>
7594
7595 <glossdiv id='var-glossary-m'><title>M</title>
7596
7597 <glossentry id='var-MACHINE'><glossterm>MACHINE</glossterm>
7598 <info>
7599 MACHINE[doc] = "Specifies the target device for which the image is built. You define MACHINE in the conf/local.conf file in the Build Directory."
7600 </info>
7601 <glossdef>
7602 <para role="glossdeffirst">
7603<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7604 Specifies the target device for which the image is built.
7605 You define <filename>MACHINE</filename> in the
7606 <filename>local.conf</filename> file found in the
7607 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
7608 By default, <filename>MACHINE</filename> is set to
7609 "qemux86", which is an x86-based architecture machine to
7610 be emulated using QEMU:
7611 <literallayout class='monospaced'>
7612 MACHINE ?= "qemux86"
7613 </literallayout>
7614 </para>
7615
7616 <para>
7617 The variable corresponds to a machine configuration file of the
7618 same name, through which machine-specific configurations are set.
7619 Thus, when <filename>MACHINE</filename> is set to "qemux86" there
7620 exists the corresponding <filename>qemux86.conf</filename> machine
7621 configuration file, which can be found in the
7622 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
7623 in <filename>meta/conf/machine</filename>.
7624 </para>
7625
7626 <para>
7627 The list of machines supported by the Yocto Project as
7628 shipped include the following:
7629 <literallayout class='monospaced'>
7630 MACHINE ?= "qemuarm"
7631 MACHINE ?= "qemuarm64"
7632 MACHINE ?= "qemumips"
7633 MACHINE ?= "qemumips64"
7634 MACHINE ?= "qemuppc"
7635 MACHINE ?= "qemux86"
7636 MACHINE ?= "qemux86-64"
7637 MACHINE ?= "genericx86"
7638 MACHINE ?= "genericx86-64"
7639 MACHINE ?= "beaglebone"
7640 MACHINE ?= "mpc8315e-rdb"
7641 MACHINE ?= "edgerouter"
7642 </literallayout>
7643 The last five are Yocto Project reference hardware boards, which
7644 are provided in the <filename>meta-yocto-bsp</filename> layer.
7645 <note>Adding additional Board Support Package (BSP) layers
7646 to your configuration adds new possible settings for
7647 <filename>MACHINE</filename>.
7648 </note>
7649 </para>
7650 </glossdef>
7651 </glossentry>
7652
7653 <glossentry id='var-MACHINE_ARCH'><glossterm>MACHINE_ARCH</glossterm>
7654 <info>
7655 MACHINE_ARCH[doc] = "Specifies the name of the machine-specific architecture. This variable is set automatically from MACHINE or TUNE_PKGARCH."
7656 </info>
7657 <glossdef>
7658 <para role="glossdeffirst">
7659<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7660 Specifies the name of the machine-specific architecture.
7661 This variable is set automatically from
7662 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
7663 or
7664 <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>.
7665 You should not hand-edit the
7666 <filename>MACHINE_ARCH</filename> variable.
7667 </para>
7668 </glossdef>
7669 </glossentry>
7670
7671 <glossentry id='var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'><glossterm>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</glossterm>
7672 <info>
7673 MACHINE_ESSENTIAL_EXTRA_RDEPENDS[doc] = "A list of required machine-specific packages to install as part of the image being built. Because this is a 'machine essential' variable, the list of packages are essential for the machine to boot."
7674 </info>
7675 <glossdef>
7676 <para role="glossdeffirst">
7677<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7678 A list of required machine-specific packages to install as part of
7679 the image being built.
7680 The build process depends on these packages being present.
7681 Furthermore, because this is a "machine essential" variable, the list of
7682 packages are essential for the machine to boot.
7683 The impact of this variable affects images based on
7684 <filename>packagegroup-core-boot</filename>,
7685 including the <filename>core-image-minimal</filename> image.
7686 </para>
7687
7688 <para>
7689 This variable is similar to the
7690 <filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'>MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</link></filename>
7691 variable with the exception that the image being built has a build
7692 dependency on the variable's list of packages.
7693 In other words, the image will not build if a file in this list is not found.
7694 </para>
7695
7696 <para>
7697 As an example, suppose the machine for which you are building requires
7698 <filename>example-init</filename> to be run during boot to initialize the hardware.
7699 In this case, you would use the following in the machine's
7700 <filename>.conf</filename> configuration file:
7701 <literallayout class='monospaced'>
7702 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init"
7703 </literallayout>
7704 </para>
7705 </glossdef>
7706 </glossentry>
7707
7708 <glossentry id='var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'><glossterm>MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</glossterm>
7709 <info>
7710 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS[doc] = "A list of recommended machine-specific packages to install as part of the image being built. Because this is a 'machine essential' variable, the list of packages are essential for the machine to boot."
7711 </info>
7712 <glossdef>
7713 <para role="glossdeffirst">
7714<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7715 A list of recommended machine-specific packages to install as part of
7716 the image being built.
7717 The build process does not depend on these packages being present.
7718 However, because this is a "machine essential" variable, the list of
7719 packages are essential for the machine to boot.
7720 The impact of this variable affects images based on
7721 <filename>packagegroup-core-boot</filename>,
7722 including the <filename>core-image-minimal</filename> image.
7723 </para>
7724
7725 <para>
7726 This variable is similar to the
7727 <filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</link></filename>
7728 variable with the exception that the image being built does not have a build
7729 dependency on the variable's list of packages.
7730 In other words, the image will still build if a package in this list is not found.
7731 Typically, this variable is used to handle essential kernel modules, whose
7732 functionality may be selected to be built into the kernel rather than as a module,
7733 in which case a package will not be produced.
7734 </para>
7735
7736 <para>
7737 Consider an example where you have a custom kernel where a specific touchscreen
7738 driver is required for the machine to be usable.
7739 However, the driver can be built as a module or
7740 into the kernel depending on the kernel configuration.
7741 If the driver is built as a module, you want it to be installed.
7742 But, when the driver is built into the kernel, you still want the
7743 build to succeed.
7744 This variable sets up a "recommends" relationship so that in the latter case,
7745 the build will not fail due to the missing package.
7746 To accomplish this, assuming the package for the module was called
7747 <filename>kernel-module-ab123</filename>, you would use the
7748 following in the machine's <filename>.conf</filename> configuration
7749 file:
7750 <literallayout class='monospaced'>
7751 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123"
7752 </literallayout>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05007753 <note>
7754 In this example, the
7755 <filename>kernel-module-ab123</filename> recipe
7756 needs to explicitly set its
7757 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
7758 variable to ensure that BitBake does not use the
7759 kernel recipe's
7760 <link linkend='var-PACKAGES_DYNAMIC'><filename>PACKAGES_DYNAMIC</filename></link>
7761 variable to satisfy the dependency.
7762 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007763 </para>
7764
7765 <para>
7766 Some examples of these machine essentials are flash, screen, keyboard, mouse,
7767 or touchscreen drivers (depending on the machine).
7768 </para>
7769 </glossdef>
7770 </glossentry>
7771
7772 <glossentry id='var-MACHINE_EXTRA_RDEPENDS'><glossterm>MACHINE_EXTRA_RDEPENDS</glossterm>
7773 <info>
7774 MACHINE_EXTRA_RDEPENDS[doc] = "A list of machine-specific packages to install as part of the image being built that are not essential for the machine to boot. However, the build process for more fully-featured images depends on the packages being present."
7775 </info>
7776 <glossdef>
7777 <para role="glossdeffirst">
7778<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7779 A list of machine-specific packages to install as part of the
7780 image being built that are not essential for the machine to boot.
7781 However, the build process for more fully-featured images
7782 depends on the packages being present.
7783 </para>
7784
7785 <para>
7786 This variable affects all images based on
7787 <filename>packagegroup-base</filename>, which does not include the
7788 <filename>core-image-minimal</filename> or <filename>core-image-full-cmdline</filename>
7789 images.
7790 </para>
7791
7792 <para>
7793 The variable is similar to the
7794 <filename><link linkend='var-MACHINE_EXTRA_RRECOMMENDS'>MACHINE_EXTRA_RRECOMMENDS</link></filename>
7795 variable with the exception that the image being built has a build
7796 dependency on the variable's list of packages.
7797 In other words, the image will not build if a file in this list is not found.
7798 </para>
7799
7800 <para>
7801 An example is a machine that has WiFi capability but is not
7802 essential for the machine to boot the image.
7803 However, if you are building a more fully-featured image, you want to enable
7804 the WiFi.
7805 The package containing the firmware for the WiFi hardware is always
7806 expected to exist, so it is acceptable for the build process to depend upon
7807 finding the package.
7808 In this case, assuming the package for the firmware was called
7809 <filename>wifidriver-firmware</filename>, you would use the following in the
7810 <filename>.conf</filename> file for the machine:
7811 <literallayout class='monospaced'>
7812 MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware"
7813 </literallayout>
7814 </para>
7815 </glossdef>
7816 </glossentry>
7817
7818 <glossentry id='var-MACHINE_EXTRA_RRECOMMENDS'><glossterm>MACHINE_EXTRA_RRECOMMENDS</glossterm>
7819 <info>
7820 MACHINE_EXTRA_RRECOMMENDS[doc] = "A list of machine-specific packages to install as part of the image being built that are not essential for booting the machine. The image being built has no build dependencies on the packages in this list."
7821 </info>
7822 <glossdef>
7823 <para role="glossdeffirst">
7824<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7825 A list of machine-specific packages to install as part of the
7826 image being built that are not essential for booting the machine.
7827 The image being built has no build dependency on this list of packages.
7828 </para>
7829
7830 <para>
7831 This variable affects only images based on
7832 <filename>packagegroup-base</filename>, which does not include the
7833 <filename>core-image-minimal</filename> or <filename>core-image-full-cmdline</filename>
7834 images.
7835 </para>
7836
7837 <para>
7838 This variable is similar to the
7839 <filename><link linkend='var-MACHINE_EXTRA_RDEPENDS'>MACHINE_EXTRA_RDEPENDS</link></filename>
7840 variable with the exception that the image being built does not have a build
7841 dependency on the variable's list of packages.
7842 In other words, the image will build if a file in this list is not found.
7843 </para>
7844
7845 <para>
7846 An example is a machine that has WiFi capability but is not essential
7847 For the machine to boot the image.
7848 However, if you are building a more fully-featured image, you want to enable
7849 WiFi.
7850 In this case, the package containing the WiFi kernel module will not be produced
7851 if the WiFi driver is built into the kernel, in which case you still want the
7852 build to succeed instead of failing as a result of the package not being found.
7853 To accomplish this, assuming the package for the module was called
7854 <filename>kernel-module-examplewifi</filename>, you would use the
7855 following in the <filename>.conf</filename> file for the machine:
7856 <literallayout class='monospaced'>
7857 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
7858 </literallayout>
7859 </para>
7860 </glossdef>
7861 </glossentry>
7862
7863 <glossentry id='var-MACHINE_FEATURES'><glossterm>MACHINE_FEATURES</glossterm>
7864 <info>
7865 MACHINE_FEATURES[doc] = "Specifies the list of hardware features the MACHINE supports."
7866 </info>
7867 <glossdef>
7868 <para role="glossdeffirst">
7869<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7870 Specifies the list of hardware features the
7871 <link linkend='var-MACHINE'><filename>MACHINE</filename></link> is capable
7872 of supporting.
7873 For related information on enabling features, see the
7874 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>,
7875 <link linkend='var-COMBINED_FEATURES'><filename>COMBINED_FEATURES</filename></link>,
7876 and
7877 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
7878 variables.
7879 </para>
7880
7881 <para>
7882 For a list of hardware features supported by the Yocto
7883 Project as shipped, see the
7884 "<link linkend='ref-features-machine'>Machine Features</link>"
7885 section.
7886 </para>
7887 </glossdef>
7888 </glossentry>
7889
7890 <glossentry id='var-MACHINE_FEATURES_BACKFILL'><glossterm>MACHINE_FEATURES_BACKFILL</glossterm>
7891 <info>
7892 MACHINE_FEATURES_BACKFILL[doc] = "Features to be added to MACHINE_FEATURES if not also present in MACHINE_FEATURES_BACKFILL_CONSIDERED. This variable is set in the meta/conf/bitbake.conf file and is not intended to be user-configurable."
7893 </info>
7894 <glossdef>
7895 <para role="glossdeffirst">
7896<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7897 Features to be added to
7898 <filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>
7899 if not also present in
7900 <filename><link linkend='var-MACHINE_FEATURES_BACKFILL_CONSIDERED'>MACHINE_FEATURES_BACKFILL_CONSIDERED</link></filename>.
7901 </para>
7902
7903 <para>
7904 This variable is set in the <filename>meta/conf/bitbake.conf</filename> file.
7905 It is not intended to be user-configurable.
7906 It is best to just reference the variable to see which machine features are
7907 being backfilled for all machine configurations.
7908 See the "<link linkend='ref-features-backfill'>Feature backfilling</link>" section for
7909 more information.
7910 </para>
7911 </glossdef>
7912 </glossentry>
7913
7914 <glossentry id='var-MACHINE_FEATURES_BACKFILL_CONSIDERED'><glossterm>MACHINE_FEATURES_BACKFILL_CONSIDERED</glossterm>
7915 <info>
7916 MACHINE_FEATURES_BACKFILL_CONSIDERED[doc] = "Features from MACHINE_FEATURES_BACKFILL that should not be backfilled (i.e. added to MACHINE_FEATURES) during the build."
7917 </info>
7918 <glossdef>
7919 <para role="glossdeffirst">
7920<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7921 Features from
7922 <filename><link linkend='var-MACHINE_FEATURES_BACKFILL'>MACHINE_FEATURES_BACKFILL</link></filename>
7923 that should not be backfilled (i.e. added to
7924 <filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>)
7925 during the build.
7926 See the "<link linkend='ref-features-backfill'>Feature backfilling</link>" section for
7927 more information.
7928 </para>
7929 </glossdef>
7930 </glossentry>
7931
7932 <glossentry id='var-MACHINEOVERRIDES'><glossterm>MACHINEOVERRIDES</glossterm>
7933 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06007934 MACHINEOVERRIDES[doc] = "A colon-separated list of overrides that apply to the current machine."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007935 </info>
7936 <glossdef>
7937 <para role="glossdeffirst">
7938<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06007939 A colon-separated list of overrides that apply to the
7940 current machine.
7941 By default, this list includes the value of
7942 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007943 </para>
7944
7945 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06007946 You can extend <filename>MACHINEOVERRIDES</filename>
7947 to add extra overrides that should apply to a machine.
7948 For example, all machines emulated in QEMU (e.g.
7949 <filename>qemuarm</filename>, <filename>qemux86</filename>,
7950 and so forth) include a file named
7951 <filename>meta/conf/machine/include/qemu.inc</filename>
7952 that prepends the following override to
7953 <filename>MACHINEOVERRIDES</filename>:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007954 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06007955 MACHINEOVERRIDES =. "qemuall:"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007956 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06007957 This override allows variables to be overriden for all
7958 machines emulated in QEMU, like in the following example
7959 from the <filename>connman-conf</filename> recipe:
7960 <literallayout class='monospaced'>
7961 SRC_URI_append_qemuall = "file://wired.config \
7962 file://wired-setup \
7963 "
7964 </literallayout>
7965 The underlying mechanism behind
7966 <filename>MACHINEOVERRIDES</filename> is simply that it is
7967 included in the default value of
7968 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007969 </para>
7970 </glossdef>
7971 </glossentry>
7972
7973 <glossentry id='var-MAINTAINER'><glossterm>MAINTAINER</glossterm>
7974 <info>
7975 MAINTAINER[doc] = "The email address of the distribution maintainer."
7976 </info>
7977 <glossdef>
7978 <para role="glossdeffirst">
7979<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7980 The email address of the distribution maintainer.
7981 </para>
7982 </glossdef>
7983 </glossentry>
7984
7985 <glossentry id='var-MIRRORS'><glossterm>MIRRORS</glossterm>
7986 <info>
7987 MIRRORS[doc] = "Specifies additional paths from which the OpenEmbedded build system gets source code."
7988 </info>
7989 <glossdef>
7990 <para role="glossdeffirst">
7991<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7992 Specifies additional paths from which the OpenEmbedded
7993 build system gets source code.
7994 When the build system searches for source code, it first
7995 tries the local download directory.
7996 If that location fails, the build system tries locations
7997 defined by
7998 <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>,
7999 the upstream source, and then locations specified by
8000 <filename>MIRRORS</filename> in that order.
8001 </para>
8002
8003 <para>
8004 Assuming your distribution
8005 (<link linkend='var-DISTRO'><filename>DISTRO</filename></link>)
8006 is "poky", the default value for
8007 <filename>MIRRORS</filename> is defined in the
8008 <filename>conf/distro/poky.conf</filename> file in the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008009 <filename>meta-poky</filename> Git repository.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008010 </para>
8011 </glossdef>
8012 </glossentry>
8013
8014 <glossentry id='var-MLPREFIX'><glossterm>MLPREFIX</glossterm>
8015 <info>
8016 MLPREFIX[doc] = "Specifies a prefix has been added to PN to create a special version of a recipe or package, such as a Multilib version."
8017 </info>
8018 <glossdef>
8019 <para role="glossdeffirst">
8020<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8021 Specifies a prefix has been added to
8022 <link linkend='var-PN'><filename>PN</filename></link> to create a special version
8023 of a recipe or package, such as a Multilib version.
8024 The variable is used in places where the prefix needs to be
8025 added to or removed from a the name (e.g. the
8026 <link linkend='var-BPN'><filename>BPN</filename></link> variable).
8027 <filename>MLPREFIX</filename> gets set when a prefix has been
8028 added to <filename>PN</filename>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008029 <note>
8030 The "ML" in <filename>MLPREFIX</filename> stands for
8031 "MultiLib".
8032 This representation is historical and comes from
8033 a time when <filename>nativesdk</filename> was a suffix
8034 rather than a prefix on the recipe name.
8035 When <filename>nativesdk</filename> was turned into a
8036 prefix, it made sense to set
8037 <filename>MLPREFIX</filename> for it as well.
8038 </note>
8039 </para>
8040
8041 <para>
8042 To help understand when <filename>MLPREFIX</filename>
8043 might be needed, consider when
8044 <link linkend='var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></link>
8045 is used to provide a <filename>nativesdk</filename> version
8046 of a recipe in addition to the target version.
8047 If that recipe declares build-time dependencies on tasks in
8048 other recipes by using
8049 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>,
8050 then a dependency on "foo" will automatically get rewritten
8051 to a dependency on "nativesdk-foo".
8052 However, dependencies like the following will not get
8053 rewritten automatically:
8054 <literallayout class='monospaced'>
8055 do_foo[depends] += "<replaceable>recipe</replaceable>:do_foo"
8056 </literallayout>
8057 If you want such a dependency to also get transformed,
8058 you can do the following:
8059 <literallayout class='monospaced'>
8060 do_foo[depends] += "${MLPREFIX}<replaceable>recipe</replaceable>:do_foo"
8061 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008062 </para>
8063 </glossdef>
8064 </glossentry>
8065
8066 <glossentry id='var-module_autoload'><glossterm>module_autoload</glossterm>
8067 <info>
8068 module_autoload[doc] = "This variable has been replaced by the KERNEL_MODULE_AUTOLOAD variable. You should replace all occurrences of module_autoload with additions to KERNEL_MODULE_AUTOLOAD."
8069 </info>
8070 <glossdef>
8071 <para role="glossdeffirst">
8072<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8073 This variable has been replaced by the
8074 <filename>KERNEL_MODULE_AUTOLOAD</filename> variable.
8075 You should replace all occurrences of
8076 <filename>module_autoload</filename> with additions to
8077 <filename>KERNEL_MODULE_AUTOLOAD</filename>, for example:
8078 <literallayout class='monospaced'>
8079 module_autoload_rfcomm = "rfcomm"
8080 </literallayout>
8081 </para>
8082
8083 <para>
8084 should now be replaced with:
8085 <literallayout class='monospaced'>
8086 KERNEL_MODULE_AUTOLOAD += "rfcomm"
8087 </literallayout>
8088 See the
8089 <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
8090 variable for more information.
8091 </para>
8092 </glossdef>
8093 </glossentry>
8094
8095 <glossentry id='var-module_conf'><glossterm>module_conf</glossterm>
8096 <info>
8097 module_conf[doc] = "Specifies modprobe.d syntax lines for inclusion in the /etc/modprobe.d/modname.conf file."
8098 </info>
8099 <glossdef>
8100 <para role="glossdeffirst">
8101<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8102 Specifies
8103 <ulink url='http://linux.die.net/man/5/modprobe.d'><filename>modprobe.d</filename></ulink>
8104 syntax lines for inclusion in the
8105 <filename>/etc/modprobe.d/modname.conf</filename> file.
8106 </para>
8107
8108 <para>
8109 You can use this variable anywhere that it can be
8110 recognized by the kernel recipe or out-of-tree kernel
8111 module recipe (e.g. a machine configuration file, a
8112 distribution configuration file, an append file for the
8113 recipe, or the recipe itself).
8114 If you use this variable, you must also be sure to list
8115 the module name in the
8116 <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
8117 variable.
8118 </para>
8119
8120 <para>
8121 Here is the general syntax:
8122 <literallayout class='monospaced'>
8123 module_conf_<replaceable>module_name</replaceable> = "<replaceable>modprobe.d-syntax</replaceable>"
8124 </literallayout>
8125 You must use the kernel module name override.
8126 </para>
8127
8128 <para>
8129 Run <filename>man modprobe.d</filename> in the shell to
8130 find out more information on the exact syntax
8131 you want to provide with <filename>module_conf</filename>.
8132 </para>
8133
8134 <para>
8135 Including <filename>module_conf</filename> causes the
8136 OpenEmbedded build system to populate the
8137 <filename>/etc/modprobe.d/modname.conf</filename>
8138 file with <filename>modprobe.d</filename> syntax lines.
8139 Here is an example that adds the options
8140 <filename>arg1</filename> and <filename>arg2</filename>
8141 to a module named <filename>mymodule</filename>:
8142 <literallayout class='monospaced'>
8143 module_conf_mymodule = "options mymodule arg1=val1 arg2=val2"
8144 </literallayout>
8145 </para>
8146
8147 <para>
8148 For information on how to specify kernel modules to
8149 auto-load on boot, see the
8150 <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
8151 variable.
8152 </para>
8153 </glossdef>
8154 </glossentry>
8155
8156 <glossentry id='var-MODULE_IMAGE_BASE_NAME'><glossterm>MODULE_IMAGE_BASE_NAME</glossterm>
8157 <info>
8158 MODULE_IMAGE_BASE_NAME[doc] = "The base name of the kernel modules tarball."
8159 </info>
8160 <glossdef>
8161 <para role="glossdeffirst">
8162<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8163 The base name of the kernel modules tarball.
8164 This variable is set in the
8165 <link linkend='ref-classes-kernel'>kernel</link> class
8166 as follows:
8167 <literallayout class='monospaced'>
8168 MODULE_IMAGE_BASE_NAME ?= "modules-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
8169 </literallayout>
8170 </para>
8171
8172 <para>
8173 See the
8174 <link linkend='var-PKGE'><filename>PKGE</filename></link>,
8175 <link linkend='var-PKGV'><filename>PKGV</filename></link>,
8176 <link linkend='var-PKGR'><filename>PKGR</filename></link>,
8177 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
8178 and
8179 <link linkend='var-DATETIME'><filename>DATETIME</filename></link>
8180 variables for additional information.
8181 </para>
8182 </glossdef>
8183 </glossentry>
8184
8185 <glossentry id='var-MODULE_TARBALL_DEPLOY'><glossterm>MODULE_TARBALL_DEPLOY</glossterm>
8186 <info>
8187 MODULE_TARBALL_DEPLOY[doc] = "Controls creation of the modules-*.tgz file. Set this variable to "0" to disable creation of this file, which contains all of the kernel modules resulting from a kernel build."
8188 </info>
8189 <glossdef>
8190 <para role="glossdeffirst">
8191<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8192 Controls creation of the <filename>modules-*.tgz</filename>
8193 file.
8194 Set this variable to "0" to disable creation of this
8195 file, which contains all of the kernel modules resulting
8196 from a kernel build.
8197 </para>
8198 </glossdef>
8199 </glossentry>
8200
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008201 <glossentry id='var-MULTIMACH_HOST_SYS'><glossterm>MULTIMACH_HOST_SYS</glossterm>
8202 <info>
8203 MULTIMACH_HOST_SYS[doc] = "Separates files for different machines such that you can build for multiple host machines using the same output directories."
8204 </info>
8205 <glossdef>
8206 <para role="glossdeffirst">
8207<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8208 Serves the same purpose as
8209 <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
8210 but for the "HOST" system, in situations that involve a
8211 "HOST" and a "TARGET" system.
8212 See the
8213 <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
8214 variable for more information.
8215 </para>
8216
8217 <para>
8218 The default value of this variable is:
8219 <literallayout class='monospaced'>
8220 ${PACKAGE_ARCH}${HOST_VENDOR}-${HOST_OS}
8221 </literallayout>
8222 </para>
8223 </glossdef>
8224 </glossentry>
8225
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008226 <glossentry id='var-MULTIMACH_TARGET_SYS'><glossterm>MULTIMACH_TARGET_SYS</glossterm>
8227 <info>
8228 MULTIMACH_TARGET_SYS[doc] = "Separates files for different machines such that you can build for multiple target machines using the same output directories."
8229 </info>
8230 <glossdef>
8231 <para role="glossdeffirst">
8232<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008233 Uniquely identifies the type of the target system for
8234 which packages are being built.
8235 This variable allows output for different types of target
8236 systems to be put into different subdirectories of the same
8237 output directory.
8238 </para>
8239
8240 <para>
8241 The default value of this variable is:
8242 <literallayout class='monospaced'>
8243 ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
8244 </literallayout>
8245 Some classes (e.g.
8246 <link linkend='ref-classes-cross-canadian'><filename>cross-canadian</filename></link>)
8247 modify the <filename>MULTIMACH_TARGET_SYS</filename> value.
8248 </para>
8249
8250 <para>
8251 See the
8252 <link linkend='var-STAMP'><filename>STAMP</filename></link>
8253 variable for an example.
8254 <link linkend='var-MULTIMACH_HOST_SYS'><filename>MULTIMACH_HOST_SYS</filename></link>
8255 is the corresponding variable for the host system in
8256 situations that involve a "HOST" and a "TARGET" system.
8257 See the
8258 <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
8259 variable for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008260 </para>
8261 </glossdef>
8262 </glossentry>
8263
8264 </glossdiv>
8265
8266 <glossdiv id='var-glossary-n'><title>N</title>
8267
8268 <glossentry id='var-NATIVELSBSTRING'><glossterm>NATIVELSBSTRING</glossterm>
8269 <info>
8270 NATIVELSBSTRING[doc] = "A string identifying the host distribution."
8271 </info>
8272 <glossdef>
8273 <para role="glossdeffirst">
8274<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8275 A string identifying the host distribution.
8276 Strings consist of the host distributor ID
8277 followed by the release, as reported by the
8278 <filename>lsb_release</filename> tool
8279 or as read from <filename>/etc/lsb-release</filename>.
8280 For example, when running a build on Ubuntu 12.10, the value
8281 is "Ubuntu-12.10".
8282 If this information is unable to be determined, the value
8283 resolves to "Unknown".
8284 </para>
8285
8286 <para>
8287 This variable is used by default to isolate native shared
8288 state packages for different distributions (e.g. to avoid
8289 problems with <filename>glibc</filename> version
8290 incompatibilities).
8291 Additionally, the variable is checked against
8292 <link linkend='var-SANITY_TESTED_DISTROS'><filename>SANITY_TESTED_DISTROS</filename></link>
8293 if that variable is set.
8294 </para>
8295 </glossdef>
8296 </glossentry>
8297
8298 <glossentry id='var-NM'><glossterm>NM</glossterm>
8299 <info>
8300 NM[doc] = "Minimal command and arguments to run 'nm'."
8301 </info>
8302 <glossdef>
8303 <para role="glossdeffirst">
8304<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8305 The minimal command and arguments to run
8306 <filename>nm</filename>.
8307 </para>
8308 </glossdef>
8309 </glossentry>
8310
8311 <glossentry id='var-NO_RECOMMENDATIONS'><glossterm>NO_RECOMMENDATIONS</glossterm>
8312 <info>
8313 NO_RECOMMENDATIONS[doc] = "When set to '1', no recommended packages will be installed. Realize that some recommended packages might be required for certain system functionality, such as kernel-modules. It is up to the user to add packages to IMAGE_INSTALL as needed."
8314 </info>
8315 <glossdef>
8316 <para role="glossdeffirst">
8317<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8318 Prevents installation of all "recommended-only" packages.
8319 Recommended-only packages are packages installed only
8320 through the
8321 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
8322 variable).
8323 Setting the <filename>NO_RECOMMENDATIONS</filename> variable
8324 to "1" turns this feature on:
8325 <literallayout class='monospaced'>
8326 NO_RECOMMENDATIONS = "1"
8327 </literallayout>
8328 </para>
8329
8330 <para>
8331 You can set this variable globally in your
8332 <filename>local.conf</filename> file or you can attach it to
8333 a specific image recipe by using the recipe name override:
8334 <literallayout class='monospaced'>
8335 NO_RECOMMENDATIONS_pn-<replaceable>target_image</replaceable> = "<replaceable>package_name</replaceable>"
8336 </literallayout>
8337 </para>
8338
8339 <para>
8340 It is important to realize that if you choose to not install
8341 packages using this variable and some other packages are
8342 dependent on them (i.e. listed in a recipe's
8343 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
8344 variable), the OpenEmbedded build system ignores your
8345 request and will install the packages to avoid dependency
8346 errors.
8347 <note>
8348 Some recommended packages might be required for certain
8349 system functionality, such as kernel modules.
8350 It is up to you to add packages with the
8351 <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
8352 variable.
8353 </note>
8354 </para>
8355
8356 <para>
8357 Support for this variable exists only when using the
8358 IPK and RPM packaging backend.
8359 Support does not exist for DEB.
8360 </para>
8361
8362 <para>
8363 See the
8364 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
8365 and the
8366 <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
8367 variables for related information.
8368 </para>
8369 </glossdef>
8370 </glossentry>
8371
8372 <glossentry id='var-NOHDD'><glossterm>NOHDD</glossterm>
8373 <info>
8374 NOHDD[doc] = "Causes the OpenEmbedded build system to skip building the .hddimg image."
8375 </info>
8376 <glossdef>
8377 <para role="glossdeffirst">
8378<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8379 Causes the OpenEmbedded build system to skip building the
8380 <filename>.hddimg</filename> image.
8381 The <filename>NOHDD</filename> variable is used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008382 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008383 class.
8384 Set the variable to "1" to prevent the
8385 <filename>.hddimg</filename> image from being built.
8386 </para>
8387 </glossdef>
8388 </glossentry>
8389
8390 <glossentry id='var-NOISO'><glossterm>NOISO</glossterm>
8391 <info>
8392 NOISO[doc] = "Causes the OpenEmbedded build system to skip building the ISO image."
8393 </info>
8394 <glossdef>
8395 <para role="glossdeffirst">
8396<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8397 Causes the OpenEmbedded build system to skip building the
8398 ISO image.
8399 The <filename>NOISO</filename> variable is used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008400 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008401 class.
8402 Set the variable to "1" to prevent the ISO image from
8403 being built.
8404 To enable building an ISO image, set the variable to "0".
8405 </para>
8406 </glossdef>
8407 </glossentry>
8408
8409 </glossdiv>
8410
8411 <glossdiv id='var-glossary-o'><title>O</title>
8412
8413 <glossentry id='var-OBJCOPY'><glossterm>OBJCOPY</glossterm>
8414 <info>
8415 OBJCOPY[doc] = "Minimal command and arguments to run 'objcopy'."
8416 </info>
8417 <glossdef>
8418 <para role="glossdeffirst">
8419<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8420 The minimal command and arguments to run
8421 <filename>objcopy</filename>.
8422 </para>
8423 </glossdef>
8424 </glossentry>
8425
8426 <glossentry id='var-OBJDUMP'><glossterm>OBJDUMP</glossterm>
8427 <info>
8428 OBJDUMP[doc] = "Minimal command and arguments to run 'objdump'."
8429 </info>
8430 <glossdef>
8431 <para role="glossdeffirst">
8432<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8433 The minimal command and arguments to run
8434 <filename>objdump</filename>.
8435 </para>
8436 </glossdef>
8437 </glossentry>
8438
8439 <glossentry id='var-OE_BINCONFIG_EXTRA_MANGLE'><glossterm>OE_BINCONFIG_EXTRA_MANGLE</glossterm>
8440 <info>
8441 OE_BINCONFIG_EXTRA_MANGLE[doc] = "When a recipe inherits the binconfig.bbclass class, this variable specifies additional arguments passed to the "sed" command."
8442 </info>
8443 <glossdef>
8444 <para role="glossdeffirst">
8445<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8446 When inheriting the
8447 <link linkend='ref-classes-binconfig'><filename>binconfig</filename></link>
8448 class, this variable
8449 specifies additional arguments passed to the "sed" command.
8450 The sed command alters any paths in configuration scripts
8451 that have been set up during compilation.
8452 Inheriting this class results in all paths in these scripts
8453 being changed to point into the
8454 <filename>sysroots/</filename> directory so that all builds
8455 that use the script will use the correct directories
8456 for the cross compiling layout.
8457 </para>
8458
8459 <para>
8460 See the <filename>meta/classes/binconfig.bbclass</filename>
8461 in the
8462 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
8463 for details on how this class applies these additional
8464 sed command arguments.
8465 For general information on the
8466 <filename>binconfig.bbclass</filename> class, see the
8467 "<link linkend='ref-classes-binconfig'>Binary Configuration Scripts - <filename>binconfig.bbclass</filename></link>"
8468 section.
8469 </para>
8470 </glossdef>
8471 </glossentry>
8472
8473 <glossentry id='var-OE_IMPORTS'><glossterm>OE_IMPORTS</glossterm>
8474 <info>
8475 OE_IMPORTS[doc] = "An internal variable used to tell the OpenEmbedded build system what Python modules to import for every Python function run by the system."
8476 </info>
8477 <glossdef>
8478 <para role="glossdeffirst">
8479<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8480 An internal variable used to tell the OpenEmbedded build
8481 system what Python modules to import for every Python
8482 function run by the system.
8483 </para>
8484
8485 <note>
8486 Do not set this variable.
8487 It is for internal use only.
8488 </note>
8489 </glossdef>
8490 </glossentry>
8491
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008492 <glossentry id='var-OE_INIT_ENV_SCRIPT'><glossterm>OE_INIT_ENV_SCRIPT</glossterm>
8493 <info>
8494 OE_INIT_ENV_SCRIPT[doc] = "The name of the build environment setup script for the purposes of setting up the environment within the extensible SDK."
8495 </info>
8496 <glossdef>
8497 <para role="glossdeffirst">
8498<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8499 The name of the build environment setup script for the
8500 purposes of setting up the environment within the
8501 extensible SDK.
8502 The default value is "oe-init-build-env".
8503 </para>
8504
8505 <para>
8506 If you use a custom script to set up your build
8507 environment, set the
8508 <filename>OE_INIT_ENV_SCRIPT</filename> variable to its
8509 name.
8510 </para>
8511 </glossdef>
8512 </glossentry>
8513
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008514 <glossentry id='var-OE_TERMINAL'><glossterm>OE_TERMINAL</glossterm>
8515 <info>
8516 OE_TERMINAL[doc] = "Controls how the OpenEmbedded build system spawns interactive terminals on the host development system."
8517 </info>
8518 <glossdef>
8519 <para role="glossdeffirst">
8520<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8521 Controls how the OpenEmbedded build system spawns
8522 interactive terminals on the host development system
8523 (e.g. using the BitBake command with the
8524 <filename>-c devshell</filename> command-line option).
8525 For more information, see the
8526 "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-appdev-devshell'>Using a Development Shell</ulink>" section
8527 in the Yocto Project Development Manual.
8528 </para>
8529
8530 <para>
8531 You can use the following values for the
8532 <filename>OE_TERMINAL</filename> variable:
8533 <literallayout class='monospaced'>
8534 auto
8535 gnome
8536 xfce
8537 rxvt
8538 screen
8539 konsole
8540 none
8541 </literallayout>
8542 </para>
8543 </glossdef>
8544 </glossentry>
8545
8546 <glossentry id='var-OEROOT'><glossterm>OEROOT</glossterm>
8547 <info>
8548 OEROOT[doc] = "The directory from which the top-level build environment setup script is sourced."
8549 </info>
8550 <glossdef>
8551 <para role="glossdeffirst">
8552<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8553 The directory from which the top-level build environment
8554 setup script is sourced.
8555 The Yocto Project makes two top-level build environment
8556 setup scripts available:
8557 <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
8558 and
8559 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>.
8560 When you run one of these scripts, the
8561 <filename>OEROOT</filename> variable resolves to the
8562 directory that contains the script.
8563 </para>
8564
8565 <para>
8566 For additional information on how this variable is used,
8567 see the initialization scripts.
8568 </para>
8569 </glossdef>
8570 </glossentry>
8571
8572 <glossentry id='var-OLDEST_KERNEL'><glossterm>OLDEST_KERNEL</glossterm>
8573 <info>
8574 OLDEST_KERNEL[doc] = "Declares the oldest version of the Linux kernel that the produced binaries must support."
8575 </info>
8576 <glossdef>
8577 <para role="glossdeffirst">
8578<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8579 Declares the oldest version of the Linux kernel that the
8580 produced binaries must support.
8581 This variable is passed into the build of the Embedded
8582 GNU C Library (<filename>glibc</filename>).
8583 </para>
8584
8585 <para>
8586 The default for this variable comes from the
8587 <filename>meta/conf/bitbake.conf</filename> configuration
8588 file.
8589 You can override this default by setting the variable
8590 in a custom distribution configuration file.
8591 </para>
8592 </glossdef>
8593 </glossentry>
8594
8595 <glossentry id='var-OVERRIDES'><glossterm>OVERRIDES</glossterm>
8596 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008597 OVERRIDES[doc] = "A colon-separated list of overrides that currently apply."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008598 </info>
8599 <glossdef>
8600 <para role="glossdeffirst">
8601<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008602 A colon-separated list of overrides that currently apply.
8603 Overrides are a BitBake mechanism that allows variables to
8604 be selectively overridden at the end of parsing.
8605 The set of overrides in <filename>OVERRIDES</filename>
8606 represents the "state" during building, which includes
8607 the current recipe being built, the machine for which
8608 it is being built, and so forth.
8609 </para>
8610
8611 <para>
8612 As an example, if the string "an-override" appears as an
8613 element in the colon-separated list in
8614 <filename>OVERRIDES</filename>, then the following
8615 assignment will override <filename>FOO</filename> with the
8616 value "overridden" at the end of parsing:
8617 <literallayout class='monospaced'>
8618 FOO_an-override = "overridden"
8619 </literallayout>
8620 See the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008621 "<ulink url='&YOCTO_DOCS_BB_URL;#conditional-syntax-overrides'>Conditional Syntax (Overrides)</ulink>"
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008622 section in the BitBake User Manual for more information on
8623 the overrides mechanism.
8624 </para>
8625
8626 <para>
8627 The default value of <filename>OVERRIDES</filename>
8628 includes the values of the
8629 <link linkend='var-CLASSOVERRIDE'><filename>CLASSOVERRIDE</filename></link>,
8630 <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>,
8631 and
8632 <link linkend='var-DISTROOVERRIDES'><filename>DISTROOVERRIDES</filename></link>
8633 variables.
8634 Another important override included by default is
8635 <filename>pn-${PN}</filename>.
8636 This override allows variables to be set for a single
8637 recipe within configuration (<filename>.conf</filename>)
8638 files.
8639 Here is an example:
8640 <literallayout class='monospaced'>
8641 FOO_pn-myrecipe = "myrecipe-specific value"
8642 </literallayout>
8643 <note><title>Tip</title>
8644 An easy way to see what overrides apply is to search for
8645 <filename>OVERRIDES</filename> in the output of the
8646 <filename>bitbake -e</filename> command.
8647 See the
8648 "<link linkend='usingpoky-debugging-viewing-variable-values'>Viewing Variable Values</link>"
8649 section for more information.
8650 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008651 </para>
8652 </glossdef>
8653 </glossentry>
8654 </glossdiv>
8655
8656 <glossdiv id='var-glossary-p'><title>P</title>
8657
8658 <glossentry id='var-P'><glossterm>P</glossterm>
8659 <info>
8660 P[doc] = "The recipe name and version. P is comprised of ${PN}-${PV}."
8661 </info>
8662 <glossdef>
8663 <para role="glossdeffirst">
8664<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8665 The recipe name and version.
8666 <filename>P</filename> is comprised of the following:
8667 <literallayout class='monospaced'>
8668 ${PN}-${PV}
8669 </literallayout>
8670 </para>
8671 </glossdef>
8672 </glossentry>
8673
8674 <glossentry id='var-PACKAGE_ARCH'><glossterm>PACKAGE_ARCH</glossterm>
8675 <info>
8676 PACKAGE_ARCH[doc] = "The architecture of the resulting package or packages."
8677 </info>
8678 <glossdef>
8679 <para role="glossdeffirst">
8680<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8681 The architecture of the resulting package or packages.
8682 </para>
8683
8684 <para>
8685 By default, the value of this variable is set to
8686 <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>
8687 when building for the target,
8688 <filename>BUILD_ARCH</filename> when building for the
8689 build host and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building
8690 for the SDK.
8691 However, if your recipe's output packages are built
8692 specific to the target machine rather than general for
8693 the architecture of the machine, you should set
8694 <filename>PACKAGE_ARCH</filename> to the value of
8695 <link linkend='var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></link>
8696 in the recipe as follows:
8697 <literallayout class='monospaced'>
8698 PACKAGE_ARCH = "${MACHINE_ARCH}"
8699 </literallayout>
8700 </para>
8701 </glossdef>
8702 </glossentry>
8703
8704 <glossentry id='var-PACKAGE_ARCHS'><glossterm>PACKAGE_ARCHS</glossterm>
8705 <info>
8706 PACKAGE_ARCHS[doc] = "A list of architectures compatible with the given target in order of priority."
8707 </info>
8708 <glossdef>
8709 <para role="glossdeffirst">
8710<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8711 Specifies a list of architectures compatible with
8712 the target machine.
8713 This variable is set automatically and should not
8714 normally be hand-edited.
8715 Entries are separated using spaces and listed in order
8716 of priority.
8717 The default value for
8718 <filename>PACKAGE_ARCHS</filename> is "all any noarch
8719 ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".
8720 </para>
8721 </glossdef>
8722 </glossentry>
8723
8724 <glossentry id='var-PACKAGE_BEFORE_PN'><glossterm>PACKAGE_BEFORE_PN</glossterm>
8725 <info>
8726 PACKAGE_BEFORE_PN[doc] = "Enables easily adding packages to PACKAGES before ${PN} so that the packages can pick up files that would normally be included in the default package."
8727 </info>
8728 <glossdef>
8729 <para role="glossdeffirst">
8730<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8731 Enables easily adding packages to
8732 <filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
8733 before <filename>${<link linkend='var-PN'>PN</link>}</filename>
8734 so that those added packages can pick up files that would normally be
8735 included in the default package.
8736 </para>
8737 </glossdef>
8738 </glossentry>
8739
8740 <glossentry id='var-PACKAGE_CLASSES'><glossterm>PACKAGE_CLASSES</glossterm>
8741 <info>
8742 PACKAGE_CLASSES[doc] = "This variable specifies the package manager to use when packaging data. It is set in the conf/local.conf file in the Build Directory."
8743 </info>
8744 <glossdef>
8745 <para role="glossdeffirst">
8746<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8747 This variable, which is set in the
8748 <filename>local.conf</filename> configuration file found in
8749 the <filename>conf</filename> folder of the
8750 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
8751 specifies the package manager the OpenEmbedded build system
8752 uses when packaging data.
8753 </para>
8754
8755 <para>
8756 You can provide one or more of the following arguments for
8757 the variable:
8758 <literallayout class='monospaced'>
8759 PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk package_tar"
8760 </literallayout>
8761 <note><title>Warning</title>
8762 While it is a legal option, the
8763 <filename>package_tar</filename> class is broken
8764 and is not supported.
8765 It is recommended that you do not use it.
8766 </note>
8767 The build system uses only the first argument in the list
8768 as the package manager when creating your image or SDK.
8769 However, packages will be created using any additional
8770 packaging classes you specify.
8771 For example, if you use the following in your
8772 <filename>local.conf</filename> file:
8773 <literallayout class='monospaced'>
8774 PACKAGE_CLASSES ?= "package_ipk"
8775 </literallayout>
8776 The OpenEmbedded build system uses the IPK package manager
8777 to create your image or SDK.
8778 </para>
8779
8780 <para>
8781 For information on packaging and build performance effects
8782 as a result of the package manager in use, see the
8783 "<link linkend='ref-classes-package'><filename>package.bbclass</filename></link>"
8784 section.
8785 </para>
8786 </glossdef>
8787 </glossentry>
8788
8789 <glossentry id='var-PACKAGE_DEBUG_SPLIT_STYLE'><glossterm>PACKAGE_DEBUG_SPLIT_STYLE</glossterm>
8790 <info>
8791 PACKAGE_DEBUG_SPLIT_STYLE[doc] = "Determines how to split up the binary and debug information when creating *-dbg packages to be used with the GNU Project Debugger (GDB)."
8792 </info>
8793 <glossdef>
8794 <para role="glossdeffirst">
8795<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8796 Determines how to split up the binary and debug information
8797 when creating <filename>*-dbg</filename> packages to be
8798 used with the GNU Project Debugger (GDB).
8799 </para>
8800
8801 <para>
8802 With the
8803 <filename>PACKAGE_DEBUG_SPLIT_STYLE</filename> variable,
8804 you can control where debug information, which can include
8805 or exclude source files, is stored:
8806 <itemizedlist>
8807 <listitem><para>
8808 ".debug": Debug symbol files are placed next
8809 to the binary in a <filename>.debug</filename>
8810 directory on the target.
8811 For example, if a binary is installed into
8812 <filename>/bin</filename>, the corresponding debug
8813 symbol files are installed in
8814 <filename>/bin/.debug</filename>.
8815 Source files are placed in
8816 <filename>/usr/src/debug</filename>.
8817 This is the default behavior.
8818 </para></listitem>
8819 <listitem><para>
8820 "debug-file-directory": Debug symbol files are
8821 placed under <filename>/usr/lib/debug</filename>
8822 on the target, and separated by the path from where
8823 the binary is installed.
8824 For example, if a binary is installed in
8825 <filename>/bin</filename>, the corresponding debug
8826 symbols are installed in
8827 <filename>/usr/lib/debug/bin</filename>.
8828 Source files are placed in
8829 <filename>/usr/src/debug</filename>.
8830 </para></listitem>
8831 <listitem><para>
8832 "debug-without-src": The same behavior as
8833 ".debug" previously described with the exception
8834 that no source files are installed.
8835 </para></listitem>.
8836 </itemizedlist>
8837 </para>
8838
8839 <para>
8840 You can find out more about debugging using GDB by reading
8841 the
8842 "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-gdb-remotedebug'>Debugging With the GNU Project Debugger (GDB) Remotely</ulink>"
8843 section in the Yocto Project Development Manual.
8844 </para>
8845 </glossdef>
8846 </glossentry>
8847
Patrick Williamsf1e5d692016-03-30 15:21:19 -05008848 <glossentry id='var-PACKAGE_EXCLUDE_COMPLEMENTARY'><glossterm>PACKAGE_EXCLUDE_COMPLEMENTARY</glossterm>
8849 <info>
8850 PACKAGE_EXCLUDE_COMPLEMENTARY[doc] = "Prevents specific packages from being installed when you are installing complementary packages."
8851 </info>
8852 <glossdef>
8853 <para role="glossdeffirst">
8854<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8855 Prevents specific packages from being installed when
8856 you are installing complementary packages.
8857 </para>
8858
8859 <para>
8860 You might find that you want to prevent installing certain
8861 packages when you are installing complementary packages.
8862 For example, if you are using
8863 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
8864 to install <filename>dev-pkgs</filename>, you might not want
8865 to install all packages from a particular multilib.
8866 If you find yourself in this situation, you can use the
8867 <filename>PACKAGE_EXCLUDE_COMPLEMENTARY</filename> variable
8868 to specify regular expressions to match the packages you
8869 want to exclude.
8870 </para>
8871 </glossdef>
8872 </glossentry>
8873
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008874 <glossentry id='var-PACKAGE_EXCLUDE'><glossterm>PACKAGE_EXCLUDE</glossterm>
8875 <info>
8876 PACKAGE_EXCLUDE[doc] = "Packages to exclude from the installation. If a listed package is required, an error is generated."
8877 </info>
8878 <glossdef>
8879 <para role="glossdeffirst">
8880<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8881 Lists packages that should not be installed into an image.
8882 For example:
8883 <literallayout class='monospaced'>
8884 PACKAGE_EXCLUDE = "<replaceable>package_name</replaceable> <replaceable>package_name</replaceable> <replaceable>package_name</replaceable> ..."
8885 </literallayout>
8886 </para>
8887
8888 <para>
8889 You can set this variable globally in your
8890 <filename>local.conf</filename> file or you can attach it to
8891 a specific image recipe by using the recipe name override:
8892 <literallayout class='monospaced'>
8893 PACKAGE_EXCLUDE_pn-<replaceable>target_image</replaceable> = "<replaceable>package_name</replaceable>"
8894 </literallayout>
8895 </para>
8896
8897 <para>
8898 If you choose to not install
8899 a package using this variable and some other package is
8900 dependent on it (i.e. listed in a recipe's
8901 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
8902 variable), the OpenEmbedded build system generates a fatal
8903 installation error.
8904 Because the build system halts the process with a fatal
8905 error, you can use the variable with an iterative
8906 development process to remove specific components from a
8907 system.
8908 </para>
8909
8910 <para>
8911 Support for this variable exists only when using the
8912 IPK and RPM packaging backend.
8913 Support does not exist for DEB.
8914 </para>
8915
8916 <para>
8917 See the
8918 <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>
8919 and the
8920 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
8921 variables for related information.
8922 </para>
8923 </glossdef>
8924 </glossentry>
8925
8926 <glossentry id='var-PACKAGE_EXTRA_ARCHS'><glossterm>PACKAGE_EXTRA_ARCHS</glossterm>
8927 <info>
8928 PACKAGE_EXTRA_ARCHS[doc] = "Specifies the list of architectures compatible with the device CPU. This variable is useful when you build for several different devices that use miscellaneous processors."
8929 </info>
8930 <glossdef>
8931 <para role="glossdeffirst">
8932<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8933 Specifies the list of architectures compatible with the device CPU.
8934 This variable is useful when you build for several different devices that use
8935 miscellaneous processors such as XScale and ARM926-EJS.
8936 </para>
8937 </glossdef>
8938 </glossentry>
8939
Patrick Williamsf1e5d692016-03-30 15:21:19 -05008940 <glossentry id='var-PACKAGE_FEED_ARCHS'><glossterm>PACKAGE_FEED_ARCHS</glossterm>
8941 <info>
8942 PACKAGE_FEED_ARCHS[doc] = "Specifies user-defined package architectures when constructing package feed URIs."
8943 </info>
8944 <glossdef>
8945 <para role="glossdeffirst">
8946<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8947 Specifies the package architectures used as part of the
8948 package feed URIs during the build.
8949 The <filename>PACKAGE_FEED_ARCHS</filename> variable is
8950 appended to the final package feed URI, which is constructed
8951 using the
8952 <link linkend='var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></link>
8953 and
8954 <link linkend='var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></link>
8955 variables.
8956 </para>
8957
8958 <para>
8959 Consider the following example where the
8960 <filename>PACKAGE_FEED_URIS</filename>,
8961 <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
8962 <filename>PACKAGE_FEED_ARCHS</filename> variables are
8963 defined in your <filename>local.conf</filename> file:
8964 <literallayout class='monospaced'>
8965 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
8966 https://example.com/packagerepos/updates"
8967 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
8968 PACKAGE_FEED_ARCHS = "all core2-64"
8969 </literallayout>
8970 Given these settings, the resulting package feeds are
8971 as follows:
8972 <literallayout class='monospaced'>
8973 https://example.com/packagerepos/release/rpm/all
8974 https://example.com/packagerepos/release/rpm/core2-64
8975 https://example.com/packagerepos/release/rpm-dev/all
8976 https://example.com/packagerepos/release/rpm-dev/core2-64
8977 https://example.com/packagerepos/updates/rpm/all
8978 https://example.com/packagerepos/updates/rpm/core2-64
8979 https://example.com/packagerepos/updates/rpm-dev/all
8980 https://example.com/packagerepos/updates/rpm-dev/core2-64
8981 </literallayout>
8982 </para>
8983 </glossdef>
8984 </glossentry>
8985
8986 <glossentry id='var-PACKAGE_FEED_BASE_PATHS'><glossterm>PACKAGE_FEED_BASE_PATHS</glossterm>
8987 <info>
8988 PACKAGE_FEED_BASE_PATHS[doc] = "Specifies base path used when constructing package feed URIs."
8989 </info>
8990 <glossdef>
8991 <para role="glossdeffirst">
8992<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8993 Specifies the base path used when constructing package feed
8994 URIs.
8995 The <filename>PACKAGE_FEED_BASE_PATHS</filename> variable
8996 makes up the middle portion of a package feed URI used
8997 by the OpenEmbedded build system.
8998 The base path lies between the
8999 <link linkend='var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></link>
9000 and
9001 <link linkend='var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></link>
9002 variables.
9003 </para>
9004
9005 <para>
9006 Consider the following example where the
9007 <filename>PACKAGE_FEED_URIS</filename>,
9008 <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
9009 <filename>PACKAGE_FEED_ARCHS</filename> variables are
9010 defined in your <filename>local.conf</filename> file:
9011 <literallayout class='monospaced'>
9012 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
9013 https://example.com/packagerepos/updates"
9014 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
9015 PACKAGE_FEED_ARCHS = "all core2-64"
9016 </literallayout>
9017 Given these settings, the resulting package feeds are
9018 as follows:
9019 <literallayout class='monospaced'>
9020 https://example.com/packagerepos/release/rpm/all
9021 https://example.com/packagerepos/release/rpm/core2-64
9022 https://example.com/packagerepos/release/rpm-dev/all
9023 https://example.com/packagerepos/release/rpm-dev/core2-64
9024 https://example.com/packagerepos/updates/rpm/all
9025 https://example.com/packagerepos/updates/rpm/core2-64
9026 https://example.com/packagerepos/updates/rpm-dev/all
9027 https://example.com/packagerepos/updates/rpm-dev/core2-64
9028 </literallayout>
9029 </para>
9030 </glossdef>
9031 </glossentry>
9032
9033 <glossentry id='var-PACKAGE_FEED_URIS'><glossterm>PACKAGE_FEED_URIS</glossterm>
9034 <info>
9035 PACKAGE_FEED_URIS[doc] = "Specifies the front portion of the package feed URI used by the OpenEmbedded build system."
9036 </info>
9037 <glossdef>
9038 <para role="glossdeffirst">
9039<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9040 Specifies the front portion of the package feed URI
9041 used by the OpenEmbedded build system.
9042 Each final package feed URI is comprised of
9043 <filename>PACKAGE_FEED_URIS</filename>,
9044 <link linkend='var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></link>,
9045 and
9046 <link linkend='var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></link>
9047 variables.
9048 </para>
9049
9050 <para>
9051 Consider the following example where the
9052 <filename>PACKAGE_FEED_URIS</filename>,
9053 <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
9054 <filename>PACKAGE_FEED_ARCHS</filename> variables are
9055 defined in your <filename>local.conf</filename> file:
9056 <literallayout class='monospaced'>
9057 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
9058 https://example.com/packagerepos/updates"
9059 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
9060 PACKAGE_FEED_ARCHS = "all core2-64"
9061 </literallayout>
9062 Given these settings, the resulting package feeds are
9063 as follows:
9064 <literallayout class='monospaced'>
9065 https://example.com/packagerepos/release/rpm/all
9066 https://example.com/packagerepos/release/rpm/core2-64
9067 https://example.com/packagerepos/release/rpm-dev/all
9068 https://example.com/packagerepos/release/rpm-dev/core2-64
9069 https://example.com/packagerepos/updates/rpm/all
9070 https://example.com/packagerepos/updates/rpm/core2-64
9071 https://example.com/packagerepos/updates/rpm-dev/all
9072 https://example.com/packagerepos/updates/rpm-dev/core2-64
9073 </literallayout>
9074 </para>
9075 </glossdef>
9076 </glossentry>
9077
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009078 <glossentry id='var-PACKAGE_GROUP'><glossterm>PACKAGE_GROUP</glossterm>
9079 <info>
9080 PACKAGE_GROUP[doc] = "Defines one or more packages to include in an image when a specific item is included in IMAGE_FEATURES."
9081 </info>
9082 <glossdef>
9083 <para role="glossdeffirst">
9084<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9085 The <filename>PACKAGE_GROUP</filename> variable has been
9086 renamed to
9087 <link linkend='var-FEATURE_PACKAGES'><filename>FEATURE_PACKAGES</filename></link>.
9088 See the variable description for
9089 <filename>FEATURE_PACKAGES</filename> for information.
9090 </para>
9091
9092 <para>
9093 If if you use the <filename>PACKAGE_GROUP</filename>
9094 variable, the OpenEmbedded build system issues a warning
9095 message.
9096 </para>
9097 </glossdef>
9098 </glossentry>
9099
9100 <glossentry id='var-PACKAGE_INSTALL'><glossterm>PACKAGE_INSTALL</glossterm>
9101 <info>
9102 PACKAGE_INSTALL[doc] = "List of the packages to be installed into the image. The variable is generally not user-defined and uses IMAGE_INSTALL as part of the list."
9103 </info>
9104 <glossdef>
9105 <para role="glossdeffirst">
9106<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9107 The final list of packages passed to the package manager
9108 for installation into the image.
9109 </para>
9110
9111 <para>
9112 Because the package manager controls actual installation
9113 of all packages, the list of packages passed using
9114 <filename>PACKAGE_INSTALL</filename> is not the final list
9115 of packages that are actually installed.
9116 This variable is internal to the image construction
9117 code.
9118 Consequently, in general, you should use the
9119 <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
9120 variable to specify packages for installation.
9121 The exception to this is when working with
9122 the
9123 <link linkend='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename></link>
9124 image.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05009125 When working with an initial RAM filesystem (initramfs)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009126 image, use the <filename>PACKAGE_INSTALL</filename>
9127 variable.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05009128 For information on creating an initramfs, see the
9129 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
9130 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009131 </para>
9132 </glossdef>
9133 </glossentry>
9134
9135 <glossentry id='var-PACKAGE_INSTALL_ATTEMPTONLY'><glossterm>PACKAGE_INSTALL_ATTEMPTONLY</glossterm>
9136 <info>
9137 PACKAGE_INSTALL_ATTEMPTONLY[doc] = "List of packages attempted to be installed when creating an image. If a listed package fails to install, the build system does not generate an error. This variable is generally not user-defined."
9138 </info>
9139 <glossdef>
9140 <para role="glossdeffirst">
9141<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9142 Specifies a list of packages the OpenEmbedded build
9143 system attempts to install when creating an image.
9144 If a listed package fails to install, the build system
9145 does not generate an error.
9146 This variable is generally not user-defined.
9147 </para>
9148 </glossdef>
9149 </glossentry>
9150
9151 <glossentry id='var-PACKAGE_PREPROCESS_FUNCS'><glossterm>PACKAGE_PREPROCESS_FUNCS</glossterm>
9152 <info>
9153 PACKAGE_PREPROCESS_FUNCS[doc] = "Specifies a list of functions run to pre-process the PKGD directory prior to splitting the files out to individual packages."
9154 </info>
9155 <glossdef>
9156 <para role="glossdeffirst">
9157<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9158 Specifies a list of functions run to pre-process the
9159 <link linkend='var-PKGD'><filename>PKGD</filename></link>
9160 directory prior to splitting the files out to individual
9161 packages.
9162 </para>
9163 </glossdef>
9164 </glossentry>
9165
9166 <glossentry id='var-PACKAGECONFIG'><glossterm>PACKAGECONFIG</glossterm>
9167 <info>
9168 PACKAGECONFIG[doc] = "This variable provides a means of enabling or disabling features of a recipe on a per-recipe basis."
9169 </info>
9170 <glossdef>
9171 <para role="glossdeffirst">
9172<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9173 This variable provides a means of enabling or disabling
9174 features of a recipe on a per-recipe basis.
9175 <filename>PACKAGECONFIG</filename> blocks are defined
9176 in recipes when you specify features and then arguments
9177 that define feature behaviors.
9178 Here is the basic block structure:
9179 <literallayout class='monospaced'>
9180 PACKAGECONFIG ??= "f1 f2 f3 ..."
9181 PACKAGECONFIG[f1] = "--with-f1,--without-f1,build-deps-f1,rt-deps-f1"
9182 PACKAGECONFIG[f2] = "--with-f2,--without-f2,build-deps-f2,rt-deps-f2"
9183 PACKAGECONFIG[f3] = "--with-f3,--without-f3,build-deps-f3,rt-deps-f3"
9184 </literallayout>
9185 </para>
9186
9187 <para>
9188 The <filename>PACKAGECONFIG</filename>
9189 variable itself specifies a space-separated list of the
9190 features to enable.
9191 Following the features, you can determine the behavior of
9192 each feature by providing up to four order-dependent
9193 arguments, which are separated by commas.
9194 You can omit any argument you like but must retain the
9195 separating commas.
9196 The order is important and specifies the following:
9197 <orderedlist>
9198 <listitem><para>Extra arguments
9199 that should be added to the configure script
9200 argument list
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009201 (<link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
9202 or
9203 <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009204 if the feature is enabled.</para></listitem>
9205 <listitem><para>Extra arguments
9206 that should be added to <filename>EXTRA_OECONF</filename>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009207 or <filename>PACKAGECONFIG_CONFARGS</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009208 if the feature is disabled.
9209 </para></listitem>
9210 <listitem><para>Additional build dependencies
9211 (<link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>)
9212 that should be added if the feature is enabled.
9213 </para></listitem>
9214 <listitem><para>Additional runtime dependencies
9215 (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
9216 that should be added if the feature is enabled.
9217 </para></listitem>
9218 </orderedlist>
9219 </para>
9220
9221 <para>
9222 Consider the following
9223 <filename>PACKAGECONFIG</filename> block taken from the
9224 <filename>librsvg</filename> recipe.
9225 In this example the feature is <filename>croco</filename>,
9226 which has three arguments that determine the feature's
9227 behavior.
9228 <literallayout class='monospaced'>
9229 PACKAGECONFIG ??= "croco"
9230 PACKAGECONFIG[croco] = "--with-croco,--without-croco,libcroco"
9231 </literallayout>
9232 The <filename>--with-croco</filename> and
9233 <filename>libcroco</filename> arguments apply only if
9234 the feature is enabled.
9235 In this case, <filename>--with-croco</filename> is
9236 added to the configure script argument list and
9237 <filename>libcroco</filename> is added to
9238 <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename>.
9239 On the other hand, if the feature is disabled say through
9240 a <filename>.bbappend</filename> file in another layer, then
9241 the second argument <filename>--without-croco</filename> is
9242 added to the configure script rather than
9243 <filename>--with-croco</filename>.
9244 </para>
9245
9246 <para>
9247 The basic <filename>PACKAGECONFIG</filename> structure
9248 previously described holds true regardless of whether you
9249 are creating a block or changing a block.
9250 When creating a block, use the structure inside your
9251 recipe.
9252 </para>
9253
9254 <para>
9255 If you want to change an existing
9256 <filename>PACKAGECONFIG</filename> block, you can do so
9257 one of two ways:
9258 <itemizedlist>
9259 <listitem><para><emphasis>Append file:</emphasis>
9260 Create an append file named
9261 <replaceable>recipename</replaceable><filename>.bbappend</filename>
9262 in your layer and override the value of
9263 <filename>PACKAGECONFIG</filename>.
9264 You can either completely override the variable:
9265 <literallayout class='monospaced'>
9266 PACKAGECONFIG="f4 f5"
9267 </literallayout>
9268 Or, you can just append the variable:
9269 <literallayout class='monospaced'>
9270 PACKAGECONFIG_append = " f4"
9271 </literallayout></para></listitem>
9272 <listitem><para><emphasis>Configuration file:</emphasis>
9273 This method is identical to changing the block
9274 through an append file except you edit your
9275 <filename>local.conf</filename> or
9276 <filename><replaceable>mydistro</replaceable>.conf</filename> file.
9277 As with append files previously described,
9278 you can either completely override the variable:
9279 <literallayout class='monospaced'>
9280 PACKAGECONFIG_pn-<replaceable>recipename</replaceable>="f4 f5"
9281 </literallayout>
9282 Or, you can just amend the variable:
9283 <literallayout class='monospaced'>
9284 PACKAGECONFIG_append_pn-<replaceable>recipename</replaceable> = " f4"
9285 </literallayout></para></listitem>
9286 </itemizedlist>
9287 </para>
9288 </glossdef>
9289 </glossentry>
9290
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009291 <glossentry id='var-PACKAGECONFIG_CONFARGS'><glossterm>PACKAGECONFIG_CONFARGS</glossterm>
9292 <info>
9293 PACKAGECONFIG_CONFARGS[doc] = "A space-separated list of configuration options generated from PACKAGECONFIG."
9294 </info>
9295 <glossdef>
9296 <para role="glossdeffirst">
9297<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9298 A space-separated list of configuration options generated
9299 from the
9300 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
9301 setting.
9302 This list of options helps other classes and
9303 recipes take advantage of the
9304 <filename>PACKAGECONFIG</filename> mechanism without
9305 having to include options from
9306 <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>.
9307 </para>
9308
9309 <para>
9310 To illustrate how to use
9311 <filename>PACKAGECONFIG_CONFARGS</filename>, consider the
9312 following example:
9313 <literallayout class='monospaced'>
9314 PACKAGECONFIG_CONFARGS = " \
9315 -prefix ${prefix} \
9316 -sysroot ${STAGING_DIR_NATIVE} \
9317 -no-gcc-sysroot
9318 "
9319 </literallayout>
9320 In the previous example,
9321 <filename>PACKAGECONFIG_CONFARGS</filename> is set with
9322 three configuration options that can be passed using the
9323 <filename>PACKAGECONFIG</filename> mechanism, thus
9324 avoiding having to use <filename>EXTRA_OECONF</filename>.
9325 </para>
9326
9327 <para>
9328 For additional information, see the
9329 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
9330 variable.
9331 </para>
9332 </glossdef>
9333 </glossentry>
9334
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009335 <glossentry id='var-PACKAGEGROUP_DISABLE_COMPLEMENTARY'><glossterm>PACKAGEGROUP_DISABLE_COMPLEMENTARY</glossterm>
9336 <info>
9337 PACKAGEGROUP_DISABLE_COMPLEMENTARY[doc] = "Prevents automatic creation of the normal complementary packages such as -dev and -dbg in a packagegroup recipe."
9338 </info>
9339 <glossdef>
9340 <para role="glossdeffirst">
9341<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9342 For recipes inheriting the
9343 <link linkend='ref-classes-packagegroup'><filename>packagegroup</filename></link>
9344 class, setting
9345 <filename>PACKAGEGROUP_DISABLE_COMPLEMENTARY</filename> to
9346 "1" specifies that the normal complementary packages
9347 (i.e. <filename>-dev</filename>,
9348 <filename>-dbg</filename>, and so forth) should not be
9349 automatically created by the
9350 <filename>packagegroup</filename> recipe, which is the
9351 default behavior.
9352 </para>
9353 </glossdef>
9354 </glossentry>
9355
9356 <glossentry id='var-PACKAGES'><glossterm>PACKAGES</glossterm>
9357 <info>
9358 PACKAGES[doc] = "The list of packages to be created from the recipe."
9359 </info>
9360 <glossdef>
9361 <para role="glossdeffirst">
9362<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9363 The list of packages to be created from the recipe.
9364 The default value is the following:
9365 <literallayout class='monospaced'>
9366 ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
9367 </literallayout>
9368 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009369
9370 <para>
9371 During packaging, the
9372 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
9373 task goes through <filename>PACKAGES</filename> and uses
9374 the
9375 <link linkend='var-FILES'><filename>FILES</filename></link>
9376 variable corresponding to each package to assign files to
9377 the package.
9378 If a file matches the <filename>FILES</filename> variable
9379 for more than one package in <filename>PACKAGES</filename>,
9380 it will be assigned to the earliest (leftmost) package.
9381 </para>
9382
9383 <para>
9384 Packages in the variable's list that are empty (i.e. where
9385 none of the patterns in
9386 <filename>FILES_</filename><replaceable>pkg</replaceable>
9387 match any files installed by the
9388 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
9389 task) are not generated, unless generation is forced through
9390 the
9391 <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>
9392 variable.
9393 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009394 </glossdef>
9395 </glossentry>
9396
9397 <glossentry id='var-PACKAGES_DYNAMIC'><glossterm>PACKAGES_DYNAMIC</glossterm>
9398 <info>
9399 PACKAGES_DYNAMIC[doc] = "A promise that your recipe satisfies runtime dependencies for optional modules that are found in other recipes."
9400 </info>
9401 <glossdef>
9402 <para role="glossdeffirst">
9403<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9404 A promise that your recipe satisfies runtime dependencies
9405 for optional modules that are found in other recipes.
9406 <filename>PACKAGES_DYNAMIC</filename>
9407 does not actually satisfy the dependencies, it only states that
9408 they should be satisfied.
9409 For example, if a hard, runtime dependency
9410 (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
9411 of another package is satisfied
9412 at build time through the <filename>PACKAGES_DYNAMIC</filename>
9413 variable, but a package with the module name is never actually
9414 produced, then the other package will be broken.
9415 Thus, if you attempt to include that package in an image,
9416 you will get a dependency failure from the packaging system
9417 during the
9418 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
9419 task.
9420 </para>
9421
9422 <para>
9423 Typically, if there is a chance that such a situation can
9424 occur and the package that is not created is valid
9425 without the dependency being satisfied, then you should use
9426 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
9427 (a soft runtime dependency) instead of
9428 <filename>RDEPENDS</filename>.
9429 </para>
9430
9431 <para>
9432 For an example of how to use the <filename>PACKAGES_DYNAMIC</filename>
9433 variable when you are splitting packages, see the
9434 "<ulink url='&YOCTO_DOCS_DEV_URL;#handling-optional-module-packaging'>Handling Optional Module Packaging</ulink>" section
9435 in the Yocto Project Development Manual.
9436 </para>
9437 </glossdef>
9438 </glossentry>
9439
9440 <glossentry id='var-PACKAGESPLITFUNCS'><glossterm>PACKAGESPLITFUNCS</glossterm>
9441 <info>
9442 PACKAGESPLITFUNCS[doc] = "Specifies a list of functions run to perform additional splitting of files into individual packages."
9443 </info>
9444 <glossdef>
9445 <para role="glossdeffirst">
9446<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9447 Specifies a list of functions run to perform additional
9448 splitting of files into individual packages.
9449 Recipes can either prepend to this variable or prepend
9450 to the <filename>populate_packages</filename> function
9451 in order to perform additional package splitting.
9452 In either case, the function should set
9453 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>,
9454 <link linkend='var-FILES'><filename>FILES</filename></link>,
9455 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
9456 and other packaging variables appropriately in order to
9457 perform the desired splitting.
9458 </para>
9459 </glossdef>
9460 </glossentry>
9461
9462 <glossentry id='var-PARALLEL_MAKE'><glossterm>PARALLEL_MAKE</glossterm>
9463 <info>
9464 PARALLEL_MAKE[doc] = "Specifies extra options that are passed to the make command during the compile tasks. This variable is usually in the form -j x, where x represents the maximum number of parallel threads make can run."
9465 </info>
9466 <glossdef>
9467 <para role="glossdeffirst">
9468<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9469 Extra options passed to the <filename>make</filename>
9470 command during the
9471 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>
9472 task in order to specify parallel compilation on the local
9473 build host.
9474 This variable is usually in the form "-j <replaceable>x</replaceable>",
9475 where <replaceable>x</replaceable> represents the maximum
9476 number of parallel threads <filename>make</filename> can
9477 run.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009478 <note><title>Caution</title>
9479 In order for <filename>PARALLEL_MAKE</filename> to be
9480 effective, <filename>make</filename> must be called
9481 with
9482 <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
9483 An easy way to ensure this is to use the
9484 <filename>oe_runmake</filename> function.
9485 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009486 </para>
9487
9488 <para>
9489 By default, the OpenEmbedded build system automatically
9490 sets this variable to be equal to the number of cores the
9491 build system uses.
9492 <note>
9493 If the software being built experiences dependency
9494 issues during the <filename>do_compile</filename>
9495 task that result in race conditions, you can clear
9496 the <filename>PARALLEL_MAKE</filename> variable within
9497 the recipe as a workaround.
9498 For information on addressing race conditions, see the
9499 "<ulink url='&YOCTO_DOCS_DEV_URL;#debugging-parallel-make-races'>Debugging Parallel Make Races</ulink>"
9500 section in the Yocto Project Development Manual.
9501 </note>
9502 For single socket systems (i.e. one CPU), you should not
9503 have to override this variable to gain optimal parallelism
9504 during builds.
9505 However, if you have very large systems that employ
9506 multiple physical CPUs, you might want to make sure the
9507 <filename>PARALLEL_MAKE</filename> variable is not
9508 set higher than "-j 20".
9509 </para>
9510
9511 <para>
9512 For more information on speeding up builds, see the
9513 "<link linkend='speeding-up-the-build'>Speeding Up the Build</link>"
9514 section.
9515 </para>
9516 </glossdef>
9517 </glossentry>
9518
9519 <glossentry id='var-PARALLEL_MAKEINST'><glossterm>PARALLEL_MAKEINST</glossterm>
9520 <info>
9521 PARALLEL_MAKEINST[doc] = "Extra options passed to the make install command during the do_install task in order to specify parallel installation."
9522 </info>
9523 <glossdef>
9524 <para role="glossdeffirst">
9525<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9526 Extra options passed to the
9527 <filename>make install</filename> command during the
9528 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
9529 task in order to specify parallel installation.
9530 This variable defaults to the value of
9531 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009532 <note><title>Notes and Cautions</title>
9533 <para>In order for <filename>PARALLEL_MAKEINST</filename>
9534 to be
9535 effective, <filename>make</filename> must be called
9536 with
9537 <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
9538 An easy way to ensure this is to use the
9539 <filename>oe_runmake</filename> function.</para>
9540
9541 <para>If the software being built experiences
9542 dependency issues during the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009543 <filename>do_install</filename> task that result in
9544 race conditions, you can clear the
9545 <filename>PARALLEL_MAKEINST</filename> variable within
9546 the recipe as a workaround.
9547 For information on addressing race conditions, see the
9548 "<ulink url='&YOCTO_DOCS_DEV_URL;#debugging-parallel-make-races'>Debugging Parallel Make Races</ulink>"
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009549 section in the Yocto Project Development Manual.</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009550 </note>
9551 </para>
9552 </glossdef>
9553 </glossentry>
9554
9555 <glossentry id='var-PATCHRESOLVE'><glossterm>PATCHRESOLVE</glossterm>
9556 <info>
9557 PATCHRESOLVE[doc] = "Enable or disable interactive patch resolution."
9558 </info>
9559 <glossdef>
9560 <para role="glossdeffirst">
9561<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9562 Determines the action to take when a patch fails.
9563 You can set this variable to one of two values: "noop" and
9564 "user".
9565 </para>
9566
9567 <para>
9568 The default value of "noop" causes the build to simply fail
9569 when the OpenEmbedded build system cannot successfully
9570 apply a patch.
9571 Setting the value to "user" causes the build system to
9572 launch a shell and places you in the right location so that
9573 you can manually resolve the conflicts.
9574 </para>
9575
9576 <para>
9577 Set this variable in your
9578 <filename>local.conf</filename> file.
9579 </para>
9580 </glossdef>
9581 </glossentry>
9582
9583 <glossentry id='var-PATCHTOOL'><glossterm>PATCHTOOL</glossterm>
9584 <info>
9585 PATCHTOOL[doc] = "Specifies the utility used to apply patches for a recipe during do_patch."
9586 </info>
9587 <glossdef>
9588 <para role="glossdeffirst">
9589<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9590 Specifies the utility used to apply patches for a recipe
9591 during the
9592 <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
9593 task.
9594 You can specify one of three utilities: "patch", "quilt", or
9595 "git".
9596 The default utility used is "quilt" except for the
9597 quilt-native recipe itself.
9598 Because the quilt tool is not available at the
9599 time quilt-native is being patched, it uses "patch".
9600 </para>
9601
9602 <para>
9603 If you wish to use an alternative patching tool, set the
9604 variable in the recipe using one of the following:
9605 <literallayout class='monospaced'>
9606 PATCHTOOL = "patch"
9607 PATCHTOOL = "quilt"
9608 PATCHTOOL = "git"
9609 </literallayout>
9610 </para>
9611 </glossdef>
9612 </glossentry>
9613
9614 <glossentry id='var-PE'><glossterm>PE</glossterm>
9615 <info>
9616 PE[doc] = "The epoch of the recipe. The default value is '0'. The field is used to make upgrades possible when the versioning scheme changes in some backwards incompatible way."
9617 </info>
9618 <glossdef>
9619 <para role="glossdeffirst">
9620<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9621 The epoch of the recipe.
9622 By default, this variable is unset.
9623 The variable is used to make upgrades possible when the
9624 versioning scheme changes in some backwards incompatible
9625 way.
9626 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009627
9628 <para>
9629 <filename>PE</filename> is the default value of the
9630 <link linkend='var-PKGE'><filename>PKGE</filename></link>
9631 variable.
9632 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009633 </glossdef>
9634 </glossentry>
9635
9636 <glossentry id='var-PF'><glossterm>PF</glossterm>
9637 <info>
9638 PF[doc] = "Specifies the recipe or package name and includes all version and revision numbers. This variable is comprised of ${PN}-${EXTENDPE}${PV}-${PR}."
9639 </info>
9640 <glossdef>
9641 <para role="glossdeffirst">
9642<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9643 Specifies the recipe or package name and includes all version and revision
9644 numbers (i.e. <filename>glibc-2.13-r20+svnr15508/</filename> and
9645 <filename>bash-4.2-r1/</filename>).
9646 This variable is comprised of the following:
9647 <literallayout class='monospaced'>
9648 ${<link linkend='var-PN'>PN</link>}-${<link linkend='var-EXTENDPE'>EXTENDPE</link>}${<link linkend='var-PV'>PV</link>}-${<link linkend='var-PR'>PR</link>}
9649 </literallayout>
9650 </para>
9651 </glossdef>
9652 </glossentry>
9653
9654 <glossentry id='var-PIXBUF_PACKAGES'><glossterm>PIXBUF_PACKAGES</glossterm>
9655 <info>
9656 PIXBUF_PACKAGES[doc] = "When a recipe inherits the pixbufcache class, this variable identifies packages that contain the pixbuf loaders used with gdk-pixbuf."
9657 </info>
9658 <glossdef>
9659 <para role="glossdeffirst">
9660<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9661 When inheriting the
9662 <link linkend='ref-classes-pixbufcache'><filename>pixbufcache</filename></link>
9663 class, this variable identifies packages that contain
9664 the pixbuf loaders used with
9665 <filename>gdk-pixbuf</filename>.
9666 By default, the <filename>pixbufcache</filename> class
9667 assumes that the loaders are in the recipe's main package
9668 (i.e. <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
9669 Use this variable if the loaders you need are in a package
9670 other than that main package.
9671 </para>
9672 </glossdef>
9673 </glossentry>
9674
9675 <glossentry id='var-PKG'><glossterm>PKG</glossterm>
9676 <info>
9677 PKG[doc] = "The name of the resulting package created by the OpenEmbedded build system. When you use this variable, you must use a package name override."
9678 </info>
9679 <glossdef>
9680 <para role="glossdeffirst">
9681<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9682 The name of the resulting package created by the
9683 OpenEmbedded build system.
9684 <note>
9685 When using the <filename>PKG</filename> variable, you
9686 must use a package name override.
9687 </note>
9688 </para>
9689
9690 <para>
9691 For example, when the
9692 <link linkend='ref-classes-debian'><filename>debian</filename></link>
9693 class renames the output package, it does so by setting
9694 <filename>PKG_<replaceable>packagename</replaceable></filename>.
9695 </para>
9696 </glossdef>
9697 </glossentry>
9698
9699 <glossentry id='var-PKG_CONFIG_PATH'><glossterm>PKG_CONFIG_PATH</glossterm>
9700 <info>
9701 PKG_CONFIG_PATH[doc] = "Path to pkg-config files for the current build context."
9702 </info>
9703 <glossdef>
9704 <para role="glossdeffirst">
9705<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9706 The path to <filename>pkg-config</filename> files for the
9707 current build context.
9708 <filename>pkg-config</filename> reads this variable
9709 from the environment.
9710 </para>
9711 </glossdef>
9712 </glossentry>
9713
9714 <glossentry id='var-PKGD'><glossterm>PKGD</glossterm>
9715 <info>
9716 PKGD[doc] = "Points to the destination directory for files to be packaged before they are split into individual packages."
9717 </info>
9718 <glossdef>
9719 <para role="glossdeffirst">
9720<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9721 Points to the destination directory for files to be
9722 packaged before they are split into individual packages.
9723 This directory defaults to the following:
9724 <literallayout class='monospaced'>
9725 ${WORKDIR}/package
9726 </literallayout>
9727 </para>
9728
9729 <para>
9730 Do not change this default.
9731 </para>
9732 </glossdef>
9733 </glossentry>
9734
9735 <glossentry id='var-PKGDATA_DIR'><glossterm>PKGDATA_DIR</glossterm>
9736 <info>
9737 PKGDATA_DIR[doc] = "Points to a shared, global-state directory that holds data generated during the packaging process."
9738 </info>
9739 <glossdef>
9740 <para role="glossdeffirst">
9741<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9742 Points to a shared, global-state directory that holds data
9743 generated during the packaging process.
9744 During the packaging process, the
9745 <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
9746 task packages data for each recipe and installs it into
9747 this temporary, shared area.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009748 This directory defaults to the following, which you should
9749 not change:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009750 <literallayout class='monospaced'>
9751 ${STAGING_DIR_HOST}/pkgdata
9752 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009753 For examples of how this data is used, see the
9754 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
9755 section and the
9756 "<link linkend='viewing-package-information-with-oe-pkgdata-util'>Viewing Package Information with <filename>oe-pkgdata-util</filename></link>"
9757 section.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009758 </para>
9759 </glossdef>
9760 </glossentry>
9761
9762 <glossentry id='var-PKGDEST'><glossterm>PKGDEST</glossterm>
9763 <info>
9764 PKGDEST[doc] = "Points to the parent directory for files to be packaged after they have been split into individual packages."
9765 </info>
9766 <glossdef>
9767 <para role="glossdeffirst">
9768<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9769 Points to the parent directory for files to be packaged
9770 after they have been split into individual packages.
9771 This directory defaults to the following:
9772 <literallayout class='monospaced'>
9773 ${WORKDIR}/packages-split
9774 </literallayout>
9775 </para>
9776
9777 <para>
9778 Under this directory, the build system creates
9779 directories for each package specified in
9780 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>.
9781 Do not change this default.
9782 </para>
9783 </glossdef>
9784 </glossentry>
9785
9786 <glossentry id='var-PKGDESTWORK'><glossterm>PKGDESTWORK</glossterm>
9787 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009788 PKGDESTWORK[doc] = "Points to a temporary work area where the do_package task saves package metadata."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009789 </info>
9790 <glossdef>
9791 <para role="glossdeffirst">
9792<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009793 Points to a temporary work area where the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009794 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009795 task saves package metadata.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009796 The <filename>PKGDESTWORK</filename> location defaults to
9797 the following:
9798 <literallayout class='monospaced'>
9799 ${WORKDIR}/pkgdata
9800 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009801 Do not change this default.
9802 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009803
9804 <para>
9805 The
9806 <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
9807 task copies the package metadata from
9808 <filename>PKGDESTWORK</filename> to
9809 <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
9810 to make it available globally.
9811 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009812 </glossdef>
9813 </glossentry>
9814
9815 <glossentry id='var-PKGE'><glossterm>PKGE</glossterm>
9816 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009817 PKGE[doc] = "The epoch of the package(s) built by the recipe."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009818 </info>
9819 <glossdef>
9820 <para role="glossdeffirst">
9821<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009822 The epoch of the package(s) built by the recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009823 By default, <filename>PKGE</filename> is set to
9824 <link linkend='var-PE'><filename>PE</filename></link>.
9825 </para>
9826 </glossdef>
9827 </glossentry>
9828
9829 <glossentry id='var-PKGR'><glossterm>PKGR</glossterm>
9830 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009831 PKGR[doc] = "The revision of the package(s) built by the recipe."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009832 </info>
9833 <glossdef>
9834 <para role="glossdeffirst">
9835<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009836 The revision of the package(s) built by the recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009837 By default, <filename>PKGR</filename> is set to
9838 <link linkend='var-PR'><filename>PR</filename></link>.
9839 </para>
9840 </glossdef>
9841 </glossentry>
9842
9843 <glossentry id='var-PKGV'><glossterm>PKGV</glossterm>
9844 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009845 PKGV[doc] = "The version of the package(s) built by the recipe."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009846 </info>
9847 <glossdef>
9848 <para role="glossdeffirst">
9849<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009850 The version of the package(s) built by the
9851 recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009852 By default, <filename>PKGV</filename> is set to
9853 <link linkend='var-PV'><filename>PV</filename></link>.
9854 </para>
9855 </glossdef>
9856 </glossentry>
9857
9858 <glossentry id='var-PN'><glossterm>PN</glossterm>
9859 <info>
9860 PN[doc] = "PN refers to a recipe name in the context of a file used by the OpenEmbedded build system as input to create a package. It refers to a package name in the context of a file created or produced by the OpenEmbedded build system."
9861 </info>
9862 <glossdef>
9863 <para role="glossdeffirst">
9864<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9865 This variable can have two separate functions depending on the context: a recipe
9866 name or a resulting package name.
9867 </para>
9868
9869 <para>
9870 <filename>PN</filename> refers to a recipe name in the context of a file used
9871 by the OpenEmbedded build system as input to create a package.
9872 The name is normally extracted from the recipe file name.
9873 For example, if the recipe is named
9874 <filename>expat_2.0.1.bb</filename>, then the default value of <filename>PN</filename>
9875 will be "expat".
9876 </para>
9877
9878 <para>
9879 The variable refers to a package name in the context of a file created or produced by the
9880 OpenEmbedded build system.
9881 </para>
9882
9883 <para>
9884 If applicable, the <filename>PN</filename> variable also contains any special
9885 suffix or prefix.
9886 For example, using <filename>bash</filename> to build packages for the native
9887 machine, <filename>PN</filename> is <filename>bash-native</filename>.
9888 Using <filename>bash</filename> to build packages for the target and for Multilib,
9889 <filename>PN</filename> would be <filename>bash</filename> and
9890 <filename>lib64-bash</filename>, respectively.
9891 </para>
9892 </glossdef>
9893 </glossentry>
9894
9895 <glossentry id='var-PNBLACKLIST'><glossterm>PNBLACKLIST</glossterm>
9896 <info>
9897 PNBLACKLIST[doc] = "Lists recipes you do not want the OpenEmbedded build system to build."
9898 </info>
9899 <glossdef>
9900 <para role="glossdeffirst">
9901<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9902 Lists recipes you do not want the OpenEmbedded build system
9903 to build.
9904 This variable works in conjunction with the
9905 <link linkend='ref-classes-blacklist'><filename>blacklist</filename></link>
9906 class, which the recipe must inherit globally.
9907 </para>
9908
9909 <para>
9910 To prevent a recipe from being built, inherit the class
9911 globally and use the variable in your
9912 <filename>local.conf</filename> file.
9913 Here is an example that prevents
9914 <filename>myrecipe</filename> from being built:
9915 <literallayout class='monospaced'>
9916 INHERIT += "blacklist"
9917 PNBLACKLIST[myrecipe] = "Not supported by our organization."
9918 </literallayout>
9919 </para>
9920 </glossdef>
9921 </glossentry>
9922
9923 <glossentry id='var-POPULATE_SDK_POST_HOST_COMMAND'><glossterm>POPULATE_SDK_POST_HOST_COMMAND</glossterm>
9924 <info>
9925 POPULATE_SDK_POST_HOST_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created host part of the SDK."
9926 </info>
9927 <glossdef>
9928 <para role="glossdeffirst">
9929<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9930 Specifies a list of functions to call once the
9931 OpenEmbedded build system has created the host part of
9932 the SDK.
9933 You can specify functions separated by semicolons:
9934 <literallayout class='monospaced'>
9935 POPULATE_SDK_POST_HOST_COMMAND += "<replaceable>function</replaceable>; ... "
9936 </literallayout>
9937 </para>
9938
9939 <para>
9940 If you need to pass the SDK path to a command
9941 within a function, you can use
9942 <filename>${SDK_DIR}</filename>, which points to
9943 the parent directory used by the OpenEmbedded build
9944 system when creating SDK output.
9945 See the
9946 <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
9947 variable for more information.
9948 </para>
9949 </glossdef>
9950 </glossentry>
9951
9952 <glossentry id='var-POPULATE_SDK_POST_TARGET_COMMAND'><glossterm>POPULATE_SDK_POST_TARGET_COMMAND</glossterm>
9953 <info>
9954 POPULATE_SDK_POST_TARGET_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created target part of the SDK."
9955 </info>
9956 <glossdef>
9957 <para role="glossdeffirst">
9958<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9959 Specifies a list of functions to call once the
9960 OpenEmbedded build system has created the target part of
9961 the SDK.
9962 You can specify functions separated by semicolons:
9963 <literallayout class='monospaced'>
9964 POPULATE_SDK_POST_TARGET_COMMAND += "<replaceable>function</replaceable>; ... "
9965 </literallayout>
9966 </para>
9967
9968 <para>
9969 If you need to pass the SDK path to a command
9970 within a function, you can use
9971 <filename>${SDK_DIR}</filename>, which points to
9972 the parent directory used by the OpenEmbedded build
9973 system when creating SDK output.
9974 See the
9975 <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
9976 variable for more information.
9977 </para>
9978 </glossdef>
9979 </glossentry>
9980
9981 <glossentry id='var-PR'><glossterm>PR</glossterm>
9982 <info>
9983 PR[doc] = "The revision of the recipe. The default value for this variable is 'r0'."
9984 </info>
9985 <glossdef>
9986 <para role="glossdeffirst">
9987<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009988 The revision of the recipe. The default value for this
9989 variable is "r0".
9990 Subsequent revisions of the recipe conventionally have the
9991 values "r1", "r2", and so forth.
9992 When
9993 <link linkend='var-PV'><filename>PV</filename></link>
9994 increases, <filename>PR</filename> is conventionally reset
9995 to "r0".
9996 <note>
9997 The OpenEmbedded build system does not need the aid of
9998 <filename>PR</filename> to know when to rebuild a
9999 recipe.
10000 The build system uses the task
10001 <ulink url='&YOCTO_DOCS_BB_URL;#checksums'>input checksums</ulink>
10002 along with the
10003 <link linkend='structure-build-tmp-stamps'>stamp</link>
10004 and
10005 <link linkend='shared-state-cache'>shared state cache</link>
10006 mechanisms.
10007 </note>
10008 The <filename>PR</filename> variable primarily becomes
10009 significant when a package manager dynamically installs
10010 packages on an already built image.
10011 In this case, <filename>PR</filename>, which is the default
10012 value of
10013 <link linkend='var-PKGR'><filename>PKGR</filename></link>,
10014 helps the package manager distinguish which package is the
10015 most recent one in cases where many packages have the same
10016 <filename>PV</filename> (i.e. <filename>PKGV</filename>).
10017 A component having many packages with the same
10018 <filename>PV</filename> usually means that the packages all
10019 install the same upstream version, but with later
10020 (<filename>PR</filename>) version packages including
10021 packaging fixes.
10022 <note>
10023 <filename>PR</filename> does not need to be increased
10024 for changes that do not change the package contents or
10025 metadata.
10026 </note>
10027 Because manually managing <filename>PR</filename> can be
10028 cumbersome and error-prone, an automated solution exists.
10029 See the
10030 "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>Working With a PR Service</ulink>"
10031 section for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010032 </para>
10033 </glossdef>
10034 </glossentry>
10035
10036 <glossentry id='var-PREFERRED_PROVIDER'><glossterm>PREFERRED_PROVIDER</glossterm>
10037 <info>
10038 PREFERRED_PROVIDER[doc] = "If multiple recipes provide an item, this variable determines which recipe should be given preference."
10039 </info>
10040 <glossdef>
10041 <para role="glossdeffirst">
10042<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10043 If multiple recipes provide an item, this variable
10044 determines which recipe should be given preference.
10045 You should always suffix the variable with the name of the
10046 provided item, and you should set it to the
10047 <link linkend='var-PN'><filename>PN</filename></link>
10048 of the recipe to which you want to give precedence.
10049 Some examples:
10050 <literallayout class='monospaced'>
10051 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
10052 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
10053 PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
10054 </literallayout>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050010055 <note>
10056 If you set <filename>PREFERRED_PROVIDER</filename>
10057 for a <filename>virtual/*</filename> item, then any
10058 recipe that
10059 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
10060 that item that is not selected by
10061 <filename>PREFERRED_PROVIDER</filename> is prevented
10062 from building, which is usually desirable since this
10063 mechanism is designed to select between mutually
10064 exclusive alternative providers.
10065 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010066 </para>
10067 </glossdef>
10068 </glossentry>
10069
10070 <glossentry id='var-PREFERRED_VERSION'><glossterm>PREFERRED_VERSION</glossterm>
10071 <info>
10072 PREFERRED_VERSION[doc] = "If there are multiple versions of recipes available, this variable determines which recipe should be given preference."
10073 </info>
10074 <glossdef>
10075 <para role="glossdeffirst">
10076<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10077 If there are multiple versions of recipes available, this
10078 variable determines which recipe should be given preference.
10079 You must always suffix the variable with the
10080 <link linkend='var-PN'><filename>PN</filename></link>
10081 you want to select, and you should set the
10082 <link linkend='var-PV'><filename>PV</filename></link>
10083 accordingly for precedence.
10084 You can use the "<filename>%</filename>" character as a
10085 wildcard to match any number of characters, which can be
10086 useful when specifying versions that contain long revision
10087 numbers that could potentially change.
10088 Here are two examples:
10089 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010090 PREFERRED_VERSION_python = "3.4.0"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010091 PREFERRED_VERSION_linux-yocto = "3.19%"
10092 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010093 <note>
10094 The specified version is matched against
10095 <link linkend='var-PV'><filename>PV</filename></link>,
10096 which does not necessarily match the version part of
10097 the recipe's filename.
10098 For example, consider two recipes
10099 <filename>foo_1.2.bb</filename> and
10100 <filename>foo_git.bb</filename> where
10101 <filename>foo_git.bb</filename> contains the following
10102 assignment:
10103 <literallayout class='monospaced'>
10104 PV = "1.1+git${SRCPV}"
10105 </literallayout>
10106 In this case, the correct way to select
10107 <filename>foo_git.bb</filename> is by using an
10108 assignment such as the following:
10109 <literallayout class='monospaced'>
10110 PREFERRED_VERSION_foo = "1.1+git%"
10111 </literallayout>
10112 Compare that previous example against the following
10113 incorrect example, which does not work:
10114 <literallayout class='monospaced'>
10115 PREFERRED_VERSION_foo = "git"
10116 </literallayout>
10117 </note>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050010118 Sometimes the <filename>PREFERRED_VERSION</filename>
10119 variable can be set by configuration files in a way that
10120 is hard to change.
10121 You can use
10122 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
10123 to set a machine-specific override.
10124 Here is an example:
10125 <literallayout class='monospaced'>
10126 PREFERRED_VERSION_linux-yocto_qemux86 = "3.4%"
10127 </literallayout>
10128 Although not recommended, worst case, you can also use the
10129 "forcevariable" override, which is the strongest override
10130 possible.
10131 Here is an example:
10132 <literallayout class='monospaced'>
10133 PREFERRED_VERSION_linux-yocto_forcevariable = "3.4%"
10134 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010135 <note>
10136 The <filename>_forcevariable</filename> override is
10137 not handled specially.
10138 This override only works because the default value of
10139 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
10140 includes "forcevariable".
10141 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010142 </para>
10143 </glossdef>
10144 </glossentry>
10145
10146 <glossentry id='var-PREMIRRORS'><glossterm>PREMIRRORS</glossterm>
10147 <info>
10148 PREMIRRORS[doc] = "Specifies additional paths from which the OpenEmbedded build system gets source code."
10149 </info>
10150 <glossdef>
10151 <para role="glossdeffirst">
10152<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10153 Specifies additional paths from which the OpenEmbedded
10154 build system gets source code.
10155 When the build system searches for source code, it first
10156 tries the local download directory.
10157 If that location fails, the build system tries locations
10158 defined by <filename>PREMIRRORS</filename>, the upstream
10159 source, and then locations specified by
10160 <link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
10161 in that order.
10162 </para>
10163
10164 <para>
10165 Assuming your distribution
10166 (<link linkend='var-DISTRO'><filename>DISTRO</filename></link>)
10167 is "poky", the default value for
10168 <filename>PREMIRRORS</filename> is defined in the
10169 <filename>conf/distro/poky.conf</filename> file in the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050010170 <filename>meta-poky</filename> Git repository.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010171 </para>
10172
10173 <para>
10174 Typically, you could add a specific server for the
10175 build system to attempt before any others by adding
10176 something like the following to the
10177 <filename>local.conf</filename> configuration file in the
10178 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>:
10179 <literallayout class='monospaced'>
10180 PREMIRRORS_prepend = "\
10181 git://.*/.* http://www.yoctoproject.org/sources/ \n \
10182 ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
10183 http://.*/.* http://www.yoctoproject.org/sources/ \n \
10184 https://.*/.* http://www.yoctoproject.org/sources/ \n"
10185 </literallayout>
10186 These changes cause the build system to intercept
10187 Git, FTP, HTTP, and HTTPS requests and direct them to
10188 the <filename>http://</filename> sources mirror.
10189 You can use <filename>file://</filename> URLs to point
10190 to local directories or network shares as well.
10191 </para>
10192 </glossdef>
10193 </glossentry>
10194
10195 <glossentry id='var-PRIORITY'><glossterm>PRIORITY</glossterm>
10196 <info>
10197 PRIORITY[doc] = "Indicates the importance of a package. The default value is 'optional'. Other standard values are 'required', 'standard' and 'extra'."
10198 </info>
10199 <glossdef>
10200 <para role="glossdeffirst">
10201<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10202 Indicates the importance of a package.
10203 </para>
10204
10205 <para>
10206 <filename>PRIORITY</filename> is considered to be part of
10207 the distribution policy because the importance of any given
10208 recipe depends on the purpose for which the distribution
10209 is being produced.
10210 Thus, <filename>PRIORITY</filename> is not normally set
10211 within recipes.
10212 </para>
10213
10214 <para>
10215 You can set <filename>PRIORITY</filename> to "required",
10216 "standard", "extra", and "optional", which is the default.
10217 </para>
10218 </glossdef>
10219 </glossentry>
10220
10221 <glossentry id='var-PRIVATE_LIBS'><glossterm>PRIVATE_LIBS</glossterm>
10222 <info>
10223 PRIVATE_LIBS[doc] = "Specifies libraries installed within a recipe that should be ignored by the OpenEmbedded build system's shared library resolver."
10224 </info>
10225 <glossdef>
10226 <para role="glossdeffirst">
10227<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10228 Specifies libraries installed within a recipe that
10229 should be ignored by the OpenEmbedded build system's
10230 shared library resolver.
10231 This variable is typically used when software being
10232 built by a recipe has its own private versions of a
10233 library normally provided by another recipe.
10234 In this case, you would not want the package containing
10235 the private libraries to be set as a dependency on other
10236 unrelated packages that should instead depend on the
10237 package providing the standard version of the library.
10238 </para>
10239
10240 <para>
10241 Libraries specified in this variable should be specified
10242 by their file name.
10243 For example, from the Firefox recipe in meta-browser:
10244 <literallayout class='monospaced'>
10245 PRIVATE_LIBS = "libmozjs.so \
10246 libxpcom.so \
10247 libnspr4.so \
10248 libxul.so \
10249 libmozalloc.so \
10250 libplc4.so \
10251 libplds4.so"
10252 </literallayout>
10253 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010254
10255 <para>
10256 For more information, see the
10257 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
10258 section.
10259 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010260 </glossdef>
10261 </glossentry>
10262
10263 <glossentry id='var-PROVIDES'><glossterm>PROVIDES</glossterm>
10264 <info>
10265 PROVIDES[doc] = "A list of aliases that a recipe also provides. These aliases are useful for satisfying dependencies of other recipes during the build as specified by DEPENDS."
10266 </info>
10267 <glossdef>
10268 <para role="glossdeffirst">
10269<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10270 A list of aliases by which a particular recipe can be
10271 known.
10272 By default, a recipe's own
10273 <filename><link linkend='var-PN'>PN</link></filename>
10274 is implicitly already in its <filename>PROVIDES</filename>
10275 list.
10276 If a recipe uses <filename>PROVIDES</filename>, the
10277 additional aliases are synonyms for the recipe and can
10278 be useful satisfying dependencies of other recipes during
10279 the build as specified by
10280 <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename>.
10281 </para>
10282
10283 <para>
10284 Consider the following example
10285 <filename>PROVIDES</filename> statement from a recipe
10286 file <filename>libav_0.8.11.bb</filename>:
10287 <literallayout class='monospaced'>
10288 PROVIDES += "libpostproc"
10289 </literallayout>
10290 The <filename>PROVIDES</filename> statement results in
10291 the "libav" recipe also being known as "libpostproc".
10292 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010293
10294 <para>
10295 In addition to providing recipes under alternate names,
10296 the <filename>PROVIDES</filename> mechanism is also used
10297 to implement virtual targets.
10298 A virtual target is a name that corresponds to some
10299 particular functionality (e.g. a Linux kernel).
10300 Recipes that provide the functionality in question list the
10301 virtual target in <filename>PROVIDES</filename>.
10302 Recipes that depend on the functionality in question can
10303 include the virtual target in
10304 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
10305 to leave the choice of provider open.
10306 </para>
10307
10308 <para>
10309 Conventionally, virtual targets have names on the form
10310 "virtual/function" (e.g. "virtual/kernel").
10311 The slash is simply part of the name and has no
10312 syntactical significance.
10313 </para>
10314
10315 <para>
10316 The
10317 <link linkend='var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></link>
10318 variable is used to select which particular recipe
10319 provides a virtual target.
10320 <note>
10321 <para>A corresponding mechanism for virtual runtime
10322 dependencies (packages) exists.
10323 However, the mechanism does not depend on any special
10324 functionality beyond ordinary variable assignments.
10325 For example,
10326 <filename>VIRTUAL-RUNTIME_dev_manager</filename>
10327 refers to the package of the component that manages
10328 the <filename>/dev</filename> directory.</para>
10329
10330 <para>Setting the "preferred provider" for runtime
10331 dependencies is as simple as using the following
10332 assignment in a configuration file:</para>
10333 <literallayout class='monospaced'>
10334 VIRTUAL-RUNTIME_dev_manager = "udev"
10335 </literallayout>
10336 </note>
10337 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010338 </glossdef>
10339 </glossentry>
10340
10341 <glossentry id='var-PRSERV_HOST'><glossterm>PRSERV_HOST</glossterm>
10342 <info>
10343 PRSERV_HOST[doc] = "The network based PR service host and port."
10344 </info>
10345 <glossdef>
10346 <para role="glossdeffirst">
10347<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10348 The network based
10349 <link linkend='var-PR'><filename>PR</filename></link>
10350 service host and port.
10351 </para>
10352
10353 <para>
10354 The <filename>conf/local.conf.sample.extended</filename>
10355 configuration file in the
10356 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
10357 shows how the <filename>PRSERV_HOST</filename> variable is
10358 set:
10359 <literallayout class='monospaced'>
10360 PRSERV_HOST = "localhost:0"
10361 </literallayout>
10362 You must set the variable if you want to automatically
10363 start a local
10364 <ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>PR service</ulink>.
10365 You can set <filename>PRSERV_HOST</filename> to other
10366 values to use a remote PR service.
10367 </para>
10368 </glossdef>
10369 </glossentry>
10370
10371 <glossentry id='var-PTEST_ENABLED'><glossterm>PTEST_ENABLED</glossterm>
10372 <info>
10373 PRSERV_HOST[doc] = "Specifies whether or not Package Test (ptest) functionality is enabled when building a recipe."
10374 </info>
10375 <glossdef>
10376 <para role="glossdeffirst">
10377<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10378 Specifies whether or not
10379 <ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Package Test</ulink>
10380 (ptest) functionality is enabled when building a recipe.
10381 You should not set this variable directly.
10382 Enabling and disabling building Package Tests
10383 at build time should be done by adding "ptest" to (or
10384 removing it from)
10385 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
10386 </para>
10387 </glossdef>
10388 </glossentry>
10389
10390 <glossentry id='var-PV'><glossterm>PV</glossterm>
10391 <info>
10392 PV[doc] = "The version of the recipe. The version is normally extracted from the recipe filename."
10393 </info>
10394 <glossdef>
10395 <para role="glossdeffirst">
10396<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10397 The version of the recipe.
10398 The version is normally extracted from the recipe filename.
10399 For example, if the recipe is named
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010400 <filename>expat_2.0.1.bb</filename>, then the default value
10401 of <filename>PV</filename> will be "2.0.1".
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010402 <filename>PV</filename> is generally not overridden within
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010403 a recipe unless it is building an unstable (i.e.
10404 development) version from a source code repository
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010405 (e.g. Git or Subversion).
10406 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010407
10408 <para>
10409 <filename>PV</filename> is the default value of the
10410 <link linkend='var-PKGV'><filename>PKGV</filename></link>
10411 variable.
10412 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010413 </glossdef>
10414 </glossentry>
10415
10416 <glossentry id='var-PYTHON_ABI'><glossterm>PYTHON_ABI</glossterm>
10417 <info>
10418 PYTHON_ABI[doc] = "When used by recipes that inherit the distutils3, setuptools3, distutils, or setuptools classes, denotes the Application Binary Interface (ABI) currently in use for Python."
10419 </info>
10420 <glossdef>
10421 <para role="glossdeffirst">
10422<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10423 When used by recipes that inherit the
10424 <link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>,
10425 <link linkend='ref-classes-setuptools3'><filename>setuptools3</filename></link>,
10426 <link linkend='ref-classes-distutils'><filename>distutils</filename></link>,
10427 or
10428 <link linkend='ref-classes-setuptools'><filename>setuptools</filename></link>
10429 classes, denotes the Application Binary Interface (ABI)
10430 currently in use for Python.
10431 By default, the ABI is "m".
10432 You do not have to set this variable as the OpenEmbedded
10433 build system sets it for you.
10434 </para>
10435
10436 <para>
10437 The OpenEmbedded build system uses the ABI to construct
10438 directory names used when installing the Python headers
10439 and libraries in sysroot
10440 (e.g. <filename>.../python3.3m/...</filename>).
10441 </para>
10442
10443 <para>
10444 Recipes that inherit the
10445 <link linkend='ref-classes-distutils'><filename>distutils</filename></link>
10446 class during cross-builds also use this variable to
10447 locate the headers and libraries of the appropriate Python
10448 that the extension is targeting.
10449 </para>
10450 </glossdef>
10451 </glossentry>
10452
10453 <glossentry id='var-PYTHON_PN'><glossterm>PYTHON_PN</glossterm>
10454 <info>
10455 PYTHON_PN[doc] = "When used by recipes that inherit the distutils3, setuptools3, distutils, or setuptools classes, specifies the major Python version being built."
10456 </info>
10457 <glossdef>
10458 <para role="glossdeffirst">
10459<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10460 When used by recipes that inherit the
10461 <link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>,
10462 <link linkend='ref-classes-setuptools3'><filename>setuptools3</filename></link>,
10463 <link linkend='ref-classes-distutils'><filename>distutils</filename></link>,
10464 or
10465 <link linkend='ref-classes-setuptools'><filename>setuptools</filename></link>
10466 classes, specifies the major Python version being built.
10467 For Python 2.x, <filename>PYTHON_PN</filename> would
10468 be "python2". For Python 3.x, the variable would be
10469 "python3".
10470 You do not have to set this variable as the
10471 OpenEmbedded build system automatically sets it for you.
10472 </para>
10473
10474 <para>
10475 The variable allows recipes to use common infrastructure
10476 such as the following:
10477 <literallayout class='monospaced'>
10478 DEPENDS += "${PYTHON_PN}-native"
10479 </literallayout>
10480 In the previous example, the version of the dependency
10481 is <filename>PYTHON_PN</filename>.
10482 </para>
10483 </glossdef>
10484 </glossentry>
10485
10486 </glossdiv>
10487
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010488 <glossdiv id='var-glossary-r'><title>R</title>
10489
10490 <glossentry id='var-RANLIB'><glossterm>RANLIB</glossterm>
10491 <info>
10492 RANLIB[doc] = "Minimal command and arguments to run 'ranlib'."
10493 </info>
10494 <glossdef>
10495 <para role="glossdeffirst">
10496<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10497 The minimal command and arguments to run
10498 <filename>ranlib</filename>.
10499 </para>
10500 </glossdef>
10501 </glossentry>
10502
10503 <glossentry id='var-RCONFLICTS'><glossterm>RCONFLICTS</glossterm>
10504 <info>
10505 RCONFLICTS[doc] = "The list of packages that conflict with another package. Note that the package will not be installed if the conflicting packages are not first removed."
10506 </info>
10507 <glossdef>
10508 <para role="glossdeffirst">
10509<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10510 The list of packages that conflict with packages.
10511 Note that packages will not be installed if conflicting
10512 packages are not first removed.
10513 </para>
10514
10515 <para>
10516 Like all package-controlling variables, you must always use
10517 them in conjunction with a package name override.
10518 Here is an example:
10519 <literallayout class='monospaced'>
10520 RCONFLICTS_${PN} = "<replaceable>another_conflicting_package_name</replaceable>"
10521 </literallayout>
10522 </para>
10523
10524 <para>
10525 BitBake, which the OpenEmbedded build system uses, supports
10526 specifying versioned dependencies.
10527 Although the syntax varies depending on the packaging
10528 format, BitBake hides these differences from you.
10529 Here is the general syntax to specify versions with
10530 the <filename>RCONFLICTS</filename> variable:
10531 <literallayout class='monospaced'>
10532 RCONFLICTS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
10533 </literallayout>
10534 For <filename>operator</filename>, you can specify the
10535 following:
10536 <literallayout class='monospaced'>
10537 =
10538 &lt;
10539 &gt;
10540 &lt;=
10541 &gt;=
10542 </literallayout>
10543 For example, the following sets up a dependency on version
10544 1.2 or greater of the package <filename>foo</filename>:
10545 <literallayout class='monospaced'>
10546 RCONFLICTS_${PN} = "foo (>= 1.2)"
10547 </literallayout>
10548 </para>
10549 </glossdef>
10550 </glossentry>
10551
10552 <glossentry id='var-RDEPENDS'><glossterm>RDEPENDS</glossterm>
10553 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010554 RDEPENDS[doc] = "Lists runtime dependencies of a package."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010555 </info>
10556 <glossdef>
10557 <para role="glossdeffirst">
10558<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010559 Lists runtime dependencies of a package.
10560 These dependencies are other packages that must be
10561 installed in order for the package to function correctly.
10562 As an example, the following assignment declares that the
10563 package <filename>foo</filename> needs the packages
10564 <filename>bar</filename> and <filename>baz</filename> to
10565 be installed:
10566 <literallayout class='monospaced'>
10567 RDEPENDS_foo = "bar baz"
10568 </literallayout>
10569 The most common types of package runtime dependencies are
10570 automatically detected and added.
10571 Therefore, most recipes do not need to set
10572 <filename>RDEPENDS</filename>.
10573 For more information, see the
10574 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
10575 section.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010576 </para>
10577
10578 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010579 The practical effect of the above
10580 <filename>RDEPENDS</filename> assignment is that
10581 <filename>bar</filename> and <filename>baz</filename>
10582 will be declared as dependencies inside the package
10583 <filename>foo</filename> when it is written out by one of
10584 the
10585 <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_*</filename></link>
10586 tasks.
10587 Exactly how this is done depends on which package format
10588 is used, which is determined by
10589 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>.
10590 When the corresponding package manager installs the
10591 package, it will know to also install the packages on
10592 which it depends.
10593 </para>
10594
10595 <para>
10596 To ensure that the packages <filename>bar</filename> and
10597 <filename>baz</filename> get built, the previous
10598 <filename>RDEPENDS</filename> assignment also causes a task
10599 dependency to be added.
10600 This dependency is from the recipe's
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010601 <link linkend='ref-tasks-build'><filename>do_build</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010602 (not to be confused with
10603 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>)
10604 task to the <filename>do_package_write_*</filename>
10605 task of the recipes that build <filename>bar</filename> and
10606 <filename>baz</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010607 </para>
10608
10609 <para>
10610 The names of the packages you list within
10611 <filename>RDEPENDS</filename> must be the names of other
10612 packages - they cannot be recipe names.
10613 Although package names and recipe names usually match,
10614 the important point here is that you are
10615 providing package names within the
10616 <filename>RDEPENDS</filename> variable.
10617 For an example of the default list of packages created from
10618 a recipe, see the
10619 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
10620 variable.
10621 </para>
10622
10623 <para>
10624 Because the <filename>RDEPENDS</filename> variable applies
10625 to packages being built, you should always use the variable
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010626 in a form with an attached package name (remember that a
10627 single recipe can build multiple packages).
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010628 For example, suppose you are building a development package
10629 that depends on the <filename>perl</filename> package.
10630 In this case, you would use the following
10631 <filename>RDEPENDS</filename> statement:
10632 <literallayout class='monospaced'>
10633 RDEPENDS_${PN}-dev += "perl"
10634 </literallayout>
10635 In the example, the development package depends on
10636 the <filename>perl</filename> package.
10637 Thus, the <filename>RDEPENDS</filename> variable has the
10638 <filename>${PN}-dev</filename> package name as part of the
10639 variable.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010640 <note>
10641 <title>Caution</title>
10642 <filename>RDEPENDS_${PN}-dev</filename> includes
10643 <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>
10644 by default.
10645 This default is set in the BitBake configuration file
10646 (<filename>meta/conf/bitbake.conf</filename>).
10647 Be careful not to accidentally remove
10648 <filename>${PN}</filename> when modifying
10649 <filename>RDEPENDS_${PN}-dev</filename>.
10650 Use the "+=" operator rather than the "=" operator.
10651 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010652 </para>
10653
10654 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010655 The package names you use with
10656 <filename>RDEPENDS</filename> must appear as they would in
10657 the <filename>PACKAGES</filename> variable.
10658 The
10659 <link linkend='var-PKG'><filename>PKG</filename></link>
10660 variable allows a different name to be used for
10661 the final package (e.g. the
10662 <link linkend='ref-classes-debian'><filename>debian</filename></link>
10663 class uses this to rename packages), but this final package
10664 name cannot be used with <filename>RDEPENDS</filename>,
10665 which makes sense as <filename>RDEPENDS</filename> is meant
10666 to be independent of the package format used.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010667 </para>
10668
10669 <para>
10670 BitBake, which the OpenEmbedded build system uses, supports
10671 specifying versioned dependencies.
10672 Although the syntax varies depending on the packaging
10673 format, BitBake hides these differences from you.
10674 Here is the general syntax to specify versions with
10675 the <filename>RDEPENDS</filename> variable:
10676 <literallayout class='monospaced'>
10677 RDEPENDS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
10678 </literallayout>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050010679 For <replaceable>operator</replaceable>, you can specify the
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010680 following:
10681 <literallayout class='monospaced'>
10682 =
10683 &lt;
10684 &gt;
10685 &lt;=
10686 &gt;=
10687 </literallayout>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050010688 For <replaceable>version</replaceable>, provide the version
10689 number.
10690 <note><title>Tip</title>
10691 You can use
10692 <link linkend='var-EXTENDPKGV'><filename>EXTENDPKGV</filename></link>
10693 to provide a full package version specification.
10694 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010695 For example, the following sets up a dependency on version
10696 1.2 or greater of the package <filename>foo</filename>:
10697 <literallayout class='monospaced'>
10698 RDEPENDS_${PN} = "foo (>= 1.2)"
10699 </literallayout>
10700 </para>
10701
10702 <para>
10703 For information on build-time dependencies, see the
10704 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
10705 variable.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010706 You can also see the
10707 "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
10708 "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
10709 sections in the BitBake User Manual for additional
10710 information on tasks and dependencies.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010711 </para>
10712 </glossdef>
10713 </glossentry>
10714
10715 <glossentry id='var-REQUIRED_DISTRO_FEATURES'><glossterm>REQUIRED_DISTRO_FEATURES</glossterm>
10716 <info>
10717 REQUIRED_DISTRO_FEATURES[doc] = "When a recipe inherits the distro_features_check class, this variable identifies distribution features that must exist in the current configuration in order for the OpenEmbedded build system to build the recipe."
10718 </info>
10719 <glossdef>
10720 <para role="glossdeffirst">
10721<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10722 When inheriting the
10723 <link linkend='ref-classes-distro_features_check'><filename>distro_features_check</filename></link>
10724 class, this
10725 variable identifies distribution features that must
10726 exist in the current configuration in order for the
10727 OpenEmbedded build system to build the recipe.
10728 In other words, if the
10729 <filename>REQUIRED_DISTRO_FEATURES</filename> variable
10730 lists a feature that does not appear in
10731 <filename>DISTRO_FEATURES</filename> within the
10732 current configuration, an error occurs and the
10733 build stops.
10734 </para>
10735 </glossdef>
10736 </glossentry>
10737
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010738 <glossentry id='var-RM_WORK_EXCLUDE'><glossterm>RM_WORK_EXCLUDE</glossterm>
10739 <info>
10740 RM_WORK_EXCLUDE[doc] = "With rm_work enabled, this variable specifies a list of packages whose work directories should not be removed."
10741 </info>
10742 <glossdef>
10743 <para role="glossdeffirst">
10744<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10745 With <filename>rm_work</filename> enabled, this
10746 variable specifies a list of recipes whose work directories
10747 should not be removed.
10748 See the "<link linkend='ref-classes-rm-work'><filename>rm_work.bbclass</filename></link>"
10749 section for more details.
10750 </para>
10751 </glossdef>
10752 </glossentry>
10753
10754 <glossentry id='var-ROOT_HOME'><glossterm>ROOT_HOME</glossterm>
10755 <info>
10756 ROOT_HOME[doc] = "Defines the root home directory."
10757 </info>
10758 <glossdef>
10759 <para role="glossdeffirst">
10760<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10761 Defines the root home directory.
10762 By default, this directory is set as follows in the
10763 BitBake configuration file:
10764 <literallayout class='monospaced'>
10765 ROOT_HOME ??= "/home/root"
10766 </literallayout>
10767 <note>
10768 This default value is likely used because some
10769 embedded solutions prefer to have a read-only root
10770 filesystem and prefer to keep writeable data in one
10771 place.
10772 </note>
10773 </para>
10774
10775 <para>
10776 You can override the default by setting the variable
10777 in any layer or in the <filename>local.conf</filename> file.
10778 Because the default is set using a "weak" assignment
10779 (i.e. "??="), you can use either of the following forms
10780 to define your override:
10781 <literallayout class='monospaced'>
10782 ROOT_HOME = "/root"
10783 ROOT_HOME ?= "/root"
10784 </literallayout>
10785 These override examples use <filename>/root</filename>,
10786 which is probably the most commonly used override.
10787 </para>
10788 </glossdef>
10789 </glossentry>
10790
10791 <glossentry id='var-ROOTFS'><glossterm>ROOTFS</glossterm>
10792 <info>
10793 ROOTFS[doc] = "Indicates a filesystem image to include as the root filesystem."
10794 </info>
10795 <glossdef>
10796 <para role="glossdeffirst">
10797<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10798 Indicates a filesystem image to include as the root
10799 filesystem.
10800 </para>
10801
10802 <para>
10803 The <filename>ROOTFS</filename> variable is an optional
10804 variable used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050010805 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010806 class.
10807 </para>
10808 </glossdef>
10809 </glossentry>
10810
10811 <glossentry id='var-ROOTFS_POSTINSTALL_COMMAND'><glossterm>ROOTFS_POSTINSTALL_COMMAND</glossterm>
10812 <info>
10813 ROOTFS_POSTINSTALL_COMMAND[doc] = "Specifies a list of functions to call after installing packages."
10814 </info>
10815 <glossdef>
10816 <para role="glossdeffirst">
10817<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10818 Specifies a list of functions to call after the
10819 OpenEmbedded build system has installed packages.
10820 You can specify functions separated by semicolons:
10821 <literallayout class='monospaced'>
10822 ROOTFS_POSTINSTALL_COMMAND += "<replaceable>function</replaceable>; ... "
10823 </literallayout>
10824 </para>
10825
10826 <para>
10827 If you need to pass the root filesystem path to a command
10828 within a function, you can use
10829 <filename>${IMAGE_ROOTFS}</filename>, which points to
10830 the directory that becomes the root filesystem image.
10831 See the
10832 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
10833 variable for more information.
10834 </para>
10835 </glossdef>
10836 </glossentry>
10837
10838 <glossentry id='var-ROOTFS_POSTPROCESS_COMMAND'><glossterm>ROOTFS_POSTPROCESS_COMMAND</glossterm>
10839 <info>
10840 ROOTFS_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created the root filesystem."
10841 </info>
10842 <glossdef>
10843 <para role="glossdeffirst">
10844<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10845 Specifies a list of functions to call once the
10846 OpenEmbedded build system has created the root filesystem.
10847 You can specify functions separated by semicolons:
10848 <literallayout class='monospaced'>
10849 ROOTFS_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
10850 </literallayout>
10851 </para>
10852
10853 <para>
10854 If you need to pass the root filesystem path to a command
10855 within a function, you can use
10856 <filename>${IMAGE_ROOTFS}</filename>, which points to
10857 the directory that becomes the root filesystem image.
10858 See the
10859 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
10860 variable for more information.
10861 </para>
10862 </glossdef>
10863 </glossentry>
10864
10865 <glossentry id='var-ROOTFS_POSTUNINSTALL_COMMAND'><glossterm>ROOTFS_POSTUNINSTALL_COMMAND</glossterm>
10866 <info>
10867 ROOTFS_POSTUNINSTALL_COMMAND[doc] = "Specifies a list of functions to call after removal of unneeded packages."
10868 </info>
10869 <glossdef>
10870 <para role="glossdeffirst">
10871<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10872 Specifies a list of functions to call after the
10873 OpenEmbedded build system has removed unnecessary
10874 packages.
10875 When runtime package management is disabled in the
10876 image, several packages are removed including
10877 <filename>base-passwd</filename>,
10878 <filename>shadow</filename>, and
10879 <filename>update-alternatives</filename>.
10880 You can specify functions separated by semicolons:
10881 <literallayout class='monospaced'>
10882 ROOTFS_POSTUNINSTALL_COMMAND += "<replaceable>function</replaceable>; ... "
10883 </literallayout>
10884 </para>
10885
10886 <para>
10887 If you need to pass the root filesystem path to a command
10888 within a function, you can use
10889 <filename>${IMAGE_ROOTFS}</filename>, which points to
10890 the directory that becomes the root filesystem image.
10891 See the
10892 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
10893 variable for more information.
10894 </para>
10895 </glossdef>
10896 </glossentry>
10897
10898 <glossentry id='var-ROOTFS_PREPROCESS_COMMAND'><glossterm>ROOTFS_PREPROCESS_COMMAND</glossterm>
10899 <info>
10900 ROOTFS_PREPROCESS_COMMAND[doc] = "Specifies a list of functions to call before the OpenEmbedded build system has created the root filesystem."
10901 </info>
10902 <glossdef>
10903 <para role="glossdeffirst">
10904<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10905 Specifies a list of functions to call before the
10906 OpenEmbedded build system has created the root filesystem.
10907 You can specify functions separated by semicolons:
10908 <literallayout class='monospaced'>
10909 ROOTFS_PREPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
10910 </literallayout>
10911 </para>
10912
10913 <para>
10914 If you need to pass the root filesystem path to a command
10915 within a function, you can use
10916 <filename>${IMAGE_ROOTFS}</filename>, which points to
10917 the directory that becomes the root filesystem image.
10918 See the
10919 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
10920 variable for more information.
10921 </para>
10922 </glossdef>
10923 </glossentry>
10924
10925 <glossentry id='var-RPROVIDES'><glossterm>RPROVIDES</glossterm>
10926 <info>
10927 RPROVIDES[doc] = "A list of package name aliases that a package also provides. These aliases are useful for satisfying runtime dependencies of other packages both during the build and on the target."
10928 </info>
10929 <glossdef>
10930 <para role="glossdeffirst">
10931<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10932 A list of package name aliases that a package also provides.
10933 These aliases are useful for satisfying runtime dependencies
10934 of other packages both during the build and on the target
10935 (as specified by
10936 <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename>).
10937 <note>
10938 A package's own name is implicitly already in its
10939 <filename>RPROVIDES</filename> list.
10940 </note>
10941 </para>
10942
10943 <para>
10944 As with all package-controlling variables, you must always
10945 use the variable in conjunction with a package name override.
10946 Here is an example:
10947 <literallayout class='monospaced'>
10948 RPROVIDES_${PN} = "widget-abi-2"
10949 </literallayout>
10950 </para>
10951 </glossdef>
10952 </glossentry>
10953
10954 <glossentry id='var-RRECOMMENDS'><glossterm>RRECOMMENDS</glossterm>
10955 <info>
10956 RRECOMMENDS[doc] = "A list of packages that extends the usability of a package being built. The package being built does not depend on this list of packages in order to successfully build, but needs them for the extended usability."
10957 </info>
10958 <glossdef>
10959 <para role="glossdeffirst">
10960<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10961 A list of packages that extends the usability of a package
10962 being built.
10963 The package being built does not depend on this list of
10964 packages in order to successfully build, but rather
10965 uses them for extended usability.
10966 To specify runtime dependencies for packages, see the
10967 <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename>
10968 variable.
10969 </para>
10970
10971 <para>
10972 The package manager will automatically install the
10973 <filename>RRECOMMENDS</filename> list of packages when
10974 installing the built package.
10975 However, you can prevent listed packages from being
10976 installed by using the
10977 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>,
10978 <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>,
10979 and
10980 <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
10981 variables.
10982 </para>
10983
10984 <para>
10985 Packages specified in
10986 <filename>RRECOMMENDS</filename> need not actually be
10987 produced.
10988 However, a recipe must exist that provides each package,
10989 either through the
10990 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
10991 or
10992 <link linkend='var-PACKAGES_DYNAMIC'><filename>PACKAGES_DYNAMIC</filename></link>
10993 variables or the
10994 <link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>
10995 variable, or an error will occur during the build.
10996 If such a recipe does exist and the package is not produced,
10997 the build continues without error.
10998 </para>
10999
11000 <para>
11001 Because the <filename>RRECOMMENDS</filename> variable
11002 applies to packages being built, you should always attach
11003 an override to the variable to specify the particular
11004 package whose usability is being extended.
11005 For example, suppose you are building a development package
11006 that is extended to support wireless functionality.
11007 In this case, you would use the following:
11008 <literallayout class='monospaced'>
11009 RRECOMMENDS_${PN}-dev += "<replaceable>wireless_package_name</replaceable>"
11010 </literallayout>
11011 In the example, the package name
11012 (<filename>${<link linkend='var-PN'>PN</link>}-dev</filename>)
11013 must appear as it would in the
11014 <filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
11015 namespace before any renaming of the output package by
11016 classes such as <filename>debian.bbclass</filename>.
11017 </para>
11018
11019 <para>
11020 BitBake, which the OpenEmbedded build system uses, supports
11021 specifying versioned recommends.
11022 Although the syntax varies depending on the packaging
11023 format, BitBake hides these differences from you.
11024 Here is the general syntax to specify versions with
11025 the <filename>RRECOMMENDS</filename> variable:
11026 <literallayout class='monospaced'>
11027 RRECOMMENDS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
11028 </literallayout>
11029 For <filename>operator</filename>, you can specify the
11030 following:
11031 <literallayout class='monospaced'>
11032 =
11033 &lt;
11034 &gt;
11035 &lt;=
11036 &gt;=
11037 </literallayout>
11038 For example, the following sets up a recommend on version
11039 1.2 or greater of the package <filename>foo</filename>:
11040 <literallayout class='monospaced'>
11041 RRECOMMENDS_${PN} = "foo (>= 1.2)"
11042 </literallayout>
11043 </para>
11044 </glossdef>
11045 </glossentry>
11046
11047 <glossentry id='var-RREPLACES'><glossterm>RREPLACES</glossterm>
11048 <info>
11049 RREPLACES[doc] = "A list of packages replaced by a package. The package manager uses this variable to determine which package should be installed to replace other package(s) during an upgrade."
11050 </info>
11051 <glossdef>
11052 <para role="glossdeffirst">
11053<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11054 A list of packages replaced by a package.
11055 The package manager uses this variable to determine which
11056 package should be installed to replace other package(s)
11057 during an upgrade.
11058 In order to also have the other package(s) removed at the
11059 same time, you must add the name of the other
11060 package to the
11061 <filename><link linkend='var-RCONFLICTS'>RCONFLICTS</link></filename> variable.
11062 </para>
11063
11064 <para>
11065 As with all package-controlling variables, you must use
11066 this variable in conjunction with a package name
11067 override.
11068 Here is an example:
11069 <literallayout class='monospaced'>
11070 RREPLACES_${PN} = "<replaceable>other_package_being_replaced</replaceable>"
11071 </literallayout>
11072 </para>
11073
11074 <para>
11075 BitBake, which the OpenEmbedded build system uses, supports
11076 specifying versioned replacements.
11077 Although the syntax varies depending on the packaging
11078 format, BitBake hides these differences from you.
11079 Here is the general syntax to specify versions with
11080 the <filename>RREPLACES</filename> variable:
11081 <literallayout class='monospaced'>
11082 RREPLACES_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
11083 </literallayout>
11084 For <filename>operator</filename>, you can specify the
11085 following:
11086 <literallayout class='monospaced'>
11087 =
11088 &lt;
11089 &gt;
11090 &lt;=
11091 &gt;=
11092 </literallayout>
11093 For example, the following sets up a replacement using
11094 version 1.2 or greater of the package
11095 <filename>foo</filename>:
11096 <literallayout class='monospaced'>
11097 RREPLACES_${PN} = "foo (>= 1.2)"
11098 </literallayout>
11099 </para>
11100 </glossdef>
11101 </glossentry>
11102
11103 <glossentry id='var-RSUGGESTS'><glossterm>RSUGGESTS</glossterm>
11104 <info>
11105 RSUGGESTS[doc] = "A list of additional packages that you can suggest for installation by the package manager at the time a package is installed. Not all package managers support this functionality."
11106 </info>
11107 <glossdef>
11108 <para role="glossdeffirst">
11109<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11110 A list of additional packages that you can suggest for
11111 installation by the package manager at the time a package
11112 is installed.
11113 Not all package managers support this functionality.
11114 </para>
11115
11116 <para>
11117 As with all package-controlling variables, you must always
11118 use this variable in conjunction with a package name
11119 override.
11120 Here is an example:
11121 <literallayout class='monospaced'>
11122 RSUGGESTS_${PN} = "<replaceable>useful_package</replaceable> <replaceable>another_package</replaceable>"
11123 </literallayout>
11124 </para>
11125 </glossdef>
11126 </glossentry>
11127
11128 </glossdiv>
11129
11130 <glossdiv id='var-glossary-s'><title>S</title>
11131
11132 <glossentry id='var-S'><glossterm>S</glossterm>
11133 <info>
11134 S[doc] = "The location in the Build Directory where unpacked package source code resides."
11135 </info>
11136 <glossdef>
11137 <para role="glossdeffirst">
11138<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11139 The location in the
11140 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
11141 where unpacked recipe source code resides.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011142 By default, this directory is
11143 <filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}/${</filename><link linkend='var-BPN'><filename>BPN</filename></link><filename>}-${</filename><link linkend='var-PV'><filename>PV</filename></link><filename>}</filename>,
11144 where <filename>${BPN}</filename> is the base recipe name
11145 and <filename>${PV}</filename> is the recipe version.
11146 If the source tarball extracts the code to a directory
11147 named anything other than <filename>${BPN}-${PV}</filename>,
11148 or if the source code if fetched from an SCM such as
11149 Git or Subversion, then you must set <filename>S</filename>
11150 in the recipe so that the OpenEmbedded build system
11151 knows where to find the unpacked source.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011152 </para>
11153
11154 <para>
11155 As an example, assume a
11156 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
11157 top-level folder named <filename>poky</filename> and a
11158 default Build Directory at <filename>poky/build</filename>.
11159 In this case, the work directory the build system uses
11160 to keep the unpacked recipe for <filename>db</filename>
11161 is the following:
11162 <literallayout class='monospaced'>
11163 poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19
11164 </literallayout>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011165 The unpacked source code resides in the
11166 <filename>db-5.1.19</filename> folder.
11167 </para>
11168
11169 <para>
11170 This next example assumes a Git repository.
11171 By default, Git repositories are cloned to
11172 <filename>${WORKDIR}/git</filename> during
11173 <link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>.
11174 Since this path is different from the default value of
11175 <filename>S</filename>, you must set it specifically
11176 so the source can be located:
11177 <literallayout class='monospaced'>
11178 SRC_URI = "git://path/to/repo.git"
11179 S = "${WORKDIR}/git"
11180 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011181 </para>
11182 </glossdef>
11183 </glossentry>
11184
11185 <glossentry id='var-SANITY_REQUIRED_UTILITIES'><glossterm>SANITY_REQUIRED_UTILITIES</glossterm>
11186 <info>
11187 SANITY_REQUIRED_UTILITIES[doc] = "Specifies a list of command-line utilities that should be checked for during the initial sanity checking process when running BitBake."
11188 </info>
11189 <glossdef>
11190 <para role="glossdeffirst">
11191<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11192 Specifies a list of command-line utilities that should be
11193 checked for during the initial sanity checking process when
11194 running BitBake.
11195 If any of the utilities are not installed on the build host,
11196 then BitBake immediately exits with an error.
11197 </para>
11198 </glossdef>
11199 </glossentry>
11200
11201 <glossentry id='var-SANITY_TESTED_DISTROS'><glossterm>SANITY_TESTED_DISTROS</glossterm>
11202 <info>
11203 SANITY_TESTED_DISTROS[doc] = "A list of the host distribution identifiers that the build system has been tested against."
11204 </info>
11205 <glossdef>
11206 <para role="glossdeffirst">
11207<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11208 A list of the host distribution identifiers that the
11209 build system has been tested against.
11210 Identifiers consist of the host distributor ID
11211 followed by the release,
11212 as reported by the <filename>lsb_release</filename> tool
11213 or as read from <filename>/etc/lsb-release</filename>.
11214 Separate the list items with explicit newline
11215 characters (<filename>\n</filename>).
11216 If <filename>SANITY_TESTED_DISTROS</filename> is not empty
11217 and the current value of
11218 <link linkend='var-NATIVELSBSTRING'><filename>NATIVELSBSTRING</filename></link>
11219 does not appear in the list, then the build system reports
11220 a warning that indicates the current host distribution has
11221 not been tested as a build host.
11222 </para>
11223 </glossdef>
11224 </glossentry>
11225
11226 <glossentry id='var-SDK_ARCH'><glossterm>SDK_ARCH</glossterm>
11227 <info>
11228 SDK_ARCH[doc] = "The target architecture for the SDK."
11229 </info>
11230 <glossdef>
11231 <para role="glossdeffirst">
11232<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11233 The target architecture for the SDK.
11234 Typically, you do not directly set this variable.
11235 Instead, use
11236 <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>.
11237 </para>
11238 </glossdef>
11239 </glossentry>
11240
11241 <glossentry id='var-SDK_DEPLOY'><glossterm>SDK_DEPLOY</glossterm>
11242 <info>
11243 SDK_DEPLOY[doc] = "The directory set up and used by the populate_sdk_base to which the SDK is deployed."
11244 </info>
11245 <glossdef>
11246 <para role="glossdeffirst">
11247<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11248 The directory set up and used by the
11249 <link linkend='ref-classes-populate-sdk'><filename>populate_sdk_base</filename></link>
11250 to which the SDK is deployed.
11251 The <filename>populate_sdk_base</filename> class defines
11252 <filename>SDK_DEPLOY</filename> as follows:
11253 <literallayout class='monospaced'>
11254 SDK_DEPLOY = "${<link linkend='var-TMPDIR'>TMPDIR</link>}/deploy/sdk"
11255 </literallayout>
11256 </para>
11257 </glossdef>
11258 </glossentry>
11259
11260 <glossentry id='var-SDK_DIR'><glossterm>SDK_DIR</glossterm>
11261 <info>
11262 SDK_DIR[doc] = "The parent directory used by the OpenEmbedded build system when creating SDK output."
11263 </info>
11264 <glossdef>
11265 <para role="glossdeffirst">
11266<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11267 The parent directory used by the OpenEmbedded build system
11268 when creating SDK output.
11269 The
11270 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
11271 class defines the variable as follows:
11272 <literallayout class='monospaced'>
11273 SDK_DIR = "${<link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>}/sdk"
11274 </literallayout>
11275 <note>
11276 The <filename>SDK_DIR</filename> directory is a
11277 temporary directory as it is part of
11278 <filename>WORKDIR</filename>.
11279 The final output directory is
11280 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>.
11281 </note>
11282 </para>
11283 </glossdef>
11284 </glossentry>
11285
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011286 <glossentry id='var-SDK_EXT_TYPE'><glossterm>SDK_EXT_TYPE</glossterm>
11287 <info>
11288 SDK_EXT_TYPE[doc] = "Controls whether or not shared state artifacts are copied into the extensible SDK."
11289 </info>
11290 <glossdef>
11291 <para role="glossdeffirst">
11292<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11293 Controls whether or not shared state artifacts are copied
11294 into the extensible SDK.
11295 The default value of "full" copies all of the required
11296 shared state artifacts into the extensible SDK.
11297 The value "minimal" leaves these artifacts out of the
11298 SDK.
11299 <note>
11300 If you set the variable to "minimal", you need to
11301 ensure
11302 <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
11303 is set in the SDK's configuration to enable the
11304 artifacts to be fetched as needed.
11305 </note>
11306 </para>
11307 </glossdef>
11308 </glossentry>
11309
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011310 <glossentry id='var-SDK_HOST_MANIFEST'><glossterm>SDK_HOST_MANIFEST</glossterm>
11311 <info>
11312 SDK_HOST_MANIFEST[doc] = "The manifest file for the host part of the SDK. This file lists all the installed packages that make up the host part of the SDK."
11313 </info>
11314 <glossdef>
11315 <para role="glossdeffirst">
11316<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11317 The manifest file for the host part of the SDK.
11318 This file lists all the installed packages that make up
11319 the host part of SDK.
11320 The file contains package information on a line-per-package
11321 basis as follows:
11322 <literallayout class='monospaced'>
11323 <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
11324 </literallayout>
11325 </para>
11326
11327 <para>
11328 The
11329 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
11330 class defines the manifest file as follows:
11331 <literallayout class='monospaced'>
11332 SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
11333 </literallayout>
11334 The location is derived using the
11335 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>
11336 and
11337 <link linkend='var-TOOLCHAIN_OUTPUTNAME'><filename>TOOLCHAIN_OUTPUTNAME</filename></link>
11338 variables.
11339 </para>
11340 </glossdef>
11341 </glossentry>
11342
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011343 <glossentry id='var-SDK_INCLUDE_PKGDATA'><glossterm>SDK_INCLUDE_PKGDATA</glossterm>
11344 <info>
11345 SDK_INCLUDE_PKGDATA[doc] = "When set to "1", specifies to include the packagedata for all recipes in the "world" target in the extensible SDK."
11346 </info>
11347 <glossdef>
11348 <para role="glossdeffirst">
11349<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11350 When set to "1", specifies to include the packagedata for
11351 all recipes in the "world" target in the extensible SDK.
11352 Including this data allows the
11353 <filename>devtool search</filename> command to find these
11354 recipes in search results, as well as allows the
11355 <filename>devtool add</filename> command to map
11356 dependencies more effectively.
11357 <note>
11358 Enabling the <filename>SDK_INCLUDE_PKGDATA</filename>
11359 variable significantly increases build time because
11360 all of world needs to be built.
11361 Enabling the variable also slightly increases the size
11362 of the extensible SDK.
11363 </note>
11364 </para>
11365 </glossdef>
11366 </glossentry>
11367
Patrick Williamsc0f7c042017-02-23 20:41:17 -060011368 <glossentry id='var-SDK_INCLUDE_TOOLCHAIN'><glossterm>SDK_INCLUDE_TOOLCHAIN</glossterm>
11369 <info>
11370 SDK_INCLUDE_TOOLCHAIN[doc] = "When set to "1", specifies to include the toolchain in the extensible SDK."
11371 </info>
11372 <glossdef>
11373 <para role="glossdeffirst">
11374<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11375 When set to "1", specifies to include the toolchain in the
11376 extensible SDK.
11377 Including the toolchain is useful particularly when
11378 <link linkend='var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></link>
11379 is set to "minimal" to keep the SDK reasonably small
11380 but you still want to provide a usable toolchain.
11381 For example, suppose you want to use the toolchain from an
11382 IDE (e.g. Eclipse) or from other tools and you do not
11383 want to perform additional steps to install the toolchain.
11384 </para>
11385
11386 <para>
11387 The <filename>SDK_INCLUDE_TOOLCHAIN</filename> variable
11388 defaults to "0" if <filename>SDK_EXT_TYPE</filename>
11389 is set to "minimal", and defaults to "1" if
11390 <filename>SDK_EXT_TYPE</filename> is set to "full".
11391 </para>
11392 </glossdef>
11393 </glossentry>
11394
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011395 <glossentry id='var-SDK_INHERIT_BLACKLIST'><glossterm>SDK_INHERIT_BLACKLIST</glossterm>
11396 <info>
11397 SDK_INHERIT_BLACKLIST[doc] = "A list of classes to remove from the INHERIT value globally within the extensible SDK configuration."
11398 </info>
11399 <glossdef>
11400 <para role="glossdeffirst">
11401<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11402 A list of classes to remove from the
11403 <link linkend='var-INHERIT'><filename>INHERIT</filename></link>
11404 value globally within the extensible SDK configuration.
11405 The default value is "buildhistory icecc".
11406 </para>
11407
11408 <para>
11409 Some classes are not generally applicable within
11410 the extensible SDK context and you can use this variable
11411 to disable them.
11412 </para>
11413 </glossdef>
11414 </glossentry>
11415
11416 <glossentry id='var-SDK_LOCAL_CONF_BLACKLIST'><glossterm>SDK_LOCAL_CONF_BLACKLIST</glossterm>
11417 <info>
11418 SDK_LOCAL_CONF_BLACKLIST[doc] = "A list of variables not allowed through from the build system configuration into the extensible SDK configuration."
11419 </info>
11420 <glossdef>
11421 <para role="glossdeffirst">
11422<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11423 A list of variables not allowed through from the build
11424 system configuration into the extensible SDK configuration.
11425 Usually, these are variables that are specific to the
11426 machine on which the build system is running and thus
11427 would be potentially problematic within the extensible SDK.
11428 </para>
11429 </glossdef>
11430 </glossentry>
11431
11432 <glossentry id='var-SDK_LOCAL_CONF_WHITELIST'><glossterm>SDK_LOCAL_CONF_WHITELIST</glossterm>
11433 <info>
11434 SDK_LOCAL_CONF_WHITELIST[doc] = "A list of variables allowed through from the build system configuration into the extensible SDK configuration."
11435 </info>
11436 <glossdef>
11437 <para role="glossdeffirst">
11438<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11439 A list of variables allowed through from the build system
11440 configuration into the extensible SDK configuration.
11441 This list overrides the variables specified using the
11442 <link linkend='var-SDK_LOCAL_CONF_BLACKLIST'><filename>SDK_LOCAL_CONF_BLACKLIST</filename></link>
11443 variable as well as any variables identified by automatic
11444 blacklisting due to the "/" character being found at the
11445 start of the value, which is usually indicative of being a
11446 path and thus might not be valid on the system where the
11447 SDK is installed.
11448 </para>
11449 </glossdef>
11450 </glossentry>
11451
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011452 <glossentry id='var-SDK_NAME'><glossterm>SDK_NAME</glossterm>
11453 <info>
11454 SDK_NAME[doc] = "The base name for SDK output files."
11455 </info>
11456 <glossdef>
11457 <para role="glossdeffirst">
11458<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11459 The base name for SDK output files.
11460 The name is derived from the
11461 <link linkend='var-DISTRO'><filename>DISTRO</filename></link>,
11462 <link linkend='var-TCLIBC'><filename>TCLIBC</filename></link>,
11463 <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
11464 <link linkend='var-IMAGE_BASENAME'><filename>IMAGE_BASENAME</filename></link>,
11465 and
11466 <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>
11467 variables:
11468 <literallayout class='monospaced'>
11469 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
11470 </literallayout>
11471 </para>
11472 </glossdef>
11473 </glossentry>
11474
11475 <glossentry id='var-SDK_OS'><glossterm>SDK_OS</glossterm>
11476 <info>
11477 SDK_OS[doc] = "The operating system for which the SDK will be built."
11478 </info>
11479 <glossdef>
11480 <para role="glossdeffirst">
11481<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11482 Specifies the operating system for which the SDK
11483 will be built.
11484 The default value is the value of
11485 <link linkend='var-BUILD_OS'><filename>BUILD_OS</filename></link>.
11486 </para>
11487 </glossdef>
11488 </glossentry>
11489
11490 <glossentry id='var-SDK_OUTPUT'><glossterm>SDK_OUTPUT</glossterm>
11491 <info>
11492 SDK_OUTPUT[doc] = "The location used by the OpenEmbedded build system when creating SDK output."
11493 </info>
11494 <glossdef>
11495 <para role="glossdeffirst">
11496<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11497 The location used by the OpenEmbedded build system when
11498 creating SDK output.
11499 The
11500 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
11501 class defines the variable as follows:
11502 <literallayout class='monospaced'>
11503 SDK_OUTPUT = "${<link linkend='var-SDK_DIR'>SDK_DIR</link>}/image"
11504 </literallayout>
11505 <note>
11506 The <filename>SDK_OUTPUT</filename> directory is a
11507 temporary directory as it is part of
11508 <filename>WORKDIR</filename> by way of
11509 <filename>SDK_DIR</filename>.
11510 The final output directory is
11511 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>.
11512 </note>
11513 </para>
11514 </glossdef>
11515 </glossentry>
11516
11517 <glossentry id='var-SDK_PACKAGE_ARCHS'><glossterm>SDK_PACKAGE_ARCHS</glossterm>
11518 <info>
11519 SDK_PACKAGE_ARCHS[doc] = "Specifies a list of architectures compatible with the SDK machine. This variable is set automatically and should not normally be hand-edited."
11520 </info>
11521 <glossdef>
11522 <para role="glossdeffirst">
11523<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11524 Specifies a list of architectures compatible with
11525 the SDK machine.
11526 This variable is set automatically and should not
11527 normally be hand-edited.
11528 Entries are separated using spaces and listed in order
11529 of priority.
11530 The default value for
11531 <filename>SDK_PACKAGE_ARCHS</filename> is "all any noarch
11532 ${SDK_ARCH}-${SDKPKGSUFFIX}".
11533 </para>
11534 </glossdef>
11535 </glossentry>
11536
11537 <glossentry id='var-SDK_POSTPROCESS_COMMAND'><glossterm>SDK_POSTPROCESS_COMMAND</glossterm>
11538 <info>
11539 SDK_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created the SDK."
11540 </info>
11541 <glossdef>
11542 <para role="glossdeffirst">
11543<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11544 Specifies a list of functions to call once the
11545 OpenEmbedded build system has created the SDK.
11546 You can specify functions separated by semicolons:
11547 <literallayout class='monospaced'>
11548 SDK_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
11549 </literallayout>
11550 </para>
11551
11552 <para>
11553 If you need to pass an SDK path to a command within a
11554 function, you can use
11555 <filename>${SDK_DIR}</filename>, which points to
11556 the parent directory used by the OpenEmbedded build system
11557 when creating SDK output.
11558 See the
11559 <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
11560 variable for more information.
11561 </para>
11562 </glossdef>
11563 </glossentry>
11564
11565 <glossentry id='var-SDK_PREFIX'><glossterm>SDK_PREFIX</glossterm>
11566 <info>
11567 SDK_PREFIX[doc] = "The toolchain binary prefix used for nativesdk recipes."
11568 </info>
11569 <glossdef>
11570 <para role="glossdeffirst">
11571<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011572 The toolchain binary prefix used for
11573 <filename>nativesdk</filename> recipes.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011574 The OpenEmbedded build system uses the
11575 <filename>SDK_PREFIX</filename> value to set the
11576 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
11577 when building <filename>nativesdk</filename> recipes.
11578 The default value is "${SDK_SYS}-".
11579 </para>
11580 </glossdef>
11581 </glossentry>
11582
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011583 <glossentry id='var-SDK_RECRDEP_TASKS'><glossterm>SDK_RECRDEP_TASKS</glossterm>
11584 <info>
11585 SDK_RECRDEP_TASKS[doc] = "A list of shared state tasks added to the extensible SDK."
11586 </info>
11587 <glossdef>
11588 <para role="glossdeffirst">
11589<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11590 A list of shared state tasks added to the extensible SDK.
11591 By default, the following tasks are added:
11592 <literallayout class='monospaced'>
11593 do_populate_lic
11594 do_package_qa
11595 do_populate_sysroot
11596 do_deploy
11597 </literallayout>
11598 Despite the default value of "" for the
11599 <filename>SDK_RECRDEP_TASKS</filename> variable, the
11600 above four tasks are always added to the SDK.
11601 To specify tasks beyond these four, you need to use
11602 the <filename>SDK_RECRDEP_TASKS</filename> variable (e.g.
11603 you are defining additional tasks that are needed in
11604 order to build
11605 <link linkend='var-SDK_TARGETS'><filename>SDK_TARGETS</filename></link>).
11606 </para>
11607 </glossdef>
11608 </glossentry>
11609
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011610 <glossentry id='var-SDK_SYS'><glossterm>SDK_SYS</glossterm>
11611 <info>
11612 SDK_SYS[doc] = "Specifies the system, including the architecture and the operating system, for which the SDK will be built."
11613 </info>
11614 <glossdef>
11615 <para role="glossdeffirst">
11616<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11617 Specifies the system, including the architecture and the
11618 operating system, for which the SDK will be built.
11619 </para>
11620
11621 <para>
11622 The OpenEmbedded build system automatically sets this
11623 variable based on
11624 <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
11625 <link linkend='var-SDK_VENDOR'><filename>SDK_VENDOR</filename></link>,
11626 and
11627 <link linkend='var-SDK_OS'><filename>SDK_OS</filename></link>.
11628 You do not need to set the <filename>SDK_SYS</filename>
11629 variable yourself.
11630 </para>
11631 </glossdef>
11632 </glossentry>
11633
11634 <glossentry id='var-SDK_TARGET_MANIFEST'><glossterm>SDK_TARGET_MANIFEST</glossterm>
11635 <info>
11636 SDK_TARGET_MANIFEST[doc] = "The manifest file for the target part of the SDK. This file lists all the installed packages that make up the target part of the SDK."
11637 </info>
11638 <glossdef>
11639 <para role="glossdeffirst">
11640<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11641 The manifest file for the target part of the SDK.
11642 This file lists all the installed packages that make up
11643 the target part of the SDK.
11644 The file contains package information on a line-per-package
11645 basis as follows:
11646 <literallayout class='monospaced'>
11647 <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
11648 </literallayout>
11649 </para>
11650
11651 <para>
11652 The
11653 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
11654 class defines the manifest file as follows:
11655 <literallayout class='monospaced'>
11656 SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
11657 </literallayout>
11658 The location is derived using the
11659 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>
11660 and
11661 <link linkend='var-TOOLCHAIN_OUTPUTNAME'><filename>TOOLCHAIN_OUTPUTNAME</filename></link>
11662 variables.
11663 </para>
11664 </glossdef>
11665 </glossentry>
11666
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011667 <glossentry id='var-SDK_TARGETS'><glossterm>SDK_TARGETS</glossterm>
11668 <info>
11669 SDK_TARGETS[doc] = "A list of targets to install from shared state as part of the standard or extensible SDK installation."
11670 </info>
11671 <glossdef>
11672 <para role="glossdeffirst">
11673<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11674 A list of targets to install from shared state as part of
11675 the standard or extensible SDK installation.
11676 The default value is "${PN}" (i.e. the image from which
11677 the SDK is built).
11678 </para>
11679
11680 <para>
11681 The <filename>SDK_TARGETS</filename> variable is an
11682 internal variable and typically would not be changed.
11683 </para>
11684 </glossdef>
11685 </glossentry>
11686
11687 <glossentry id='var-SDK_TITLE'><glossterm>SDK_TITLE</glossterm>
11688 <info>
11689 SDK_TITLE[doc] = "Specifies a title to be printed when running the SDK installer."
11690 </info>
11691 <glossdef>
11692 <para role="glossdeffirst">
11693<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11694 Specifies a title to be printed when running the SDK
11695 installer.
11696 The <filename>SDK_TITLE</filename> variable defaults to
11697 "<replaceable>distro</replaceable> SDK" for the standard
11698 SDK and "<replaceable>distro</replaceable> Extensible SDK"
11699 for the extensible SDK, where
11700 <replaceable>distro</replaceable> is the first one of
11701 <link linkend='var-DISTRO_NAME'><filename>DISTRO_NAME</filename></link>
11702 or
11703 <link linkend='var-DISTRO'><filename>DISTRO</filename></link>
11704 that is set in your configuration.
11705 </para>
11706 </glossdef>
11707 </glossentry>
11708
11709 <glossentry id='var-SDK_UPDATE_URL'><glossterm>SDK_UPDATE_URL</glossterm>
11710 <info>
11711 SDK_UPDATE_URL[doc] = "An optional URL for an update server for the extensible SDK."
11712 </info>
11713 <glossdef>
11714 <para role="glossdeffirst">
11715<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11716 An optional URL for an update server for the extensible
11717 SDK.
11718 If set, the value is used as the default update server when
11719 running <filename>devtool sdk-update</filename> within the
11720 extensible SDK.
11721 </para>
11722 </glossdef>
11723 </glossentry>
11724
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011725 <glossentry id='var-SDK_VENDOR'><glossterm>SDK_VENDOR</glossterm>
11726 <info>
11727 SDK_VENDOR[doc] = "Specifies the name of the SDK vendor."
11728 </info>
11729 <glossdef>
11730 <para role="glossdeffirst">
11731<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11732 Specifies the name of the SDK vendor.
11733 </para>
11734 </glossdef>
11735 </glossentry>
11736
11737 <glossentry id='var-SDK_VERSION'><glossterm>SDK_VERSION</glossterm>
11738 <info>
11739 SDK_VERSION[doc] = "Specifies the version for the SDK."
11740 </info>
11741 <glossdef>
11742 <para role="glossdeffirst">
11743<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11744 Specifies the version of the SDK.
11745 The distribution configuration file (e.g.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011746 <filename>/meta-poky/conf/distro/poky.conf</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011747 defines the <filename>SDK_VERSION</filename> as follows:
11748 <literallayout class='monospaced'>
11749 SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
11750 </literallayout>
11751 </para>
11752
11753 <para>
11754 For additional information, see the
11755 <link linkend='var-DISTRO_VERSION'><filename>DISTRO_VERSION</filename></link>
11756 and
11757 <link linkend='var-DATE'><filename>DATE</filename></link>
11758 variables.
11759 </para>
11760 </glossdef>
11761 </glossentry>
11762
11763 <glossentry id='var-SDKIMAGE_FEATURES'><glossterm>SDKIMAGE_FEATURES</glossterm>
11764 <info>
11765 SDKIMAGE_FEATURES[doc] = "Equivalent to IMAGE_FEATURES. However, this variable applies to the SDK generated from an image using the command 'bitbake -c populate_sdk imagename'."
11766 </info>
11767 <glossdef>
11768 <para role="glossdeffirst">
11769<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11770 Equivalent to
11771 <filename><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></filename>.
11772 However, this variable applies to the SDK generated from an
11773 image using the following command:
11774 <literallayout class='monospaced'>
11775 $ bitbake -c populate_sdk <replaceable>imagename</replaceable>
11776 </literallayout>
11777 </para>
11778 </glossdef>
11779 </glossentry>
11780
11781 <glossentry id='var-SDKMACHINE'><glossterm>SDKMACHINE</glossterm>
11782 <info>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011783 SDKMACHINE[doc] = "Specifies the architecture (i.e. i686 or x86_64) for which to build SDK items."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011784 </info>
11785 <glossdef>
11786 <para role="glossdeffirst">
11787<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011788 The machine for which the SDK is built.
11789 In other words, the SDK is built such that it
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011790 runs on the target you specify with the
11791 <filename>SDKMACHINE</filename> value.
11792 The value points to a corresponding
11793 <filename>.conf</filename> file under
11794 <filename>conf/machine-sdk/</filename>.
11795 </para>
11796
11797 <para>
11798 You can use "i686" and "x86_64" as possible values
11799 for this variable. The variable defaults to "i686"
11800 and is set in the local.conf file in the Build Directory.
11801 <literallayout class='monospaced'>
11802 SDKMACHINE ?= "i686"
11803 </literallayout>
11804 <note>
11805 You cannot set the <filename>SDKMACHINE</filename>
11806 variable in your distribution configuration file.
11807 If you do, the configuration will not take affect.
11808 </note>
11809 </para>
11810 </glossdef>
11811 </glossentry>
11812
11813 <glossentry id='var-SDKPATH'><glossterm>SDKPATH</glossterm>
11814 <info>
11815 SDKPATH[doc] = "Defines the path offered to the user for installation of the SDK that is generated by the OpenEmbedded build system."
11816 </info>
11817 <glossdef>
11818 <para role="glossdeffirst">
11819<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11820 Defines the path offered to the user for installation
11821 of the SDK that is generated by the OpenEmbedded build
11822 system.
11823 The path appears as the default location for installing
11824 the SDK when you run the SDK's installation script.
11825 You can override the offered path when you run the
11826 script.
11827 </para>
11828 </glossdef>
11829 </glossentry>
11830
11831 <glossentry id='var-SDKTARGETSYSROOT'><glossterm>SDKTARGETSYSROOT</glossterm>
11832 <info>
11833 SDKTARGETSYSROOT[doc] = "Full path to the sysroot used for cross-compilation within an SDK as it will be when installed into the default SDKPATH."
11834 </info>
11835 <glossdef>
11836 <para role="glossdeffirst">
11837<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11838 The full path to the sysroot used for cross-compilation
11839 within an SDK as it will be when installed into the
11840 default
11841 <link linkend='var-SDKPATH'><filename>SDKPATH</filename></link>.
11842 </para>
11843 </glossdef>
11844 </glossentry>
11845
11846 <glossentry id='var-SECTION'><glossterm>SECTION</glossterm>
11847 <info>
11848 SECTION[doc] = "The section in which packages should be categorized. Package management utilities can make use of this variable."
11849 </info>
11850 <glossdef>
11851 <para role="glossdeffirst">
11852<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11853 The section in which packages should be categorized.
11854 Package management utilities can make use of this variable.
11855 </para>
11856 </glossdef>
11857 </glossentry>
11858
11859 <glossentry id='var-SELECTED_OPTIMIZATION'><glossterm>SELECTED_OPTIMIZATION</glossterm>
11860 <info>
11861 SELECTED_OPTIMIZATION[doc] = "The variable takes the value of FULL_OPTIMIZATION unless DEBUG_BUILD = '1'. In this case, the value of DEBUG_OPTIMIZATION is used."
11862 </info>
11863 <glossdef>
11864 <para role="glossdeffirst">
11865<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11866 Specifies the optimization flags passed to the C compiler
11867 when building for the target.
11868 The flags are passed through the default value of the
11869 <link linkend='var-TARGET_CFLAGS'><filename>TARGET_CFLAGS</filename></link>
11870 variable.
11871 </para>
11872
11873 <para>
11874 The <filename>SELECTED_OPTIMIZATION</filename> variable
11875 takes the value of
11876 <filename><link linkend='var-FULL_OPTIMIZATION'>FULL_OPTIMIZATION</link></filename>
11877 unless <filename><link linkend='var-DEBUG_BUILD'>DEBUG_BUILD</link></filename> = "1".
11878 If that is the case, the value of
11879 <filename><link linkend='var-DEBUG_OPTIMIZATION'>DEBUG_OPTIMIZATION</link></filename> is used.
11880 </para>
11881 </glossdef>
11882 </glossentry>
11883
11884 <glossentry id='var-SERIAL_CONSOLE'><glossterm>SERIAL_CONSOLE</glossterm>
11885 <info>
11886 SERIAL_CONSOLE[doc] = "The speed and device for the serial port used to attach the serial console. This variable is given to the kernel as the 'console' parameter. After booting occurs, getty is started on that port so remote login is possible."
11887 </info>
11888 <glossdef>
11889 <para role="glossdeffirst">
11890<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11891 Defines a serial console (TTY) to enable using getty.
11892 Provide a value that specifies the baud rate followed by
11893 the TTY device name separated by a space.
11894 You cannot specify more than one TTY device:
11895 <literallayout class='monospaced'>
11896 SERIAL_CONSOLE = "115200 ttyS0"
11897 </literallayout>
11898 <note>
11899 The <filename>SERIAL_CONSOLE</filename> variable
11900 is deprecated.
11901 Please use the
11902 <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>
11903 variable.
11904 </note>
11905 </para>
11906 </glossdef>
11907 </glossentry>
11908
11909 <glossentry id='var-SERIAL_CONSOLES'><glossterm>SERIAL_CONSOLES</glossterm>
11910 <info>
11911 SERIAL_CONSOLES[doc] = "Defines the serial consoles (TTYs) to enable using getty."
11912 </info>
11913 <glossdef>
11914 <para role="glossdeffirst">
11915<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11916 Defines the serial consoles (TTYs) to enable using getty.
11917 Provide a value that specifies the baud rate followed by
11918 the TTY device name separated by a semicolon.
11919 Use spaces to separate multiple devices:
11920 <literallayout class='monospaced'>
11921 SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
11922 </literallayout>
11923 </para>
11924 </glossdef>
11925 </glossentry>
11926
11927 <glossentry id='var-SERIAL_CONSOLES_CHECK'><glossterm>SERIAL_CONSOLES_CHECK</glossterm>
11928 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060011929 SERIAL_CONSOLES_CHECK[doc] = "Selected SERIAL_CONSOLES to check against /proc/console before enabling using getty. Supported only by SysVinit."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011930 </info>
11931 <glossdef>
11932 <para role="glossdeffirst">
11933<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060011934 Specifies serial consoles, which must be listed in
11935 <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>,
11936 to check against <filename>/proc/console</filename>
11937 before enabling them using getty.
11938 This variable allows aliasing in the format:
11939 &lt;device&gt;:&lt;alias&gt;.
11940 If a device was listed as "sclp_line0"
11941 in <filename>/dev/</filename> and "ttyS0" was listed
11942 in <filename>/proc/console</filename>, you would do the
11943 following:
11944 <literallayout class='monospaced'>
11945 SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0"
11946 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011947 This variable is currently only supported with SysVinit
11948 (i.e. not with systemd).
11949 </para>
11950 </glossdef>
11951 </glossentry>
11952
11953 <glossentry id='var-SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS'><glossterm>SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS</glossterm>
11954 <info>
11955 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS[doc] = "A list of recipe dependencies that should not be used to determine signatures of tasks from one recipe when they depend on tasks from another recipe."
11956 </info>
11957 <glossdef>
11958 <para role="glossdeffirst">
11959<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11960 A list of recipe dependencies that should not be used to
11961 determine signatures of tasks from one recipe when they
11962 depend on tasks from another recipe.
11963 For example:
11964 <literallayout class='monospaced'>
11965 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2"
11966 </literallayout>
11967 </para>
11968
11969 <para>
11970 In this example, <filename>intone</filename> depends on
11971 <filename>mplayer2</filename>.
11972 </para>
11973
11974 <para>
11975 Use of this variable is one mechanism to remove dependencies
11976 that affect task signatures and thus force rebuilds when a
11977 recipe changes.
11978 <note><title>Caution</title>
11979 If you add an inappropriate dependency for a recipe
11980 relationship, the software might break during
11981 runtime if the interface of the second recipe was
11982 changed after the first recipe had been built.
11983 </note>
11984 </para>
11985 </glossdef>
11986 </glossentry>
11987
11988 <glossentry id='var-SIGGEN_EXCLUDERECIPES_ABISAFE'><glossterm>SIGGEN_EXCLUDERECIPES_ABISAFE</glossterm>
11989 <info>
11990 SIGGEN_EXCLUDERECIPES_ABISAFE[doc] = "A list of recipes that are completely stable and will never change."
11991 </info>
11992 <glossdef>
11993 <para role="glossdeffirst">
11994<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11995 A list of recipes that are completely stable and will
11996 never change.
11997 The ABI for the recipes in the list are presented by
11998 output from the tasks run to build the recipe.
11999 Use of this variable is one way to remove dependencies from
12000 one recipe on another that affect task signatures and
12001 thus force rebuilds when the recipe changes.
12002 <note><title>Caution</title>
12003 If you add an inappropriate variable to this list,
12004 the software might break at runtime if the
12005 interface of the recipe was changed after the other
12006 had been built.
12007 </note>
12008 </para>
12009 </glossdef>
12010 </glossentry>
12011
12012 <glossentry id='var-SITEINFO_BITS'><glossterm>SITEINFO_BITS</glossterm>
12013 <info>
12014 SITEINFO_BITS[doc] = "Specifies the number of bits for the target system CPU."
12015 </info>
12016 <glossdef>
12017 <para role="glossdeffirst">
12018<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12019 Specifies the number of bits for the target system CPU.
12020 The value should be either "32" or "64".
12021 </para>
12022 </glossdef>
12023 </glossentry>
12024
12025 <glossentry id='var-SITEINFO_ENDIANNESS'><glossterm>SITEINFO_ENDIANNESS</glossterm>
12026 <info>
12027 SITEINFO_ENDIANNESS[doc] = "Specifies the endian byte order of the target system. The value should be either 'le' for 'little-endian' or 'be' for 'big-endian'."
12028 </info>
12029 <glossdef>
12030 <para role="glossdeffirst">
12031<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12032 Specifies the endian byte order of the target system.
12033 The value should be either "le" for little-endian or "be" for big-endian.
12034 </para>
12035 </glossdef>
12036 </glossentry>
12037
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012038 <glossentry id='var-SKIP_FILEDEPS'><glossterm>SKIP_FILEDEPS</glossterm>
12039 <info>
12040 SKIP_FILEDEPS[doc] = "Enables you to remove all files from
12041 the "Provides" section of an RPM package."
12042 </info>
12043 <glossdef>
12044 <para role="glossdeffirst">
12045<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12046 Enables removal of all files from the "Provides" section of
12047 an RPM package.
12048 Removal of these files is required for packages containing
12049 prebuilt binaries and libraries such as
12050 <filename>libstdc++</filename> and
12051 <filename>glibc</filename>.
12052 </para>
12053
12054 <para>
12055 To enable file removal, set the variable to "1" in your
12056 <filename>conf/local.conf</filename> configuration file
12057 in your:
12058 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
12059 <literallayout class='monospaced'>
12060 SKIP_FILEDEPS = "1"
12061 </literallayout>
12062 </para>
12063 </glossdef>
12064 </glossentry>
12065
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012066 <glossentry id='var-SOC_FAMILY'><glossterm>SOC_FAMILY</glossterm>
12067 <info>
12068 SOC_FAMILY[doc] = "Groups together machines based upon the same family of SOC (System On Chip). You typically set this variable in a common .inc file that you include in the configuration files of all the machines."
12069 </info>
12070 <glossdef>
12071 <para role="glossdeffirst">
12072<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12073 Groups together machines based upon the same family
12074 of SOC (System On Chip).
12075 You typically set this variable in a common
12076 <filename>.inc</filename> file that you include in the
12077 configuration files of all the machines.
12078 <note>
12079 You must include
12080 <filename>conf/machine/include/soc-family.inc</filename>
12081 for this variable to appear in
12082 <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>.
12083 </note>
12084 </para>
12085 </glossdef>
12086 </glossentry>
12087
12088 <glossentry id='var-SOLIBS'><glossterm>SOLIBS</glossterm>
12089 <info>
12090 SOLIBS[doc] = "Defines the suffix for shared libraries used on the target platform."
12091 </info>
12092 <glossdef>
12093 <para role="glossdeffirst">
12094<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12095 Defines the suffix for shared libraries used on the
12096 target platform.
12097 By default, this suffix is ".so.*" for all Linux-based
12098 systems and is defined in the
12099 <filename>meta/conf/bitbake.conf</filename> configuration
12100 file.
12101 </para>
12102
12103 <para>
12104 You will see this variable referenced in the default values
12105 of <filename>FILES_${PN}</filename>.
12106 </para>
12107 </glossdef>
12108 </glossentry>
12109
12110 <glossentry id='var-SOLIBSDEV'><glossterm>SOLIBSDEV</glossterm>
12111 <info>
12112 SOLIBSDEV[doc] = "Defines the suffix for the development symbolic link (symlink) for shared libraries on the target platform."
12113 </info>
12114 <glossdef>
12115 <para role="glossdeffirst">
12116<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12117 Defines the suffix for the development symbolic link
12118 (symlink) for shared libraries on the target platform.
12119 By default, this suffix is ".so" for Linux-based
12120 systems and is defined in the
12121 <filename>meta/conf/bitbake.conf</filename> configuration
12122 file.
12123 </para>
12124
12125 <para>
12126 You will see this variable referenced in the default values
12127 of <filename>FILES_${PN}-dev</filename>.
12128 </para>
12129 </glossdef>
12130 </glossentry>
12131
12132 <glossentry id='var-SOURCE_MIRROR_FETCH'><glossterm>SOURCE_MIRROR_FETCH</glossterm>
12133 <info>
12134 SOURCE_MIRROR_FETCH[doc] = "Set as part of a source mirror generation script to skip COMPATIBLE_MACHINE and COMPATIBLE_HOST checks."
12135 </info>
12136 <glossdef>
12137 <para role="glossdeffirst">
12138<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12139 When you are fetching files to create a mirror of sources
12140 (i.e. creating a source mirror), setting
12141 <filename>SOURCE_MIRROR_FETCH</filename> to "1" in your
12142 <filename>local.conf</filename> configuration file ensures
12143 the source for all recipes are fetched regardless of
12144 whether or not a recipe is compatible with the
12145 configuration.
12146 A recipe is considered incompatible with the currently
12147 configured machine when either or both the
12148 <link linkend='var-COMPATIBLE_MACHINE'><filename>COMPATIBLE_MACHINE</filename></link>
12149 variable and
12150 <link linkend='var-COMPATIBLE_HOST'><filename>COMPATIBLE_HOST</filename></link>
12151 variables specify compatibility with a machine other
12152 than that of the current machine or host.
12153 <note><title>Warning</title>
12154 Do not set the
12155 <filename>SOURCE_MIRROR_FETCH</filename> variable
12156 unless you are creating a source mirror.
12157 In other words, do not set the variable during a
12158 normal build.
12159 </note>
12160 </para>
12161 </glossdef>
12162 </glossentry>
12163
12164 <glossentry id='var-SOURCE_MIRROR_URL'><glossterm>SOURCE_MIRROR_URL</glossterm>
12165 <info>
12166 SOURCE_MIRROR_URL[doc] = "URL to source mirror that will be used before fetching from original SRC_URI."
12167 </info>
12168 <glossdef>
12169 <para role="glossdeffirst">
12170<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12171 Defines your own
12172 <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
12173 from which to first fetch source before attempting to fetch
12174 from the upstream specified in
12175 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>.
12176 </para>
12177
12178 <para>
12179 To use this variable, you must globally inherit the
12180 <link linkend='ref-classes-own-mirrors'><filename>own-mirrors</filename></link>
12181 class and then provide the URL to your mirrors.
12182 Here is the general syntax:
12183 <literallayout class='monospaced'>
12184 INHERIT += "own-mirrors"
12185 SOURCE_MIRROR_URL = "http://<replaceable>example</replaceable>.com/<replaceable>my_source_mirror</replaceable>"
12186 </literallayout>
12187 <note>
12188 You can specify only a single URL in
12189 <filename>SOURCE_MIRROR_URL</filename>.
12190 </note>
12191 </para>
12192 </glossdef>
12193 </glossentry>
12194
12195 <glossentry id='var-SPDXLICENSEMAP'><glossterm>SPDXLICENSEMAP</glossterm>
12196 <info>
12197 SPDXLICENSEMAP[doc] = "Maps commonly used license names to their SPDX counterparts found in meta/files/common-licenses/."
12198 </info>
12199 <glossdef>
12200 <para role="glossdeffirst">
12201<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12202 Maps commonly used license names to their SPDX counterparts
12203 found in <filename>meta/files/common-licenses/</filename>.
12204 For the default <filename>SPDXLICENSEMAP</filename>
12205 mappings, see the
12206 <filename>meta/conf/licenses.conf</filename> file.
12207 </para>
12208
12209 <para>
12210 For additional information, see the
12211 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
12212 variable.
12213 </para>
12214 </glossdef>
12215 </glossentry>
12216
12217 <glossentry id='var-SPECIAL_PKGSUFFIX'><glossterm>SPECIAL_PKGSUFFIX</glossterm>
12218 <info>
12219 SPECIAL_PKGSUFFIX[doc] = "A list of prefixes for PN used by the OpenEmbedded build system to create variants of recipes or packages. The list specifies the prefixes to strip off during certain circumstances such as the generation of the BPN variable."
12220 </info>
12221 <glossdef>
12222 <para role="glossdeffirst">
12223<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12224 A list of prefixes for <link linkend='var-PN'><filename>PN</filename></link> used by the
12225 OpenEmbedded build system to create variants of recipes or packages.
12226 The list specifies the prefixes to strip off during certain circumstances
12227 such as the generation of the <link linkend='var-BPN'><filename>BPN</filename></link> variable.
12228 </para>
12229 </glossdef>
12230 </glossentry>
12231
12232 <glossentry id='var-SRC_URI'><glossterm>SRC_URI</glossterm>
12233 <info>
12234 SRC_URI[doc] = "The list of source files - local or remote. This variable tells the OpenEmbedded build system what bits to pull in for the build and how to pull them in."
12235 </info>
12236 <glossdef>
12237 <para role="glossdeffirst">
12238<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12239 The list of source files - local or remote.
12240 This variable tells the OpenEmbedded build system which bits
12241 to pull in for the build and how to pull them in.
12242 For example, if the recipe or append file only needs to
12243 fetch a tarball from the Internet, the recipe or
12244 append file uses a single <filename>SRC_URI</filename>
12245 entry.
12246 On the other hand, if the recipe or append file needs to
12247 fetch a tarball, apply two patches, and include a custom
12248 file, the recipe or append file would include four
12249 instances of the variable.
12250 </para>
12251
12252 <para>
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012253 The following list explains the available URI protocols.
12254 URI protocols are highly dependent on particular BitBake
12255 Fetcher submodules.
12256 Depending on the fetcher BitBake uses, various URL
12257 parameters are employed.
12258 For specifics on the supported Fetchers, see the
12259 "<ulink url='&YOCTO_DOCS_BB_URL;#bb-fetchers'>Fetchers</ulink>"
12260 section in the BitBake User Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012261 <itemizedlist>
12262 <listitem><para><emphasis><filename>file://</filename> -</emphasis>
12263 Fetches files, which are usually files shipped with
12264 the
12265 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>,
12266 from the local machine.
12267 The path is relative to the
12268 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
12269 variable.
12270 Thus, the build system searches, in order, from the
12271 following directories, which are assumed to be a
12272 subdirectories of the directory in which the
12273 recipe file (<filename>.bb</filename>) or
12274 append file (<filename>.bbappend</filename>)
12275 resides:
12276 <itemizedlist>
12277 <listitem><para><emphasis><filename>${BPN}</filename> -</emphasis>
12278 The base recipe name without any special
12279 suffix or version numbers.
12280 </para></listitem>
12281 <listitem><para><emphasis><filename>${BP}</filename> -</emphasis>
12282 <filename>${<link linkend='var-BPN'>BPN</link>}-${PV}</filename>.
12283 The base recipe name and version but without
12284 any special package name suffix.
12285 </para></listitem>
12286 <listitem><para><emphasis>files -</emphasis>
12287 Files within a directory, which is named
12288 <filename>files</filename> and is also
12289 alongside the recipe or append file.
12290 </para></listitem>
12291 </itemizedlist>
12292 <note>
12293 If you want the build system to pick up files
12294 specified through a
12295 <filename>SRC_URI</filename>
12296 statement from your append file, you need to be
12297 sure to extend the
12298 <filename>FILESPATH</filename>
12299 variable by also using the
12300 <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
12301 variable from within your append file.
12302 </note>
12303 </para></listitem>
12304 <listitem><para><emphasis><filename>bzr://</filename> -</emphasis> Fetches files from a
12305 Bazaar revision control repository.</para></listitem>
12306 <listitem><para><emphasis><filename>git://</filename> -</emphasis> Fetches files from a
12307 Git revision control repository.</para></listitem>
12308 <listitem><para><emphasis><filename>osc://</filename> -</emphasis> Fetches files from
12309 an OSC (OpenSUSE Build service) revision control repository.</para></listitem>
12310 <listitem><para><emphasis><filename>repo://</filename> -</emphasis> Fetches files from
12311 a repo (Git) repository.</para></listitem>
12312 <listitem><para><emphasis><filename>ccrc://</filename> -</emphasis>
12313 Fetches files from a ClearCase repository.
12314 </para></listitem>
12315 <listitem><para><emphasis><filename>http://</filename> -</emphasis> Fetches files from
12316 the Internet using <filename>http</filename>.</para></listitem>
12317 <listitem><para><emphasis><filename>https://</filename> -</emphasis> Fetches files
12318 from the Internet using <filename>https</filename>.</para></listitem>
12319 <listitem><para><emphasis><filename>ftp://</filename> -</emphasis> Fetches files
12320 from the Internet using <filename>ftp</filename>.</para></listitem>
12321 <listitem><para><emphasis><filename>cvs://</filename> -</emphasis> Fetches files from
12322 a CVS revision control repository.</para></listitem>
12323 <listitem><para><emphasis><filename>hg://</filename> -</emphasis> Fetches files from
12324 a Mercurial (<filename>hg</filename>) revision control repository.</para></listitem>
12325 <listitem><para><emphasis><filename>p4://</filename> -</emphasis> Fetches files from
12326 a Perforce (<filename>p4</filename>) revision control repository.</para></listitem>
12327 <listitem><para><emphasis><filename>ssh://</filename> -</emphasis> Fetches files from
12328 a secure shell.</para></listitem>
12329 <listitem><para><emphasis><filename>svn://</filename> -</emphasis> Fetches files from
12330 a Subversion (<filename>svn</filename>) revision control repository.</para></listitem>
12331 </itemizedlist>
12332 </para>
12333
12334 <para>
12335 Standard and recipe-specific options for <filename>SRC_URI</filename> exist.
12336 Here are standard options:
12337 <itemizedlist>
12338 <listitem><para><emphasis><filename>apply</filename> -</emphasis> Whether to apply
12339 the patch or not.
12340 The default action is to apply the patch.</para></listitem>
12341 <listitem><para><emphasis><filename>striplevel</filename> -</emphasis> Which
12342 striplevel to use when applying the patch.
12343 The default level is 1.</para></listitem>
12344 <listitem><para><emphasis><filename>patchdir</filename> -</emphasis> Specifies
12345 the directory in which the patch should be applied.
12346 The default is <filename>${</filename><link linkend='var-S'><filename>S</filename></link><filename>}</filename>.
12347 </para></listitem>
12348 </itemizedlist>
12349 </para>
12350
12351 <para>
12352 Here are options specific to recipes building code from a revision control system:
12353 <itemizedlist>
12354 <listitem><para><emphasis><filename>mindate</filename> -</emphasis>
12355 Apply the patch only if
12356 <link linkend='var-SRCDATE'><filename>SRCDATE</filename></link>
12357 is equal to or greater than <filename>mindate</filename>.
12358 </para></listitem>
12359 <listitem><para><emphasis><filename>maxdate</filename> -</emphasis>
12360 Apply the patch only if <filename>SRCDATE</filename>
12361 is not later than <filename>mindate</filename>.
12362 </para></listitem>
12363 <listitem><para><emphasis><filename>minrev</filename> -</emphasis>
12364 Apply the patch only if <filename>SRCREV</filename>
12365 is equal to or greater than <filename>minrev</filename>.
12366 </para></listitem>
12367 <listitem><para><emphasis><filename>maxrev</filename> -</emphasis>
12368 Apply the patch only if <filename>SRCREV</filename>
12369 is not later than <filename>maxrev</filename>.
12370 </para></listitem>
12371 <listitem><para><emphasis><filename>rev</filename> -</emphasis>
12372 Apply the patch only if <filename>SRCREV</filename>
12373 is equal to <filename>rev</filename>.
12374 </para></listitem>
12375 <listitem><para><emphasis><filename>notrev</filename> -</emphasis>
12376 Apply the patch only if <filename>SRCREV</filename>
12377 is not equal to <filename>rev</filename>.
12378 </para></listitem>
12379 </itemizedlist>
12380 </para>
12381
12382 <para>
12383 Here are some additional options worth mentioning:
12384 <itemizedlist>
12385 <listitem><para><emphasis><filename>unpack</filename> -</emphasis> Controls
12386 whether or not to unpack the file if it is an archive.
12387 The default action is to unpack the file.</para></listitem>
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012388 <listitem><para><emphasis><filename>destsuffix</filename> -</emphasis> Places the file
12389 (or extracts its contents) into the specified
12390 subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
12391 when the Git fetcher is used.
12392 </para></listitem>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012393 <listitem><para><emphasis><filename>subdir</filename> -</emphasis> Places the file
12394 (or extracts its contents) into the specified
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012395 subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
12396 when the local (<filename>file://</filename>)
12397 fetcher is used.
12398 </para></listitem>
12399 <listitem><para><emphasis><filename>localdir</filename> -</emphasis> Places the file
12400 (or extracts its contents) into the specified
12401 subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
12402 when the CVS fetcher is used.
12403 </para></listitem>
12404 <listitem><para><emphasis><filename>subpath</filename> -</emphasis>
12405 Limits the checkout to a specific subpath of the
12406 tree when using the Git fetcher is used.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012407 </para></listitem>
12408 <listitem><para><emphasis><filename>name</filename> -</emphasis> Specifies a
12409 name to be used for association with <filename>SRC_URI</filename> checksums
12410 when you have more than one file specified in <filename>SRC_URI</filename>.
12411 </para></listitem>
12412 <listitem><para><emphasis><filename>downloadfilename</filename> -</emphasis> Specifies
12413 the filename used when storing the downloaded file.</para></listitem>
12414 </itemizedlist>
12415 </para>
12416 </glossdef>
12417 </glossentry>
12418
12419 <glossentry id='var-SRC_URI_OVERRIDES_PACKAGE_ARCH'><glossterm>SRC_URI_OVERRIDES_PACKAGE_ARCH</glossterm>
12420 <info>
12421 SRC_URI_OVERRIDES_PACKAGE_ARCH[doc] = "By default, the OpenEmbedded build system automatically detects whether SRC_URI contains files that are machine-specific. If so, the build system automatically changes PACKAGE_ARCH. Setting this variable to '0' disables this behavior."
12422 </info>
12423 <glossdef>
12424 <para role="glossdeffirst">
12425<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12426 By default, the OpenEmbedded build system automatically detects whether
12427 <filename><link linkend='var-SRC_URI'>SRC_URI</link></filename>
12428 contains files that are machine-specific.
12429 If so, the build system automatically changes
12430 <filename><link linkend='var-PACKAGE_ARCH'>PACKAGE_ARCH</link></filename>.
12431 Setting this variable to "0" disables this behavior.
12432 </para>
12433 </glossdef>
12434 </glossentry>
12435
12436 <glossentry id='var-SRCDATE'><glossterm>SRCDATE</glossterm>
12437 <info>
12438 SRCDATE[doc] = "The date of the source code used to build the package. This variable applies only if the source was fetched from a Source Code Manager (SCM)."
12439 </info>
12440 <glossdef>
12441 <para role="glossdeffirst">
12442<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12443 The date of the source code used to build the package.
12444 This variable applies only if the source was fetched from a Source Code Manager (SCM).
12445 </para>
12446 </glossdef>
12447 </glossentry>
12448
12449 <glossentry id='var-SRCPV'><glossterm>SRCPV</glossterm>
12450 <info>
12451 SRCPV[doc] = "Returns the version string of the current package. This string is used to help define the value of PV."
12452 </info>
12453 <glossdef>
12454 <para role="glossdeffirst">
12455<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12456 Returns the version string of the current package.
12457 This string is used to help define the value of
12458 <link linkend='var-PV'><filename>PV</filename></link>.
12459 </para>
12460
12461 <para>
12462 The <filename>SRCPV</filename> variable is defined in the
12463 <filename>meta/conf/bitbake.conf</filename> configuration
12464 file in the
12465 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
12466 as follows:
12467 <literallayout class='monospaced'>
12468 SRCPV = "${@bb.fetch2.get_srcrev(d)}"
12469 </literallayout>
12470 </para>
12471
12472 <para>
12473 Recipes that need to define <filename>PV</filename> do so
12474 with the help of the <filename>SRCPV</filename>.
12475 For example, the <filename>ofono</filename> recipe
12476 (<filename>ofono_git.bb</filename>) located in
12477 <filename>meta/recipes-connectivity</filename> in the
12478 Source Directory defines <filename>PV</filename> as
12479 follows:
12480 <literallayout class='monospaced'>
12481 PV = "0.12-git${SRCPV}"
12482 </literallayout>
12483 </para>
12484 </glossdef>
12485 </glossentry>
12486
12487 <glossentry id='var-SRCREV'><glossterm>SRCREV</glossterm>
12488 <info>
12489 SRCREV[doc] = "The revision of the source code used to build the package. This variable applies to Subversion, Git, Mercurial and Bazaar only."
12490 </info>
12491 <glossdef>
12492 <para role="glossdeffirst">
12493<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12494 The revision of the source code used to build the package.
12495 This variable applies to Subversion, Git, Mercurial and
12496 Bazaar only.
12497 Note that if you want to build a fixed revision and you
12498 want to avoid performing a query on the remote repository
12499 every time BitBake parses your recipe, you should specify
12500 a <filename>SRCREV</filename> that is a
12501 full revision identifier and not just a tag.
12502 </para>
12503
12504 <note>
12505 For information on limitations when inheriting the latest
12506 revision of software using <filename>SRCREV</filename>,
12507 see the
12508 <link linkend='var-AUTOREV'><filename>AUTOREV</filename></link>
12509 variable description.
12510 </note>
12511 </glossdef>
12512 </glossentry>
12513
12514 <glossentry id='var-SSTATE_DIR'><glossterm>SSTATE_DIR</glossterm>
12515 <info>
12516 SSTATE_DIR[doc] = "The directory for the shared state cache."
12517 </info>
12518 <glossdef>
12519 <para role="glossdeffirst">
12520<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12521 The directory for the shared state cache.
12522 </para>
12523 </glossdef>
12524 </glossentry>
12525
12526 <glossentry id='var-SSTATE_MIRROR_ALLOW_NETWORK'><glossterm>SSTATE_MIRROR_ALLOW_NETWORK</glossterm>
12527 <info>
12528 SSTATE_MIRROR_ALLOW_NETWORK[doc] = "If set to "1", allows fetches from mirrors that are specified in SSTATE_MIRRORS to work even when fetching from the network has been disabled by setting BB_NO_NETWORK to "1"."
12529 </info>
12530 <glossdef>
12531 <para role="glossdeffirst">
12532<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12533 If set to "1", allows fetches from
12534 mirrors that are specified in
12535 <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
12536 to work even when fetching from the network has been
12537 disabled by setting <filename>BB_NO_NETWORK</filename>
12538 to "1".
12539 Using the
12540 <filename>SSTATE_MIRROR_ALLOW_NETWORK</filename>
12541 variable is useful if you have set
12542 <filename>SSTATE_MIRRORS</filename> to point to an
12543 internal server for your shared state cache, but
12544 you want to disable any other fetching from the network.
12545 </para>
12546 </glossdef>
12547 </glossentry>
12548
12549 <glossentry id='var-SSTATE_MIRRORS'><glossterm>SSTATE_MIRRORS</glossterm>
12550 <info>
12551 SSTATE_MIRRORS[doc] = "Configures the OpenEmbedded build system to search other mirror locations for prebuilt cache data objects before building out the data. You can specify a filesystem directory or a remote URL such as HTTP or FTP."
12552 </info>
12553 <glossdef>
12554 <para role="glossdeffirst">
12555<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12556 Configures the OpenEmbedded build system to search other
12557 mirror locations for prebuilt cache data objects before
12558 building out the data.
12559 This variable works like fetcher
12560 <link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
12561 and <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
12562 and points to the cache locations to check for the shared
12563 objects.
12564 </para>
12565
12566 <para>
12567 You can specify a filesystem directory or a remote URL such
12568 as HTTP or FTP.
12569 The locations you specify need to contain the shared state
12570 cache (sstate-cache) results from previous builds.
12571 The sstate-cache you point to can also be from builds on
12572 other machines.
12573 </para>
12574
12575 <para>
12576 If a mirror uses the same structure as
12577 <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>,
12578 you need to add
12579 "PATH" at the end as shown in the examples below.
12580 The build system substitutes the correct path within the
12581 directory structure.
12582 <literallayout class='monospaced'>
12583 SSTATE_MIRRORS ?= "\
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012584 file://.* http://<replaceable>someserver</replaceable>.tld/share/sstate/PATH;downloadfilename=PATH \n \
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012585 file://.* file:///<replaceable>some-local-dir</replaceable>/sstate/PATH"
12586 </literallayout>
12587 </para>
12588 </glossdef>
12589 </glossentry>
12590
12591 <glossentry id='var-STAGING_BASE_LIBDIR_NATIVE'><glossterm>STAGING_BASE_LIBDIR_NATIVE</glossterm>
12592 <info>
12593 STAGING_BASE_LIBDIR_NATIVE[doc] = "Specifies the path to the /lib subdirectory of the sysroot directory for the build host."
12594 </info>
12595 <glossdef>
12596 <para role="glossdeffirst">
12597<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12598 Specifies the path to the <filename>/lib</filename>
12599 subdirectory of the sysroot directory for the
12600 build host.
12601 </para>
12602 </glossdef>
12603 </glossentry>
12604
12605 <glossentry id='var-STAGING_BASELIBDIR'><glossterm>STAGING_BASELIBDIR</glossterm>
12606 <info>
12607 STAGING_BASELIBDIR[doc] = "Specifies the path to the /lib subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
12608 </info>
12609 <glossdef>
12610 <para role="glossdeffirst">
12611<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12612 Specifies the path to the <filename>/lib</filename>
12613 subdirectory of the sysroot directory for the target
12614 for which the current recipe is being built
12615 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
12616 </para>
12617 </glossdef>
12618 </glossentry>
12619
12620 <glossentry id='var-STAGING_BINDIR'><glossterm>STAGING_BINDIR</glossterm>
12621 <info>
12622 STAGING_BINDIR[doc] = "Specifies the path to the /usr/bin subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
12623 </info>
12624 <glossdef>
12625 <para role="glossdeffirst">
12626<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12627 Specifies the path to the
12628 <filename>/usr/bin</filename> subdirectory of the
12629 sysroot directory for the target for which the current
12630 recipe is being built
12631 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
12632 </para>
12633 </glossdef>
12634 </glossentry>
12635
12636 <glossentry id='var-STAGING_BINDIR_CROSS'><glossterm>STAGING_BINDIR_CROSS</glossterm>
12637 <info>
12638 STAGING_BINDIR_CROSS[doc] = "Specifies the path to the directory containing binary configuration scripts. These scripts provide configuration information for other software that wants to make use of libraries or include files provided by the software associated with the script."
12639 </info>
12640 <glossdef>
12641 <para role="glossdeffirst">
12642<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12643 Specifies the path to the directory containing binary
12644 configuration scripts.
12645 These scripts provide configuration information for
12646 other software that wants to make use of libraries or
12647 include files provided by the software associated with
12648 the script.
12649 <note>
12650 This style of build configuration has been largely
12651 replaced by <filename>pkg-config</filename>.
12652 Consequently, if <filename>pkg-config</filename>
12653 is supported by the library to which you are linking,
12654 it is recommended you use
12655 <filename>pkg-config</filename> instead of a
12656 provided configuration script.
12657 </note>
12658 </para>
12659 </glossdef>
12660 </glossentry>
12661
12662 <glossentry id='var-STAGING_BINDIR_NATIVE'><glossterm>STAGING_BINDIR_NATIVE</glossterm>
12663 <info>
12664 STAGING_BINDIR_NATIVE[doc] = "Specifies the path to the /usr/bin subdirectory of the sysroot directory for the build host."
12665 </info>
12666 <glossdef>
12667 <para role="glossdeffirst">
12668<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12669 Specifies the path to the
12670 <filename>/usr/bin</filename> subdirectory of the
12671 sysroot directory for the build host.
12672 </para>
12673 </glossdef>
12674 </glossentry>
12675
12676 <glossentry id='var-STAGING_DATADIR'><glossterm>STAGING_DATADIR</glossterm>
12677 <info>
12678 STAGING_DATADIR[doc] = "Specifies the path to the /usr/share subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
12679 </info>
12680 <glossdef>
12681 <para role="glossdeffirst">
12682<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12683 Specifies the path to the <filename>/usr/share</filename>
12684 subdirectory of the sysroot directory for the target
12685 for which the current recipe is being built
12686 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
12687 </para>
12688 </glossdef>
12689 </glossentry>
12690
12691 <glossentry id='var-STAGING_DATADIR_NATIVE'><glossterm>STAGING_DATADIR_NATIVE</glossterm>
12692 <info>
12693 STAGING_DATADIR_NATIVE[doc] = "Specifies the path to the /usr/share subdirectory of the sysroot directory for the build host."
12694 </info>
12695 <glossdef>
12696 <para role="glossdeffirst">
12697<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12698 Specifies the path to the <filename>/usr/share</filename>
12699 subdirectory of the sysroot directory for the build host.
12700 </para>
12701 </glossdef>
12702 </glossentry>
12703
12704 <glossentry id='var-STAGING_DIR'><glossterm>STAGING_DIR</glossterm>
12705 <info>
12706 STAGING_DIR[doc] = "Specifies the path to the top-level sysroots directory (i.e. ${TMPDIR}/sysroots)."
12707 </info>
12708 <glossdef>
12709 <para role="glossdeffirst">
12710<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12711 Specifies the path to the top-level sysroots directory
12712 (i.e.
12713 <filename>${</filename><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>}/sysroots</filename>).
Brad Bishop37a0e4d2017-12-04 01:01:44 -050012714 </para>
12715
12716 <para>
12717 <filename>STAGING_DIR</filename> contains the directories
12718 that are staged into the sysroot by the
12719 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
12720 task.
12721 See the
12722 <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
12723 variable and the
12724 "<ulink url='&YOCTO_DOCS_DEV_URL;#new-sharing-files-between-recipes'>Sharing Files Between Recipes</ulink>"
12725 section for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012726 <note>
12727 Recipes should never write files directly under
Brad Bishop37a0e4d2017-12-04 01:01:44 -050012728 the <filename>STAGING_DIR</filename> directory because
12729 the OpenEmbedded build system
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012730 manages the directory automatically.
12731 Instead, files should be installed to
12732 <filename>${</filename><link linkend='var-D'><filename>D</filename></link><filename>}</filename>
12733 within your recipe's
12734 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
12735 task and then the OpenEmbedded build system will
12736 stage a subset of those files into the sysroot.
12737 </note>
12738 </para>
12739 </glossdef>
12740 </glossentry>
12741
12742 <glossentry id='var-STAGING_DIR_HOST'><glossterm>STAGING_DIR_HOST</glossterm>
12743 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012744 STAGING_DIR_HOST[doc] = "Specifies the path to the sysroot directory for the system that the component is built to run on."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012745 </info>
12746 <glossdef>
12747 <para role="glossdeffirst">
12748<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012749 Specifies the path to the sysroot directory for the system
12750 that the component is built to run on (the system that hosts
12751 the component).
12752 For most recipes, this sysroot is the one that the recipe's
12753 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
12754 task copies files into.
12755 Exceptions include <filename>-native</filename> recipes,
12756 where the <filename>do_populate_sysroot</filename> task
12757 instead uses
12758 <link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>.
12759 Depending on the type of recipe and the build target,
12760 <filename>STAGING_DIR_HOST</filename> can have the
12761 following values:
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012762 <itemizedlist>
12763 <listitem><para>For recipes building for the target
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012764 machine, the value is
12765 "${<link linkend='var-STAGING_DIR'>STAGING_DIR</link>}/${<link linkend='var-MACHINE'>MACHINE</link>}".
12766 </para></listitem>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012767 <listitem><para>For native recipes building
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012768 for the build host, the value is empty given the
12769 assumption that when building for the build host,
12770 the build host's own directories should be used.
12771 <note><para>
12772 <filename>-native</filename> recipes are not
12773 installed into host paths like such as
12774 <filename>/usr</filename>.
12775 Rather, these recipes are installed into
12776 <filename>STAGING_DIR_NATIVE</filename>.
12777 When compiling <filename>-native</filename>
12778 recipes, standard build environment variables
12779 such as
12780 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
12781 and
12782 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
12783 are set up so that both host paths and
12784 <filename>STAGING_DIR_NATIVE</filename> are
12785 searched for libraries and headers using, for
12786 example, GCC's <filename>-isystem</filename>
12787 option.</para>
12788
12789 <para>This emphasizes that the
12790 <filename>STAGING_DIR*</filename> variables
12791 should be viewed as input variables by tasks
12792 such as
12793 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>,
12794 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
12795 and
12796 <link linkend='ref-tasks-install'><filename>do_install</filename></link>.
12797 Having the real system root correspond to
12798 <filename>STAGING_DIR_HOST</filename> makes
12799 conceptual sense for
12800 <filename>-native</filename> recipes, as
12801 they make use of host headers and libraries.
12802 </para>
12803 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012804 </para></listitem>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012805 <listitem><para>For native SDK
12806 recipes that build for the SDK
12807 (<filename>nativesdk</filename>), the value is
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012808 "${STAGING_DIR}/${<link linkend='var-MULTIMACH_HOST_SYS'>MULTIMACH_HOST_SYS</link>}".
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012809 </para></listitem>
12810 </itemizedlist>
12811 </para>
12812 </glossdef>
12813 </glossentry>
12814
12815 <glossentry id='var-STAGING_DIR_NATIVE'><glossterm>STAGING_DIR_NATIVE</glossterm>
12816 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012817 STAGING_DIR_NATIVE[doc] = "Specifies the path to the sysroot directory used when building components that run on the build host itself."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012818 </info>
12819 <glossdef>
12820 <para role="glossdeffirst">
12821<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012822 Specifies the path to the sysroot directory used when
12823 building components that run on the build host itself.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012824 </para>
12825 </glossdef>
12826 </glossentry>
12827
12828 <glossentry id='var-STAGING_DIR_TARGET'><glossterm>STAGING_DIR_TARGET</glossterm>
12829 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012830 STAGING_DIR_TARGET[doc] = "Specifies the path to the sysroot used for the system for which the component generates code."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012831 </info>
12832 <glossdef>
12833 <para role="glossdeffirst">
12834<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012835 Specifies the path to the sysroot used for the system for
12836 which the component generates code.
12837 For components that do not generate code, which is the
12838 majority, <filename>STAGING_DIR_TARGET</filename> is set
12839 to match
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012840 <link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>.
12841 </para>
12842
12843 <para>
12844 Some recipes build binaries that can run on the target
12845 system but those binaries in turn generate code for
12846 another different system (e.g. cross-canadian recipes).
12847 Using terminology from GNU, the primary system is referred
12848 to as the "HOST" and the secondary, or different, system is
12849 referred to as the "TARGET".
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012850 Thus, the binaries run on the "HOST" system
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012851 and generate binaries for the "TARGET" system.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012852 The <filename>STAGING_DIR_HOST</filename> variable points
12853 to the sysroot used for the "HOST" system, while
12854 <filename>STAGING_DIR_TARGET</filename>
12855 points to the sysroot used for the "TARGET" system.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012856 </para>
12857 </glossdef>
12858 </glossentry>
12859
12860 <glossentry id='var-STAGING_ETCDIR_NATIVE'><glossterm>STAGING_ETCDIR_NATIVE</glossterm>
12861 <info>
12862 STAGING_ETCDIR_NATIVE[doc] = "Specifies the path to the /etc subdirectory of the sysroot directory for the build host."
12863 </info>
12864 <glossdef>
12865 <para role="glossdeffirst">
12866<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12867 Specifies the path to the <filename>/etc</filename>
12868 subdirectory of the sysroot directory for the
12869 build host.
12870 </para>
12871 </glossdef>
12872 </glossentry>
12873
12874 <glossentry id='var-STAGING_EXECPREFIXDIR'><glossterm>STAGING_EXECPREFIXDIR</glossterm>
12875 <info>
12876 STAGING_EXECPREFIXDIR[doc] = "Specifies the path to the /usr subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
12877 </info>
12878 <glossdef>
12879 <para role="glossdeffirst">
12880<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12881 Specifies the path to the <filename>/usr</filename>
12882 subdirectory of the sysroot directory for the target
12883 for which the current recipe is being built
12884 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
12885 </para>
12886 </glossdef>
12887 </glossentry>
12888
12889 <glossentry id='var-STAGING_INCDIR'><glossterm>STAGING_INCDIR</glossterm>
12890 <info>
12891 STAGING_INCDIR[doc] = "Specifies the path to the /usr/include subdirectory of the sysroot directory for the target for which the current recipe being built (STAGING_DIR_HOST)."
12892 </info>
12893 <glossdef>
12894 <para role="glossdeffirst">
12895<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12896 Specifies the path to the
12897 <filename>/usr/include</filename> subdirectory of the
12898 sysroot directory for the target for which the current
12899 recipe being built
12900 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
12901 </para>
12902 </glossdef>
12903 </glossentry>
12904
12905 <glossentry id='var-STAGING_INCDIR_NATIVE'><glossterm>STAGING_INCDIR_NATIVE</glossterm>
12906 <info>
12907 STAGING_INCDIR_NATIVE[doc] = "Specifies the path to the /usr/include subdirectory of the sysroot directory for the build host."
12908 </info>
12909 <glossdef>
12910 <para role="glossdeffirst">
12911<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12912 Specifies the path to the <filename>/usr/include</filename>
12913 subdirectory of the sysroot directory for the build host.
12914 </para>
12915 </glossdef>
12916 </glossentry>
12917
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012918 <glossentry id='var-STAGING_KERNEL_BUILDDIR'><glossterm>STAGING_KERNEL_BUILDDIR</glossterm>
12919 <info>
12920 STAGING_KERNEL_BUILDDIR[doc] = "Points to the directory containing the kernel build artifacts."
12921 </info>
12922 <glossdef>
12923 <para role="glossdeffirst">
12924<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12925 Points to the directory containing the kernel build
12926 artifacts.
12927 Recipes building software that needs to access kernel
12928 build artifacts
12929 (e.g. <filename>systemtap-uprobes</filename>) can look in
12930 the directory specified with the
12931 <filename>STAGING_KERNEL_BUILDDIR</filename> variable to
12932 find these artifacts after the kernel has been built.
12933 </para>
12934 </glossdef>
12935 </glossentry>
12936
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012937 <glossentry id='var-STAGING_KERNEL_DIR'><glossterm>STAGING_KERNEL_DIR</glossterm>
12938 <info>
12939 STAGING_KERNEL_DIR[doc] = "The directory with kernel headers that are required to build out-of-tree modules."
12940 </info>
12941 <glossdef>
12942 <para role="glossdeffirst">
12943<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12944 The directory with kernel headers that are required to build out-of-tree
12945 modules.
12946 </para>
12947 </glossdef>
12948 </glossentry>
12949
12950 <glossentry id='var-STAGING_LIBDIR'><glossterm>STAGING_LIBDIR</glossterm>
12951 <info>
12952 STAGING_LIBDIR[doc] = "Specifies the path to the /usr/lib subdirectory of the sysroot directory for the target for which the current recipe is being built (STAGING_DIR_HOST)."
12953 </info>
12954 <glossdef>
12955 <para role="glossdeffirst">
12956<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12957 Specifies the path to the <filename>/usr/lib</filename>
12958 subdirectory of the sysroot directory for the target for
12959 which the current recipe is being built
12960 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
12961 </para>
12962 </glossdef>
12963 </glossentry>
12964
12965 <glossentry id='var-STAGING_LIBDIR_NATIVE'><glossterm>STAGING_LIBDIR_NATIVE</glossterm>
12966 <info>
12967 STAGING_LIBDIR_NATIVE[doc] = "Specifies the path to the /usr/lib subdirectory of the sysroot directory for the build host."
12968 </info>
12969 <glossdef>
12970 <para role="glossdeffirst">
12971<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12972 Specifies the path to the <filename>/usr/lib</filename>
12973 subdirectory of the sysroot directory for the build host.
12974 </para>
12975 </glossdef>
12976 </glossentry>
12977
12978 <glossentry id='var-STAMP'><glossterm>STAMP</glossterm>
12979 <info>
12980 STAMP[doc] = "Specifies the base path used to create recipe stamp files. The path to an actual stamp file is constructed by evaluating this string and then appending additional information."
12981 </info>
12982 <glossdef>
12983 <para role="glossdeffirst">
12984<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12985 Specifies the base path used to create recipe stamp files.
12986 The path to an actual stamp file is constructed by evaluating this
12987 string and then appending additional information.
12988 Currently, the default assignment for <filename>STAMP</filename>
12989 as set in the <filename>meta/conf/bitbake.conf</filename> file
12990 is:
12991 <literallayout class='monospaced'>
12992 STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
12993 </literallayout>
12994 </para>
12995
12996 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012997 For information on how BitBake uses stamp files to determine
12998 if a task should be rerun, see the
12999 "<link linkend='stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</link>"
13000 section.
13001 </para>
13002
13003 <para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013004 See <link linkend='var-STAMPS_DIR'><filename>STAMPS_DIR</filename></link>,
13005 <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
13006 <link linkend='var-PN'><filename>PN</filename></link>,
13007 <link linkend='var-EXTENDPE'><filename>EXTENDPE</filename></link>,
13008 <link linkend='var-PV'><filename>PV</filename></link>, and
13009 <link linkend='var-PR'><filename>PR</filename></link> for related variable
13010 information.
13011 </para>
13012 </glossdef>
13013 </glossentry>
13014
13015 <glossentry id='var-STAMPS_DIR'><glossterm>STAMPS_DIR</glossterm>
13016 <info>
13017 STAMPS_DIR[doc] = "Specifies the base directory in which the OpenEmbedded build system places stamps."
13018 </info>
13019 <glossdef>
13020 <para role="glossdeffirst">
13021<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13022 Specifies the base directory in which the OpenEmbedded
13023 build system places stamps.
13024 The default directory is
13025 <filename>${TMPDIR}/stamps</filename>.
13026 </para>
13027 </glossdef>
13028 </glossentry>
13029
13030 <glossentry id='var-STRIP'><glossterm>STRIP</glossterm>
13031 <info>
13032 STRIP[doc] = "Minimal command and arguments to run 'strip' (strip symbols)."
13033 </info>
13034 <glossdef>
13035 <para role="glossdeffirst">
13036<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13037 The minimal command and arguments to run
13038 <filename>strip</filename>, which is used to strip
13039 symbols.
13040 </para>
13041 </glossdef>
13042 </glossentry>
13043
13044 <glossentry id='var-SUMMARY'><glossterm>SUMMARY</glossterm>
13045 <info>
13046 SUMMARY[doc] = "The short (80 characters or less) summary of the binary package for packaging systems such as opkg, rpm or dpkg. By default, SUMMARY is used to define the DESCRIPTION variable if DESCRIPTION is not set in the recipe."
13047 </info>
13048 <glossdef>
13049 <para role="glossdeffirst">
13050<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13051 The short (72 characters or less) summary of the binary package for packaging
13052 systems such as <filename>opkg</filename>, <filename>rpm</filename> or
13053 <filename>dpkg</filename>.
13054 By default, <filename>SUMMARY</filename> is used to define
13055 the <link linkend='var-DESCRIPTION'><filename>DESCRIPTION</filename></link>
13056 variable if <filename>DESCRIPTION</filename> is not set
13057 in the recipe.
13058 </para>
13059 </glossdef>
13060 </glossentry>
13061
13062 <glossentry id='var-SVNDIR'><glossterm>SVNDIR</glossterm>
13063 <info>
13064 SVNDIR[doc] = "The directory where Subversion checkouts will be stored."
13065 </info>
13066 <glossdef>
13067 <para role="glossdeffirst">
13068<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13069 The directory in which files checked out of a Subversion
13070 system are stored.
13071 </para>
13072 </glossdef>
13073 </glossentry>
13074
13075 <glossentry id='var-SYSLINUX_DEFAULT_CONSOLE'><glossterm>SYSLINUX_DEFAULT_CONSOLE</glossterm>
13076 <info>
13077 SYSLINUX_DEFAULT_CONSOLE[doc] = "Specifies the kernel boot default console."
13078 </info>
13079 <glossdef>
13080 <para role="glossdeffirst">
13081<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13082 Specifies the kernel boot default console.
13083 If you want to use a console other than the default,
13084 set this variable in your recipe as follows where "X" is
13085 the console number you want to use:
13086 <literallayout class='monospaced'>
13087 SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
13088 </literallayout>
13089 </para>
13090
13091 <para>
13092 The
13093 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13094 class initially sets this variable to null but then checks
13095 for a value later.
13096 </para>
13097 </glossdef>
13098 </glossentry>
13099
13100 <glossentry id='var-SYSLINUX_OPTS'><glossterm>SYSLINUX_OPTS</glossterm>
13101 <info>
13102 SYSLINUX_OPTS[doc] = "Lists additional options to add to the syslinux file."
13103 </info>
13104 <glossdef>
13105 <para role="glossdeffirst">
13106<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13107 Lists additional options to add to the syslinux file.
13108 You need to set this variable in your recipe.
13109 If you want to list multiple options, separate the options
13110 with a semicolon character (<filename>;</filename>).
13111 </para>
13112
13113 <para>
13114 The
13115 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13116 class uses this variable to create a set of options.
13117 </para>
13118 </glossdef>
13119 </glossentry>
13120
13121 <glossentry id='var-SYSLINUX_SERIAL'><glossterm>SYSLINUX_SERIAL</glossterm>
13122 <info>
13123 SYSLINUX_SERIAL[doc] = "Specifies the alternate serial port or turns it off."
13124 </info>
13125 <glossdef>
13126 <para role="glossdeffirst">
13127<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13128 Specifies the alternate serial port or turns it off.
13129 To turn off serial, set this variable to an empty string
13130 in your recipe.
13131 The variable's default value is set in the
13132 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13133 as follows:
13134 <literallayout class='monospaced'>
13135 SYSLINUX_SERIAL ?= "0 115200"
13136 </literallayout>
13137 </para>
13138
13139 <para>
13140 The class checks for and uses the variable as needed.
13141 </para>
13142 </glossdef>
13143 </glossentry>
13144
13145 <glossentry id='var-SYSLINUX_SPLASH'><glossterm>SYSLINUX_SPLASH</glossterm>
13146 <info>
13147 SYSLINUX_SPLASH[doc] = "An .LSS file used as the background for the VGA boot menu when you are using the boot menu."
13148 </info>
13149 <glossdef>
13150 <para role="glossdeffirst">
13151<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13152 An <filename>.LSS</filename> file used as the background
13153 for the VGA boot menu when you are using the boot menu.
13154 You need to set this variable in your recipe.
13155 </para>
13156
13157 <para>
13158 The
13159 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13160 class checks for this variable and if found, the
13161 OpenEmbedded build system installs the splash screen.
13162 </para>
13163 </glossdef>
13164 </glossentry>
13165
13166 <glossentry id='var-SYSLINUX_SERIAL_TTY'><glossterm>SYSLINUX_SERIAL_TTY</glossterm>
13167 <info>
13168 SYSLINUX_SERIAL_TTY[doc] = "Specifies the alternate console=tty... kernel boot argument."
13169 </info>
13170 <glossdef>
13171 <para role="glossdeffirst">
13172<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13173 Specifies the alternate console=tty... kernel boot argument.
13174 The variable's default value is set in the
13175 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13176 as follows:
13177 <literallayout class='monospaced'>
13178 SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
13179 </literallayout>
13180 </para>
13181
13182 <para>
13183 The class checks for and uses the variable as needed.
13184 </para>
13185 </glossdef>
13186 </glossentry>
13187
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013188 <glossentry id='var-SYSROOT_DIRS'><glossterm>SYSROOT_DIRS</glossterm>
13189 <info>
13190 SYSROOT_DIRS[doc] = "Directories that are staged into the sysroot by the do_populate_sysroot task."
13191 </info>
13192 <glossdef>
13193 <para role="glossdeffirst">
13194<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13195 Directories that are staged into the sysroot by the
13196 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13197 task.
13198 By default, the following directories are staged:
13199 <literallayout class='monospaced'>
13200 SYSROOT_DIRS = " \
13201 ${includedir} \
13202 ${libdir} \
13203 ${base_libdir} \
13204 ${nonarch_base_libdir} \
13205 ${datadir} \
13206 "
13207 </literallayout>
13208 </para>
13209 </glossdef>
13210 </glossentry>
13211
13212 <glossentry id='var-SYSROOT_DIRS_BLACKLIST'><glossterm>SYSROOT_DIRS_BLACKLIST</glossterm>
13213 <info>
13214 SYSROOT_DIRS_BLACKLIST[doc] = "Directories that are not staged into the sysroot by the do_populate_sysroot task."
13215 </info>
13216 <glossdef>
13217 <para role="glossdeffirst">
13218<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13219 Directories that are not staged into the sysroot by the
13220 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13221 task.
13222 You can use this variable to exclude certain subdirectories
13223 of directories listed in
13224 <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
13225 from staging.
13226 By default, the following directories are not staged:
13227 <literallayout class='monospaced'>
13228 SYSROOT_DIRS_BLACKLIST = " \
13229 ${mandir} \
13230 ${docdir} \
13231 ${infodir} \
13232 ${datadir}/locale \
13233 ${datadir}/applications \
13234 ${datadir}/fonts \
13235 ${datadir}/pixmaps \
13236 "
13237 </literallayout>
13238 </para>
13239 </glossdef>
13240 </glossentry>
13241
13242 <glossentry id='var-SYSROOT_DIRS_NATIVE'><glossterm>SYSROOT_DIRS_NATIVE</glossterm>
13243 <info>
13244 SYSROOT_DIRS_NATIVE[doc] = "Extra directories staged into the sysroot by the do_populate_sysroot task for -native recipes, in addition to those specified in SYSROOT_DIRS."
13245 </info>
13246 <glossdef>
13247 <para role="glossdeffirst">
13248<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13249 Extra directories staged into the sysroot by the
13250 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13251 task for <filename>-native</filename> recipes, in addition
13252 to those specified in
13253 <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>.
13254 By default, the following extra directories are staged:
13255 <literallayout class='monospaced'>
13256 SYSROOT_DIRS_NATIVE = " \
13257 ${bindir} \
13258 ${sbindir} \
13259 ${base_bindir} \
13260 ${base_sbindir} \
13261 ${libexecdir} \
13262 ${sysconfdir} \
13263 ${localstatedir} \
13264 "
13265 </literallayout>
13266 <note>
13267 Programs built by <filename>-native</filename> recipes
13268 run directly from the sysroot
13269 (<link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>),
13270 which is why additional directories containing program
13271 executables and supporting files need to be staged.
13272 </note>
13273 </para>
13274 </glossdef>
13275 </glossentry>
13276
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013277 <glossentry id='var-SYSROOT_PREPROCESS_FUNCS'><glossterm>SYSROOT_PREPROCESS_FUNCS</glossterm>
13278 <info>
13279 SYSROOT_PREPROCESS_FUNCS[doc] = "A list of functions to execute after files are staged into the sysroot. These functions are usually used to apply additional processing on the staged files, or to stage additional files."
13280 </info>
13281 <glossdef>
13282 <para role="glossdeffirst">
13283<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13284 A list of functions to execute after files are staged into
13285 the sysroot.
13286 These functions are usually used to apply additional
13287 processing on the staged files, or to stage additional
13288 files.
13289 </para>
13290 </glossdef>
13291 </glossentry>
13292
13293 <glossentry id='var-SYSTEMD_AUTO_ENABLE'><glossterm>SYSTEMD_AUTO_ENABLE</glossterm>
13294 <info>
13295 SYSTEMD_AUTO_ENABLE[doc] = "For recipes that inherit the systemd class, this variable specifies whether the service you have specified in SYSTEMD_SERVICE should be started automatically or not."
13296 </info>
13297 <glossdef>
13298 <para role="glossdeffirst">
13299<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13300 When inheriting the
13301 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13302 class, this variable specifies whether the service you have
13303 specified in
13304 <link linkend='var-SYSTEMD_SERVICE'><filename>SYSTEMD_SERVICE</filename></link>
13305 should be started automatically or not.
13306 By default, the service is enabled to automatically start
13307 at boot time.
13308 The default setting is in the
13309 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13310 class as follows:
13311 <literallayout class='monospaced'>
13312 SYSTEMD_AUTO_ENABLE ??= "enable"
13313 </literallayout>
13314 </para>
13315
13316 <para>
13317 You can disable the service by setting the variable to
13318 "disable".
13319 </para>
13320 </glossdef>
13321 </glossentry>
13322
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013323 <glossentry id='var-SYSTEMD_BOOT_CFG'><glossterm>SYSTEMD_BOOT_CFG</glossterm>
13324 <info>
13325 SYSTEMD_BOOT_CFG[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_CFG variable specifies the configuration file that should be used."
13326 </info>
13327 <glossdef>
13328 <para role="glossdeffirst">
13329<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13330 When
13331 <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
13332 is set to "systemd-boot", the
13333 <filename>SYSTEMD_BOOT_CFG</filename> variable specifies the
13334 configuration file that should be used.
13335 By default, the
13336 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
13337 class sets the <filename>SYSTEMD_BOOT_CFG</filename> as
13338 follows:
13339 <literallayout class='monospaced'>
13340 SYSTEMD_BOOT_CFG ?= "${<link linkend='var-S'>S</link>}/loader.conf"
13341 </literallayout>
13342 </para>
13343
13344 <para>
13345 For information on Systemd-boot, see the
13346 <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
13347 </para>
13348 </glossdef>
13349 </glossentry>
13350
13351 <glossentry id='var-SYSTEMD_BOOT_ENTRIES'><glossterm>SYSTEMD_BOOT_ENTRIES</glossterm>
13352 <info>
13353 SYSTEMD_BOOT_ENTRIES[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_ENTRIES variable specifies a list of entry files (*.conf) to be installed containing one boot entry per file."
13354 </info>
13355 <glossdef>
13356 <para role="glossdeffirst">
13357<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13358 When
13359 <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
13360 is set to "systemd-boot", the
13361 <filename>SYSTEMD_BOOT_ENTRIES</filename> variable specifies
13362 a list of entry files
13363 (<filename>*.conf</filename>) to be installed
13364 containing one boot entry per file.
13365 By default, the
13366 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
13367 class sets the <filename>SYSTEMD_BOOT_ENTRIES</filename> as
13368 follows:
13369 <literallayout class='monospaced'>
13370 SYSTEMD_BOOT_ENTRIES ?= ""
13371 </literallayout>
13372 </para>
13373
13374 <para>
13375 For information on Systemd-boot, see the
13376 <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
13377 </para>
13378 </glossdef>
13379 </glossentry>
13380
13381 <glossentry id='var-SYSTEMD_BOOT_TIMEOUT'><glossterm>SYSTEMD_BOOT_TIMEOUT</glossterm>
13382 <info>
13383 SYSTEMD_BOOT_TIMEOUT[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_TIMEOUT variable specifies the boot menu timeout in seconds."
13384 </info>
13385 <glossdef>
13386 <para role="glossdeffirst">
13387<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13388 When
13389 <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
13390 is set to "systemd-boot", the
13391 <filename>SYSTEMD_BOOT_TIMEOUT</filename> variable specifies
13392 the boot menu timeout in seconds.
13393 By default, the
13394 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
13395 class sets the <filename>SYSTEMD_BOOT_TIMEOUT</filename> as
13396 follows:
13397 <literallayout class='monospaced'>
13398 SYSTEMD_BOOT_TIMEOUT ?= "10"
13399 </literallayout>
13400 </para>
13401
13402 <para>
13403 For information on Systemd-boot, see the
13404 <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
13405 </para>
13406 </glossdef>
13407 </glossentry>
13408
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013409 <glossentry id='var-SYSTEMD_PACKAGES'><glossterm>SYSTEMD_PACKAGES</glossterm>
13410 <info>
13411 SYSTEMD_PACKAGES[doc] = "For recipes that inherit the systemd class, this variable locates the systemd unit files when they are not found in the main recipe's package."
13412 </info>
13413 <glossdef>
13414 <para role="glossdeffirst">
13415<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13416 When inheriting the
13417 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13418 class, this variable locates the systemd unit files when
13419 they are not found in the main recipe's package.
13420 By default, the
13421 <filename>SYSTEMD_PACKAGES</filename> variable is set
13422 such that the systemd unit files are assumed to reside in
13423 the recipes main package:
13424 <literallayout class='monospaced'>
13425 SYSTEMD_PACKAGES ?= "${PN}"
13426 </literallayout>
13427 </para>
13428
13429 <para>
13430 If these unit files are not in this recipe's main
13431 package, you need to use
13432 <filename>SYSTEMD_PACKAGES</filename> to list the package
13433 or packages in which the build system can find the systemd
13434 unit files.
13435 </para>
13436 </glossdef>
13437 </glossentry>
13438
13439 <glossentry id='var-SYSTEMD_SERVICE'><glossterm>SYSTEMD_SERVICE</glossterm>
13440 <info>
13441 SYSTEMD_SERVICE[doc] = "For recipes that inherit the systemd class, this variable specifies the systemd service name for a package."
13442 </info>
13443 <glossdef>
13444 <para role="glossdeffirst">
13445<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13446 When inheriting the
13447 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13448 class, this variable specifies the systemd service name for
13449 a package.
13450 </para>
13451
13452 <para>
13453 When you specify this file in your recipe, use a package
13454 name override to indicate the package to which the value
13455 applies.
13456 Here is an example from the connman recipe:
13457 <literallayout class='monospaced'>
13458 SYSTEMD_SERVICE_${PN} = "connman.service"
13459 </literallayout>
13460 </para>
13461 </glossdef>
13462 </glossentry>
13463
13464 <glossentry id='var-SYSVINIT_ENABLED_GETTYS'><glossterm>SYSVINIT_ENABLED_GETTYS</glossterm>
13465 <info>
13466 SYSVINIT_ENABLED_GETTYS[doc] = "Specifies which virtual terminals should be running a getty, the default is '1'."
13467 </info>
13468 <glossdef>
13469 <para role="glossdeffirst">
13470<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13471 When using
13472 <ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-enabling-system-services'>SysVinit</ulink>,
13473 specifies a space-separated list of the virtual terminals
13474 that should be running a
13475 <ulink url='http://en.wikipedia.org/wiki/Getty_%28Unix%29'>getty</ulink>
13476 (allowing login), assuming
13477 <link linkend='var-USE_VT'><filename>USE_VT</filename></link>
13478 is not set to "0".
13479 </para>
13480
13481 <para>
13482 The default value for
13483 <filename>SYSVINIT_ENABLED_GETTYS</filename> is "1"
13484 (i.e. only run a getty on the first virtual terminal).
13485 </para>
13486 </glossdef>
13487 </glossentry>
13488
13489 </glossdiv>
13490
13491 <glossdiv id='var-glossary-t'><title>T</title>
13492
13493 <glossentry id='var-T'><glossterm>T</glossterm>
13494 <info>
13495 T[doc] = "This variable points to a directory were BitBake places temporary files, which consist mostly of task logs and scripts, when building a particular recipe."
13496 </info>
13497 <glossdef>
13498 <para role="glossdeffirst">
13499<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13500 This variable points to a directory were BitBake places
13501 temporary files, which consist mostly of task logs and
13502 scripts, when building a particular recipe.
13503 The variable is typically set as follows:
13504 <literallayout class='monospaced'>
13505 T = "${WORKDIR}/temp"
13506 </literallayout>
13507 </para>
13508
13509 <para>
13510 The <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
13511 is the directory into which BitBake unpacks and builds the
13512 recipe.
13513 The default <filename>bitbake.conf</filename> file sets this variable.</para>
13514 <para>The <filename>T</filename> variable is not to be confused with
13515 the <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> variable,
13516 which points to the root of the directory tree where BitBake
13517 places the output of an entire build.
13518 </para>
13519 </glossdef>
13520 </glossentry>
13521
13522 <glossentry id='var-TARGET_ARCH'><glossterm>TARGET_ARCH</glossterm>
13523 <info>
13524 TARGET_ARCH[doc] = "The architecture of the device being built. The OpenEmbedded build system supports the following architectures: arm, mips, ppc, x86, x86-64."
13525 </info>
13526 <glossdef>
13527 <para role="glossdeffirst">
13528<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13529 The target machine's architecture.
13530 The OpenEmbedded build system supports many
13531 architectures.
13532 Here is an example list of architectures supported.
13533 This list is by no means complete as the architecture
13534 is configurable:
13535 <literallayout class='monospaced'>
13536 arm
13537 i586
13538 x86_64
13539 powerpc
13540 powerpc64
13541 mips
13542 mipsel
13543 </literallayout>
13544 </para>
13545
13546 <para>
13547 For additional information on machine architectures, see
13548 the
13549 <link linkend='var-TUNE_ARCH'><filename>TUNE_ARCH</filename></link>
13550 variable.
13551 </para>
13552 </glossdef>
13553 </glossentry>
13554
13555 <glossentry id='var-TARGET_AS_ARCH'><glossterm>TARGET_AS_ARCH</glossterm>
13556 <info>
13557 TARGET_AS_ARCH[doc] = "Specifies architecture-specific assembler flags for the target system."
13558 </info>
13559 <glossdef>
13560 <para role="glossdeffirst">
13561<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13562 Specifies architecture-specific assembler flags for the
13563 target system.
13564 <filename>TARGET_AS_ARCH</filename> is initialized from
13565 <link linkend='var-TUNE_ASARGS'><filename>TUNE_ASARGS</filename></link>
13566 by default in the BitBake configuration file
13567 (<filename>meta/conf/bitbake.conf</filename>):
13568 <literallayout class='monospaced'>
13569 TARGET_AS_ARCH = "${TUNE_ASARGS}"
13570 </literallayout>
13571 </para>
13572 </glossdef>
13573 </glossentry>
13574
13575 <glossentry id='var-TARGET_CC_ARCH'><glossterm>TARGET_CC_ARCH</glossterm>
13576 <info>
13577 TARGET_CC_ARCH[doc] = "Specifies architecture-specific C compiler flags for the target system."
13578 </info>
13579 <glossdef>
13580 <para role="glossdeffirst">
13581<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13582 Specifies architecture-specific C compiler flags for the
13583 target system.
13584 <filename>TARGET_CC_ARCH</filename> is initialized from
13585 <link linkend='var-TUNE_CCARGS'><filename>TUNE_CCARGS</filename></link>
13586 by default.
13587 <note>
13588 It is a common workaround to append
13589 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
13590 to <filename>TARGET_CC_ARCH</filename>
13591 in recipes that build software for the target that
13592 would not otherwise respect the exported
13593 <filename>LDFLAGS</filename> variable.
13594 </note>
13595 </para>
13596 </glossdef>
13597 </glossentry>
13598
13599 <glossentry id='var-TARGET_CC_KERNEL_ARCH'><glossterm>TARGET_CC_KERNEL_ARCH</glossterm>
13600 <info>
13601 TARGET_CC_KERNEL_ARCH[doc] = "This is a specific kernel compiler flag for a CPU or Application Binary Interface (ABI) tune."
13602 </info>
13603 <glossdef>
13604 <para role="glossdeffirst">
13605<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13606 This is a specific kernel compiler flag for a CPU or
13607 Application Binary Interface (ABI) tune.
13608 The flag is used rarely and only for cases where a
13609 userspace
13610 <link linkend='var-TUNE_CCARGS'><filename>TUNE_CCARGS</filename></link>
13611 is not compatible with the kernel compilation.
13612 The <filename>TARGET_CC_KERNEL_ARCH</filename> variable
13613 allows the kernel (and associated modules) to use a
13614 different configuration.
13615 See the
13616 <filename>meta/conf/machine/include/arm/feature-arm-thumb.inc</filename>
13617 file in the
13618 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
13619 for an example.
13620 </para>
13621 </glossdef>
13622 </glossentry>
13623
13624 <glossentry id='var-TARGET_CFLAGS'><glossterm>TARGET_CFLAGS</glossterm>
13625 <info>
13626 TARGET_CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as CFLAGS."
13627 </info>
13628 <glossdef>
13629 <para role="glossdeffirst">
13630<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13631 Specifies the flags to pass to the C compiler when building
13632 for the target.
13633 When building in the target context,
13634 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
13635 is set to the value of this variable by default.
13636 </para>
13637
13638 <para>
13639 Additionally, the SDK's environment setup script sets
13640 the
13641 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
13642 variable in the environment to the
13643 <filename>TARGET_CFLAGS</filename> value so that
13644 executables built using the SDK also have the flags
13645 applied.
13646 </para>
13647 </glossdef>
13648 </glossentry>
13649
13650 <glossentry id='var-TARGET_CPPFLAGS'><glossterm>TARGET_CPPFLAGS</glossterm>
13651 <info>
13652 TARGET_CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers) when building for the target."
13653 </info>
13654 <glossdef>
13655 <para role="glossdeffirst">
13656<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13657 Specifies the flags to pass to the C pre-processor
13658 (i.e. to both the C and the C++ compilers) when building
13659 for the target.
13660 When building in the target context,
13661 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
13662 is set to the value of this variable by default.
13663 </para>
13664
13665 <para>
13666 Additionally, the SDK's environment setup script sets
13667 the
13668 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
13669 variable in the environment to the
13670 <filename>TARGET_CPPFLAGS</filename> value so that
13671 executables built using the SDK also have the flags
13672 applied.
13673 </para>
13674 </glossdef>
13675 </glossentry>
13676
13677 <glossentry id='var-TARGET_CXXFLAGS'><glossterm>TARGET_CXXFLAGS</glossterm>
13678 <info>
13679 TARGET_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the target."
13680 </info>
13681 <glossdef>
13682 <para role="glossdeffirst">
13683<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13684 Specifies the flags to pass to the C++ compiler when
13685 building for the target.
13686 When building in the target context,
13687 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
13688 is set to the value of this variable by default.
13689 </para>
13690
13691 <para>
13692 Additionally, the SDK's environment setup script sets
13693 the
13694 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
13695 variable in the environment to the
13696 <filename>TARGET_CXXFLAGS</filename> value so that
13697 executables built using the SDK also have the flags
13698 applied.
13699 </para>
13700 </glossdef>
13701 </glossentry>
13702
13703 <glossentry id='var-TARGET_FPU'><glossterm>TARGET_FPU</glossterm>
13704 <info>
13705 TARGET_FPU[doc] = "Specifies the method for handling FPU code. For FPU-less targets, which include most ARM CPUs, the variable must be set to 'soft'. If not, the kernel emulation gets used, which results in a performance penalty."
13706 </info>
13707 <glossdef>
13708 <para role="glossdeffirst">
13709<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13710 Specifies the method for handling FPU code.
13711 For FPU-less targets, which include most ARM CPUs, the variable must be
13712 set to "soft".
13713 If not, the kernel emulation gets used, which results in a performance penalty.
13714 </para>
13715 </glossdef>
13716 </glossentry>
13717
13718 <glossentry id='var-TARGET_LD_ARCH'><glossterm>TARGET_LD_ARCH</glossterm>
13719 <info>
13720 TARGET_LD_ARCH[doc] = "Specifies architecture-specific linker flags for the target system."
13721 </info>
13722 <glossdef>
13723 <para role="glossdeffirst">
13724<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13725 Specifies architecture-specific linker flags for the
13726 target system.
13727 <filename>TARGET_LD_ARCH</filename> is initialized from
13728 <link linkend='var-TUNE_LDARGS'><filename>TUNE_LDARGS</filename></link>
13729 by default in the BitBake configuration file
13730 (<filename>meta/conf/bitbake.conf</filename>):
13731 <literallayout class='monospaced'>
13732 TARGET_LD_ARCH = "${TUNE_LDARGS}"
13733 </literallayout>
13734 </para>
13735 </glossdef>
13736 </glossentry>
13737
13738 <glossentry id='var-TARGET_LDFLAGS'><glossterm>TARGET_LDFLAGS</glossterm>
13739 <info>
13740 TARGET_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the target."
13741 </info>
13742 <glossdef>
13743 <para role="glossdeffirst">
13744<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13745 Specifies the flags to pass to the linker when building
13746 for the target.
13747 When building in the target context,
13748 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
13749 is set to the value of this variable by default.
13750 </para>
13751
13752 <para>
13753 Additionally, the SDK's environment setup script sets
13754 the
13755 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
13756 variable in the environment to the
13757 <filename>TARGET_LDFLAGS</filename> value so that
13758 executables built using the SDK also have the flags
13759 applied.
13760 </para>
13761 </glossdef>
13762 </glossentry>
13763
13764 <glossentry id='var-TARGET_OS'><glossterm>TARGET_OS</glossterm>
13765 <info>
13766 TARGET_OS[doc] = "Specifies the target's operating system."
13767 </info>
13768 <glossdef>
13769 <para role="glossdeffirst">
13770<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13771 Specifies the target's operating system.
13772 The variable can be set to "linux" for <filename>glibc</filename>-based systems and
Brad Bishop37a0e4d2017-12-04 01:01:44 -050013773 to "linux-musl" for <filename>musl</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013774 For ARM/EABI targets, there are also "linux-gnueabi" and
Brad Bishop37a0e4d2017-12-04 01:01:44 -050013775 "linux-musleabi" values possible.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013776 </para>
13777 </glossdef>
13778 </glossentry>
13779
13780 <glossentry id='var-TARGET_PREFIX'><glossterm>TARGET_PREFIX</glossterm>
13781 <info>
13782 TARGET_PREFIX[doc] = "The prefix used for the toolchain binary target tools."
13783 </info>
13784 <glossdef>
13785 <para role="glossdeffirst">
13786<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13787 Specifies the prefix used for the toolchain binary target
13788 tools.
13789 </para>
13790
13791 <para>
13792 Depending on the type of recipe and the build target,
13793 <filename>TARGET_PREFIX</filename> is set as follows:
13794 <itemizedlist>
13795 <listitem><para>
13796 For recipes building for the target machine,
13797 the value is
13798 "${<link linkend='var-TARGET_SYS'>TARGET_SYS</link>}-".
13799 </para></listitem>
13800 <listitem><para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050013801 For native recipes, the build system sets the
13802 variable to the value of
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013803 <filename>BUILD_PREFIX</filename>.
13804 </para></listitem>
13805 <listitem><para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050013806 For native SDK recipes
13807 (<filename>nativesdk</filename>), the
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013808 build system sets the variable to the value of
13809 <filename>SDK_PREFIX</filename>.
13810 </para></listitem>
13811 </itemizedlist>
13812 </para>
13813 </glossdef>
13814 </glossentry>
13815
13816 <glossentry id='var-TARGET_SYS'><glossterm>TARGET_SYS</glossterm>
13817 <info>
13818 TARGET_SYS[doc] = "The target system is comprised of TARGET_ARCH,TARGET_VENDOR and TARGET_OS."
13819 </info>
13820 <glossdef>
13821 <para role="glossdeffirst">
13822<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13823 Specifies the system, including the architecture and the
13824 operating system, for which the build is occurring in
13825 the context of the current recipe.
13826 </para>
13827
13828 <para>
13829 The OpenEmbedded build system automatically sets this
13830 variable based on
13831 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>,
13832 <link linkend='var-TARGET_VENDOR'><filename>TARGET_VENDOR</filename></link>,
13833 and
13834 <link linkend='var-TARGET_OS'><filename>TARGET_OS</filename></link>
13835 variables.
13836 <note>
13837 You do not need to set the
13838 <filename>TARGET_SYS</filename> variable yourself.
13839 </note>
13840 </para>
13841
13842 <para>
13843 Consider these two examples:
13844 <itemizedlist>
13845 <listitem><para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050013846 Given a native recipe on a 32-bit, x86 machine
13847 running Linux, the value is "i686-linux".
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013848 </para></listitem>
13849 <listitem><para>
13850 Given a recipe being built for a little-endian,
13851 MIPS target running Linux, the value might be
13852 "mipsel-linux".
13853 </para></listitem>
13854 </itemizedlist>
13855 </para>
13856 </glossdef>
13857 </glossentry>
13858
13859 <glossentry id='var-TARGET_VENDOR'><glossterm>TARGET_VENDOR</glossterm>
13860 <info>
13861 TARGET_VENDOR[doc] = "The name of the target vendor."
13862 </info>
13863 <glossdef>
13864 <para role="glossdeffirst">
13865<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13866 Specifies the name of the target vendor.
13867 </para>
13868 </glossdef>
13869 </glossentry>
13870
13871 <glossentry id='var-TCLIBCAPPEND'><glossterm>TCLIBCAPPEND</glossterm>
13872 <info>
13873 TCLIBCAPPEND[doc] = "Specifies a suffix appended to TMPDIR that identifies the libc variant for the build."
13874 </info>
13875 <glossdef>
13876 <para role="glossdeffirst">
13877<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13878 Specifies a suffix to be appended onto the
13879 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
13880 value.
13881 The suffix identifies the <filename>libc</filename> variant
13882 for building.
13883 When you are building for multiple variants with the same
13884 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
13885 this mechanism ensures that output for different
13886 <filename>libc</filename> variants is kept separate to
13887 avoid potential conflicts.
13888 </para>
13889
13890 <para>
13891 In the <filename>defaultsetup.conf</filename> file, the
13892 default value of <filename>TCLIBCAPPEND</filename> is
13893 "-${TCLIBC}".
13894 However, distros such as poky, which normally only support
13895 one <filename>libc</filename> variant, set
13896 <filename>TCLIBCAPPEND</filename> to "" in their distro
13897 configuration file resulting in no suffix being applied.
13898 </para>
13899 </glossdef>
13900 </glossentry>
13901
13902 <glossentry id='var-TCLIBC'><glossterm>TCLIBC</glossterm>
13903 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050013904 TCLIBC[doc] = "Specifies GNU standard C library (libc) variant to use during the build process. You can select 'glibc' or 'musl'."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013905 </info>
13906 <glossdef>
13907 <para role="glossdeffirst">
13908<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13909 Specifies the GNU standard C library (<filename>libc</filename>)
13910 variant to use during the build process.
13911 This variable replaces <filename>POKYLIBC</filename>, which is no longer
13912 supported.
13913 </para>
13914
13915 <para>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050013916 You can select "glibc" or "musl".
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013917 </para>
13918 </glossdef>
13919 </glossentry>
13920
13921 <glossentry id='var-TCMODE'><glossterm>TCMODE</glossterm>
13922 <info>
13923 TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
13924 </info>
13925 <glossdef>
13926 <para role="glossdeffirst">
13927<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13928 Specifies the toolchain selector.
13929 <filename>TCMODE</filename> controls the characteristics
13930 of the generated packages and images by telling the
13931 OpenEmbedded build system which toolchain profile to use.
13932 By default, the OpenEmbedded build system builds its own
13933 internal toolchain.
13934 The variable's default value is "default", which uses
13935 that internal toolchain.
13936 <note>
13937 If <filename>TCMODE</filename> is set to a value
13938 other than "default", then it is your responsibility
13939 to ensure that the toolchain is compatible with the
13940 default toolchain.
13941 Using older or newer versions of these components
13942 might cause build problems.
13943 See the
13944 <ulink url='&YOCTO_RELEASE_NOTES;'>Release Notes</ulink>
13945 for the specific components with which the toolchain
13946 must be compatible.
13947 </note>
13948 </para>
13949
13950 <para>
13951 The <filename>TCMODE</filename> variable is similar to
13952 <link linkend='var-TCLIBC'><filename>TCLIBC</filename></link>,
13953 which controls the variant of the GNU standard C library
13954 (<filename>libc</filename>) used during the build process:
Brad Bishop37a0e4d2017-12-04 01:01:44 -050013955 <filename>glibc</filename> or <filename>musl</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013956 </para>
13957
13958 <para>
13959 With additional layers, it is possible to use a pre-compiled
13960 external toolchain.
13961 One example is the Sourcery G++ Toolchain.
13962 The support for this toolchain resides in the separate
13963 <trademark class='registered'>Mentor Graphics</trademark>
13964 <filename>meta-sourcery</filename> layer at
13965 <ulink url='http://github.com/MentorEmbedded/meta-sourcery/'></ulink>.
13966 </para>
13967
13968 <para>
13969 The layer's <filename>README</filename> file contains
13970 information on how to use the Sourcery G++ Toolchain as
13971 an external toolchain.
13972 In summary, you must be sure to add the layer to your
13973 <filename>bblayers.conf</filename> file in front of the
13974 <filename>meta</filename> layer and then set the
13975 <filename>EXTERNAL_TOOLCHAIN</filename>
13976 variable in your <filename>local.conf</filename> file
13977 to the location in which you installed the toolchain.
13978 </para>
13979
13980 <para>
13981 The fundamentals used for this example apply to any
13982 external toolchain.
13983 You can use <filename>meta-sourcery</filename> as a
13984 template for adding support for other external toolchains.
13985 </para>
13986 </glossdef>
13987 </glossentry>
13988
13989 <glossentry id='var-TEST_EXPORT_DIR'><glossterm>TEST_EXPORT_DIR</glossterm>
13990 <info>
13991 TEST_EXPORT_DIR[doc] = "The location the OpenEmbedded build system uses to export tests when the TEST_EXPORT_ONLY variable is set to "1"."
13992 </info>
13993 <glossdef>
13994 <para role="glossdeffirst">
13995<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13996 The location the OpenEmbedded build system uses to export
13997 tests when the
13998 <link linkend='var-TEST_EXPORT_ONLY'><filename>TEST_EXPORT_ONLY</filename></link>
13999 variable is set to "1".
14000 </para>
14001
14002 <para>
14003 The <filename>TEST_EXPORT_DIR</filename> variable defaults
14004 to <filename>"${TMPDIR}/testimage/${PN}"</filename>.
14005 </para>
14006 </glossdef>
14007 </glossentry>
14008
14009 <glossentry id='var-TEST_EXPORT_ONLY'><glossterm>TEST_EXPORT_ONLY</glossterm>
14010 <info>
14011 TEST_EXPORT_ONLY[doc] = "Specifies to export the tests only. Set this variable to "1" if you do not want to run the tests but you want them to be exported in a manner that you to run them outside of the build system."
14012 </info>
14013 <glossdef>
14014 <para role="glossdeffirst">
14015<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14016 Specifies to export the tests only.
14017 Set this variable to "1" if you do not want to run the
14018 tests but you want them to be exported in a manner that
14019 you to run them outside of the build system.
14020 </para>
14021 </glossdef>
14022 </glossentry>
14023
14024 <glossentry id='var-TEST_IMAGE'><glossterm>TEST_IMAGE</glossterm>
14025 <info>
14026 TEST_IMAGE[doc] = "Enables test booting of virtual machine images under the QEMU emulator after any root filesystems are created and runs tests against those images."
14027 </info>
14028 <glossdef>
14029 <para role="glossdeffirst">
14030<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14031 Automatically runs the series of automated tests for
14032 images when an image is successfully built.
14033 </para>
14034
14035 <para>
14036 These tests are written in Python making use of the
14037 <filename>unittest</filename> module, and the majority of
14038 them run commands on the target system over
14039 <filename>ssh</filename>.
14040 You can set this variable to "1" in your
14041 <filename>local.conf</filename> file in the
14042 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
14043 to have the OpenEmbedded build system automatically run
14044 these tests after an image successfully builds:
14045 <literallayout class='monospaced'>
14046 TEST_IMAGE = "1"
14047 </literallayout>
14048 For more information on enabling, running, and writing
14049 these tests, see the
14050 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
14051 section in the Yocto Project Development Manual and the
Patrick Williamsf1e5d692016-03-30 15:21:19 -050014052 "<link linkend='ref-classes-testimage*'><filename>testimage*.bbclass</filename></link>"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014053 section.
14054 </para>
14055 </glossdef>
14056 </glossentry>
14057
14058 <glossentry id='var-TEST_LOG_DIR'><glossterm>TEST_LOG_DIR</glossterm>
14059 <info>
14060 TEST_LOG_DIR[doc] = "Holds the SSH log and the boot log for QEMU machines. The <filename>TEST_LOG_DIR</filename> variable defaults to "${WORKDIR}/testimage"."
14061 </info>
14062 <glossdef>
14063 <para role="glossdeffirst">
14064<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14065 Holds the SSH log and the boot log for QEMU machines.
14066 The <filename>TEST_LOG_DIR</filename> variable defaults
14067 to <filename>"${WORKDIR}/testimage"</filename>.
14068 <note>
14069 Actual test results reside in the task log
14070 (<filename>log.do_testimage</filename>), which is in
14071 the <filename>${WORKDIR}/temp/</filename> directory.
14072 </note>
14073 </para>
14074 </glossdef>
14075 </glossentry>
14076
14077 <glossentry id='var-TEST_POWERCONTROL_CMD'><glossterm>TEST_POWERCONTROL_CMD</glossterm>
14078 <info>
14079 TEST_POWERCONTROL_CMD[doc] = "For automated hardware testing, specifies the command to use to control the power of the target machine under test"
14080 </info>
14081 <glossdef>
14082 <para role="glossdeffirst">
14083<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14084 For automated hardware testing, specifies the command to
14085 use to control the power of the target machine under test.
14086 Typically, this command would point to a script that
14087 performs the appropriate action (e.g. interacting
14088 with a web-enabled power strip).
14089 The specified command should expect to receive as the last
14090 argument "off", "on" or "cycle" specifying to power off,
14091 on, or cycle (power off and then power on) the device,
14092 respectively.
14093 </para>
14094 </glossdef>
14095 </glossentry>
14096
14097 <glossentry id='var-TEST_POWERCONTROL_EXTRA_ARGS'><glossterm>TEST_POWERCONTROL_EXTRA_ARGS</glossterm>
14098 <info>
14099 TEST_POWERCONTROL_EXTRA_ARGS[doc] = "For automated hardware testing, specifies additional arguments to pass through to the command specified in TEST_POWERCONTROL_CMD"
14100 </info>
14101 <glossdef>
14102 <para role="glossdeffirst">
14103<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14104 For automated hardware testing, specifies additional
14105 arguments to pass through to the command specified in
14106 <link linkend='var-TEST_POWERCONTROL_CMD'><filename>TEST_POWERCONTROL_CMD</filename></link>.
14107 Setting <filename>TEST_POWERCONTROL_EXTRA_ARGS</filename>
14108 is optional.
14109 You can use it if you wish, for example, to separate the
14110 machine-specific and non-machine-specific parts of the
14111 arguments.
14112 </para>
14113 </glossdef>
14114 </glossentry>
14115
14116 <glossentry id='var-TEST_QEMUBOOT_TIMEOUT'><glossterm>TEST_QEMUBOOT_TIMEOUT</glossterm>
14117 <info>
14118 TEST_QEMUBOOT_TIMEOUT[doc] = "The time in seconds allowed for an image to boot before automated runtime tests begin to run against an image."
14119 </info>
14120 <glossdef>
14121 <para role="glossdeffirst">
14122<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14123 The time in seconds allowed for an image to boot before
14124 automated runtime tests begin to run against an
14125 image.
14126 The default timeout period to allow the boot process to
14127 reach the login prompt is 500 seconds.
14128 You can specify a different value in the
14129 <filename>local.conf</filename> file.
14130 </para>
14131
14132 <para>
14133 For more information on testing images, see the
14134 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
14135 section in the Yocto Project Development Manual.
14136 </para>
14137 </glossdef>
14138 </glossentry>
14139
14140 <glossentry id='var-TEST_SERIALCONTROL_CMD'><glossterm>TEST_SERIALCONTROL_CMD</glossterm>
14141 <info>
14142 TEST_SERIALCONTROL_CMD[doc] = "For automated hardware testing, specifies the command to use to connect to the serial console of the target machine under test."
14143 </info>
14144 <glossdef>
14145 <para role="glossdeffirst">
14146<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14147 For automated hardware testing, specifies the command
14148 to use to connect to the serial console of the target
14149 machine under test.
14150 This command simply needs to connect to the serial console
14151 and forward that connection to standard input and output
14152 as any normal terminal program does.
14153 </para>
14154
14155 <para>
14156 For example, to use the Picocom terminal program on
14157 serial device <filename>/dev/ttyUSB0</filename> at
14158 115200bps, you would set the variable as follows:
14159 <literallayout class='monospaced'>
14160 TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200"
14161 </literallayout>
14162 </para>
14163 </glossdef>
14164 </glossentry>
14165
14166 <glossentry id='var-TEST_SERIALCONTROL_EXTRA_ARGS'><glossterm>TEST_SERIALCONTROL_EXTRA_ARGS</glossterm>
14167 <info>
14168 TEST_SERIALCONTROL_EXTRA_ARGS[doc] = "For automated hardware testing, specifies additional arguments to pass through to the command specified in TEST_SERIALCONTROL_CMD."
14169 </info>
14170 <glossdef>
14171 <para role="glossdeffirst">
14172<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14173 For automated hardware testing, specifies additional
14174 arguments to pass through to the command specified in
14175 <link linkend='var-TEST_SERIALCONTROL_CMD'><filename>TEST_SERIALCONTROL_CMD</filename></link>.
14176 Setting <filename>TEST_SERIALCONTROL_EXTRA_ARGS</filename>
14177 is optional.
14178 You can use it if you wish, for example, to separate the
14179 machine-specific and non-machine-specific parts of the
14180 command.
14181 </para>
14182 </glossdef>
14183 </glossentry>
14184
14185 <glossentry id='var-TEST_SERVER_IP'><glossterm>TEST_SERVER_IP</glossterm>
14186 <info>
14187 TEST_SERVER_IP[doc] = "The IP address of the build machine (host machine). This IP address is usually automatically detected."
14188 </info>
14189 <glossdef>
14190 <para role="glossdeffirst">
14191<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14192 The IP address of the build machine (host machine).
14193 This IP address is usually automatically detected.
14194 However, if detection fails, this variable needs to be set
14195 to the IP address of the build machine (i.e. where
14196 the build is taking place).
14197 <note>
14198 The <filename>TEST_SERVER_IP</filename> variable
14199 is only used for a small number of tests such as
14200 the "smart" test suite, which needs to download
14201 packages from <filename>DEPLOY_DIR/rpm</filename>.
14202 </note>
14203 </para>
14204 </glossdef>
14205 </glossentry>
14206
14207 <glossentry id='var-TEST_TARGET'><glossterm>TEST_TARGET</glossterm>
14208 <info>
14209 TEST_TARGET[doc] = "For automated runtime testing, specifies the method of deploying the image and running tests on the target machine."
14210 </info>
14211 <glossdef>
14212 <para role="glossdeffirst">
14213<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14214 Specifies the target controller to use when running tests
14215 against a test image.
14216 The default controller to use is "qemu":
14217 <literallayout class='monospaced'>
14218 TEST_TARGET = "qemu"
14219 </literallayout>
14220 </para>
14221
14222 <para>
14223 A target controller is a class that defines how an
14224 image gets deployed on a target and how a target is started.
14225 A layer can extend the controllers by adding a module
14226 in the layer's <filename>/lib/oeqa/controllers</filename>
14227 directory and by inheriting the
14228 <filename>BaseTarget</filename> class, which is an abstract
14229 class that cannot be used as a value of
14230 <filename>TEST_TARGET</filename>.
14231 </para>
14232
14233 <para>
14234 You can provide the following arguments with
14235 <filename>TEST_TARGET</filename>:
14236 <itemizedlist>
14237 <listitem><para><emphasis>"qemu" and "QemuTarget":</emphasis>
14238 Boots a QEMU image and runs the tests.
14239 See the
14240 "<ulink url='&YOCTO_DOCS_DEV_URL;#qemu-image-enabling-tests'>Enabling Runtime Tests on QEMU</ulink>"
14241 section in the Yocto Project Development Manual for
14242 more information.
14243 </para></listitem>
14244 <listitem><para><emphasis>"simpleremote" and "SimpleRemoteTarget":</emphasis>
14245 Runs the tests on target hardware that is already
14246 up and running.
14247 The hardware can be on the network or it can be
14248 a device running an image on QEMU.
14249 You must also set
14250 <link linkend='var-TEST_TARGET_IP'><filename>TEST_TARGET_IP</filename></link>
14251 when you use "simpleremote" or "SimpleRemoteTarget".
14252 <note>
14253 This argument is defined in
14254 <filename>meta/lib/oeqa/targetcontrol.py</filename>.
14255 The small caps names are kept for compatibility
14256 reasons.
14257 </note>
14258 </para></listitem>
14259 <listitem><para><emphasis>"GummibootTarget":</emphasis>
14260 Automatically deploys and runs tests on an
14261 EFI-enabled machine that has a master image
14262 installed.
14263 <note>
14264 This argument is defined in
14265 <filename>meta/lib/oeqa/controllers/masterimage.py</filename>.
14266 </note>
14267 </para></listitem>
14268 </itemizedlist>
14269 </para>
14270
14271 <para>
14272 For information on running tests on hardware, see the
14273 "<ulink url='&YOCTO_DOCS_DEV_URL;#hardware-image-enabling-tests'>Enabling Runtime Tests on Hardware</ulink>"
14274 section in the Yocto Project Development Manual.
14275 </para>
14276 </glossdef>
14277 </glossentry>
14278
14279 <glossentry id='var-TEST_TARGET_IP'><glossterm>TEST_TARGET_IP</glossterm>
14280 <info>
14281 TEST_TARGET_IP[doc] = "The IP address of your hardware under test."
14282 </info>
14283 <glossdef>
14284 <para role="glossdeffirst">
14285<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14286 The IP address of your hardware under test.
14287 The <filename>TEST_TARGET_IP</filename> variable has no
14288 effect when
14289 <link linkend='var-TEST_TARGET'><filename>TEST_TARGET</filename></link>
14290 is set to "qemu".
14291 </para>
14292
14293 <para>
14294 When you specify the IP address, you can also include a
14295 port.
14296 Here is an example:
14297 <literallayout class='monospaced'>
14298 TEST_TARGET_IP = "192.168.1.4:2201"
14299 </literallayout>
14300 Specifying a port is useful when SSH is started on a
14301 non-standard port or in cases when your hardware under test
14302 is behind a firewall or network that is not directly
14303 accessible from your host and you need to do port address
14304 translation.
14305 </para>
14306 </glossdef>
14307 </glossentry>
14308
14309 <glossentry id='var-TEST_SUITES'><glossterm>TEST_SUITES</glossterm>
14310 <info>
14311 TEST_SUITES[doc] = "An ordered list of tests (modules) to run against an image when performing automated runtime testing."
14312 </info>
14313 <glossdef>
14314 <para role="glossdeffirst">
14315<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14316 An ordered list of tests (modules) to run against
14317 an image when performing automated runtime testing.
14318 </para>
14319
14320 <para>
14321 The OpenEmbedded build system provides a core set of tests
14322 that can be used against images.
14323 <note>
14324 Currently, there is only support for running these tests
14325 under QEMU.
14326 </note>
14327 Tests include <filename>ping</filename>,
14328 <filename>ssh</filename>, <filename>df</filename> among
14329 others.
14330 You can add your own tests to the list of tests by
14331 appending <filename>TEST_SUITES</filename> as follows:
14332 <literallayout class='monospaced'>
14333 TEST_SUITES_append = " <replaceable>mytest</replaceable>"
14334 </literallayout>
14335 Alternatively, you can provide the "auto" option to
14336 have all applicable tests run against the image.
14337 <literallayout class='monospaced'>
14338 TEST_SUITES_append = " auto"
14339 </literallayout>
14340 Using this option causes the build system to automatically
14341 run tests that are applicable to the image.
14342 Tests that are not applicable are skipped.
14343 </para>
14344
14345 <para>
14346 The order in which tests are run is important.
14347 Tests that depend on another test must appear later in the
14348 list than the test on which they depend.
14349 For example, if you append the list of tests with two
14350 tests (<filename>test_A</filename> and
14351 <filename>test_B</filename>) where
14352 <filename>test_B</filename> is dependent on
14353 <filename>test_A</filename>, then you must order the tests
14354 as follows:
14355 <literallayout class='monospaced'>
14356 TEST_SUITES = " test_A test_B"
14357 </literallayout>
14358 </para>
14359
14360 <para>
14361 For more information on testing images, see the
14362 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
14363 section in the Yocto Project Development Manual.
14364 </para>
14365 </glossdef>
14366 </glossentry>
14367
14368 <glossentry id='var-THISDIR'><glossterm>THISDIR</glossterm>
14369 <info>
14370 THISDIR[doc] = "The directory in which the file BitBake is currently parsing is located."
14371 </info>
14372 <glossdef>
14373 <para role="glossdeffirst">
14374<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14375 The directory in which the file BitBake is currently
14376 parsing is located.
14377 Do not manually set this variable.
14378 </para>
14379 </glossdef>
14380 </glossentry>
14381
14382 <glossentry id='var-TIME'><glossterm>TIME</glossterm>
14383 <info>
14384 TIME[doc] = "The time the build was started using HMS format."
14385 </info>
14386 <glossdef>
14387 <para role="glossdeffirst">
14388<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14389 The time the build was started.
14390 Times appear using the hour, minute, and second (HMS)
14391 format (e.g. "140159" for one minute and fifty-nine
14392 seconds past 1400 hours).
14393 </para>
14394 </glossdef>
14395 </glossentry>
14396
14397 <glossentry id='var-TMPDIR'><glossterm>TMPDIR</glossterm>
14398 <info>
14399 TMPDIR[doc] = "The temporary directory the OpenEmbedded build system uses when it does its work building images. By default, the TMPDIR variable is named tmp within the Build Directory."
14400 </info>
14401 <glossdef>
14402 <para role="glossdeffirst">
14403<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14404 This variable is the base directory the OpenEmbedded
14405 build system uses for all build output and intermediate
14406 files (other than the shared state cache).
14407 By default, the <filename>TMPDIR</filename> variable points
14408 to <filename>tmp</filename> within the
14409 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
14410 </para>
14411
14412 <para>
14413 If you want to establish this directory in a location other
14414 than the default, you can uncomment and edit the following
14415 statement in the
14416 <filename>conf/local.conf</filename> file in the
14417 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>:
14418 <literallayout class='monospaced'>
14419 #TMPDIR = "${TOPDIR}/tmp"
14420 </literallayout>
14421 An example use for this scenario is to set
14422 <filename>TMPDIR</filename> to a local disk, which does
14423 not use NFS, while having the Build Directory use NFS.
14424 </para>
14425
14426 <para>
14427 The filesystem used by <filename>TMPDIR</filename> must
14428 have standard filesystem semantics (i.e. mixed-case files
14429 are unique, POSIX file locking, and persistent inodes).
14430 Due to various issues with NFS and bugs in some
14431 implementations, NFS does not meet this minimum
14432 requirement.
14433 Consequently, <filename>TMPDIR</filename> cannot be on
14434 NFS.
14435 </para>
14436 </glossdef>
14437 </glossentry>
14438
14439 <glossentry id='var-TOOLCHAIN_HOST_TASK'><glossterm>TOOLCHAIN_HOST_TASK</glossterm>
14440 <info>
14441 TOOLCHAIN_HOST_TASK[doc] = "This variable lists packages the OpenEmbedded build system uses when building an SDK, which contains a cross-development environment."
14442 </info>
14443 <glossdef>
14444 <para role="glossdeffirst">
14445<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14446 This variable lists packages the OpenEmbedded build system
14447 uses when building an SDK, which contains a
14448 cross-development environment.
14449 The packages specified by this variable are part of the
14450 toolchain set that runs on the
14451 <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>,
14452 and each package should usually have the prefix
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014453 <filename>nativesdk-</filename>.
14454 For example, consider the following command when
14455 building an SDK:
14456 <literallayout class='monospaced'>
14457 $ bitbake -c populate_sdk <replaceable>imagename</replaceable>
14458 </literallayout>
14459 In this case, a default list of packages is set in this
14460 variable, but you can add additional packages to the list.
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014461 See the
14462 "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-adding-individual-packages'>Adding Individual Packages to the Standard SDK</ulink>"
14463 section in the Yocto Project Software Development Kit (SDK)
14464 Developer's Guide for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014465 </para>
14466
14467 <para>
14468 For background information on cross-development toolchains
14469 in the Yocto Project development environment, see the
14470 "<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>"
14471 section.
14472 For information on setting up a cross-development
14473 environment, see the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014474 <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-manual'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014475 </para>
14476 </glossdef>
14477 </glossentry>
14478
14479 <glossentry id='var-TOOLCHAIN_OUTPUTNAME'><glossterm>TOOLCHAIN_OUTPUTNAME</glossterm>
14480 <info>
14481 TOOLCHAIN_OUTPUTNAME[doc] = "Defines the name used for the toolchain output."
14482 </info>
14483 <glossdef>
14484 <para role="glossdeffirst">
14485<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14486 This variable defines the name used for the toolchain
14487 output.
14488 The
14489 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
14490 class sets the
14491 <filename>TOOLCHAIN_OUTPUTNAME</filename> variable as
14492 follows:
14493 <literallayout class='monospaced'>
14494 TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
14495 </literallayout>
14496 See the
14497 <link linkend='var-SDK_NAME'><filename>SDK_NAME</filename></link>
14498 and
14499 <link linkend='var-SDK_VERSION'><filename>SDK_VERSION</filename></link>
14500 variables for additional information.
14501 </para>
14502 </glossdef>
14503 </glossentry>
14504
14505 <glossentry id='var-TOOLCHAIN_TARGET_TASK'><glossterm>TOOLCHAIN_TARGET_TASK</glossterm>
14506 <info>
14507 TOOLCHAIN_TARGET_TASK[doc] = "This variable lists packages the OpenEmbedded build system uses when it creates the target part of an SDK, which includes libraries and headers."
14508 </info>
14509 <glossdef>
14510 <para role="glossdeffirst">
14511<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14512 This variable lists packages the OpenEmbedded build system
14513 uses when it creates the target part of an SDK
14514 (i.e. the part built for the target hardware), which
14515 includes libraries and headers.
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014516 Use this variable to add individual packages to the
14517 part of the SDK that runs on the target.
14518 See the
14519 "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-adding-individual-packages'>Adding Individual Packages to the Standard SDK</ulink>"
14520 section in the Yocto Project Software Development Kit (SDK)
14521 Developer's Guide for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014522 </para>
14523
14524 <para>
14525 For background information on cross-development toolchains
14526 in the Yocto Project development environment, see the
14527 "<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>"
14528 section.
14529 For information on setting up a cross-development
14530 environment, see the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014531 <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-manual'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014532 </para>
14533 </glossdef>
14534 </glossentry>
14535
14536 <glossentry id='var-TOPDIR'><glossterm>TOPDIR</glossterm>
14537 <info>
14538 TOPDIR[doc] = "The Build Directory. BitBake automatically sets this variable. The OpenEmbedded build system uses the Build Directory when building images."
14539 </info>
14540 <glossdef>
14541 <para role="glossdeffirst">
14542<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14543 The top-level
14544 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
14545 BitBake automatically sets this variable when you
14546 initialize your build environment using either
14547 <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
14548 or
14549 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>.
14550 </para>
14551 </glossdef>
14552 </glossentry>
14553
14554 <glossentry id='var-TRANSLATED_TARGET_ARCH'><glossterm>TRANSLATED_TARGET_ARCH</glossterm>
14555 <info>
14556 TRANSLATED_TARGET_ARCH[doc] = "A sanitized version of TARGET_ARCH. This variable is used where the architecture is needed in a value where underscores are not allowed."
14557 </info>
14558 <glossdef>
14559 <para role="glossdeffirst">
14560<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14561 A sanitized version of
14562 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>.
14563 This variable is used where the architecture is needed in
14564 a value where underscores are not allowed, for example
14565 within package filenames.
14566 In this case, dash characters replace any underscore
14567 characters used in TARGET_ARCH.
14568 </para>
14569
14570 <para>
14571 Do not edit this variable.
14572 </para>
14573 </glossdef>
14574 </glossentry>
14575
14576 <glossentry id='var-TUNE_ARCH'><glossterm>TUNE_ARCH</glossterm>
14577 <info>
14578 TUNE_ARCH[doc] = "The GNU canonical architecture for a specific architecture (i.e. arm, armeb, mips, mips64, and so forth)."
14579 </info>
14580 <glossdef>
14581 <para role="glossdeffirst">
14582<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14583 The GNU canonical architecture for a specific architecture
14584 (i.e. <filename>arm</filename>,
14585 <filename>armeb</filename>,
14586 <filename>mips</filename>,
14587 <filename>mips64</filename>, and so forth).
14588 BitBake uses this value to setup configuration.
14589 </para>
14590
14591 <para>
14592 <filename>TUNE_ARCH</filename> definitions are specific to
14593 a given architecture.
14594 The definitions can be a single static definition, or
14595 can be dynamically adjusted.
14596 You can see details for a given CPU family by looking at
14597 the architecture's <filename>README</filename> file.
14598 For example, the
14599 <filename>meta/conf/machine/include/mips/README</filename>
14600 file in the
14601 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
14602 provides information for <filename>TUNE_ARCH</filename>
14603 specific to the <filename>mips</filename> architecture.
14604 </para>
14605
14606 <para>
14607 <filename>TUNE_ARCH</filename> is tied closely to
14608 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>,
14609 which defines the target machine's architecture.
14610 The BitBake configuration file
14611 (<filename>meta/conf/bitbake.conf</filename>) sets
14612 <filename>TARGET_ARCH</filename> as follows:
14613 <literallayout class='monospaced'>
14614 TARGET_ARCH = "${TUNE_ARCH}"
14615 </literallayout>
14616 </para>
14617
14618 <para>
14619 The following list, which is by no means complete since
14620 architectures are configurable, shows supported machine
14621 architectures:
14622 <literallayout class='monospaced'>
14623 arm
14624 i586
14625 x86_64
14626 powerpc
14627 powerpc64
14628 mips
14629 mipsel
14630 </literallayout>
14631 </para>
14632 </glossdef>
14633 </glossentry>
14634
14635 <glossentry id='var-TUNE_ASARGS'><glossterm>TUNE_ASARGS</glossterm>
14636 <info>
14637 TUNE_ASARGS[doc] = "Specifies architecture-specific assembler flags for the target system."
14638 </info>
14639 <glossdef>
14640 <para role="glossdeffirst">
14641<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14642 Specifies architecture-specific assembler flags for
14643 the target system.
14644 The set of flags is based on the selected tune features.
14645 <filename>TUNE_ASARGS</filename> is set using
14646 the tune include files, which are typically under
14647 <filename>meta/conf/machine/include/</filename> and are
14648 influenced through
14649 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
14650 For example, the
14651 <filename>meta/conf/machine/include/x86/arch-x86.inc</filename>
14652 file defines the flags for the x86 architecture as follows:
14653 <literallayout class='monospaced'>
14654 TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
14655 </literallayout>
14656 <note>
14657 Board Support Packages (BSPs) select the tune.
14658 The selected tune, in turn, affects the tune variables
14659 themselves (i.e. the tune can supply its own
14660 set of flags).
14661 </note>
14662 </para>
14663 </glossdef>
14664 </glossentry>
14665
14666 <glossentry id='var-TUNE_CCARGS'><glossterm>TUNE_CCARGS</glossterm>
14667 <info>
14668 TUNE_CCARGS[doc] = "Specifies architecture-specific C compiler flags for the target system."
14669 </info>
14670 <glossdef>
14671 <para role="glossdeffirst">
14672<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14673 Specifies architecture-specific C compiler flags for
14674 the target system.
14675 The set of flags is based on the selected tune features.
14676 <filename>TUNE_CCARGS</filename> is set using
14677 the tune include files, which are typically under
14678 <filename>meta/conf/machine/include/</filename> and are
14679 influenced through
14680 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
14681 <note>
14682 Board Support Packages (BSPs) select the tune.
14683 The selected tune, in turn, affects the tune variables
14684 themselves (i.e. the tune can supply its own
14685 set of flags).
14686 </note>
14687 </para>
14688 </glossdef>
14689 </glossentry>
14690
14691 <glossentry id='var-TUNE_LDARGS'><glossterm>TUNE_LDARGS</glossterm>
14692 <info>
14693 TUNE_LDARGS[doc] = "Specifies architecture-specific linker flags for the target system."
14694 </info>
14695 <glossdef>
14696 <para role="glossdeffirst">
14697<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14698 Specifies architecture-specific linker flags for
14699 the target system.
14700 The set of flags is based on the selected tune features.
14701 <filename>TUNE_LDARGS</filename> is set using
14702 the tune include files, which are typically under
14703 <filename>meta/conf/machine/include/</filename> and are
14704 influenced through
14705 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
14706 For example, the
14707 <filename>meta/conf/machine/include/x86/arch-x86.inc</filename>
14708 file defines the flags for the x86 architecture as follows:
14709 <literallayout class='monospaced'>
14710 TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
14711 </literallayout>
14712 <note>
14713 Board Support Packages (BSPs) select the tune.
14714 The selected tune, in turn, affects the tune variables
14715 themselves (i.e. the tune can supply its own
14716 set of flags).
14717 </note>
14718 </para>
14719 </glossdef>
14720 </glossentry>
14721
14722 <glossentry id='var-TUNE_FEATURES'><glossterm>TUNE_FEATURES</glossterm>
14723 <info>
14724 TUNE_FEATURES[doc] = "Features used to "tune" a compiler for optimal use given a specific processor."
14725 </info>
14726 <glossdef>
14727 <para role="glossdeffirst">
14728<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14729 Features used to "tune" a compiler for optimal use
14730 given a specific processor.
14731 The features are defined within the tune files and allow
14732 arguments (i.e. <filename>TUNE_*ARGS</filename>) to be
14733 dynamically generated based on the features.
14734 </para>
14735
14736 <para>
14737 The OpenEmbedded build system verifies the features
14738 to be sure they are not conflicting and that they are
14739 supported.
14740 </para>
14741
14742 <para>
14743 The BitBake configuration file
14744 (<filename>meta/conf/bitbake.conf</filename>) defines
14745 <filename>TUNE_FEATURES</filename> as follows:
14746 <literallayout class='monospaced'>
14747 TUNE_FEATURES ??= "${TUNE_FEATURES_tune-${DEFAULTTUNE}}"
14748 </literallayout>
14749 See the
14750 <link linkend='var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></link>
14751 variable for more information.
14752 </para>
14753 </glossdef>
14754 </glossentry>
14755
14756 <glossentry id='var-TUNE_PKGARCH'><glossterm>TUNE_PKGARCH</glossterm>
14757 <info>
14758 TUNE_PKGARCH[doc] = "The package architecture understood by the packaging system to define the architecture, ABI, and tuning of output packages."
14759 </info>
14760 <glossdef>
14761 <para role="glossdeffirst">
14762<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14763 The package architecture understood by the packaging
14764 system to define the architecture, ABI, and tuning of
14765 output packages.
14766 The specific tune is defined using the "_tune" override
14767 as follows:
14768 <literallayout class='monospaced'>
14769 TUNE_PKGARCH_tune-<replaceable>tune</replaceable> = "<replaceable>tune</replaceable>"
14770 </literallayout>
14771 </para>
14772
14773 <para>
14774 These tune-specific package architectures are defined in
14775 the machine include files.
14776 Here is an example of the "core2-32" tuning as used
14777 in the
14778 <filename>meta/conf/machine/include/tune-core2.inc</filename>
14779 file:
14780 <literallayout class='monospaced'>
14781 TUNE_PKGARCH_tune-core2-32 = "core2-32"
14782 </literallayout>
14783 </para>
14784 </glossdef>
14785 </glossentry>
14786
14787 <glossentry id='var-TUNEABI'><glossterm>TUNEABI</glossterm>
14788 <info>
14789 TUNEABI[doc] = "An underlying ABI used by a particular tuning in a given toolchain layer. This feature allows providers using prebuilt libraries to check compatibility of a tuning against their selection of libraries."
14790 </info>
14791 <glossdef>
14792 <para role="glossdeffirst">
14793<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14794 An underlying Application Binary Interface (ABI) used by
14795 a particular tuning in a given toolchain layer.
14796 Providers that use prebuilt libraries can use the
14797 <filename>TUNEABI</filename>,
14798 <link linkend='var-TUNEABI_OVERRIDE'><filename>TUNEABI_OVERRIDE</filename></link>,
14799 and
14800 <link linkend='var-TUNEABI_WHITELIST'><filename>TUNEABI_WHITELIST</filename></link>
14801 variables to check compatibility of tunings against their
14802 selection of libraries.
14803 </para>
14804
14805 <para>
14806 If <filename>TUNEABI</filename> is undefined, then every
14807 tuning is allowed.
14808 See the
14809 <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
14810 class to see how the variable is used.
14811 </para>
14812 </glossdef>
14813 </glossentry>
14814
14815 <glossentry id='var-TUNEABI_OVERRIDE'><glossterm>TUNEABI_OVERRIDE</glossterm>
14816 <info>
14817 TUNEABI_OVERRIDE[doc] = "If set, ignores TUNEABI_WHITELIST."
14818 </info>
14819 <glossdef>
14820 <para role="glossdeffirst">
14821<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14822 If set, the OpenEmbedded system ignores the
14823 <link linkend='var-TUNEABI_WHITELIST'><filename>TUNEABI_WHITELIST</filename></link>
14824 variable.
14825 Providers that use prebuilt libraries can use the
14826 <filename>TUNEABI_OVERRIDE</filename>,
14827 <filename>TUNEABI_WHITELIST</filename>,
14828 and
14829 <link linkend='var-TUNEABI'><filename>TUNEABI</filename></link>
14830 variables to check compatibility of a tuning against their
14831 selection of libraries.
14832 </para>
14833
14834 <para>
14835 See the
14836 <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
14837 class to see how the variable is used.
14838 </para>
14839 </glossdef>
14840 </glossentry>
14841
14842 <glossentry id='var-TUNEABI_WHITELIST'><glossterm>TUNEABI_WHITELIST</glossterm>
14843 <info>
14844 TUNEABI_WHITELIST[doc] = "A whitelist of permissible TUNEABI values. If the variable is not set, all values are allowed."
14845 </info>
14846 <glossdef>
14847 <para role="glossdeffirst">
14848<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14849 A whitelist of permissible
14850 <link linkend='var-TUNEABI'><filename>TUNEABI</filename></link>
14851 values.
14852 If <filename>TUNEABI_WHITELIST</filename> is not set,
14853 all tunes are allowed.
14854 Providers that use prebuilt libraries can use the
14855 <filename>TUNEABI_WHITELIST</filename>,
14856 <link linkend='var-TUNEABI_OVERRIDE'><filename>TUNEABI_OVERRIDE</filename></link>,
14857 and <filename>TUNEABI</filename> variables to check
14858 compatibility of a tuning against their selection of
14859 libraries.
14860 </para>
14861
14862 <para>
14863 See the
14864 <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
14865 class to see how the variable is used.
14866 </para>
14867 </glossdef>
14868 </glossentry>
14869
14870 <glossentry id='var-TUNECONFLICTS'><glossterm>TUNECONFLICTS[<replaceable>feature</replaceable>]</glossterm>
14871 <info>
14872 TUNECONFLICTS[doc] = "Specifies CPU or Application Binary Interface (ABI) tuning features that conflict with specified feature."
14873 </info>
14874 <glossdef>
14875 <para role="glossdeffirst">
14876<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14877 Specifies CPU or Application Binary Interface (ABI)
14878 tuning features that conflict with <replaceable>feature</replaceable>.
14879 </para>
14880
14881 <para>
14882 Known tuning conflicts are specified in the machine include
14883 files in the
14884 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
14885 Here is an example from the
14886 <filename>meta/conf/machine/include/mips/arch-mips.inc</filename>
14887 include file that lists the "o32" and "n64" features as
14888 conflicting with the "n32" feature:
14889 <literallayout class='monospaced'>
14890 TUNECONFLICTS[n32] = "o32 n64"
14891 </literallayout>
14892 </para>
14893 </glossdef>
14894 </glossentry>
14895
14896 <glossentry id='var-TUNEVALID'><glossterm>TUNEVALID[<replaceable>feature</replaceable>]</glossterm>
14897 <info>
14898 TUNEVALID[doc] = "Descriptions, stored as flags, of valid tuning features."
14899 </info>
14900 <glossdef>
14901 <para role="glossdeffirst">
14902<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14903 Specifies a valid CPU or Application Binary Interface (ABI)
14904 tuning feature.
14905 The specified feature is stored as a flag.
14906 Valid features are specified in the machine include files
14907 (e.g. <filename>meta/conf/machine/include/arm/arch-arm.inc</filename>).
14908 Here is an example from that file:
14909 <literallayout class='monospaced'>
14910 TUNEVALID[bigendian] = "Enable big-endian mode."
14911 </literallayout>
14912 </para>
14913
14914 <para>
14915 See the machine include files in the
14916 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
14917 for these features.
14918 </para>
14919 </glossdef>
14920 </glossentry>
14921
14922 </glossdiv>
14923
14924 <glossdiv id='var-glossary-u'><title>U</title>
14925
14926 <glossentry id='var-UBOOT_CONFIG'><glossterm>UBOOT_CONFIG</glossterm>
14927 <info>
14928 UBOOT_CONFIG[doc] = "Configures the UBOOT_MACHINE and can also define IMAGE_FSTYPES for individual cases."
14929 </info>
14930 <glossdef>
14931 <para role="glossdeffirst">
14932<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14933 Configures the
14934 <link linkend='var-UBOOT_MACHINE'><filename>UBOOT_MACHINE</filename></link>
14935 and can also define
14936 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
14937 for individual cases.
14938 </para>
14939
14940 <para>
14941 Following is an example from the
14942 <filename>meta-fsl-arm</filename> layer.
14943 <literallayout class='monospaced'>
14944 UBOOT_CONFIG ??= "sd"
14945 UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard"
14946 UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config"
14947 UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs"
14948 UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config"
14949 </literallayout>
14950 In this example, "sd" is selected as the configuration
14951 of the possible four for the
14952 <filename>UBOOT_MACHINE</filename>.
14953 The "sd" configuration defines "mx6qsabreauto_config"
14954 as the value for <filename>UBOOT_MACHINE</filename>, while
14955 the "sdcard" specifies the
14956 <filename>IMAGE_FSTYPES</filename> to use for the U-boot
14957 image.
14958 </para>
14959
14960 <para>
14961 For more information on how the
14962 <filename>UBOOT_CONFIG</filename> is handled, see the
14963 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/uboot-config.bbclass'><filename>uboot-config</filename></ulink>
14964 class.
14965 </para>
14966 </glossdef>
14967 </glossentry>
14968
14969 <glossentry id='var-UBOOT_ENTRYPOINT'><glossterm>UBOOT_ENTRYPOINT</glossterm>
14970 <info>
14971 UBOOT_ENTRYPOINT[doc] = "Specifies the entry point for the U-Boot image."
14972 </info>
14973 <glossdef>
14974 <para role="glossdeffirst">
14975<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14976 Specifies the entry point for the U-Boot image.
14977 During U-Boot image creation, the
14978 <filename>UBOOT_ENTRYPOINT</filename> variable is passed
14979 as a command-line parameter to the
14980 <filename>uboot-mkimage</filename> utility.
14981 </para>
14982 </glossdef>
14983 </glossentry>
14984
14985 <glossentry id='var-UBOOT_LOADADDRESS'><glossterm>UBOOT_LOADADDRESS</glossterm>
14986 <info>
14987 UBOOT_LOADADDRESS[doc] = "Specifies the load address for the U-Boot image."
14988 </info>
14989 <glossdef>
14990 <para role="glossdeffirst">
14991<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14992 Specifies the load address for the U-Boot image.
14993 During U-Boot image creation, the
14994 <filename>UBOOT_LOADADDRESS</filename> variable is passed
14995 as a command-line parameter to the
14996 <filename>uboot-mkimage</filename> utility.
14997 </para>
14998 </glossdef>
14999 </glossentry>
15000
15001 <glossentry id='var-UBOOT_LOCALVERSION'><glossterm>UBOOT_LOCALVERSION</glossterm>
15002 <info>
15003 UBOOT_LOCALVERSION[doc] = "Appends a string to the name of the local version of the U-Boot image."
15004 </info>
15005 <glossdef>
15006 <para role="glossdeffirst">
15007<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15008 Appends a string to the name of the local version of the
15009 U-Boot image.
15010 For example, assuming the version of the U-Boot image
15011 built was "2013.10, the full version string reported by
15012 U-Boot would be "2013.10-yocto" given the following
15013 statement:
15014 <literallayout class='monospaced'>
15015 UBOOT_LOCALVERSION = "-yocto"
15016 </literallayout>
15017 </para>
15018 </glossdef>
15019 </glossentry>
15020
15021 <glossentry id='var-UBOOT_MACHINE'><glossterm>UBOOT_MACHINE</glossterm>
15022 <info>
15023 UBOOT_MACHINE[doc] = "Specifies the value passed on the make command line when building a U-Boot image."
15024 </info>
15025 <glossdef>
15026 <para role="glossdeffirst">
15027<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15028 Specifies the value passed on the
15029 <filename>make</filename> command line when building
15030 a U-Boot image.
15031 The value indicates the target platform configuration.
15032 You typically set this variable from the machine
15033 configuration file (i.e.
15034 <filename>conf/machine/<replaceable>machine_name</replaceable>.conf</filename>).
15035 </para>
15036
15037 <para>
15038 Please see the "Selection of Processor Architecture and
15039 Board Type" section in the U-Boot README for valid values
15040 for this variable.
15041 </para>
15042 </glossdef>
15043 </glossentry>
15044
15045 <glossentry id='var-UBOOT_MAKE_TARGET'><glossterm>UBOOT_MAKE_TARGET</glossterm>
15046 <info>
15047 UBOOT_MAKE_TARGET[doc] = "Specifies the target called in the Makefile."
15048 </info>
15049 <glossdef>
15050 <para role="glossdeffirst">
15051<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15052 Specifies the target called in the
15053 <filename>Makefile</filename>.
15054 The default target is "all".
15055 </para>
15056 </glossdef>
15057 </glossentry>
15058
15059 <glossentry id='var-UBOOT_SUFFIX'><glossterm>UBOOT_SUFFIX</glossterm>
15060 <info>
15061 UBOOT_SUFFIX[doc] = "Points to the generated U-Boot extension."
15062 </info>
15063 <glossdef>
15064 <para role="glossdeffirst">
15065<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15066 Points to the generated U-Boot extension.
15067 For example, <filename>u-boot.sb</filename> has a
15068 <filename>.sb</filename> extension.
15069 </para>
15070
15071 <para>
15072 The default U-Boot extension is
15073 <filename>.bin</filename>
15074 </para>
15075 </glossdef>
15076 </glossentry>
15077
15078 <glossentry id='var-UBOOT_TARGET'><glossterm>UBOOT_TARGET</glossterm>
15079 <info>
15080 UBOOT_TARGET[doc] = "Specifies the target used for building U-Boot."
15081 </info>
15082 <glossdef>
15083 <para role="glossdeffirst">
15084<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15085 Specifies the target used for building U-Boot.
15086 The target is passed directly as part of the "make" command
15087 (e.g. SPL and AIS).
15088 If you do not specifically set this variable, the
15089 OpenEmbedded build process passes and uses "all" for the
15090 target during the U-Boot building process.
15091 </para>
15092 </glossdef>
15093 </glossentry>
15094
15095 <glossentry id='var-UNKNOWN_CONFIGURE_WHITELIST'><glossterm>UNKNOWN_CONFIGURE_WHITELIST</glossterm>
15096 <info>
15097 UNKNOWN_CONFIGURE_WHITELIST[doc] = "Specifies a list of options that, if reported by the configure script as being invalid, should not generate a warning during the do_configure task."
15098 </info>
15099 <glossdef>
15100 <para role="glossdeffirst">
15101<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15102 Specifies a list of options that, if reported by the
15103 configure script as being invalid, should not generate a
15104 warning during the
15105 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
15106 task.
15107 Normally, invalid configure options are simply not passed
15108 to the configure script (e.g. should be removed from
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015109 <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
15110 or
15111 <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>).
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015112 However, common options, for example, exist that are passed
15113 to all configure scripts at a class level that might not
15114 be valid for some configure scripts.
15115 It follows that no benefit exists in seeing a warning about
15116 these options.
15117 For these cases, the options are added to
15118 <filename>UNKNOWN_CONFIGURE_WHITELIST</filename>.
15119 </para>
15120
15121 <para>
15122 The configure arguments check that uses
15123 <filename>UNKNOWN_CONFIGURE_WHITELIST</filename> is part
15124 of the
15125 <link linkend='ref-classes-insane'><filename>insane</filename></link>
15126 class and is only enabled if the recipe inherits the
15127 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
15128 class.
15129 </para>
15130 </glossdef>
15131 </glossentry>
15132
15133 <glossentry id='var-UPDATERCPN'><glossterm>UPDATERCPN</glossterm>
15134 <info>
15135 UPDATERCPN[doc] = "Specifies the package that contains the initscript that is to be enabled."
15136 </info>
15137 <glossdef>
15138 <para role="glossdeffirst">
15139<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15140 For recipes inheriting the
15141 <link linkend='ref-classes-update-rc.d'><filename>update-rc.d</filename></link>
15142 class, <filename>UPDATERCPN</filename> specifies
15143 the package that contains the initscript that is to be
15144 enabled.
15145 </para>
15146
15147 <para>
15148 The default value is "${PN}".
15149 Given that almost all recipes that install initscripts
15150 package them in the main package for the recipe, you
15151 rarely need to set this variable in individual recipes.
15152 </para>
15153 </glossdef>
15154 </glossentry>
15155
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015156 <glossentry id='var-UPSTREAM_CHECK_GITTAGREGEX'><glossterm>UPSTREAM_CHECK_GITTAGREGEX</glossterm>
15157 <info>
15158 UPSTREAM_CHECK_GITTAGREGEX[doc] = "Filters relevant Git tags when fetching source from an upstream Git repository."
15159 </info>
15160 <glossdef>
15161 <para role="glossdeffirst">
15162<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15163 When the
15164 <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
15165 class is enabled globally, you can perform a per-recipe
15166 check for what the latest upstream source code version is
15167 by calling
15168 <filename>bitbake -c checkpkg</filename> <replaceable>recipe</replaceable>.
15169 If the recipe source code is provided from Git
15170 repositories, the OpenEmbedded build system determines the
15171 latest upstream version by picking the latest tag from the
15172 list of all repository tags.
15173 You can use the
15174 <filename>UPSTREAM_CHECK_GITTAGREGEX</filename>
15175 variable to provide a regular expression to filter only the
15176 relevant tags should the default filter not work
15177 correctly.
15178 <literallayout class='monospaced'>
15179 UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
15180 </literallayout>
15181 </para>
15182 </glossdef>
15183 </glossentry>
15184
15185 <glossentry id='var-UPSTREAM_CHECK_REGEX'><glossterm>UPSTREAM_CHECK_REGEX</glossterm>
15186 <info>
15187 UPSTREAM_CHECK_REGEX[doc] = "The regular expression the package checking system uses to parse the page pointed to by UPSTREAM_CHECK_URI."
15188 </info>
15189 <glossdef>
15190 <para role="glossdeffirst">
15191<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15192 When the
15193 <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
15194 class is enabled globally, use the
15195 <filename>UPSTREAM_CHECK_REGEX</filename> variable to
15196 specify a different regular expression instead of the
15197 default one when the package checking system is parsing
15198 the page found using
15199 <link linkend='var-UPSTREAM_CHECK_URI'><filename>UPSTREAM_CHECK_URI</filename></link>.
15200 <literallayout class='monospaced'>
15201 UPSTREAM_CHECK_REGEX = "package_regex"
15202 </literallayout>
15203 </para>
15204 </glossdef>
15205 </glossentry>
15206
15207 <glossentry id='var-UPSTREAM_CHECK_URI'><glossterm>UPSTREAM_CHECK_URI</glossterm>
15208 <info>
15209 UPSTREAM_CHECK_URI[doc] = "The URL used by the package checking system to get the latest version of the package when source files are fetched from an upstream Git repository."
15210 </info>
15211 <glossdef>
15212 <para role="glossdeffirst">
15213<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15214 When the
15215 <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
15216 class is enabled globally, you can perform a per-recipe
15217 check for what the latest upstream source code version is
15218 by calling <filename>bitbake -c checkpkg</filename>
15219 <replaceable>recipe</replaceable>.
15220 If the source code is provided from tarballs, the latest
15221 version is determined by fetching the directory listing
15222 where the tarball is and attempting to find a later tarball.
15223 When this approach does not work, you can use
15224 <filename>UPSTREAM_CHECK_URI</filename> to
15225 provide a different URI that contains the link to the
15226 latest tarball.
15227 <literallayout class='monospaced'>
15228 UPSTREAM_CHECK_URI = "recipe_url"
15229 </literallayout>
15230 </para>
15231 </glossdef>
15232 </glossentry>
15233
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015234 <glossentry id='var-USE_DEVFS'><glossterm>USE_DEVFS</glossterm>
15235 <info>
15236 USE_DEVFS[doc] = "Determines if devtmpfs is used for /dev population."
15237 </info>
15238 <glossdef>
15239 <para role="glossdeffirst">
15240<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15241 Determines if <filename>devtmpfs</filename> is used for
15242 <filename>/dev</filename> population.
15243 The default value used for <filename>USE_DEVFS</filename>
15244 is "1" when no value is specifically set.
15245 Typically, you would set <filename>USE_DEVFS</filename>
15246 to "0" for a statically populated <filename>/dev</filename>
15247 directory.
15248 </para>
15249
15250 <para>
15251 See the
15252 "<ulink url='&YOCTO_DOCS_DEV_URL;#selecting-dev-manager'>Selecting a Device Manager</ulink>"
15253 section in the Yocto Project Development Manual for
15254 information on how to use this variable.
15255 </para>
15256 </glossdef>
15257 </glossentry>
15258
15259 <glossentry id='var-USE_VT'><glossterm>USE_VT</glossterm>
15260 <info>
15261 USE_VT[doc] = "When using SysVinit, determines whether or not to run a getty on any virtual terminals in order to enable logging in through those terminals."
15262 </info>
15263 <glossdef>
15264 <para role="glossdeffirst">
15265<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15266 When using
15267 <ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-enabling-system-services'>SysVinit</ulink>,
15268 determines whether or not to run a
15269 <ulink url='http://en.wikipedia.org/wiki/Getty_%28Unix%29'>getty</ulink>
15270 on any virtual terminals in order to enable logging in
15271 through those terminals.
15272 </para>
15273
15274 <para>
15275 The default value used for <filename>USE_VT</filename>
15276 is "1" when no default value is specifically set.
15277 Typically, you would set <filename>USE_VT</filename>
15278 to "0" in the machine configuration file for machines
15279 that do not have a graphical display attached and
15280 therefore do not need virtual terminal functionality.
15281 </para>
15282 </glossdef>
15283 </glossentry>
15284
15285 <glossentry id='var-USER_CLASSES'><glossterm>USER_CLASSES</glossterm>
15286 <info>
15287 USER_CLASSES[doc] = "List of additional classes to use when building images that enable extra features."
15288 </info>
15289 <glossdef>
15290 <para role="glossdeffirst">
15291<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15292 A list of classes to globally inherit.
15293 These classes are used by the OpenEmbedded build system
15294 to enable extra features (e.g.
15295 <filename>buildstats</filename>,
15296 <filename>image-mklibs</filename>, and so forth).
15297 </para>
15298
15299 <para>
15300 The default list is set in your
15301 <filename>local.conf</filename> file:
15302 <literallayout class='monospaced'>
15303 USER_CLASSES ?= "buildstats image-mklibs image-prelink"
15304 </literallayout>
15305 For more information, see
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050015306 <filename>meta-poky/conf/local.conf.sample</filename> in
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015307 the
15308 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
15309 </para>
15310 </glossdef>
15311 </glossentry>
15312
15313 <glossentry id='var-USERADD_ERROR_DYNAMIC'><glossterm>USERADD_ERROR_DYNAMIC</glossterm>
15314 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015315 USERADD_ERROR_DYNAMIC[doc] = "If set to 'error', forces the OpenEmbedded build system to produce an error if the user identification (uid) and group identification (gid) values are not defined in files/passwd and files/group files. If set to 'warn', a warning will be issued instead."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015316 </info>
15317 <glossdef>
15318 <para role="glossdeffirst">
15319<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015320 If set to "error", forces the OpenEmbedded build system to
15321 produce an error if the user identification
15322 (<filename>uid</filename>) and group identification
15323 (<filename>gid</filename>) values are not defined
15324 in <filename>files/passwd</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015325 and <filename>files/group</filename> files.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015326 If set to "warn", a warning will be issued instead.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015327 </para>
15328
15329 <para>
15330 The default behavior for the build system is to dynamically
15331 apply <filename>uid</filename> and
15332 <filename>gid</filename> values.
15333 Consequently, the <filename>USERADD_ERROR_DYNAMIC</filename>
15334 variable is by default not set.
15335 If you plan on using statically assigned
15336 <filename>gid</filename> and <filename>uid</filename>
15337 values, you should set
15338 the <filename>USERADD_ERROR_DYNAMIC</filename> variable in
15339 your <filename>local.conf</filename> file as
15340 follows:
15341 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015342 USERADD_ERROR_DYNAMIC = "error"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015343 </literallayout>
15344 Overriding the default behavior implies you are going to
15345 also take steps to set static <filename>uid</filename> and
15346 <filename>gid</filename> values through use of the
15347 <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>,
15348 <link linkend='var-USERADD_UID_TABLES'><filename>USERADD_UID_TABLES</filename></link>,
15349 and
15350 <link linkend='var-USERADD_GID_TABLES'><filename>USERADD_GID_TABLES</filename></link>
15351 variables.
15352 </para>
15353 </glossdef>
15354 </glossentry>
15355
15356 <glossentry id='var-USERADD_GID_TABLES'><glossterm>USERADD_GID_TABLES</glossterm>
15357 <info>
15358 USERADD_GID_TABLES[doc] = "Specifies a password file to use for obtaining static group identification (gid) values when the OpenEmbedded build system adds a group to the system during package installation."
15359 </info>
15360 <glossdef>
15361 <para role="glossdeffirst">
15362<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15363 Specifies a password file to use for obtaining static
15364 group identification (<filename>gid</filename>) values
15365 when the OpenEmbedded build system adds a group to the
15366 system during package installation.
15367 </para>
15368
15369 <para>
15370 When applying static group identification
15371 (<filename>gid</filename>) values, the OpenEmbedded build
15372 system looks in
15373 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>
15374 for a <filename>files/group</filename> file and then applies
15375 those <filename>uid</filename> values.
15376 Set the variable as follows in your
15377 <filename>local.conf</filename> file:
15378 <literallayout class='monospaced'>
15379 USERADD_GID_TABLES = "files/group"
15380 </literallayout>
15381 </para>
15382
15383 <note>
15384 Setting the
15385 <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>
15386 variable to "useradd-staticids" causes the build system
15387 to use static <filename>gid</filename> values.
15388 </note>
15389 </glossdef>
15390 </glossentry>
15391
15392 <glossentry id='var-USERADD_PACKAGES'><glossterm>USERADD_PACKAGES</glossterm>
15393 <info>
15394 USERADD_PACKAGES[doc] = "When a recipe inherits the useradd class, this variable specifies the individual packages within the recipe that require users and/or groups to be added."
15395 </info>
15396 <glossdef>
15397 <para role="glossdeffirst">
15398<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15399 When inheriting the
15400 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
15401 class, this variable
15402 specifies the individual packages within the recipe that
15403 require users and/or groups to be added.
15404 </para>
15405
15406 <para>
15407 You must set this variable if the recipe inherits the
15408 class.
15409 For example, the following enables adding a user for the
15410 main package in a recipe:
15411 <literallayout class='monospaced'>
15412 USERADD_PACKAGES = "${PN}"
15413 </literallayout>
15414 <note>
15415 If follows that if you are going to use the
15416 <filename>USERADD_PACKAGES</filename> variable,
15417 you need to set one or more of the
15418 <link linkend='var-USERADD_PARAM'><filename>USERADD_PARAM</filename></link>,
15419 <link linkend='var-GROUPADD_PARAM'><filename>GROUPADD_PARAM</filename></link>,
15420 or
15421 <link linkend='var-GROUPMEMS_PARAM'><filename>GROUPMEMS_PARAM</filename></link>
15422 variables.
15423 </note>
15424 </para>
15425
15426 </glossdef>
15427 </glossentry>
15428
15429 <glossentry id='var-USERADD_PARAM'><glossterm>USERADD_PARAM</glossterm>
15430 <info>
15431 USERADD_PARAM[doc] = "When a recipe inherits the useradd class, this variable specifies for a package what parameters should be passed to the useradd command if you wish to add a user to the system when the package is installed."
15432 </info>
15433 <glossdef>
15434 <para role="glossdeffirst">
15435<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15436 When inheriting the
15437 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
15438 class, this variable
15439 specifies for a package what parameters should be passed
15440 to the <filename>useradd</filename> command
15441 if you wish to add a user to the system when the package
15442 is installed.
15443 </para>
15444
15445 <para>
15446 Here is an example from the <filename>dbus</filename>
15447 recipe:
15448 <literallayout class='monospaced'>
15449 USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \
15450 --no-create-home --shell /bin/false \
15451 --user-group messagebus"
15452 </literallayout>
15453 For information on the standard Linux shell command
15454 <filename>useradd</filename>, see
15455 <ulink url='http://linux.die.net/man/8/useradd'></ulink>.
15456 </para>
15457 </glossdef>
15458 </glossentry>
15459
15460 <glossentry id='var-USERADD_UID_TABLES'><glossterm>USERADD_UID_TABLES</glossterm>
15461 <info>
15462 USERADD_UID_TABLES[doc] = "Specifies a password file to use for obtaining static user identification (uid) values when the OpenEmbedded build system adds a user to the system during package installation."
15463 </info>
15464 <glossdef>
15465 <para role="glossdeffirst">
15466<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15467 Specifies a password file to use for obtaining static
15468 user identification (<filename>uid</filename>) values
15469 when the OpenEmbedded build system adds a user to the
15470 system during package installation.
15471 </para>
15472
15473 <para>
15474 When applying static user identification
15475 (<filename>uid</filename>) values, the OpenEmbedded build
15476 system looks in
15477 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>
15478 for a <filename>files/passwd</filename> file and then applies
15479 those <filename>uid</filename> values.
15480 Set the variable as follows in your
15481 <filename>local.conf</filename> file:
15482 <literallayout class='monospaced'>
15483 USERADD_UID_TABLES = "files/passwd"
15484 </literallayout>
15485 </para>
15486
15487 <note>
15488 Setting the
15489 <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>
15490 variable to "useradd-staticids" causes the build system
15491 to use static <filename>uid</filename> values.
15492 </note>
15493 </glossdef>
15494 </glossentry>
15495
15496 <glossentry id='var-USERADDEXTENSION'><glossterm>USERADDEXTENSION</glossterm>
15497 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015498 USERADDEXTENSION[doc] = "When set to 'useradd-staticids', causes the OpenEmbedded build system to base all user and group additions on a static passwd and group files found in BBPATH."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015499 </info>
15500 <glossdef>
15501 <para role="glossdeffirst">
15502<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15503 When set to "useradd-staticids", causes the
15504 OpenEmbedded build system to base all user and group
15505 additions on a static
15506 <filename>passwd</filename> and
15507 <filename>group</filename> files found in
15508 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>.
15509 </para>
15510
15511 <para>
15512 To use static user identification (<filename>uid</filename>)
15513 and group identification (<filename>gid</filename>)
15514 values, set the variable
15515 as follows in your <filename>local.conf</filename> file:
15516 <literallayout class='monospaced'>
15517 USERADDEXTENSION = "useradd-staticids"
15518 </literallayout>
15519 <note>
15520 Setting this variable to use static
15521 <filename>uid</filename> and <filename>gid</filename>
15522 values causes the OpenEmbedded build system to employ
15523 the
Patrick Williamsf1e5d692016-03-30 15:21:19 -050015524 <link linkend='ref-classes-useradd'><filename>useradd-staticids</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015525 class.
15526 </note>
15527 </para>
15528
15529 <para>
15530 If you use static <filename>uid</filename> and
15531 <filename>gid</filename> information, you must also
15532 specify the <filename>files/passwd</filename> and
15533 <filename>files/group</filename> files by setting the
15534 <link linkend='var-USERADD_UID_TABLES'><filename>USERADD_UID_TABLES</filename></link>
15535 and
15536 <link linkend='var-USERADD_GID_TABLES'><filename>USERADD_GID_TABLES</filename></link>
15537 variables.
15538 Additionally, you should also set the
15539 <link linkend='var-USERADD_ERROR_DYNAMIC'><filename>USERADD_ERROR_DYNAMIC</filename></link>
15540 variable.
15541 </para>
15542 </glossdef>
15543 </glossentry>
15544
15545 </glossdiv>
15546
15547<!-- <glossdiv id='var-glossary-v'><title>V</title>-->
15548<!-- </glossdiv>-->
15549
15550 <glossdiv id='var-glossary-w'><title>W</title>
15551
15552 <glossentry id='var-WARN_QA'><glossterm>WARN_QA</glossterm>
15553 <info>
15554 WARN_QA[doc] = "Specifies the quality assurance checks whose failures are reported as warnings by the OpenEmbedded build system."
15555 </info>
15556 <glossdef>
15557 <para role="glossdeffirst">
15558<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15559 Specifies the quality assurance checks whose failures are
15560 reported as warnings by the OpenEmbedded build system.
15561 You set this variable in your distribution configuration
15562 file.
15563 For a list of the checks you can control with this variable,
15564 see the
15565 "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
15566 section.
15567 </para>
15568 </glossdef>
15569 </glossentry>
15570
Brad Bishop37a0e4d2017-12-04 01:01:44 -050015571 <glossentry id='var-WKS_FILE'><glossterm>WKS_FILE</glossterm>
15572 <info>
15573 WKS_FILE[doc] = "Specifies the name of the wic kickstart file."
15574 </info>
15575 <glossdef>
15576 <para role="glossdeffirst">
15577 Specifies the location of the Wic
15578 kickstart file that is used by the OpenEmbedded build
15579 system to create a partitioned image
15580 (<replaceable>image</replaceable><filename>.wic</filename>).
15581 For information on how to create a
15582 partitioned image, see the
15583 "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-wic-images-oe'>Creating Partitioned Images</ulink>"
15584 section.
15585 For details on the kickstart file format, see the
15586 "<ulink url='&YOCTO_DOCS_DEV_URL;#openembedded-kickstart-wks-reference'>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</ulink>.
15587 </para>
15588 </glossdef>
15589 </glossentry>
15590
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015591 <glossentry id='var-WORKDIR'><glossterm>WORKDIR</glossterm>
15592 <info>
15593 WORKDIR[doc] = "The pathname of the working directory in which the OpenEmbedded build system builds a recipe. This directory is located within the TMPDIR directory structure and changes as different packages are built."
15594 </info>
15595 <glossdef>
15596 <para role="glossdeffirst">
15597<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15598 The pathname of the work directory in which the OpenEmbedded
15599 build system builds a recipe.
15600 This directory is located within the
15601 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
15602 directory structure and is specific to the recipe being
15603 built and the system for which it is being built.
15604 </para>
15605
15606 <para>
15607 The <filename>WORKDIR</filename> directory is defined as
15608 follows:
15609 <literallayout class='monospaced'>
15610 ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
15611 </literallayout>
15612 The actual directory depends on several things:
15613 <itemizedlist>
15614 <listitem><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>:
15615 The top-level build output directory</listitem>
15616 <listitem><link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>:
15617 The target system identifier</listitem>
15618 <listitem><link linkend='var-PN'><filename>PN</filename></link>:
15619 The recipe name</listitem>
15620 <listitem><link linkend='var-EXTENDPE'><filename>EXTENDPE</filename></link>:
15621 The epoch - (if
15622 <link linkend='var-PE'><filename>PE</filename></link>
15623 is not specified, which is usually the case for most
15624 recipes, then <filename>EXTENDPE</filename> is blank)</listitem>
15625 <listitem><link linkend='var-PV'><filename>PV</filename></link>:
15626 The recipe version</listitem>
15627 <listitem><link linkend='var-PR'><filename>PR</filename></link>:
15628 The recipe revision</listitem>
15629 </itemizedlist>
15630 </para>
15631
15632 <para>
15633 As an example, assume a Source Directory top-level folder
15634 name <filename>poky</filename>, a default Build Directory at
15635 <filename>poky/build</filename>, and a
15636 <filename>qemux86-poky-linux</filename> machine target
15637 system.
15638 Furthermore, suppose your recipe is named
15639 <filename>foo_1.3.0-r0.bb</filename>.
15640 In this case, the work directory the build system uses to
15641 build the package would be as follows:
15642 <literallayout class='monospaced'>
15643 poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
15644 </literallayout>
15645 </para>
15646 </glossdef>
15647 </glossentry>
15648
15649 </glossdiv>
15650
15651 <glossdiv id='var-glossary-x'><title>X</title>
15652
15653 <glossentry id='var-XSERVER'><glossterm>XSERVER</glossterm>
15654 <info>
15655 XSERVER[doc] = "Specifies the packages that should be installed
15656 to provide an X server and drivers for the current machine."
15657 </info>
15658 <glossdef>
15659 <para role="glossdeffirst">
15660<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15661 Specifies the packages that should be installed to
15662 provide an X server and drivers for the current machine,
15663 assuming your image directly includes
15664 <filename>packagegroup-core-x11-xserver</filename> or,
15665 perhaps indirectly, includes "x11-base" in
15666 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
15667 </para>
15668
15669 <para>
15670 The default value of <filename>XSERVER</filename>, if not
15671 specified in the machine configuration, is
15672 "xserver-xorg xf86-video-fbdev xf86-input-evdev".
15673 </para>
15674 </glossdef>
15675 </glossentry>
15676
15677 </glossdiv>
15678
15679<!-- <glossdiv id='var-glossary-y'><title>Y</title>-->
15680<!-- </glossdiv>-->
15681
15682<!-- <glossdiv id='var-glossary-z'><title>Z</title>-->
15683<!-- </glossdiv>-->
15684
15685</glossary>
15686</chapter>
15687<!--
15688vim: expandtab tw=80 ts=4
15689-->