blob: ad101397276982f83ebf8e692e9331322fc49893 [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>
Brad Bishop6e60e8b2018-02-01 10:27:11 -050040 <link linkend='var-VOLATILE_LOG_DIR'>V</link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050041 <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>
Brad Bishop6e60e8b2018-02-01 10:27:11 -0500487
488 <para>
489 For more information see the
490 "<ulink url='&YOCTO_DOCS_DEV_URL;#automatically-incrementing-a-binary-package-revision-number'>Automatically Incrementing a Binary Package Revision Number</ulink>"
491 section in the Yocto Project Development Manual.
492 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500493 </glossdef>
494 </glossentry>
495
496 <glossentry id='var-AVAILTUNES'><glossterm>AVAILTUNES</glossterm>
497 <info>
498 AVAILTUNES[doc] = "The list of defined CPU and Application Binary Interface (ABI) tunings (i.e. "tunes") available for use by the OpenEmbedded build system."
499 </info>
500 <glossdef>
501 <para role="glossdeffirst">
502<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
503 The list of defined CPU and Application Binary Interface
504 (ABI) tunings (i.e. "tunes") available for use by the
505 OpenEmbedded build system.
506 </para>
507
508 <para>
509 The list simply presents the tunes that are available.
510 Not all tunes may be compatible with a particular
511 machine configuration, or with each other in a
512 <ulink url='&YOCTO_DOCS_DEV_URL;#combining-multiple-versions-library-files-into-one-image'>Multilib</ulink>
513 configuration.
514 </para>
515
516 <para>
517 To add a tune to the list, be sure to append it with
518 spaces using the "+=" BitBake operator.
519 Do not simply replace the list by using the "=" operator.
520 See the
521 "<ulink url='&YOCTO_DOCS_BB_URL;#basic-syntax'>Basic Syntax</ulink>"
522 section in the BitBake User Manual for more information.
523 </para>
524 </glossdef>
525 </glossentry>
526
527 </glossdiv>
528
529 <glossdiv id='var-glossary-b'><title>B</title>
530
531 <glossentry id='var-B'><glossterm>B</glossterm>
532 <info>
533 B[doc] = "The Build Directory. The OpenEmbedded build system places generated objects into the Build Directory during a recipe's build process."
534 </info>
535 <glossdef>
536 <para role="glossdeffirst">
537<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
538 The directory within the
539 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
540 in which the OpenEmbedded build system places generated
541 objects during a recipe's build process.
542 By default, this directory is the same as the <link linkend='var-S'><filename>S</filename></link>
543 directory, which is defined as:
544 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -0600545 S = "${WORKDIR}/${BP}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -0500546 </literallayout>
547 </para>
548
549 <para>
550 You can separate the (<filename>S</filename>) directory
551 and the directory pointed to by the <filename>B</filename>
552 variable.
553 Most Autotools-based recipes support separating these
554 directories.
555 The build system defaults to using separate directories for
556 <filename>gcc</filename> and some kernel recipes.
557 </para>
558 </glossdef>
559 </glossentry>
560
561 <glossentry id='var-BAD_RECOMMENDATIONS'><glossterm>BAD_RECOMMENDATIONS</glossterm>
562 <info>
563 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."
564 </info>
565 <glossdef>
566 <para role="glossdeffirst">
567<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
568 Lists "recommended-only" packages to not install.
569 Recommended-only packages are packages installed only
570 through the
571 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
572 variable.
573 You can prevent any of these "recommended" packages from
574 being installed by listing them with the
575 <filename>BAD_RECOMMENDATIONS</filename> variable:
576 <literallayout class='monospaced'>
577 BAD_RECOMMENDATIONS = "<replaceable>package_name</replaceable> <replaceable>package_name</replaceable> <replaceable>package_name</replaceable> ..."
578 </literallayout>
579 </para>
580
581 <para>
582 You can set this variable globally in your
583 <filename>local.conf</filename> file or you can attach it to
584 a specific image recipe by using the recipe name override:
585 <literallayout class='monospaced'>
586 BAD_RECOMMENDATIONS_pn-<replaceable>target_image</replaceable> = "<replaceable>package_name</replaceable>"
587 </literallayout>
588 </para>
589
590 <para>
591 It is important to realize that if you choose to not install
592 packages using this variable and some other packages are
593 dependent on them (i.e. listed in a recipe's
594 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
595 variable), the OpenEmbedded build system ignores your
596 request and will install the packages to avoid dependency
597 errors.
598 </para>
599
600 <para>
601 Support for this variable exists only when using the
602 IPK and RPM packaging backend.
603 Support does not exist for DEB.
604 </para>
605
606 <para>
607 See the
608 <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>
609 and the
610 <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
611 variables for related information.
612 </para>
613 </glossdef>
614 </glossentry>
615
616 <glossentry id='var-BASE_LIB'><glossterm>BASE_LIB</glossterm>
617 <info>
618 BASE_LIB[doc] = "The library directory name for the CPU or Application Binary Interface (ABI) tune."
619 </info>
620 <glossdef>
621 <para role="glossdeffirst">
622<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
623 The library directory name for the CPU or Application
624 Binary Interface (ABI) tune.
625 The <filename>BASE_LIB</filename> applies only in the
626 Multilib context.
627 See the
628 "<ulink url='&YOCTO_DOCS_DEV_URL;#combining-multiple-versions-library-files-into-one-image'>Combining Multiple Versions of Library Files into One Image</ulink>"
629 section in the Yocto Project Development Manual for
630 information on Multilib.
631 </para>
632
633 <para>
634 The <filename>BASE_LIB</filename> variable is defined in
635 the machine include files in the
636 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
637 If Multilib is not being used, the value defaults to "lib".
638 </para>
639 </glossdef>
640 </glossentry>
641
642 <glossentry id='var-BASE_WORKDIR'><glossterm>BASE_WORKDIR</glossterm>
643 <info>
644 BASE_WORKDIR[doc] = "Points to the base of the work directory for all recipes."
645 </info>
646 <glossdef>
647 <para role="glossdeffirst">
648<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
649 Points to the base of the work directory for all recipes.
650 The default value is "${TMPDIR}/work".
651 </para>
652 </glossdef>
653 </glossentry>
654
655 <glossentry id='var-BB_ALLOWED_NETWORKS'><glossterm>BB_ALLOWED_NETWORKS</glossterm>
656 <info>
657 BB_ALLOWED_NETWORKS[doc] = "A list of hosts that the fetcher is allowed to use to obtain the required source code."
658 </info>
659 <glossdef>
660 <para>
661 Specifies a space-delimited list of hosts that the fetcher
662 is allowed to use to obtain the required source code.
663 Following are considerations surrounding this variable:
664 <itemizedlist>
665 <listitem><para>
666 This host list is only used if
667 <filename>BB_NO_NETWORK</filename> is either not
668 set or set to "0".
669 </para></listitem>
670 <listitem><para>
671 Limited support for wildcard matching against the
672 beginning of host names exists.
673 For example, the following setting matches
674 <filename>git.gnu.org</filename>,
675 <filename>ftp.gnu.org</filename>, and
676 <filename>foo.git.gnu.org</filename>.
677 <literallayout class='monospaced'>
678 BB_ALLOWED_NETWORKS = "*.gnu.org"
679 </literallayout>
680 </para></listitem>
681 <listitem><para>
682 Mirrors not in the host list are skipped and
683 logged in debug.
684 </para></listitem>
685 <listitem><para>
686 Attempts to access networks not in the host list
687 cause a failure.
688 </para></listitem>
689 </itemizedlist>
690 Using <filename>BB_ALLOWED_NETWORKS</filename> in
691 conjunction with
692 <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
693 is very useful.
694 Adding the host you want to use to
695 <filename>PREMIRRORS</filename> results in the source code
696 being fetched from an allowed location and avoids raising
697 an error when a host that is not allowed is in a
698 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>
699 statement.
700 This is because the fetcher does not attempt to use the
701 host listed in <filename>SRC_URI</filename> after a
702 successful fetch from the
703 <filename>PREMIRRORS</filename> occurs.
704 </para>
705 </glossdef>
706 </glossentry>
707
708 <glossentry id='var-BB_DANGLINGAPPENDS_WARNONLY'><glossterm>BB_DANGLINGAPPENDS_WARNONLY</glossterm>
709 <info>
710 BB_DANGLINGAPPENDS_WARNONLY[doc] = "Defines how BitBake handles situations where an append file (.bbappend) has no corresponding recipe file (.bb)."
711 </info>
712 <glossdef>
713 <para role="glossdeffirst">
714<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
715 Defines how BitBake handles situations where an append
716 file (<filename>.bbappend</filename>) has no
717 corresponding recipe file (<filename>.bb</filename>).
718 This condition often occurs when layers get out of sync
719 (e.g. <filename>oe-core</filename> bumps a
720 recipe version and the old recipe no longer exists and the
721 other layer has not been updated to the new version
722 of the recipe yet).
723 </para>
724
725 <para>
726 The default fatal behavior is safest because it is
727 the sane reaction given something is out of sync.
728 It is important to realize when your changes are no longer
729 being applied.
730 </para>
731
732 <para>
733 You can change the default behavior by setting this
734 variable to "1", "yes", or "true"
735 in your <filename>local.conf</filename> file, which is
736 located in the
737 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>:
738 Here is an example:
739 <literallayout class='monospaced'>
740 BB_DANGLINGAPPENDS_WARNONLY = "1"
741 </literallayout>
742 </para>
743 </glossdef>
744 </glossentry>
745
746 <glossentry id='var-BB_DISKMON_DIRS'><glossterm>BB_DISKMON_DIRS</glossterm>
747 <info>
748 BB_DISKMON_DIRS[doc] = "Monitors disk space and available inodes during the build and allows you to control the build based on these parameters."
749 </info>
750 <glossdef>
751 <para role="glossdeffirst">
752<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
753 Monitors disk space and available inodes during the build
754 and allows you to control the build based on these
755 parameters.
756 </para>
757
758 <para>
759 Disk space monitoring is disabled by default.
760 To enable monitoring, add the <filename>BB_DISKMON_DIRS</filename>
761 variable to your <filename>conf/local.conf</filename> file found in the
762 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
763 Use the following form:
764 <literallayout class='monospaced'>
765 BB_DISKMON_DIRS = "<replaceable>action</replaceable>,<replaceable>dir</replaceable>,<replaceable>threshold</replaceable> [...]"
766
767 where:
768
769 <replaceable>action</replaceable> is:
770 ABORT: Immediately abort the build when
771 a threshold is broken.
772 STOPTASKS: Stop the build after the currently
773 executing tasks have finished when
774 a threshold is broken.
775 WARN: Issue a warning but continue the
776 build when a threshold is broken.
777 Subsequent warnings are issued as
778 defined by the
779 <link linkend='var-BB_DISKMON_WARNINTERVAL'>BB_DISKMON_WARNINTERVAL</link> variable,
780 which must be defined in the
781 conf/local.conf file.
782
783 <replaceable>dir</replaceable> is:
784 Any directory you choose. You can specify one or
785 more directories to monitor by separating the
786 groupings with a space. If two directories are
787 on the same device, only the first directory
788 is monitored.
789
790 <replaceable>threshold</replaceable> is:
791 Either the minimum available disk space,
792 the minimum number of free inodes, or
793 both. You must specify at least one. To
794 omit one or the other, simply omit the value.
795 Specify the threshold using G, M, K for Gbytes,
796 Mbytes, and Kbytes, respectively. If you do
797 not specify G, M, or K, Kbytes is assumed by
798 default. Do not use GB, MB, or KB.
799 </literallayout>
800 </para>
801
802 <para>
803 Here are some examples:
804 <literallayout class='monospaced'>
805 BB_DISKMON_DIRS = "ABORT,${TMPDIR},1G,100K WARN,${SSTATE_DIR},1G,100K"
806 BB_DISKMON_DIRS = "STOPTASKS,${TMPDIR},1G"
807 BB_DISKMON_DIRS = "ABORT,${TMPDIR},,100K"
808 </literallayout>
809 The first example works only if you also provide
810 the <link linkend='var-BB_DISKMON_WARNINTERVAL'><filename>BB_DISKMON_WARNINTERVAL</filename></link> variable
811 in the <filename>conf/local.conf</filename>.
812 This example causes the build system to immediately
813 abort when either the disk space in <filename>${TMPDIR}</filename> drops
814 below 1 Gbyte or the available free inodes drops below
815 100 Kbytes.
816 Because two directories are provided with the variable, the
817 build system also issue a
818 warning when the disk space in the
819 <filename>${SSTATE_DIR}</filename> directory drops
820 below 1 Gbyte or the number of free inodes drops
821 below 100 Kbytes.
822 Subsequent warnings are issued during intervals as
823 defined by the <filename>BB_DISKMON_WARNINTERVAL</filename>
824 variable.
825 </para>
826
827 <para>
828 The second example stops the build after all currently
829 executing tasks complete when the minimum disk space
830 in the <filename>${<link linkend='var-TMPDIR'>TMPDIR</link>}</filename>
831 directory drops below 1 Gbyte.
832 No disk monitoring occurs for the free inodes in this case.
833 </para>
834
835 <para>
836 The final example immediately aborts the build when the
837 number of free inodes in the <filename>${TMPDIR}</filename> directory
838 drops below 100 Kbytes.
839 No disk space monitoring for the directory itself occurs
840 in this case.
841 </para>
842 </glossdef>
843 </glossentry>
844
845 <glossentry id='var-BB_DISKMON_WARNINTERVAL'><glossterm>BB_DISKMON_WARNINTERVAL</glossterm>
846 <info>
847 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."
848 </info>
849 <glossdef>
850 <para role="glossdeffirst">
851<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
852 Defines the disk space and free inode warning intervals.
853 To set these intervals, define the variable in your
854 <filename>conf/local.conf</filename> file in the
855 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
856 </para>
857
858 <para>
859 If you are going to use the
860 <filename>BB_DISKMON_WARNINTERVAL</filename> variable, you must
861 also use the
862 <link linkend='var-BB_DISKMON_DIRS'><filename>BB_DISKMON_DIRS</filename></link> variable
863 and define its action as "WARN".
864 During the build, subsequent warnings are issued each time
865 disk space or number of free inodes further reduces by
866 the respective interval.
867 </para>
868
869 <para>
870 If you do not provide a <filename>BB_DISKMON_WARNINTERVAL</filename>
871 variable and you do use <filename>BB_DISKMON_DIRS</filename> with
872 the "WARN" action, the disk monitoring interval defaults to
873 the following:
874 <literallayout class='monospaced'>
875 BB_DISKMON_WARNINTERVAL = "50M,5K"
876 </literallayout>
877 </para>
878
879 <para>
880 When specifying the variable in your configuration file,
881 use the following form:
882 <literallayout class='monospaced'>
883 BB_DISKMON_WARNINTERVAL = "<replaceable>disk_space_interval</replaceable>,<replaceable>disk_inode_interval</replaceable>"
884
885 where:
886
887 <replaceable>disk_space_interval</replaceable> is:
888 An interval of memory expressed in either
889 G, M, or K for Gbytes, Mbytes, or Kbytes,
890 respectively. You cannot use GB, MB, or KB.
891
892 <replaceable>disk_inode_interval</replaceable> is:
893 An interval of free inodes expressed in either
894 G, M, or K for Gbytes, Mbytes, or Kbytes,
895 respectively. You cannot use GB, MB, or KB.
896 </literallayout>
897 </para>
898
899 <para>
900 Here is an example:
901 <literallayout class='monospaced'>
902 BB_DISKMON_DIRS = "WARN,${SSTATE_DIR},1G,100K"
903 BB_DISKMON_WARNINTERVAL = "50M,5K"
904 </literallayout>
905 These variables cause the OpenEmbedded build system to
906 issue subsequent warnings each time the available
907 disk space further reduces by 50 Mbytes or the number
908 of free inodes further reduces by 5 Kbytes in the
909 <filename>${SSTATE_DIR}</filename> directory.
910 Subsequent warnings based on the interval occur each time
911 a respective interval is reached beyond the initial warning
912 (i.e. 1 Gbytes and 100 Kbytes).
913 </para>
914 </glossdef>
915 </glossentry>
916
917 <glossentry id='var-BB_GENERATE_MIRROR_TARBALLS'><glossterm>BB_GENERATE_MIRROR_TARBALLS</glossterm>
918 <info>
919 BB_GENERATE_MIRROR_TARBALLS[doc] = "Causes tarballs of the Git repositories to be placed in the DL_DIR directory."
920 </info>
921 <glossdef>
922 <para role="glossdeffirst">
923<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
924 Causes tarballs of the Git repositories, including the
925 Git metadata, to be placed in the
926 <link linkend='var-DL_DIR'><filename>DL_DIR</filename></link>
927 directory.
928 </para>
929
930 <para>
931 For performance reasons, creating and placing tarballs of
932 the Git repositories is not the default action by the
933 OpenEmbedded build system.
934 <literallayout class='monospaced'>
935 BB_GENERATE_MIRROR_TARBALLS = "1"
936 </literallayout>
937 Set this variable in your <filename>local.conf</filename>
938 file in the
939 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
940 </para>
941 </glossdef>
942 </glossentry>
943
944 <glossentry id='var-BB_NUMBER_THREADS'><glossterm>BB_NUMBER_THREADS</glossterm>
945 <info>
946 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."
947 </info>
948 <glossdef>
949 <para role="glossdeffirst">
950<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
951 The maximum number of tasks BitBake should run in parallel
952 at any one time.
953 The OpenEmbedded build system automatically configures
954 this variable to be equal to the number of cores on the
955 build system.
956 For example, a system with a dual core processor that
957 also uses hyper-threading causes the
958 <filename>BB_NUMBER_THREADS</filename> variable to default
959 to "4".
960 </para>
961
962 <para>
963 For single socket systems (i.e. one CPU), you should not
964 have to override this variable to gain optimal parallelism
965 during builds.
966 However, if you have very large systems that employ
967 multiple physical CPUs, you might want to make sure the
968 <filename>BB_NUMBER_THREADS</filename> variable is not
969 set higher than "20".
970 </para>
971
972 <para>
973 For more information on speeding up builds, see the
974 "<link linkend='speeding-up-the-build'>Speeding Up the Build</link>"
975 section.
976 </para>
977 </glossdef>
978 </glossentry>
979
980 <glossentry id='var-BBCLASSEXTEND'><glossterm>BBCLASSEXTEND</glossterm>
981 <info>
982 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."
983 </info>
984 <glossdef>
985 <para role="glossdeffirst">
986<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
987 Allows you to extend a recipe so that it builds variants of the software.
988 Common variants for recipes exist such as "natives" like <filename>quilt-native</filename>,
989 which is a copy of Quilt built to run on the build system;
990 "crosses" such as <filename>gcc-cross</filename>,
991 which is a compiler built to run on the build machine but produces binaries
992 that run on the target <link linkend='var-MACHINE'><filename>MACHINE</filename></link>;
993 "nativesdk", which targets the SDK machine instead of <filename>MACHINE</filename>;
994 and "mulitlibs" in the form "<filename>multilib:</filename><replaceable>multilib_name</replaceable>".
995 </para>
996
997 <para>
998 To build a different variant of the recipe with a minimal amount of code, it usually
999 is as simple as adding the following to your recipe:
1000 <literallayout class='monospaced'>
1001 BBCLASSEXTEND =+ "native nativesdk"
1002 BBCLASSEXTEND =+ "multilib:<replaceable>multilib_name</replaceable>"
1003 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001004 <note>
1005 <para>
1006 Internally, the <filename>BBCLASSEXTEND</filename>
1007 mechanism generates recipe variants by rewriting
1008 variable values and applying overrides such as
1009 <filename>_class-native</filename>.
1010 For example, to generate a native version of a recipe,
1011 a
1012 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
1013 on "foo" is rewritten to a <filename>DEPENDS</filename>
1014 on "foo-native".
1015 </para>
1016
1017 <para>
1018 Even when using <filename>BBCLASSEXTEND</filename>, the
1019 recipe is only parsed once.
1020 Parsing once adds some limitations.
1021 For example, it is not possible to
1022 include a different file depending on the variant,
1023 since <filename>include</filename> statements are
1024 processed when the recipe is parsed.
1025 </para>
1026 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001027 </para>
1028 </glossdef>
1029 </glossentry>
1030
1031 <glossentry id='var-BBFILE_COLLECTIONS'><glossterm>BBFILE_COLLECTIONS</glossterm>
1032 <info>
1033 BBFILE_COLLECTIONS[doc] = "Lists the names of configured layers. These names are used to find the other BBFILE_* variables."
1034 </info>
1035 <glossdef>
1036 <para role="glossdeffirst">
1037<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1038 Lists the names of configured layers.
1039 These names are used to find the other <filename>BBFILE_*</filename>
1040 variables.
1041 Typically, each layer will append its name to this variable in its
1042 <filename>conf/layer.conf</filename> file.
1043 </para>
1044 </glossdef>
1045 </glossentry>
1046
1047 <glossentry id='var-BBFILE_PATTERN'><glossterm>BBFILE_PATTERN</glossterm>
1048 <info>
1049 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."
1050 </info>
1051 <glossdef>
1052 <para role="glossdeffirst">
1053<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1054 Variable that expands to match files from
1055 <link linkend='var-BBFILES'><filename>BBFILES</filename></link>
1056 in a particular layer.
1057 This variable is used in the <filename>conf/layer.conf</filename> file and must
1058 be suffixed with the name of the specific layer (e.g.
1059 <filename>BBFILE_PATTERN_emenlow</filename>).
1060 </para>
1061 </glossdef>
1062 </glossentry>
1063
1064 <glossentry id='var-BBFILE_PRIORITY'><glossterm>BBFILE_PRIORITY</glossterm>
1065 <info>
1066 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."
1067 </info>
1068 <glossdef>
1069 <para role="glossdeffirst">
1070<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1071 Assigns the priority for recipe files in each layer.
1072 </para>
1073
1074 <para>
1075 This variable is useful in situations where the same recipe appears in
1076 more than one layer.
1077 Setting this variable allows you to prioritize a
1078 layer against other layers that contain the same recipe - effectively
1079 letting you control the precedence for the multiple layers.
1080 The precedence established through this variable stands regardless of a
1081 recipe's version
1082 (<link linkend='var-PV'><filename>PV</filename></link> variable).
1083 For example, a layer that has a recipe with a higher <filename>PV</filename> value but for
1084 which the <filename>BBFILE_PRIORITY</filename> is set to have a lower precedence still has a
1085 lower precedence.
1086 </para>
1087
1088 <para>
1089 A larger value for the <filename>BBFILE_PRIORITY</filename> variable results in a higher
1090 precedence.
1091 For example, the value 6 has a higher precedence than the value 5.
1092 If not specified, the <filename>BBFILE_PRIORITY</filename> variable is set based on layer
1093 dependencies (see the
1094 <filename><link linkend='var-LAYERDEPENDS'>LAYERDEPENDS</link></filename> variable for
1095 more information.
1096 The default priority, if unspecified
1097 for a layer with no dependencies, is the lowest defined priority + 1
1098 (or 1 if no priorities are defined).
1099 </para>
1100 <tip>
1101 You can use the command <filename>bitbake-layers show-layers</filename> to list
1102 all configured layers along with their priorities.
1103 </tip>
1104 </glossdef>
1105 </glossentry>
1106
1107 <glossentry id='var-BBFILES'><glossterm>BBFILES</glossterm>
1108 <info>
1109 BBFILES[doc] = "List of recipe files used by BitBake to build software."
1110 </info>
1111 <glossdef>
1112 <para role="glossdeffirst">
1113<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1114 List of recipe files used by BitBake to build software.
1115 </para>
1116 </glossdef>
1117 </glossentry>
1118
1119 <glossentry id='var-BBINCLUDELOGS'><glossterm>BBINCLUDELOGS</glossterm>
1120 <info>
1121 BBINCLUDELOGS[doc] = "Variable that controls how BitBake displays logs on build failure."
1122 </info>
1123 <glossdef>
1124 <para role="glossdeffirst">
1125<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1126 Variable that controls how BitBake displays logs on build failure.
1127 </para>
1128 </glossdef>
1129 </glossentry>
1130
1131 <glossentry id='var-BBINCLUDELOGS_LINES'><glossterm>BBINCLUDELOGS_LINES</glossterm>
1132 <info>
1133 BBINCLUDELOGS_LINES[doc] = "Amount of log lines printed on failure."
1134 </info>
1135 <glossdef>
1136 <para role="glossdeffirst">
1137<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1138 If
1139 <link linkend='var-BBINCLUDELOGS'><filename>BBINCLUDELOGS</filename></link>
1140 is set, specifies the maximum number of lines from the
1141 task log file to print when reporting a failed task.
1142 If you do not set <filename>BBINCLUDELOGS_LINES</filename>,
1143 the entire log is printed.
1144 </para>
1145 </glossdef>
1146 </glossentry>
1147
1148 <glossentry id='var-BBLAYERS'><glossterm>BBLAYERS</glossterm>
1149 <info>
1150 BBLAYERS[doc] = "Lists the layers to enable during the build. This variable is defined in the bblayers.conf configuration file."
1151 </info>
1152 <glossdef>
1153 <para role="glossdeffirst">
1154<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1155 Lists the layers to enable during the build.
1156 This variable is defined in the <filename>bblayers.conf</filename> configuration
1157 file in the <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
1158 Here is an example:
1159 <literallayout class='monospaced'>
1160 BBLAYERS = " \
1161 /home/scottrif/poky/meta \
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001162 /home/scottrif/poky/meta-poky \
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001163 /home/scottrif/poky/meta-yocto-bsp \
1164 /home/scottrif/poky/meta-mykernel \
1165 "
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001166 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001167 </para>
1168
1169 <para>
1170 This example enables four layers, one of which is a custom, user-defined layer
1171 named <filename>meta-mykernel</filename>.
1172 </para>
1173 </glossdef>
1174 </glossentry>
1175
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001176 <glossentry id='var-BBMASK'><glossterm>BBMASK</glossterm>
1177 <info>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001178 BBMASK[doc] = "Prevents BitBake from processing specific recipes or recipe append files."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001179 </info>
1180 <glossdef>
1181 <para role="glossdeffirst">
1182<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1183 Prevents BitBake from processing recipes and recipe
1184 append files.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001185 </para>
1186
1187 <para>
1188 You can use the <filename>BBMASK</filename> variable
1189 to "hide" these <filename>.bb</filename> and
1190 <filename>.bbappend</filename> files.
1191 BitBake ignores any recipe or recipe append files that
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001192 match any of the expressions.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001193 It is as if BitBake does not see them at all.
1194 Consequently, matching files are not parsed or otherwise
1195 used by BitBake.</para>
1196 <para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001197 The values you provide are passed to Python's regular
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001198 expression compiler.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001199 The expressions are compared against the full paths to
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001200 the files.
1201 For complete syntax information, see Python's
1202 documentation at
1203 <ulink url='http://docs.python.org/release/2.3/lib/re-syntax.html'></ulink>.
1204 </para>
1205
1206 <para>
1207 The following example uses a complete regular expression
1208 to tell BitBake to ignore all recipe and recipe append
1209 files in the <filename>meta-ti/recipes-misc/</filename>
1210 directory:
1211 <literallayout class='monospaced'>
1212 BBMASK = "meta-ti/recipes-misc/"
1213 </literallayout>
1214 If you want to mask out multiple directories or recipes,
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001215 you can specify multiple regular expression fragments.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001216 This next example masks out multiple directories and
1217 individual recipes:
1218 <literallayout class='monospaced'>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001219 BBMASK += "/meta-ti/recipes-misc/ meta-ti/recipes-ti/packagegroup/"
1220 BBMASK += "/meta-oe/recipes-support/"
1221 BBMASK += "/meta-foo/.*/openldap"
1222 BBMASK += "opencv.*\.bbappend"
1223 BBMASK += "lzma"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001224 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001225 <note>
1226 When specifying a directory name, use the trailing
1227 slash character to ensure you match just that directory
1228 name.
1229 </note>
1230 </para>
1231 </glossdef>
1232 </glossentry>
1233
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001234 <glossentry id='var-BBMULTICONFIG'><glossterm>BBMULTICONFIG</glossterm>
1235 <info>
1236 BBMULTICONFIG[doc] = "Specifies each separate configuration when you are building targets with multiple configurations."
1237 </info>
1238 <glossdef>
1239 <para role="glossdeffirst">
1240<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1241 Specifies each separate configuration when you are
1242 building targets with multiple configurations.
1243 Use this variable in your
1244 <filename>conf/local.conf</filename> configuration file.
1245 Specify a <replaceable>multiconfigname</replaceable> for
1246 each configuration file you are using.
1247 For example, the following line specifies three
1248 configuration files:
1249 <literallayout class='monospaced'>
1250 BBMULTIFONFIG = "configA configB configC"
1251 </literallayout>
1252 Each configuration file you use must reside in the
1253 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory's</ulink>
1254 <filename>conf/multiconfig</filename> directory
1255 (e.g.
1256 <replaceable>build_directory</replaceable><filename>/conf/multiconfig/configA.conf</filename>).
1257 </para>
1258
1259 <para>
1260 For information on how to use
1261 <filename>BBMULTICONFIG</filename> in an environment that
1262 supports building targets with multiple configurations,
1263 see the
1264 "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-building-targets-with-multiple-configurations'>Building Targets with Multiple Configurations</ulink>"
1265 section in the Yocto Project Development Manual.
1266 </para>
1267 </glossdef>
1268 </glossentry>
1269
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001270 <glossentry id='var-BBPATH'><glossterm>BBPATH</glossterm>
1271 <info>
1272 BBPATH[doc] = "Used by BitBake to locate .bbclass and configuration files. This variable is analogous to the PATH variable."
1273 </info>
1274 <glossdef>
1275 <para role="glossdeffirst">
1276<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1277 Used by BitBake to locate
1278 <filename>.bbclass</filename> and configuration files.
1279 This variable is analogous to the
1280 <filename>PATH</filename> variable.
1281 <note>
1282 If you run BitBake from a directory outside of the
1283 <ulink url='&YOCTO_DOCS_DEV_URL;build-directory'>Build Directory</ulink>,
1284 you must be sure to set
1285 <filename>BBPATH</filename> to point to the
1286 Build Directory.
1287 Set the variable as you would any environment variable
1288 and then run BitBake:
1289 <literallayout class='monospaced'>
1290 $ BBPATH = "<replaceable>build_directory</replaceable>"
1291 $ export BBPATH
1292 $ bitbake <replaceable>target</replaceable>
1293 </literallayout>
1294 </note>
1295 </para>
1296 </glossdef>
1297 </glossentry>
1298
1299 <glossentry id='var-BBSERVER'><glossterm>BBSERVER</glossterm>
1300 <info>
1301 BBSERVER[doc] = "Points to the server that runs memory-resident BitBake."
1302 </info>
1303 <glossdef>
1304 <para role="glossdeffirst">
1305<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1306 Points to the server that runs memory-resident BitBake.
1307 This variable is set by the
1308 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>
1309 setup script and should not be hand-edited.
1310 The variable is only used when you employ memory-resident
1311 BitBake.
1312 The setup script exports the value as follows:
1313 <literallayout class='monospaced'>
1314 export BBSERVER=localhost:$port
1315 </literallayout>
1316 </para>
1317
1318 <para>
1319 For more information on how the
1320 <filename>BBSERVER</filename> is used, see the
1321 <filename>oe-init-build-env-memres</filename> script, which
1322 is located in the
1323 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
1324 </para>
1325 </glossdef>
1326 </glossentry>
1327
1328 <glossentry id='var-BINCONFIG'><glossterm>BINCONFIG</glossterm>
1329 <info>
1330 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."
1331 </info>
1332 <glossdef>
1333 <para role="glossdeffirst">
1334<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1335 When inheriting the
1336 <link linkend='ref-classes-binconfig-disabled'><filename>binconfig-disabled</filename></link>
1337 class, this variable specifies binary configuration
1338 scripts to disable in favor of using
1339 <filename>pkg-config</filename> to query the information.
1340 The <filename>binconfig-disabled</filename> class will
1341 modify the specified scripts to return an error so that
1342 calls to them can be easily found and replaced.
1343 </para>
1344
1345 <para>
1346 To add multiple scripts, separate them by spaces.
1347 Here is an example from the <filename>libpng</filename>
1348 recipe:
1349 <literallayout class='monospaced'>
1350 BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config"
1351 </literallayout>
1352 </para>
1353 </glossdef>
1354 </glossentry>
1355
1356 <glossentry id='var-BINCONFIG_GLOB'><glossterm>BINCONFIG_GLOB</glossterm>
1357 <info>
1358 BINCONFIG_GLOB[doc] = "When inheriting binconfig.bbclass from a recipe, this variable specifies a wildcard for configuration scripts that need editing."
1359 </info>
1360 <glossdef>
1361 <para role="glossdeffirst">
1362<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1363 When inheriting the
1364 <link linkend='ref-classes-binconfig'><filename>binconfig</filename></link>
1365 class, this variable specifies a wildcard for
1366 configuration scripts that need editing.
1367 The scripts are edited to correct any paths that have been
1368 set up during compilation so that they are correct for
1369 use when installed into the sysroot and called by the
1370 build processes of other recipes.
1371 </para>
1372
1373 <para>
1374 For more information on how this variable works, see
1375 <filename>meta/classes/binconfig.bbclass</filename> in the
1376 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
1377 You can also find general information on the class in the
1378 "<link linkend='ref-classes-binconfig'><filename>binconfig.bbclass</filename></link>"
1379 section.
1380 </para>
1381 </glossdef>
1382 </glossentry>
1383
1384 <glossentry id='var-BP'><glossterm>BP</glossterm>
1385 <info>
1386 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}"
1387 </info>
1388 <glossdef>
1389 <para role="glossdeffirst">
1390<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1391 The base recipe name and version but without any special
1392 recipe name suffix (i.e. <filename>-native</filename>, <filename>lib64-</filename>,
1393 and so forth).
1394 <filename>BP</filename> is comprised of the following:
1395 <literallayout class="monospaced">
1396 ${BPN}-${PV}
1397 </literallayout>
1398 </para>
1399 </glossdef>
1400 </glossentry>
1401
1402 <glossentry id='var-BPN'><glossterm>BPN</glossterm>
1403 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001404 BPN[doc] = "This variable is a version of the PN variable but removes common suffixes and prefixes."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001405 </info>
1406 <glossdef>
1407 <para role="glossdeffirst">
1408<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001409 This variable is a version of the
1410 <link linkend='var-PN'><filename>PN</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001411 variable with common prefixes and suffixes
1412 removed, such as <filename>nativesdk-</filename>,
1413 <filename>-cross</filename>,
1414 <filename>-native</filename>, and multilib's
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001415 <filename>lib64-</filename> and
1416 <filename>lib32-</filename>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001417 The exact lists of prefixes and suffixes removed are
1418 specified by the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001419 <link linkend='var-MLPREFIX'><filename>MLPREFIX</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06001420 and
1421 <link linkend='var-SPECIAL_PKGSUFFIX'><filename>SPECIAL_PKGSUFFIX</filename></link>
1422 variables, respectively.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001423 </para>
1424 </glossdef>
1425 </glossentry>
1426
1427 <glossentry id='var-BUGTRACKER'><glossterm>BUGTRACKER</glossterm>
1428 <info>
1429 BUGTRACKER[doc] = "Specifies a URL for an upstream bug tracking website for a recipe."
1430 </info>
1431 <glossdef>
1432 <para role="glossdeffirst">
1433<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1434 Specifies a URL for an upstream bug tracking website for
1435 a recipe.
1436 The OpenEmbedded build system does not use this variable.
1437 Rather, the variable is a useful pointer in case a bug
1438 in the software being built needs to be manually reported.
1439 </para>
1440 </glossdef>
1441 </glossentry>
1442
1443 <glossentry id='var-BUILD_ARCH'><glossterm>BUILD_ARCH</glossterm>
1444 <info>
1445 BUILD_ARCH[doc] = "The name of the building architecture (e.g. i686)."
1446 </info>
1447 <glossdef>
1448 <para role="glossdeffirst">
1449<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1450 Specifies the architecture of the build host
1451 (e.g. <filename>i686</filename>).
1452 The OpenEmbedded build system sets the value of
1453 <filename>BUILD_ARCH</filename> from the machine name
1454 reported by the <filename>uname</filename> command.
1455 </para>
1456 </glossdef>
1457 </glossentry>
1458
1459 <glossentry id='var-BUILD_CFLAGS'><glossterm>BUILD_CFLAGS</glossterm>
1460 <info>
1461 BUILD_CFLAGS[doc] = "Specifies the flags to pass to the C compiler when building for the build host."
1462 </info>
1463 <glossdef>
1464 <para role="glossdeffirst">
1465<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1466 Specifies the flags to pass to the C compiler when building
1467 for the build host.
1468 When building in the <filename>-native</filename> context,
1469 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
1470 is set to the value of this variable by default.
1471 </para>
1472 </glossdef>
1473 </glossentry>
1474
1475 <glossentry id='var-BUILD_CPPFLAGS'><glossterm>BUILD_CPPFLAGS</glossterm>
1476 <info>
1477 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."
1478 </info>
1479 <glossdef>
1480 <para role="glossdeffirst">
1481<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1482 Specifies the flags to pass to the C pre-processor
1483 (i.e. to both the C and the C++ compilers) when building
1484 for the build host.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001485 When building in the <filename>-native</filename> context,
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001486 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
1487 is set to the value of this variable by default.
1488 </para>
1489 </glossdef>
1490 </glossentry>
1491
1492 <glossentry id='var-BUILD_CXXFLAGS'><glossterm>BUILD_CXXFLAGS</glossterm>
1493 <info>
1494 BUILD_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the build host."
1495 </info>
1496 <glossdef>
1497 <para role="glossdeffirst">
1498<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1499 Specifies the flags to pass to the C++ compiler when
1500 building for the build host.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001501 When building in the <filename>-native</filename> context,
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001502 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
1503 is set to the value of this variable by default.
1504 </para>
1505 </glossdef>
1506 </glossentry>
1507
1508 <glossentry id='var-BUILD_LDFLAGS'><glossterm>BUILD_LDFLAGS</glossterm>
1509 <info>
1510 BUILD_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the build host."
1511 </info>
1512 <glossdef>
1513 <para role="glossdeffirst">
1514<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1515 Specifies the flags to pass to the linker when building
1516 for the build host.
1517 When building in the <filename>-native</filename> context,
1518 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
1519 is set to the value of this variable by default.
1520 </para>
1521 </glossdef>
1522 </glossentry>
1523
1524 <glossentry id='var-BUILD_OPTIMIZATION'><glossterm>BUILD_OPTIMIZATION</glossterm>
1525 <info>
1526 BUILD_OPTIMIZATION[doc] = "Specifies the optimization flags passed to the C compiler when building for the build host or the SDK."
1527 </info>
1528 <glossdef>
1529 <para role="glossdeffirst">
1530<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1531 Specifies the optimization flags passed to the C compiler
1532 when building for the build host or the SDK.
1533 The flags are passed through the
1534 <link linkend='var-BUILD_CFLAGS'><filename>BUILD_CFLAGS</filename></link>
1535 and
1536 <link linkend='var-BUILDSDK_CFLAGS'><filename>BUILDSDK_CFLAGS</filename></link>
1537 default values.
1538 </para>
1539
1540 <para>
1541 The default value of the
1542 <filename>BUILD_OPTIMIZATION</filename> variable is
1543 "-O2 -pipe".
1544 </para>
1545 </glossdef>
1546 </glossentry>
1547
1548 <glossentry id='var-BUILD_OS'><glossterm>BUILD_OS</glossterm>
1549 <info>
1550 BUILD_OS[doc] = "The operating system (in lower case) of the building architecture (e.g. Linux)."
1551 </info>
1552 <glossdef>
1553 <para role="glossdeffirst">
1554<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1555 Specifies the operating system in use on the build
1556 host (e.g. "linux").
1557 The OpenEmbedded build system sets the value of
1558 <filename>BUILD_OS</filename> from the OS reported by
1559 the <filename>uname</filename> command - the first word,
1560 converted to lower-case characters.
1561 </para>
1562 </glossdef>
1563 </glossentry>
1564
1565 <glossentry id='var-BUILD_PREFIX'><glossterm>BUILD_PREFIX</glossterm>
1566 <info>
1567 BUILD_PREFIX[doc] = "The toolchain binary prefix used for native recipes."
1568 </info>
1569 <glossdef>
1570 <para role="glossdeffirst">
1571<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1572 The toolchain binary prefix used for native recipes.
1573 The OpenEmbedded build system uses the
1574 <filename>BUILD_PREFIX</filename> value to set the
1575 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001576 when building for <filename>native</filename> recipes.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001577 </para>
1578 </glossdef>
1579 </glossentry>
1580
1581 <glossentry id='var-BUILD_SYS'><glossterm>BUILD_SYS</glossterm>
1582 <info>
1583 BUILD_SYS[doc] = "The toolchain binary prefix used for native recipes."
1584 </info>
1585 <glossdef>
1586 <para role="glossdeffirst">
1587<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1588 Specifies the system, including the architecture and
1589 the operating system, to use when building for the build
1590 host (i.e. when building <filename>native</filename>
1591 recipes).
1592 </para>
1593
1594 <para>
1595 The OpenEmbedded build system automatically sets this
1596 variable based on
1597 <link linkend='var-BUILD_ARCH'><filename>BUILD_ARCH</filename></link>,
1598 <link linkend='var-BUILD_VENDOR'><filename>BUILD_VENDOR</filename></link>,
1599 and
1600 <link linkend='var-BUILD_OS'><filename>BUILD_OS</filename></link>.
1601 You do not need to set the <filename>BUILD_SYS</filename>
1602 variable yourself.
1603 </para>
1604 </glossdef>
1605 </glossentry>
1606
1607 <glossentry id='var-BUILD_VENDOR'><glossterm>BUILD_VENDOR</glossterm>
1608 <info>
1609 BUILD_VENDOR[doc] = "The vendor name to use when building for the build host."
1610 </info>
1611 <glossdef>
1612 <para role="glossdeffirst">
1613<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1614 Specifies the vendor name to use when building for the
1615 build host.
1616 The default value is an empty string ("").
1617 </para>
1618 </glossdef>
1619 </glossentry>
1620
1621 <glossentry id='var-BUILDDIR'><glossterm>BUILDDIR</glossterm>
1622 <info>
1623 BUILDDIR[doc] = "Points to the location of the Build Directory."
1624 </info>
1625 <glossdef>
1626 <para role="glossdeffirst">
1627<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1628 Points to the location of the
1629 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
1630 You can define this directory indirectly through the
1631 <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
1632 and
1633 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>
1634 scripts by passing in a Build Directory path when you run
1635 the scripts.
1636 If you run the scripts and do not provide a Build Directory
1637 path, the <filename>BUILDDIR</filename> defaults to
1638 <filename>build</filename> in the current directory.
1639 </para>
1640 </glossdef>
1641 </glossentry>
1642
1643 <glossentry id='var-BUILDHISTORY_COMMIT'><glossterm>BUILDHISTORY_COMMIT</glossterm>
1644 <info>
1645 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."
1646 </info>
1647 <glossdef>
1648 <para role="glossdeffirst">
1649<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1650 When inheriting the
1651 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1652 class, this variable specifies whether or not to commit the
1653 build history output in a local Git repository.
1654 If set to "1", this local repository will be maintained
1655 automatically by the
1656 <filename>buildhistory</filename>
1657 class and a commit will be created on every
1658 build for changes to each top-level subdirectory of the
1659 build history output (images, packages, and sdk).
1660 If you want to track changes to build history over
1661 time, you should set this value to "1".
1662 </para>
1663
1664 <para>
1665 By default, the <filename>buildhistory</filename> class
1666 does not commit the build history output in a local
1667 Git repository:
1668 <literallayout class='monospaced'>
1669 BUILDHISTORY_COMMIT ?= "0"
1670 </literallayout>
1671 </para>
1672 </glossdef>
1673 </glossentry>
1674
1675 <glossentry id='var-BUILDHISTORY_COMMIT_AUTHOR'><glossterm>BUILDHISTORY_COMMIT_AUTHOR</glossterm>
1676 <info>
1677 BUILDHISTORY_COMMIT_AUTHOR[doc] = "When inheriting the buildhistory class, this variable specifies the author to use for each Git commit."
1678 </info>
1679 <glossdef>
1680 <para role="glossdeffirst">
1681<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1682 When inheriting the
1683 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1684 class, this variable specifies the author to use for each
1685 Git commit.
1686 In order for the <filename>BUILDHISTORY_COMMIT_AUTHOR</filename>
1687 variable to work, the
1688 <link linkend='var-BUILDHISTORY_COMMIT'><filename>BUILDHISTORY_COMMIT</filename></link>
1689 variable must be set to "1".
1690 </para>
1691
1692 <para>
1693 Git requires that the value you provide for the
1694 <filename>BUILDHISTORY_COMMIT_AUTHOR</filename> variable
1695 takes the form of "name &lt;email@host&gt;".
1696 Providing an email address or host that is not valid does
1697 not produce an error.
1698 </para>
1699
1700 <para>
1701 By default, the <filename>buildhistory</filename> class
1702 sets the variable as follows:
1703 <literallayout class='monospaced'>
1704 BUILDHISTORY_COMMIT_AUTHOR ?= "buildhistory &lt;buildhistory@${DISTRO}&gt;"
1705 </literallayout>
1706 </para>
1707 </glossdef>
1708 </glossentry>
1709
1710 <glossentry id='var-BUILDHISTORY_DIR'><glossterm>BUILDHISTORY_DIR</glossterm>
1711 <info>
1712 BUILDHISTORY_DIR[doc] = "When inheriting the buildhistory class, this variable specifies the directory in which build history information is kept."
1713 </info>
1714 <glossdef>
1715 <para role="glossdeffirst">
1716<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1717 When inheriting the
1718 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1719 class, this variable specifies the directory in which
1720 build history information is kept.
1721 For more information on how the variable works, see the
1722 <filename>buildhistory.class</filename>.
1723 </para>
1724
1725 <para>
1726 By default, the <filename>buildhistory</filename> class
1727 sets the directory as follows:
1728 <literallayout class='monospaced'>
1729 BUILDHISTORY_DIR ?= "${TOPDIR}/buildhistory"
1730 </literallayout>
1731 </para>
1732 </glossdef>
1733 </glossentry>
1734
1735 <glossentry id='var-BUILDHISTORY_FEATURES'><glossterm>BUILDHISTORY_FEATURES</glossterm>
1736 <info>
1737 BUILDHISTORY_FEATURES[doc] = "When inheriting the buildhistory class, this variable specifies the build history features to be enabled."
1738 </info>
1739 <glossdef>
1740 <para role="glossdeffirst">
1741<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1742 When inheriting the
1743 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1744 class, this variable specifies the build history features
1745 to be enabled.
1746 For more information on how build history works, see the
1747 "<link linkend='maintaining-build-output-quality'>Maintaining Build Output Quality</link>"
1748 section.
1749 </para>
1750
1751 <para>
1752 You can specify three features in the form of a
1753 space-separated list:
1754 <itemizedlist>
1755 <listitem><para><emphasis>image:</emphasis>
1756 Analysis of the contents of images, which
1757 includes the list of installed packages among other
1758 things.
1759 </para></listitem>
1760 <listitem><para><emphasis>package:</emphasis>
1761 Analysis of the contents of individual packages.
1762 </para></listitem>
1763 <listitem><para><emphasis>sdk:</emphasis>
1764 Analysis of the contents of the software
1765 development kit (SDK).
1766 </para></listitem>
1767 </itemizedlist>
1768 </para>
1769
1770 <para>
1771 By default, the <filename>buildhistory</filename> class
1772 enables all three features:
1773 <literallayout class='monospaced'>
1774 BUILDHISTORY_FEATURES ?= "image package sdk"
1775 </literallayout>
1776 </para>
1777 </glossdef>
1778 </glossentry>
1779
1780 <glossentry id='var-BUILDHISTORY_IMAGE_FILES'><glossterm>BUILDHISTORY_IMAGE_FILES</glossterm>
1781 <info>
1782 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."
1783 </info>
1784 <glossdef>
1785 <para role="glossdeffirst">
1786<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1787 When inheriting the
1788 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1789 class, this variable specifies a list of paths to files
1790 copied from the
1791 image contents into the build history directory under
1792 an "image-files" directory in the directory for
1793 the image, so that you can track the contents of each file.
1794 The default is to copy <filename>/etc/passwd</filename>
1795 and <filename>/etc/group</filename>, which allows you to
1796 monitor for changes in user and group entries.
1797 You can modify the list to include any file.
1798 Specifying an invalid path does not produce an error.
1799 Consequently, you can include files that might
1800 not always be present.
1801 </para>
1802
1803 <para>
1804 By default, the <filename>buildhistory</filename> class
1805 provides paths to the following files:
1806 <literallayout class='monospaced'>
1807 BUILDHISTORY_IMAGE_FILES ?= "/etc/passwd /etc/group"
1808 </literallayout>
1809 </para>
1810 </glossdef>
1811 </glossentry>
1812
1813 <glossentry id='var-BUILDHISTORY_PUSH_REPO'><glossterm>BUILDHISTORY_PUSH_REPO</glossterm>
1814 <info>
1815 BUILDHISTORY_PUSH_REPO[doc] = "When inheriting the buildhistory class, this variable optionally specifies a remote repository to which build history pushes Git changes."
1816 </info>
1817 <glossdef>
1818 <para role="glossdeffirst">
1819<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1820 When inheriting the
1821 <link linkend='ref-classes-buildhistory'><filename>buildhistory</filename></link>
1822 class, this variable optionally specifies a remote
1823 repository to which build history pushes Git changes.
1824 In order for <filename>BUILDHISTORY_PUSH_REPO</filename>
1825 to work,
1826 <link linkend='var-BUILDHISTORY_COMMIT'><filename>BUILDHISTORY_COMMIT</filename></link>
1827 must be set to "1".
1828 </para>
1829
1830 <para>
1831 The repository should correspond to a remote
1832 address that specifies a repository as understood by
1833 Git, or alternatively to a remote name that you have
1834 set up manually using <filename>git remote</filename>
1835 within the local repository.
1836 </para>
1837
1838 <para>
1839 By default, the <filename>buildhistory</filename> class
1840 sets the variable as follows:
1841 <literallayout class='monospaced'>
1842 BUILDHISTORY_PUSH_REPO ?= ""
1843 </literallayout>
1844 </para>
1845 </glossdef>
1846 </glossentry>
1847
1848 <glossentry id='var-BUILDSDK_CFLAGS'><glossterm>BUILDSDK_CFLAGS</glossterm>
1849 <info>
1850 BUILDSDK_CFLAGS[doc] = "Specifies the flags to pass to the C compiler when building for the SDK."
1851 </info>
1852 <glossdef>
1853 <para role="glossdeffirst">
1854<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1855 Specifies the flags to pass to the C compiler when building
1856 for the SDK.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001857 When building in the <filename>nativesdk-</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001858 context,
1859 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
1860 is set to the value of this variable by default.
1861 </para>
1862 </glossdef>
1863 </glossentry>
1864
1865 <glossentry id='var-BUILDSDK_CPPFLAGS'><glossterm>BUILDSDK_CPPFLAGS</glossterm>
1866 <info>
1867 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."
1868 </info>
1869 <glossdef>
1870 <para role="glossdeffirst">
1871<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1872 Specifies the flags to pass to the C pre-processor
1873 (i.e. to both the C and the C++ compilers) when building
1874 for the SDK.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001875 When building in the <filename>nativesdk-</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001876 context,
1877 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
1878 is set to the value of this variable by default.
1879 </para>
1880 </glossdef>
1881 </glossentry>
1882
1883 <glossentry id='var-BUILDSDK_CXXFLAGS'><glossterm>BUILDSDK_CXXFLAGS</glossterm>
1884 <info>
1885 BUILDSDK_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the SDK."
1886 </info>
1887 <glossdef>
1888 <para role="glossdeffirst">
1889<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1890 Specifies the flags to pass to the C++ compiler when
1891 building for the SDK.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001892 When building in the <filename>nativesdk-</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001893 context,
1894 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
1895 is set to the value of this variable by default.
1896 </para>
1897 </glossdef>
1898 </glossentry>
1899
1900 <glossentry id='var-BUILDSDK_LDFLAGS'><glossterm>BUILDSDK_LDFLAGS</glossterm>
1901 <info>
1902 BUILDSDK_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the SDK."
1903 </info>
1904 <glossdef>
1905 <para role="glossdeffirst">
1906<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1907 Specifies the flags to pass to the linker when building
1908 for the SDK.
1909 When building in the <filename>nativesdk-</filename>
1910 context,
1911 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
1912 is set to the value of this variable by default.
1913 </para>
1914 </glossdef>
1915 </glossentry>
1916
1917 <glossentry id='var-BUILDSTATS_BASE'><glossterm>BUILDSTATS_BASE</glossterm>
1918 <info>
1919 BUILDSTATS_BASE[doc] = "Points to the location of the directory that holds build statistics when you use and enable the buildstats class."
1920 </info>
1921 <glossdef>
1922 <para role="glossdeffirst">
1923<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1924 Points to the location of the directory that holds build
1925 statistics when you use and enable the
1926 <link linkend='ref-classes-buildstats'><filename>buildstats</filename></link>
1927 class.
1928 The <filename>BUILDSTATS_BASE</filename> directory defaults
1929 to
1930 <filename>${</filename><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>}/buildstats/</filename>.
1931 </para>
1932 </glossdef>
1933 </glossentry>
1934
1935 <glossentry id='var-BUSYBOX_SPLIT_SUID'><glossterm>BUSYBOX_SPLIT_SUID</glossterm>
1936 <info>
1937 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."
1938 </info>
1939 <glossdef>
1940 <para role="glossdeffirst">
1941<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1942 For the BusyBox recipe, specifies whether to split the
1943 output executable file into two parts: one for features
1944 that require <filename>setuid root</filename>, and one for
1945 the remaining features (i.e. those that do not require
1946 <filename>setuid root</filename>).
1947 </para>
1948
1949 <para>
1950 The <filename>BUSYBOX_SPLIT_SUID</filename> variable
1951 defaults to "1", which results in a single output
1952 executable file.
1953 Set the variable to "0" to split the output file.
1954 </para>
1955 </glossdef>
1956 </glossentry>
1957
1958 </glossdiv>
1959
1960 <glossdiv id='var-glossary-c'><title>C</title>
1961
1962 <glossentry id='var-CACHE'><glossterm>CACHE</glossterm>
1963 <info>
1964 CACHE[doc] = "The directory BitBake uses to store a cache of the metadata."
1965 </info>
1966 <glossdef>
1967 <para role="glossdeffirst">
1968<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1969 Specifies the directory BitBake uses to store a cache
1970 of the
1971 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
1972 so it does not need to be parsed every time BitBake is
1973 started.
1974 </para>
1975 </glossdef>
1976 </glossentry>
1977
1978 <glossentry id='var-CC'><glossterm>CC</glossterm>
1979 <info>
1980 CC[doc] = "Minimum command and arguments to run the C compiler."
1981 </info>
1982 <glossdef>
1983 <para role="glossdeffirst">
1984<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1985 The minimal command and arguments used to run the C
1986 compiler.
1987 </para>
1988 </glossdef>
1989 </glossentry>
1990
1991 <glossentry id='var-CFLAGS'><glossterm>CFLAGS</glossterm>
1992 <info>
1993 CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as TARGET_CFLAGS."
1994 </info>
1995 <glossdef>
1996 <para role="glossdeffirst">
1997<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
1998 Specifies the flags to pass to the C compiler.
1999 This variable is exported to an environment
2000 variable and thus made visible to the software being
2001 built during the compilation step.
2002 </para>
2003
2004 <para>
2005 Default initialization for <filename>CFLAGS</filename>
2006 varies depending on what is being built:
2007 <itemizedlist>
2008 <listitem><para>
2009 <link linkend='var-TARGET_CFLAGS'><filename>TARGET_CFLAGS</filename></link>
2010 when building for the target
2011 </para></listitem>
2012 <listitem><para>
2013 <link linkend='var-BUILD_CFLAGS'><filename>BUILD_CFLAGS</filename></link>
2014 when building for the build host (i.e.
2015 <filename>-native</filename>)
2016 </para></listitem>
2017 <listitem><para>
2018 <link linkend='var-BUILDSDK_CFLAGS'><filename>BUILDSDK_CFLAGS</filename></link>
2019 when building for an SDK (i.e.
2020 <filename>nativesdk-</filename>)
2021 </para></listitem>
2022 </itemizedlist>
2023 </para>
2024 </glossdef>
2025 </glossentry>
2026
2027 <glossentry id='var-CLASSOVERRIDE'><glossterm>CLASSOVERRIDE</glossterm>
2028 <info>
2029 CLASSOVERRIDE[doc] = "An internal variable specifying the special class override that should currently apply (e.g. "class-target", "class-native", and so forth)."
2030 </info>
2031 <glossdef>
2032 <para role="glossdeffirst">
2033<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2034 An internal variable specifying the special class override
2035 that should currently apply (e.g. "class-target",
2036 "class-native", and so forth).
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002037 The classes that use this variable (e.g.
2038 <link linkend='ref-classes-native'><filename>native</filename></link>,
2039 <link linkend='ref-classes-nativesdk'><filename>nativesdk</filename></link>,
2040 and so forth) set the variable to appropriate values.
2041 <note>
2042 <filename>CLASSOVERRIDE</filename> gets its default
2043 "class-target" value from the
2044 <filename>bitbake.conf</filename> file.
2045 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002046 </para>
2047
2048 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002049 As an example, the following override allows you to install
2050 extra files, but only when building for the target:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002051 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002052 do_install_append_class-target() {
2053 install my-extra-file ${D}${sysconfdir}
2054 }
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002055 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002056 Here is an example where <filename>FOO</filename>
2057 is set to "native" when building for the build host, and
2058 to "other" when not building for the build host:
2059 <literallayout class='monospaced'>
2060 FOO_class-native = "native"
2061 FOO = "other"
2062 </literallayout>
2063 The underlying mechanism behind
2064 <filename>CLASSOVERRIDE</filename> is simply that it is
2065 included in the default value of
2066 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002067 </para>
2068 </glossdef>
2069 </glossentry>
2070
2071 <glossentry id='var-CLEANBROKEN'><glossterm>CLEANBROKEN</glossterm>
2072 <info>
2073 CLEANBROKEN[doc] = "Prevents the build system from running 'make clean' during the do_configure task."
2074 </info>
2075 <glossdef>
2076 <para role="glossdeffirst">
2077<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2078 If set to "1" within a recipe,
2079 <filename>CLEANBROKEN</filename> specifies that
2080 the <filename>make clean</filename> command does
2081 not work for the software being built.
2082 Consequently, the OpenEmbedded build system will not try
2083 to run <filename>make clean</filename> during the
2084 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
2085 task, which is the default behavior.
2086 </para>
2087 </glossdef>
2088 </glossentry>
2089
2090 <glossentry id='var-COMBINED_FEATURES'><glossterm>COMBINED_FEATURES</glossterm>
2091 <info>
2092 COMBINED_FEATURES[doc] = "A set of features common between MACHINE_FEATURES and DISTRO_FEATURES."
2093 </info>
2094 <glossdef>
2095 <para role="glossdeffirst">
2096<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2097 Provides a list of hardware features that are enabled in
2098 both
2099 <link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>
2100 and
2101 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
2102 This select list of features contains features that make
2103 sense to be controlled both at the machine and distribution
2104 configuration level.
2105 For example, the "bluetooth" feature requires hardware
2106 support but should also be optional at the distribution
2107 level, in case the hardware supports Bluetooth but you
2108 do not ever intend to use it.
2109 </para>
2110
2111 <para>
2112 For more information, see the
2113 <link linkend='var-MACHINE_FEATURES'><filename>MACHINE_FEATURES</filename></link>
2114 and <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
2115 variables.
2116 </para>
2117 </glossdef>
2118 </glossentry>
2119
2120 <glossentry id='var-COMMON_LICENSE_DIR'><glossterm>COMMON_LICENSE_DIR</glossterm>
2121 <info>
2122 COMMON_LICENSE_DIR[doc] = "Points to meta/files/common-licenses in the Source Directory, which is where generic license files reside."
2123 </info>
2124 <glossdef>
2125 <para role="glossdeffirst">
2126<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2127 Points to <filename>meta/files/common-licenses</filename>
2128 in the
2129 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
2130 which is where generic license files reside.
2131 </para>
2132 </glossdef>
2133 </glossentry>
2134
2135 <glossentry id='var-COMPATIBLE_HOST'><glossterm>COMPATIBLE_HOST</glossterm>
2136 <info>
2137 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."
2138 </info>
2139 <glossdef>
2140 <para role="glossdeffirst">
2141<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2142 A regular expression that resolves to one or more hosts
2143 (when the recipe is native) or one or more targets (when
2144 the recipe is non-native) with which a recipe is compatible.
2145 The regular expression is matched against
2146 <link linkend="var-HOST_SYS"><filename>HOST_SYS</filename></link>.
2147 You can use the variable to stop recipes from being built
2148 for classes of systems with which the recipes are not
2149 compatible.
2150 Stopping these builds is particularly useful with kernels.
2151 The variable also helps to increase parsing speed
2152 since the build system skips parsing recipes not
2153 compatible with the current system.
2154 </para>
2155 </glossdef>
2156 </glossentry>
2157
2158 <glossentry id='var-COMPATIBLE_MACHINE'><glossterm>COMPATIBLE_MACHINE</glossterm>
2159 <info>
2160 COMPATIBLE_MACHINE[doc] = "A regular expression that resolves to one or more target machines with which a recipe is compatible."
2161 </info>
2162 <glossdef>
2163 <para role="glossdeffirst">
2164<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2165 A regular expression that resolves to one or more
2166 target machines with which a recipe is compatible.
2167 The regular expression is matched against
2168 <link linkend="var-MACHINEOVERRIDES"><filename>MACHINEOVERRIDES</filename></link>.
2169 You can use the variable to stop recipes from being built
2170 for machines with which the recipes are not compatible.
2171 Stopping these builds is particularly useful with kernels.
2172 The variable also helps to increase parsing speed
2173 since the build system skips parsing recipes not
2174 compatible with the current machine.
2175 </para>
2176 </glossdef>
2177 </glossentry>
2178
2179 <glossentry id='var-COMPLEMENTARY_GLOB'><glossterm>COMPLEMENTARY_GLOB</glossterm>
2180 <info>
2181 COMPLEMENTARY_GLOB[doc] = "Defines wildcards to match when installing a list of complementary packages for all the packages installed in an image."
2182 </info>
2183 <glossdef>
2184 <para role="glossdeffirst">
2185<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2186 Defines wildcards to match when installing a list of
2187 complementary packages for all the packages explicitly
2188 (or implicitly) installed in an image.
2189 The resulting list of complementary packages is associated
2190 with an item that can be added to
2191 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
2192 An example usage of this is the "dev-pkgs" item that when
2193 added to <filename>IMAGE_FEATURES</filename> will
2194 install -dev packages (containing headers and other
2195 development files) for every package in the image.
2196 </para>
2197
2198 <para>
2199 To add a new feature item pointing to a wildcard, use a
2200 variable flag to specify the feature item name and
2201 use the value to specify the wildcard.
2202 Here is an example:
2203 <literallayout class='monospaced'>
2204 COMPLEMENTARY_GLOB[dev-pkgs] = '*-dev'
2205 </literallayout>
2206 </para>
2207 </glossdef>
2208 </glossentry>
2209
2210 <glossentry id='var-CONF_VERSION'><glossterm>CONF_VERSION</glossterm>
2211 <info>
2212 CONF_VERSION[doc] = "Tracks the version of local.conf. Increased each time build/conf/ changes incompatibly."
2213 </info>
2214 <glossdef>
2215 <para role="glossdeffirst">
2216<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2217 Tracks the version of the local configuration file
2218 (i.e. <filename>local.conf</filename>).
2219 The value for <filename>CONF_VERSION</filename>
2220 increments each time <filename>build/conf/</filename>
2221 compatibility changes.
2222 </para>
2223 </glossdef>
2224 </glossentry>
2225
2226 <glossentry id='var-CONFFILES'><glossterm>CONFFILES</glossterm>
2227 <info>
2228 CONFFILES[doc] = "Identifies editable or configurable files that are part of a package."
2229 </info>
2230 <glossdef>
2231 <para role="glossdeffirst">
2232<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2233 Identifies editable or configurable files that are part of a package.
2234 If the Package Management System (PMS) is being used to update
2235 packages on the target system, it is possible that
2236 configuration files you have changed after the original installation
2237 and that you now want to remain unchanged are overwritten.
2238 In other words, editable files might exist in the package that you do not
2239 want reset as part of the package update process.
2240 You can use the <filename>CONFFILES</filename> variable to list the files in the
2241 package that you wish to prevent the PMS from overwriting during this update process.
2242 </para>
2243
2244 <para>
2245 To use the <filename>CONFFILES</filename> variable, provide a package name
2246 override that identifies the resulting package.
2247 Then, provide a space-separated list of files.
2248 Here is an example:
2249 <literallayout class='monospaced'>
2250 CONFFILES_${PN} += "${sysconfdir}/file1 \
2251 ${sysconfdir}/file2 ${sysconfdir}/file3"
2252 </literallayout>
2253 </para>
2254
2255 <para>
2256 A relationship exists between the <filename>CONFFILES</filename> and
2257 <filename><link linkend='var-FILES'>FILES</link></filename> variables.
2258 The files listed within <filename>CONFFILES</filename> must be a subset of
2259 the files listed within <filename>FILES</filename>.
2260 Because the configuration files you provide with <filename>CONFFILES</filename>
2261 are simply being identified so that the PMS will not overwrite them,
2262 it makes sense that
2263 the files must already be included as part of the package through the
2264 <filename>FILES</filename> variable.
2265 </para>
2266
2267 <note>
2268 When specifying paths as part of the <filename>CONFFILES</filename> variable,
2269 it is good practice to use appropriate path variables.
2270 For example, <filename>${sysconfdir}</filename> rather than
2271 <filename>/etc</filename> or <filename>${bindir}</filename> rather
2272 than <filename>/usr/bin</filename>.
2273 You can find a list of these variables at the top of the
2274 <filename>meta/conf/bitbake.conf</filename> file in the
2275 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
2276 </note>
2277 </glossdef>
2278 </glossentry>
2279
2280 <glossentry id='var-CONFIG_INITRAMFS_SOURCE'><glossterm>CONFIG_INITRAMFS_SOURCE</glossterm>
2281 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05002282 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 -05002283 </info>
2284 <glossdef>
2285 <para role="glossdeffirst">
2286<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Brad Bishop37a0e4d2017-12-04 01:01:44 -05002287 Identifies the initial RAM filesystem (initramfs) source
2288 files.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002289 The OpenEmbedded build system receives and uses
2290 this kernel Kconfig variable as an environment variable.
2291 By default, the variable is set to null ("").
2292 </para>
2293
2294 <para>
2295 The <filename>CONFIG_INITRAMFS_SOURCE</filename> can be
2296 either a single cpio archive with a
2297 <filename>.cpio</filename> suffix or a
2298 space-separated list of directories and files for building
2299 the initramfs image.
2300 A cpio archive should contain a filesystem archive
2301 to be used as an initramfs image.
2302 Directories should contain a filesystem layout to be
2303 included in the initramfs image.
2304 Files should contain entries according to the format
2305 described by the
2306 <filename>usr/gen_init_cpio</filename> program in the
2307 kernel tree.
2308 </para>
2309
2310 <para>
2311 If you specify multiple directories and files, the
2312 initramfs image will be the aggregate of all of them.
2313 </para>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05002314
2315 <para>
2316 For information on creating an initramfs, see the
2317 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
2318 section in the Yocto Project Development Manual.
2319 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002320 </glossdef>
2321 </glossentry>
2322
2323 <glossentry id='var-CONFIG_SITE'><glossterm>CONFIG_SITE</glossterm>
2324 <info>
2325 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."
2326 </info>
2327 <glossdef>
2328 <para role="glossdeffirst">
2329<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2330 A list of files that contains <filename>autoconf</filename> test results relevant
2331 to the current build.
2332 This variable is used by the Autotools utilities when running
2333 <filename>configure</filename>.
2334 </para>
2335 </glossdef>
2336 </glossentry>
2337
2338 <glossentry id='var-CONFIGURE_FLAGS'><glossterm>CONFIGURE_FLAGS</glossterm>
2339 <info>
2340 CONFIGURE_FLAGS[doc] = "The minimal arguments for GNU configure."
2341 </info>
2342 <glossdef>
2343 <para role="glossdeffirst">
2344<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2345 The minimal arguments for GNU configure.
2346 </para>
2347 </glossdef>
2348 </glossentry>
2349
2350 <glossentry id='var-CONFLICT_DISTRO_FEATURES'><glossterm>CONFLICT_DISTRO_FEATURES</glossterm>
2351 <info>
2352 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."
2353 </info>
2354 <glossdef>
2355 <para role="glossdeffirst">
2356<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2357 When inheriting the
2358 <link linkend='ref-classes-distro_features_check'><filename>distro_features_check</filename></link>
2359 class, this
2360 variable identifies distribution features that would
2361 be in conflict should the recipe
2362 be built.
2363 In other words, if the
2364 <filename>CONFLICT_DISTRO_FEATURES</filename> variable
2365 lists a feature that also appears in
2366 <filename>DISTRO_FEATURES</filename> within the
2367 current configuration, an error occurs and the
2368 build stops.
2369 </para>
2370 </glossdef>
2371 </glossentry>
2372
Brad Bishop6e60e8b2018-02-01 10:27:11 -05002373 <glossentry id='var-COPYLEFT_LICENSE_EXCLUDE'><glossterm>COPYLEFT_LICENSE_EXCLUDE</glossterm>
2374 <info>
2375 COPYLEFT_LICENSE_EXCLUDE[doc] = "Licenses to exclude in the source archived by the archiver class."
2376 </info>
2377 <glossdef>
2378 <para role="glossdeffirst">
2379<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2380 A space-separated list of licenses to exclude from the
2381 source archived by the
2382 <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
2383 class.
2384 In other words, if a license in a recipe's
2385 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
2386 value is in the value of
2387 <filename>COPYLEFT_LICENSE_EXCLUDE</filename>, then its
2388 source is not archived by the class.
2389 <note>
2390 The <filename>COPYLEFT_LICENSE_EXCLUDE</filename>
2391 variable takes precedence over the
2392 <link linkend='var-COPYLEFT_LICENSE_INCLUDE'><filename>COPYLEFT_LICENSE_INCLUDE</filename></link>
2393 variable.
2394 </note>
2395 The default value, which is "CLOSED Proprietary", for
2396 <filename>COPYLEFT_LICENSE_EXCLUDE</filename> is set
2397 by the
2398 <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
2399 class, which is inherited by the
2400 <filename>archiver</filename> class.
2401 </para>
2402 </glossdef>
2403 </glossentry>
2404
2405 <glossentry id='var-COPYLEFT_LICENSE_INCLUDE'><glossterm>COPYLEFT_LICENSE_INCLUDE</glossterm>
2406 <info>
2407 COPYLEFT_LICENSE_INCLUDE[doc] = "Licenses to include in the source archived by the archiver class."
2408 </info>
2409 <glossdef>
2410 <para role="glossdeffirst">
2411<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2412 A space-separated list of licenses to include in the
2413 source archived by the
2414 <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
2415 class.
2416 In other words, if a license in a recipe's
2417 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
2418 value is in the value of
2419 <filename>COPYLEFT_LICENSE_INCLUDE</filename>, then its
2420 source is archived by the class.
2421 </para>
2422
2423 <para>
2424 The default value is set by the
2425 <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
2426 class, which is inherited by the
2427 <filename>archiver</filename> class.
2428 The default value includes "GPL*", "LGPL*", and "AGPL*".
2429 </para>
2430 </glossdef>
2431 </glossentry>
2432
2433 <glossentry id='var-COPYLEFT_PN_EXCLUDE'><glossterm>COPYLEFT_PN_EXCLUDE</glossterm>
2434 <info>
2435 COPYLEFT_PN_EXCLUDE[doc] = "Recipes to exclude in the source archived by the archiver class."
2436 </info>
2437 <glossdef>
2438 <para role="glossdeffirst">
2439<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2440 A list of recipes to exclude in the source archived
2441 by the
2442 <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
2443 class.
2444 The <filename>COPYLEFT_PN_EXCLUDE</filename> variable
2445 overrides the license inclusion and exclusion caused
2446 through the
2447 <link linkend='var-COPYLEFT_LICENSE_INCLUDE'><filename>COPYLEFT_LICENSE_INCLUDE</filename></link>
2448 and
2449 <link linkend='var-COPYLEFT_LICENSE_EXCLUDE'><filename>COPYLEFT_LICENSE_EXCLUDE</filename></link>
2450 variables, respectively.
2451 </para>
2452
2453 <para>
2454 The default value, which is "" indicating to not explicitly
2455 exclude any recipes by name, for
2456 <filename>COPYLEFT_PN_EXCLUDE</filename> is set
2457 by the
2458 <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
2459 class, which is inherited by the
2460 <filename>archiver</filename> class.
2461 </para>
2462 </glossdef>
2463 </glossentry>
2464
2465 <glossentry id='var-COPYLEFT_PN_INCLUDE'><glossterm>COPYLEFT_PN_INCLUDE</glossterm>
2466 <info>
2467 COPYLEFT_PN_INCLUDE[doc] = "Recipes to include in the source archived by the archiver class."
2468 </info>
2469 <glossdef>
2470 <para role="glossdeffirst">
2471<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2472 A list of recipes to include in the source archived
2473 by the
2474 <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
2475 class.
2476 The <filename>COPYLEFT_PN_INCLUDE</filename> variable
2477 overrides the license inclusion and exclusion caused
2478 through the
2479 <link linkend='var-COPYLEFT_LICENSE_INCLUDE'><filename>COPYLEFT_LICENSE_INCLUDE</filename></link>
2480 and
2481 <link linkend='var-COPYLEFT_LICENSE_EXCLUDE'><filename>COPYLEFT_LICENSE_EXCLUDE</filename></link>
2482 variables, respectively.
2483 </para>
2484
2485 <para>
2486 The default value, which is "" indicating to not explicitly
2487 include any recipes by name, for
2488 <filename>COPYLEFT_PN_INCLUDE</filename> is set
2489 by the
2490 <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
2491 class, which is inherited by the
2492 <filename>archiver</filename> class.
2493 </para>
2494 </glossdef>
2495 </glossentry>
2496
2497 <glossentry id='var-COPYLEFT_RECIPE_TYPES'><glossterm>COPYLEFT_RECIPE_TYPES</glossterm>
2498 <info>
2499 COPYLEFT_RECIPE_TYPES[doc] = "Recipe types to include in the source archived by the archiver class."
2500 </info>
2501 <glossdef>
2502 <para role="glossdeffirst">
2503<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2504 A space-separated list of recipe types to include
2505 in the source archived by the
2506 <link linkend='ref-classes-archiver'><filename>archiver</filename></link>
2507 class.
2508 Recipe types are <filename>target</filename>,
2509 <filename>native</filename>,
2510 <filename>nativesdk</filename>,
2511 <filename>cross</filename>,
2512 <filename>crosssdk</filename>, and
2513 <filename>cross-canadian</filename>.
2514 </para>
2515
2516 <para>
2517 The default value, which is "target*", for
2518 <filename>COPYLEFT_RECIPE_TYPES</filename> is set
2519 by the
2520 <link linkend='ref-classes-copyleft_filter'><filename>copyleft_filter</filename></link>
2521 class, which is inherited by the
2522 <filename>archiver</filename> class.
2523 </para>
2524 </glossdef>
2525 </glossentry>
2526
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002527 <glossentry id='var-COPY_LIC_DIRS'><glossterm>COPY_LIC_DIRS</glossterm>
2528 <info>
2529 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."
2530 </info>
2531 <glossdef>
2532 <para role="glossdeffirst">
2533<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2534 If set to "1" along with the
2535 <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
2536 variable, the OpenEmbedded build system copies
2537 into the image the license files, which are located in
2538 <filename>/usr/share/common-licenses</filename>,
2539 for each package.
2540 The license files are placed
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002541 in directories within the image itself during build time.
2542 <note>
2543 The <filename>COPY_LIC_DIRS</filename> does not
2544 offer a path for adding licenses for newly installed
2545 packages to an image, which might be most suitable
2546 for read-only filesystems that cannot be upgraded.
2547 See the
2548 <link linkend='var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></link>
2549 variable for additional information.
2550 You can also reference the
2551 "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
2552 section in the Yocto Project Development Manual for
2553 information on providing license text.
2554 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002555 </para>
2556 </glossdef>
2557 </glossentry>
2558
2559 <glossentry id='var-COPY_LIC_MANIFEST'><glossterm>COPY_LIC_MANIFEST</glossterm>
2560 <info>
2561 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."
2562 </info>
2563 <glossdef>
2564 <para role="glossdeffirst">
2565<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2566 If set to "1", the OpenEmbedded build system copies
2567 the license manifest for the image to
2568 <filename>/usr/share/common-licenses/license.manifest</filename>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002569 within the image itself during build time.
2570 <note>
2571 The <filename>COPY_LIC_MANIFEST</filename> does not
2572 offer a path for adding licenses for newly installed
2573 packages to an image, which might be most suitable
2574 for read-only filesystems that cannot be upgraded.
2575 See the
2576 <link linkend='var-LICENSE_CREATE_PACKAGE'><filename>LICENSE_CREATE_PACKAGE</filename></link>
2577 variable for additional information.
2578 You can also reference the
2579 "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
2580 section in the Yocto Project Development Manual for
2581 information on providing license text.
2582 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002583 </para>
2584 </glossdef>
2585 </glossentry>
2586
2587 <glossentry id='var-CORE_IMAGE_EXTRA_INSTALL'><glossterm>CORE_IMAGE_EXTRA_INSTALL</glossterm>
2588 <info>
2589 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."
2590 </info>
2591 <glossdef>
2592 <para role="glossdeffirst">
2593<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2594 Specifies the list of packages to be added to the image.
2595 You should only set this variable in the
2596 <filename>local.conf</filename> configuration file found
2597 in the
2598 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
2599 </para>
2600
2601 <para>
2602 This variable replaces <filename>POKY_EXTRA_INSTALL</filename>, which is no longer supported.
2603 </para>
2604 </glossdef>
2605 </glossentry>
2606
2607 <glossentry id='var-COREBASE'><glossterm>COREBASE</glossterm>
2608 <info>
2609 COREBASE[doc] = "Specifies the parent directory of the OpenEmbedded Core Metadata layer (i.e. meta)."
2610 </info>
2611 <glossdef>
2612 <para role="glossdeffirst">
2613<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2614 Specifies the parent directory of the OpenEmbedded
2615 Core Metadata layer (i.e. <filename>meta</filename>).
2616 </para>
2617
2618 <para>
2619 It is an important distinction that
2620 <filename>COREBASE</filename> points to the parent of this
2621 layer and not the layer itself.
2622 Consider an example where you have cloned the Poky Git
2623 repository and retained the <filename>poky</filename>
2624 name for your local copy of the repository.
2625 In this case, <filename>COREBASE</filename> points to
2626 the <filename>poky</filename> folder because it is the
2627 parent directory of the <filename>poky/meta</filename>
2628 layer.
2629 </para>
2630 </glossdef>
2631 </glossentry>
2632
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002633 <glossentry id='var-COREBASE_FILES'><glossterm>COREBASE_FILES</glossterm>
2634 <info>
2635 COREBASE_FILES[doc] = "Lists files from the COREBASE directory that should be copied other than the layers listed in the bblayers.conf file."
2636 </info>
2637 <glossdef>
2638 <para role="glossdeffirst">
2639<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2640 Lists files from the
2641 <link linkend='var-COREBASE'><filename>COREBASE</filename></link>
2642 directory that should be copied other than the layers
2643 listed in the <filename>bblayers.conf</filename> file.
2644 The <filename>COREBASE_FILES</filename> variable exists
2645 for the purpose of copying metadata from the
2646 OpenEmbedded build system into the extensible
2647 SDK.
2648 </para>
2649
2650 <para>
2651 Explicitly listing files in <filename>COREBASE</filename>
2652 is needed because it typically contains build
2653 directories and other files that should not normally
2654 be copied into the extensible SDK.
2655 Consequently, the value of
2656 <filename>COREBASE_FILES</filename> is used in order to
2657 only copy the files that are actually needed.
2658 </para>
2659 </glossdef>
2660 </glossentry>
2661
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002662 <glossentry id='var-CPP'><glossterm>CPP</glossterm>
2663 <info>
2664 CPP[doc] = "Minimum command and arguments to run the C preprocessor."
2665 </info>
2666 <glossdef>
2667 <para role="glossdeffirst">
2668<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2669 The minimal command and arguments used to run the C
2670 preprocessor.
2671 </para>
2672 </glossdef>
2673 </glossentry>
2674
2675 <glossentry id='var-CPPFLAGS'><glossterm>CPPFLAGS</glossterm>
2676 <info>
2677 CPPFLAGS[doc] = "Specifies the flags to pass to the C pre-processor (i.e. to both the C and the C++ compilers)."
2678 </info>
2679 <glossdef>
2680 <para role="glossdeffirst">
2681<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2682 Specifies the flags to pass to the C pre-processor
2683 (i.e. to both the C and the C++ compilers).
2684 This variable is exported to an environment
2685 variable and thus made visible to the software being
2686 built during the compilation step.
2687 </para>
2688
2689 <para>
2690 Default initialization for <filename>CPPFLAGS</filename>
2691 varies depending on what is being built:
2692 <itemizedlist>
2693 <listitem><para>
2694 <link linkend='var-TARGET_CPPFLAGS'><filename>TARGET_CPPFLAGS</filename></link>
2695 when building for the target
2696 </para></listitem>
2697 <listitem><para>
2698 <link linkend='var-BUILD_CPPFLAGS'><filename>BUILD_CPPFLAGS</filename></link>
2699 when building for the build host (i.e.
2700 <filename>-native</filename>)
2701 </para></listitem>
2702 <listitem><para>
2703 <link linkend='var-BUILDSDK_CPPFLAGS'><filename>BUILDSDK_CPPFLAGS</filename></link>
2704 when building for an SDK (i.e.
2705 <filename>nativesdk-</filename>)
2706 </para></listitem>
2707 </itemizedlist>
2708 </para>
2709 </glossdef>
2710 </glossentry>
2711
2712 <glossentry id='var-CROSS_COMPILE'><glossterm>CROSS_COMPILE</glossterm>
2713 <info>
2714 CROSS_COMPILE[doc] = "The toolchain binary prefix for the target tools."
2715 </info>
2716 <glossdef>
2717 <para role="glossdeffirst">
2718<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2719 The toolchain binary prefix for the target tools.
2720 The <filename>CROSS_COMPILE</filename> variable is the
2721 same as the
2722 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
2723 variable.
2724 <note>
2725 The OpenEmbedded build system sets the
2726 <filename>CROSS_COMPILE</filename> variable only in
2727 certain contexts (e.g. when building for kernel
2728 and kernel module recipes).
2729 </note>
2730 </para>
2731 </glossdef>
2732 </glossentry>
2733
2734 <glossentry id='var-CVSDIR'><glossterm>CVSDIR</glossterm>
2735 <info>
2736 CVSDIR[doc] = "The directory where cvs checkouts will be stored in."
2737 </info>
2738 <glossdef>
2739 <para role="glossdeffirst">
2740<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2741 The directory in which files checked out under the
2742 CVS system are stored.
2743 </para>
2744 </glossdef>
2745 </glossentry>
2746
2747 <glossentry id='var-CXX'><glossterm>CXX</glossterm>
2748 <info>
2749 CXX[doc] = "Minimum command and arguments to run the C++ compiler."
2750 </info>
2751 <glossdef>
2752 <para role="glossdeffirst">
2753<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2754 The minimal command and arguments used to run the C++
2755 compiler.
2756 </para>
2757 </glossdef>
2758 </glossentry>
2759
2760 <glossentry id='var-CXXFLAGS'><glossterm>CXXFLAGS</glossterm>
2761 <info>
2762 CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler."
2763 </info>
2764 <glossdef>
2765 <para role="glossdeffirst">
2766<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2767 Specifies the flags to pass to the C++ compiler.
2768 This variable is exported to an environment
2769 variable and thus made visible to the software being
2770 built during the compilation step.
2771 </para>
2772
2773 <para>
2774 Default initialization for <filename>CXXFLAGS</filename>
2775 varies depending on what is being built:
2776 <itemizedlist>
2777 <listitem><para>
2778 <link linkend='var-TARGET_CXXFLAGS'><filename>TARGET_CXXFLAGS</filename></link>
2779 when building for the target
2780 </para></listitem>
2781 <listitem><para>
2782 <link linkend='var-BUILD_CXXFLAGS'><filename>BUILD_CXXFLAGS</filename></link>
2783 when building for the build host (i.e.
2784 <filename>-native</filename>)
2785 </para></listitem>
2786 <listitem><para>
2787 <link linkend='var-BUILDSDK_CXXFLAGS'><filename>BUILDSDK_CXXFLAGS</filename></link>
2788 when building for an SDK (i.e.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05002789 <filename>nativesdk-</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002790 </para></listitem>
2791 </itemizedlist>
2792 </para>
2793 </glossdef>
2794 </glossentry>
2795
2796 </glossdiv>
2797
2798 <glossdiv id='var-glossary-d'><title>D</title>
2799
2800 <glossentry id='var-D'><glossterm>D</glossterm>
2801 <info>
2802 D[doc] = "The destination directory."
2803 </info>
2804 <glossdef>
2805 <para role="glossdeffirst">
2806<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2807 The destination directory.
2808 The location in the <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
2809 where components are installed by the
2810 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
2811 task.
2812 This location defaults to:
2813 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002814 ${<link linkend='var-WORKDIR'>WORKDIR</link>}/image
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002815 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002816 <note><title>Caution</title>
2817 Tasks that read from or write to this directory should
2818 run under
2819 <link linkend='fakeroot-and-pseudo'>fakeroot</link>.
2820 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002821 </para>
2822 </glossdef>
2823 </glossentry>
2824
2825 <glossentry id='var-DATE'><glossterm>DATE</glossterm>
2826 <info>
2827 DATE[doc] = "The date the build was started using YMD format."
2828 </info>
2829 <glossdef>
2830 <para role="glossdeffirst">
2831<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2832 The date the build was started.
2833 Dates appear using the year, month, and day (YMD) format
2834 (e.g. "20150209" for February 9th, 2015).
2835 </para>
2836 </glossdef>
2837 </glossentry>
2838
2839 <glossentry id='var-DATETIME'><glossterm>DATETIME</glossterm>
2840 <info>
2841 DATETIME[doc] = "The date and time the build was started."
2842 </info>
2843 <glossdef>
2844 <para role="glossdeffirst">
2845<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2846 The date and time on which the current build started.
2847 The format is suitable for timestamps.
2848 </para>
2849 </glossdef>
2850 </glossentry>
2851
2852 <glossentry id='var-DEBIAN_NOAUTONAME'><glossterm>DEBIAN_NOAUTONAME</glossterm>
2853 <info>
2854 DEBIAN_NOAUTONAME[doc] = "Prevents a particular package from being renamed according to Debian package naming."
2855 </info>
2856 <glossdef>
2857 <para role="glossdeffirst">
2858<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2859 When the
2860 <link linkend='ref-classes-debian'><filename>debian</filename></link>
2861 class is inherited, which is the default behavior,
2862 <filename>DEBIAN_NOAUTONAME</filename> specifies a
2863 particular package should not be renamed according to
2864 Debian library package naming.
2865 You must use the package name as an override when you
2866 set this variable.
2867 Here is an example from the <filename>fontconfig</filename>
2868 recipe:
2869 <literallayout class='monospaced'>
2870 DEBIAN_NOAUTONAME_fontconfig-utils = "1"
2871 </literallayout>
2872 </para>
2873 </glossdef>
2874 </glossentry>
2875
2876 <glossentry id='var-DEBIANNAME'><glossterm>DEBIANNAME</glossterm>
2877 <info>
2878 DEBIANNAME[doc] = "Allows you to override the library name for an individual package for Debian library package renaming."
2879 </info>
2880 <glossdef>
2881 <para role="glossdeffirst">
2882<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2883 When the
2884 <link linkend='ref-classes-debian'><filename>debian</filename></link>
2885 class is inherited, which is the default behavior,
2886 <filename>DEBIANNAME</filename> allows you to override the
2887 library name for an individual package.
2888 Overriding the library name in these cases is rare.
2889 You must use the package name as an override when you
2890 set this variable.
2891 Here is an example from the <filename>dbus</filename>
2892 recipe:
2893 <literallayout class='monospaced'>
2894 DEBIANNAME_${PN} = "dbus-1"
2895 </literallayout>
2896 </para>
2897 </glossdef>
2898 </glossentry>
2899
2900 <glossentry id='var-DEBUG_BUILD'><glossterm>DEBUG_BUILD</glossterm>
2901 <info>
2902 DEBUG_BUILD[doc] = "Specifies to build packages with debugging information. This influences the value of the SELECTED_OPTIMIZATION variable."
2903 </info>
2904 <glossdef>
2905 <para role="glossdeffirst">
2906<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2907 Specifies to build packages with debugging information.
2908 This influences the value of the
2909 <filename><link linkend='var-SELECTED_OPTIMIZATION'>SELECTED_OPTIMIZATION</link></filename>
2910 variable.
2911 </para>
2912 </glossdef>
2913 </glossentry>
2914
2915 <glossentry id='var-DEBUG_OPTIMIZATION'><glossterm>DEBUG_OPTIMIZATION</glossterm>
2916 <info>
2917 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'."
2918 </info>
2919 <glossdef>
2920 <para role="glossdeffirst">
2921<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2922 The options to pass in
2923 <filename><link linkend='var-TARGET_CFLAGS'>TARGET_CFLAGS</link></filename>
2924 and <filename><link linkend='var-CFLAGS'>CFLAGS</link></filename> when compiling
2925 a system for debugging.
2926 This variable defaults to "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe".
2927 </para>
2928 </glossdef>
2929 </glossentry>
2930
2931 <glossentry id='var-DEFAULT_PREFERENCE'><glossterm>DEFAULT_PREFERENCE</glossterm>
2932 <info>
2933 DEFAULT_PREFERENCE[doc] = "Specifies a weak bias for recipe selection priority."
2934 </info>
2935 <glossdef>
2936 <para role="glossdeffirst">
2937<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2938 Specifies a weak bias for recipe selection priority.
2939 </para>
2940
2941 <para>
2942 The most common usage of this is variable is to set
2943 it to "-1" within a recipe for a development version of a
2944 piece of software.
2945 Using the variable in this way causes the stable version
2946 of the recipe to build by default in the absence of
2947 <filename><link linkend='var-PREFERRED_VERSION'>PREFERRED_VERSION</link></filename>
2948 being used to build the development version.
2949 </para>
2950
2951 <note>
2952 The bias provided by <filename>DEFAULT_PREFERENCE</filename>
2953 is weak and is overridden by
2954 <filename><link linkend='var-BBFILE_PRIORITY'>BBFILE_PRIORITY</link></filename>
2955 if that variable is different between two layers
2956 that contain different versions of the same recipe.
2957 </note>
2958 </glossdef>
2959 </glossentry>
2960
2961 <glossentry id='var-DEFAULTTUNE'><glossterm>DEFAULTTUNE</glossterm>
2962 <info>
2963 DEFAULTTUNE[doc] = "The default CPU and Application Binary Interface (ABI) tunings (i.e. the "tune") used by the OpenEmbedded build system."
2964 </info>
2965 <glossdef>
2966 <para role="glossdeffirst">
2967<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
2968 The default CPU and Application Binary Interface (ABI)
2969 tunings (i.e. the "tune") used by the OpenEmbedded build
2970 system.
2971 The <filename>DEFAULTTUNE</filename> helps define
2972 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
2973 </para>
2974
2975 <para>
2976 The default tune is either implicitly or explicitly set
2977 by the machine
2978 (<link linkend='var-MACHINE'><filename>MACHINE</filename></link>).
2979 However, you can override the setting using available tunes
2980 as defined with
2981 <link linkend='var-AVAILTUNES'><filename>AVAILTUNES</filename></link>.
2982 </para>
2983 </glossdef>
2984 </glossentry>
2985
2986 <glossentry id='var-DEPENDS'><glossterm>DEPENDS</glossterm>
2987 <info>
2988 DEPENDS[doc] = "Lists a recipe's build-time dependencies (i.e. other recipe files)."
2989 </info>
2990 <glossdef>
2991 <para role="glossdeffirst">
2992<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06002993 Lists a recipe's build-time dependencies.
2994 These are dependencies on other recipes whose
2995 contents (e.g. headers and shared libraries) are needed
2996 by the recipe at build time.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05002997 </para>
2998
2999 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003000 As an example, consider a recipe <filename>foo</filename>
3001 that contains the following assignment:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003002 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003003 DEPENDS = "bar"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003004 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003005 The practical effect of the previous assignment is that
3006 all files installed by bar will be available in the
3007 appropriate staging sysroot, given by the
3008 <link linkend='var-STAGING_DIR'><filename>STAGING_DIR*</filename></link>
3009 variables, by the time the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003010 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003011 task for <filename>foo</filename> runs.
3012 This mechanism is implemented by having
3013 <filename>do_configure</filename> depend on the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003014 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003015 task of each recipe listed in <filename>DEPENDS</filename>,
3016 through a
3017 <filename>[</filename><ulink url='&YOCTO_DOCS_BB_URL;#variable-flags'><filename>deptask</filename></ulink><filename>]</filename>
3018 declaration in the
3019 <link linkend='ref-classes-base'><filename>base</filename></link>
3020 class.
3021 <note>
3022 It seldom is necessary to reference, for example,
3023 <filename>STAGING_DIR_HOST</filename> explicitly.
3024 The standard classes and build-related variables are
3025 configured to automatically use the appropriate staging
3026 sysroots.
3027 </note>
3028 As another example, <filename>DEPENDS</filename> can also
3029 be used to add utilities that run on the build machine
3030 during the build.
3031 For example, a recipe that makes use of a code generator
3032 built by the recipe <filename>codegen</filename> might have
3033 the following:
3034 <literallayout class='monospaced'>
3035 DEPENDS = "codegen-native"
3036 </literallayout>
3037 For more information, see the
3038 <link linkend='ref-classes-native'><filename>native</filename></link>
3039 class and the
3040 <link linkend='var-EXTRANATIVEPATH'><filename>EXTRANATIVEPATH</filename></link>
3041 variable.
3042 <note>
3043 <title>Notes</title>
3044 <itemizedlist>
3045 <listitem><para>
3046 <filename>DEPENDS</filename> is a list of
3047 recipe names.
3048 Or, to be more precise, it is a list of
3049 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
3050 names, which usually match recipe names.
3051 Putting a package name such as "foo-dev" in
3052 <filename>DEPENDS</filename> does not make
3053 sense.
3054 Use "foo" instead, as this will put files
3055 from all the packages that make up
3056 <filename>foo</filename>, which includes
3057 those from <filename>foo-dev</filename>, into
3058 the sysroot.
3059 </para></listitem>
3060 <listitem><para>
3061 One recipe having another recipe in
3062 <filename>DEPENDS</filename> does not by itself
3063 add any runtime dependencies between the
3064 packages produced by the two recipes.
3065 However, as explained in the
3066 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
3067 section, runtime dependencies will often be
3068 added automatically, meaning
3069 <filename>DEPENDS</filename> alone is
3070 sufficient for most recipes.
3071 </para></listitem>
3072 <listitem><para>
3073 Counterintuitively,
3074 <filename>DEPENDS</filename> is often necessary
3075 even for recipes that install precompiled
3076 components.
3077 For example, if <filename>libfoo</filename>
3078 is a precompiled library that links against
3079 <filename>libbar</filename>, then
3080 linking against <filename>libfoo</filename>
3081 requires both <filename>libfoo</filename>
3082 and <filename>libbar</filename> to be available
3083 in the sysroot.
3084 Without a <filename>DEPENDS</filename> from the
3085 recipe that installs <filename>libfoo</filename>
3086 to the recipe that installs
3087 <filename>libbar</filename>, other recipes might
3088 fail to link against
3089 <filename>libfoo</filename>.
3090 </para></listitem>
3091 </itemizedlist>
3092 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003093 </para>
3094
3095 <para>
3096 For information on runtime dependencies, see the
3097 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
3098 variable.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003099 You can also see the
3100 "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
3101 "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
3102 sections in the BitBake User Manual for additional
3103 information on tasks and dependencies.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003104 </para>
3105 </glossdef>
3106 </glossentry>
3107
3108 <glossentry id='var-DEPLOY_DIR'><glossterm>DEPLOY_DIR</glossterm>
3109 <info>
3110 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."
3111 </info>
3112 <glossdef>
3113 <para role="glossdeffirst">
3114<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3115 Points to the general area that the OpenEmbedded build
3116 system uses to place images, packages, SDKs and other output
3117 files that are ready to be used outside of the build system.
3118 By default, this directory resides within the
3119 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
3120 as <filename>${TMPDIR}/deploy</filename>.
3121 </para>
3122
3123 <para>
3124 For more information on the structure of the Build
3125 Directory, see
3126 "<link linkend='structure-build'>The Build Directory - <filename>build/</filename></link>"
3127 section.
3128 For more detail on the contents of the
3129 <filename>deploy</filename> directory, see the
3130 "<link linkend='images-dev-environment'>Images</link>",
3131 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>",
3132 and
3133 "<link linkend='sdk-dev-environment'>Application Development SDK</link>"
3134 sections.
3135 </para>
3136 </glossdef>
3137 </glossentry>
3138
3139 <glossentry id='var-DEPLOY_DIR_DEB'><glossterm>DEPLOY_DIR_DEB</glossterm>
3140 <info>
3141 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."
3142 </info>
3143 <glossdef>
3144 <para role="glossdeffirst">
3145<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3146 Points to the area that the OpenEmbedded build system uses
3147 to place Debian packages that are ready to be used outside
3148 of the build system.
3149 This variable applies only when
3150 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
3151 contains "package_deb".
3152 </para>
3153
3154 <para>
3155 The BitBake configuration file initially defines the
3156 <filename>DEPLOY_DIR_DEB</filename> variable as a
3157 sub-folder of
3158 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
3159 <literallayout class='monospaced'>
3160 DEPLOY_DIR_DEB = "${DEPLOY_DIR}/deb"
3161 </literallayout>
3162 </para>
3163
3164 <para>
3165 The
3166 <link linkend='ref-classes-package_deb'><filename>package_deb</filename></link>
3167 class uses the
3168 <filename>DEPLOY_DIR_DEB</filename> variable to make sure
3169 the
3170 <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_deb</filename></link>
3171 task writes Debian packages into the appropriate folder.
3172 For more information on how packaging works, see the
3173 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3174 section.
3175 </para>
3176 </glossdef>
3177 </glossentry>
3178
3179 <glossentry id='var-DEPLOY_DIR_IMAGE'><glossterm>DEPLOY_DIR_IMAGE</glossterm>
3180 <info>
3181 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."
3182 </info>
3183 <glossdef>
3184 <para role="glossdeffirst">
3185<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3186 Points to the area that the OpenEmbedded build system uses
3187 to place images and other associated output files that are
3188 ready to be deployed onto the target machine.
3189 The directory is machine-specific as it contains the
3190 <filename>${MACHINE}</filename> name.
3191 By default, this directory resides within the
3192 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
3193 as <filename>${DEPLOY_DIR}/images/${MACHINE}/</filename>.
3194 </para>
3195
3196 <para>
3197 For more information on the structure of the Build
3198 Directory, see
3199 "<link linkend='structure-build'>The Build Directory - <filename>build/</filename></link>"
3200 section.
3201 For more detail on the contents of the
3202 <filename>deploy</filename> directory, see the
3203 "<link linkend='images-dev-environment'>Images</link>" and
3204 "<link linkend='sdk-dev-environment'>Application Development SDK</link>"
3205 sections.
3206 </para>
3207 </glossdef>
3208 </glossentry>
3209
3210 <glossentry id='var-DEPLOY_DIR_IPK'><glossterm>DEPLOY_DIR_IPK</glossterm>
3211 <info>
3212 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."
3213 </info>
3214 <glossdef>
3215 <para role="glossdeffirst">
3216<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3217 Points to the area that the OpenEmbedded build system uses
3218 to place IPK packages that are ready to be used outside of
3219 the build system.
3220 This variable applies only when
3221 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
3222 contains "package_ipk".
3223 </para>
3224
3225 <para>
3226 The BitBake configuration file initially defines this
3227 variable as a sub-folder of
3228 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
3229 <literallayout class='monospaced'>
3230 DEPLOY_DIR_IPK = "${DEPLOY_DIR}/ipk"
3231 </literallayout>
3232 </para>
3233
3234 <para>
3235 The
3236 <link linkend='ref-classes-package_ipk'><filename>package_ipk</filename></link>
3237 class uses the
3238 <filename>DEPLOY_DIR_IPK</filename> variable to make sure
3239 the
3240 <link linkend='ref-tasks-package_write_ipk'><filename>do_package_write_ipk</filename></link>
3241 task writes IPK packages into the appropriate folder.
3242 For more information on how packaging works, see the
3243 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3244 section.
3245 </para>
3246 </glossdef>
3247 </glossentry>
3248
3249 <glossentry id='var-DEPLOY_DIR_RPM'><glossterm>DEPLOY_DIR_RPM</glossterm>
3250 <info>
3251 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."
3252 </info>
3253 <glossdef>
3254 <para role="glossdeffirst">
3255<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3256 Points to the area that the OpenEmbedded build system uses
3257 to place RPM packages that are ready to be used outside
3258 of the build system.
3259 This variable applies only when
3260 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
3261 contains "package_rpm".
3262 </para>
3263
3264 <para>
3265 The BitBake configuration file initially defines this
3266 variable as a sub-folder of
3267 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
3268 <literallayout class='monospaced'>
3269 DEPLOY_DIR_RPM = "${DEPLOY_DIR}/rpm"
3270 </literallayout>
3271 </para>
3272
3273 <para>
3274 The
3275 <link linkend='ref-classes-package_rpm'><filename>package_rpm</filename></link>
3276 class uses the
3277 <filename>DEPLOY_DIR_RPM</filename> variable to make sure
3278 the
3279 <link linkend='ref-tasks-package_write_rpm'><filename>do_package_write_rpm</filename></link>
3280 task writes RPM packages into the appropriate folder.
3281 For more information on how packaging works, see the
3282 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3283 section.
3284 </para>
3285 </glossdef>
3286 </glossentry>
3287
3288 <glossentry id='var-DEPLOY_DIR_TAR'><glossterm>DEPLOY_DIR_TAR</glossterm>
3289 <info>
3290 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."
3291 </info>
3292 <glossdef>
3293 <para role="glossdeffirst">
3294<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3295 Points to the area that the OpenEmbedded build system uses
3296 to place tarballs that are ready to be used outside of
3297 the build system.
3298 This variable applies only when
3299 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
3300 contains "package_tar".
3301 </para>
3302
3303 <para>
3304 The BitBake configuration file initially defines this
3305 variable as a sub-folder of
3306 <link linkend='var-DEPLOY_DIR'><filename>DEPLOY_DIR</filename></link>:
3307 <literallayout class='monospaced'>
3308 DEPLOY_DIR_TAR = "${DEPLOY_DIR}/tar"
3309 </literallayout>
3310 </para>
3311
3312 <para>
3313 The
3314 <link linkend='ref-classes-package_tar'><filename>package_tar</filename></link>
3315 class uses the
3316 <filename>DEPLOY_DIR_TAR</filename> variable to make sure
3317 the
3318 <link linkend='ref-tasks-package_write_tar'><filename>do_package_write_tar</filename></link>
3319 task writes TAR packages into the appropriate folder.
3320 For more information on how packaging works, see the
3321 "<link linkend='package-feeds-dev-environment'>Package Feeds</link>"
3322 section.
3323 </para>
3324 </glossdef>
3325 </glossentry>
3326
3327 <glossentry id='var-DEPLOYDIR'><glossterm>DEPLOYDIR</glossterm>
3328 <info>
3329 DEPLOYDIR[doc] = "For recipes that inherit the deploy class, the DEPLOYDIR points to a temporary work area for deployed files."
3330 </info>
3331 <glossdef>
3332 <para role="glossdeffirst">
3333<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3334 When inheriting the
3335 <link linkend='ref-classes-deploy'><filename>deploy</filename></link>
3336 class, the <filename>DEPLOYDIR</filename> points to a
3337 temporary work area for deployed files that is set in the
3338 <filename>deploy</filename> class as follows:
3339 <literallayout class='monospaced'>
3340 DEPLOYDIR = "${WORKDIR}/deploy-${<link linkend='var-PN'><filename>PN</filename></link>}"
3341 </literallayout>
3342 </para>
3343
3344 <para>
3345 Recipes inheriting the <filename>deploy</filename> class
3346 should copy files to be deployed into
3347 <filename>DEPLOYDIR</filename>, and the class will take
3348 care of copying them into
3349 <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
3350 afterwards.
3351 </para>
3352 </glossdef>
3353 </glossentry>
3354
3355 <glossentry id='var-DESCRIPTION'><glossterm>DESCRIPTION</glossterm>
3356 <info>
3357 DESCRIPTION[doc] = "The package description used by package managers. If not set, DESCRIPTION takes the value of the SUMMARY variable."
3358 </info>
3359 <glossdef>
3360 <para role="glossdeffirst">
3361<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3362 The package description used by package managers.
3363 If not set, <filename>DESCRIPTION</filename> takes
3364 the value of the
3365 <link linkend='var-SUMMARY'><filename>SUMMARY</filename></link>
3366 variable.
3367 </para>
3368 </glossdef>
3369 </glossentry>
3370
3371 <glossentry id='var-DISK_SIGNATURE'><glossterm>DISK_SIGNATURE</glossterm>
3372 <info>
3373 DISK_SIGNATURE[doc] = "A 32-bit MBR disk signature used by directdisk images."
3374 </info>
3375 <glossdef>
3376 <para role="glossdeffirst">
3377<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3378 A 32-bit MBR disk signature used by
3379 <filename>directdisk</filename> images.
3380 </para>
3381
3382 <para>
3383 By default, the signature is set to an automatically
3384 generated random value that allows the OpenEmbedded
3385 build system to create a boot loader.
3386 You can override the signature in the image recipe
3387 by setting <filename>DISK_SIGNATURE</filename> to an
3388 8-digit hex string.
3389 You might want to override
3390 <filename>DISK_SIGNATURE</filename> if you want the disk
3391 signature to remain constant between image builds.
3392 </para>
3393
3394 <para>
3395 When using Linux 3.8 or later, you can use
3396 <filename>DISK_SIGNATURE</filename> to specify the root
3397 by UUID to allow the kernel to locate the root device
3398 even if the device name changes due to differences in
3399 hardware configuration.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003400 By default, <filename>ROOT_VM</filename> is set
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003401 as follows:
3402 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003403 ROOT_VM ?= "root=/dev/sda2"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003404 </literallayout>
3405 However, you can change this to locate the root device
3406 using the disk signature instead:
3407 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003408 ROOT_VM = "root=PARTUUID=${DISK_SIGNATURE}-02"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003409 </literallayout>
3410 </para>
3411
3412 <para>
3413 As previously mentioned, it is possible to set the
3414 <filename>DISK_SIGNATURE</filename> variable in your
3415 <filename>local.conf</filename> file to a fixed
3416 value if you do not want <filename>syslinux.cfg</filename>
3417 changing for each build.
3418 You might find this useful when you want to upgrade the
3419 root filesystem on a device without having to recreate or
3420 modify the master boot record.
3421 </para>
3422 </glossdef>
3423 </glossentry>
3424
3425 <glossentry id='var-DISTRO'><glossterm>DISTRO</glossterm>
3426 <info>
3427 DISTRO[doc] = "The short name of the distribution. If the variable is blank, meta/conf/distro/defaultsetup.conf will be used."
3428 </info>
3429 <glossdef>
3430 <para role="glossdeffirst">
3431<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3432 The short name of the distribution.
3433 This variable corresponds to a distribution
3434 configuration file whose root name is the same as the
3435 variable's argument and whose filename extension is
3436 <filename>.conf</filename>.
3437 For example, the distribution configuration file for the
3438 Poky distribution is named <filename>poky.conf</filename>
3439 and resides in the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003440 <filename>meta-poky/conf/distro</filename> directory of
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003441 the
3442 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
3443 </para>
3444
3445 <para>
3446 Within that <filename>poky.conf</filename> file, the
3447 <filename>DISTRO</filename> variable is set as follows:
3448 <literallayout class='monospaced'>
3449 DISTRO = "poky"
3450 </literallayout>
3451 </para>
3452
3453 <para>
3454 Distribution configuration files are located in a
3455 <filename>conf/distro</filename> directory within the
3456 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
3457 that contains the distribution configuration.
3458 The value for <filename>DISTRO</filename> must not contain
3459 spaces, and is typically all lower-case.
3460 <note>
3461 If the <filename>DISTRO</filename> variable is blank, a set
3462 of default configurations are used, which are specified
3463 within
3464 <filename>meta/conf/distro/defaultsetup.conf</filename>
3465 also in the Source Directory.
3466 </note>
3467 </para>
3468 </glossdef>
3469 </glossentry>
3470
3471 <glossentry id='var-DISTRO_CODENAME'><glossterm>DISTRO_CODENAME</glossterm>
3472 <info>
3473 DISTRO_CODENAME[doc] = "Specifies a codename for the distribution being built."
3474 </info>
3475 <glossdef>
3476 <para role="glossdeffirst">
3477<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3478 Specifies a codename for the distribution being built.
3479 </para>
3480 </glossdef>
3481 </glossentry>
3482
3483 <glossentry id='var-DISTRO_EXTRA_RDEPENDS'><glossterm>DISTRO_EXTRA_RDEPENDS</glossterm>
3484 <info>
3485 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."
3486 </info>
3487 <glossdef>
3488 <para role="glossdeffirst">
3489<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3490 Specifies a list of distro-specific packages to add to all images.
3491 This variable takes affect through
3492 <filename>packagegroup-base</filename> so the
3493 variable only really applies to the more full-featured
3494 images that include <filename>packagegroup-base</filename>.
3495 You can use this variable to keep distro policy out of
3496 generic images.
3497 As with all other distro variables, you set this variable
3498 in the distro <filename>.conf</filename> file.
3499 </para>
3500 </glossdef>
3501 </glossentry>
3502
3503 <glossentry id='var-DISTRO_EXTRA_RRECOMMENDS'><glossterm>DISTRO_EXTRA_RRECOMMENDS</glossterm>
3504 <info>
3505 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."
3506 </info>
3507 <glossdef>
3508 <para role="glossdeffirst">
3509<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3510 Specifies a list of distro-specific packages to add to all images
3511 if the packages exist.
3512 The packages might not exist or be empty (e.g. kernel modules).
3513 The list of packages are automatically installed but you can
3514 remove them.
3515 </para>
3516 </glossdef>
3517 </glossentry>
3518
3519 <glossentry id='var-DISTRO_FEATURES'><glossterm>DISTRO_FEATURES</glossterm>
3520 <info>
3521 DISTRO_FEATURES[doc] = "The features enabled for the distribution."
3522 </info>
3523 <glossdef>
3524 <para role="glossdeffirst">
3525<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3526 The software support you want in your distribution for
3527 various features.
3528 You define your distribution features in the distribution
3529 configuration file.
3530 </para>
3531
3532 <para>
3533 In most cases, the presence or absence of a feature in
3534 <filename>DISTRO_FEATURES</filename> is translated to the
3535 appropriate option supplied to the configure script
3536 during the
3537 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
3538 task for recipes that optionally support the feature.
3539 For example, specifying "x11" in
3540 <filename>DISTRO_FEATURES</filename>, causes
3541 every piece of software built for the target that can
3542 optionally support X11 to have its X11 support enabled.
3543 </para>
3544
3545 <para>
3546 Two more examples are Bluetooth and NFS support.
3547 For a more complete list of features that ships with the
3548 Yocto Project and that you can provide with this variable,
3549 see the
3550 "<link linkend='ref-features-distro'>Distro Features</link>"
3551 section.
3552 </para>
3553 </glossdef>
3554 </glossentry>
3555
3556 <glossentry id='var-DISTRO_FEATURES_BACKFILL'><glossterm>DISTRO_FEATURES_BACKFILL</glossterm>
3557 <info>
3558 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."
3559 </info>
3560 <glossdef>
3561 <para role="glossdeffirst">
3562<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3563 Features to be added to
3564 <filename><link linkend='var-DISTRO_FEATURES'>DISTRO_FEATURES</link></filename>
3565 if not also present in
3566 <filename><link linkend='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'>DISTRO_FEATURES_BACKFILL_CONSIDERED</link></filename>.
3567 </para>
3568
3569 <para>
3570 This variable is set in the <filename>meta/conf/bitbake.conf</filename> file.
3571 It is not intended to be user-configurable.
3572 It is best to just reference the variable to see which distro features are
3573 being backfilled for all distro configurations.
3574 See the <link linkend='ref-features-backfill'>Feature backfilling</link> section for
3575 more information.
3576 </para>
3577 </glossdef>
3578 </glossentry>
3579
3580 <glossentry id='var-DISTRO_FEATURES_BACKFILL_CONSIDERED'><glossterm>DISTRO_FEATURES_BACKFILL_CONSIDERED</glossterm>
3581 <info>
3582 DISTRO_FEATURES_BACKFILL_CONSIDERED[doc] = "Features from DISTRO_FEATURES_BACKFILL that should not be backfilled (i.e. added to DISTRO_FEATURES) during the build."
3583 </info>
3584 <glossdef>
3585 <para role="glossdeffirst">
3586<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3587 Features from
3588 <filename><link linkend='var-DISTRO_FEATURES_BACKFILL'>DISTRO_FEATURES_BACKFILL</link></filename>
3589 that should not be backfilled (i.e. added to
3590 <filename><link linkend='var-DISTRO_FEATURES'>DISTRO_FEATURES</link></filename>)
3591 during the build.
3592 See the "<link linkend='ref-features-backfill'>Feature Backfilling</link>" section for
3593 more information.
3594 </para>
3595 </glossdef>
3596 </glossentry>
3597
3598 <glossentry id='var-DISTRO_FEATURES_DEFAULT'><glossterm>DISTRO_FEATURES_DEFAULT</glossterm>
3599 <info>
3600 DISTRO_FEATURES_DEFAULT[doc] = "Provides the default list of distro features with the exception of any libc-specific features."
3601 </info>
3602 <glossdef>
3603 <para role="glossdeffirst">
3604<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3605 A convenience variable that gives you the default
3606 list of distro features with the exception of any
3607 features specific to the C library
3608 (<filename>libc</filename>).
3609 </para>
3610
3611 <para>
3612 When creating a custom distribution, you might find it
3613 useful to be able to reuse the default
3614 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
3615 options without the need to write out the full set.
3616 Here is an example that uses
3617 <filename>DISTRO_FEATURES_DEFAULT</filename> from a
3618 custom distro configuration file:
3619 <literallayout class='monospaced'>
3620 DISTRO_FEATURES ?= "${DISTRO_FEATURES_DEFAULT} ${DISTRO_FEATURES_LIBC} myfeature"
3621 </literallayout>
3622 </para>
3623 </glossdef>
3624 </glossentry>
3625
Brad Bishop6e60e8b2018-02-01 10:27:11 -05003626 <glossentry id='var-DISTRO_FEATURES_FILTER_NATIVE'><glossterm>DISTRO_FEATURES_FILTER_NATIVE</glossterm>
3627 <info>
3628 DISTRO_FEATURES_FILTER_NATIVE[doc] = "Specifies a list of features that if present in the target DISTRO_FEATURES value should be included in DISTRO_FEATURES when building native recipes."
3629 </info>
3630 <glossdef>
3631 <para role="glossdeffirst">
3632<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3633 Specifies a list of features that if present in
3634 the target
3635 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
3636 value should be included in
3637 <filename>DISTRO_FEATURES</filename> when building native
3638 recipes.
3639 This variable is used in addition to the features
3640 filtered using the
3641 <link linkend='var-DISTRO_FEATURES_NATIVE'><filename>DISTRO_FEATURES_NATIVE</filename></link>
3642 variable.
3643 </para>
3644 </glossdef>
3645 </glossentry>
3646
3647 <glossentry id='var-DISTRO_FEATURES_FILTER_NATIVESDK'><glossterm>DISTRO_FEATURES_FILTER_NATIVESDK</glossterm>
3648 <info>
3649 DISTRO_FEATURES_FILTER_NATIVESDK[doc] = "Specifies a list of features that if present in the target DISTRO_FEATURES value should be included in DISTRO_FEATURES when building nativesdk recipes."
3650 </info>
3651 <glossdef>
3652 <para role="glossdeffirst">
3653<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3654 Specifies a list of features that if present in the target
3655 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
3656 value should be included in
3657 <filename>DISTRO_FEATURES</filename> when building
3658 nativesdk recipes.
3659 This variable is used in addition to the features
3660 filtered using the
3661 <link linkend='var-DISTRO_FEATURES_NATIVESDK'><filename>DISTRO_FEATURES_NATIVESDK</filename></link>
3662 variable.
3663 </para>
3664 </glossdef>
3665 </glossentry>
3666
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003667 <glossentry id='var-DISTRO_FEATURES_LIBC'><glossterm>DISTRO_FEATURES_LIBC</glossterm>
3668 <info>
3669 DISTRO_FEATURES_LIBC[doc] = "Specifies the list of distro features that are specific to the C library (libc)."
3670 </info>
3671 <glossdef>
3672 <para role="glossdeffirst">
3673<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3674 A convenience variable that specifies the list of distro
3675 features that are specific to the C library
3676 (<filename>libc</filename>).
3677 Typically, these features are prefixed with "libc-" and
3678 control which features are enabled at during the build
3679 within the C library itself.
3680 </para>
3681 </glossdef>
3682 </glossentry>
3683
Brad Bishop6e60e8b2018-02-01 10:27:11 -05003684 <glossentry id='var-DISTRO_FEATURES_NATIVE'><glossterm>DISTRO_FEATURES_NATIVE</glossterm>
3685 <info>
3686 DISTRO_FEATURES_NATIVE[doc] = "Specifies a list of features that should be included in DISTRO_FEATURES when building native recipes."
3687 </info>
3688 <glossdef>
3689 <para role="glossdeffirst">
3690<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3691 Specifies a list of features that should be included in
3692 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
3693 when building native recipes.
3694 This variable is used in addition to the features
3695 filtered using the
3696 <link linkend='var-DISTRO_FEATURES_FILTER_NATIVE'><filename>DISTRO_FEATURES_FILTER_NATIVE</filename></link>
3697 variable.
3698 </para>
3699 </glossdef>
3700 </glossentry>
3701
3702 <glossentry id='var-DISTRO_FEATURES_NATIVESDK'><glossterm>DISTRO_FEATURES_NATIVESDK</glossterm>
3703 <info>
3704 DISTRO_FEATURES_NATIVESDK[doc] = "Specifies a list of features that should be included in DISTRO_FEATURES when building nativesdk recipes."
3705 </info>
3706 <glossdef>
3707 <para role="glossdeffirst">
3708<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3709 Specifies a list of features that should be included in
3710 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>
3711 when building nativesdk recipes.
3712 This variable is used in addition to the features
3713 filtered using the
3714 <link linkend='var-DISTRO_FEATURES_FILTER_NATIVESDK'><filename>DISTRO_FEATURES_FILTER_NATIVESDK</filename></link>
3715 variable.
3716 </para>
3717 </glossdef>
3718 </glossentry>
3719
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003720 <glossentry id='var-DISTRO_NAME'><glossterm>DISTRO_NAME</glossterm>
3721 <info>
3722 DISTRO_NAME[doc] = "The long name of the distribution."
3723 </info>
3724 <glossdef>
3725 <para role="glossdeffirst">
3726<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3727 The long name of the distribution.
3728 </para>
3729 </glossdef>
3730 </glossentry>
3731
3732 <glossentry id='var-DISTRO_VERSION'><glossterm>DISTRO_VERSION</glossterm>
3733 <info>
3734 DISTRO_VERSION[doc] = "The version of the distribution."
3735 </info>
3736 <glossdef>
3737 <para role="glossdeffirst">
3738<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3739 The version of the distribution.
3740 </para>
3741 </glossdef>
3742 </glossentry>
3743
3744 <glossentry id='var-DISTROOVERRIDES'><glossterm>DISTROOVERRIDES</glossterm>
3745 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003746 DISTROOVERRIDES[doc] = "A colon-separated list of overrides specific to the current distribution."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003747 </info>
3748 <glossdef>
3749 <para role="glossdeffirst">
3750<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003751 A colon-separated list of overrides specific to the
3752 current distribution.
3753 By default, this list includes the value of
3754 <link linkend='var-DISTRO'><filename>DISTRO</filename></link>.
3755 </para>
3756
3757 <para>
3758 You can extend <filename>DISTROOVERRIDES</filename>
3759 to add extra overrides that should apply to
3760 the distribution.
3761 </para>
3762
3763 <para>
3764 The underlying mechanism behind
3765 <filename>DISTROOVERRIDES</filename> is simply that it
3766 is included in the default value of
3767 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003768 </para>
3769 </glossdef>
3770 </glossentry>
3771
3772 <glossentry id='var-DL_DIR'><glossterm>DL_DIR</glossterm>
3773 <info>
3774 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."
3775 </info>
3776 <glossdef>
3777 <para role="glossdeffirst">
3778<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3779 The central download directory used by the build process to
3780 store downloads.
3781 By default, <filename>DL_DIR</filename> gets files
3782 suitable for mirroring for everything except Git
3783 repositories.
3784 If you want tarballs of Git repositories, use the
3785 <link linkend='var-BB_GENERATE_MIRROR_TARBALLS'><filename>BB_GENERATE_MIRROR_TARBALLS</filename></link>
3786 variable.
3787 </para>
3788
3789 <para>
3790 You can set this directory by defining the
3791 <filename>DL_DIR</filename> variable in the
3792 <filename>conf/local.conf</filename> file.
3793 This directory is self-maintaining and you should not have
3794 to touch it.
3795 By default, the directory is <filename>downloads</filename>
3796 in the
3797 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
3798 <literallayout class='monospaced'>
3799 #DL_DIR ?= "${TOPDIR}/downloads"
3800 </literallayout>
3801 To specify a different download directory, simply remove
3802 the comment from the line and provide your directory.
3803 </para>
3804
3805 <para>
3806 During a first build, the system downloads many different
3807 source code tarballs from various upstream projects.
3808 Downloading can take a while, particularly if your network
3809 connection is slow.
3810 Tarballs are all stored in the directory defined by
3811 <filename>DL_DIR</filename> and the build system looks there
3812 first to find source tarballs.
3813 <note>
3814 When wiping and rebuilding, you can preserve this
3815 directory to speed up this part of subsequent
3816 builds.
3817 </note>
3818 </para>
3819
3820 <para>
3821 You can safely share this directory between multiple builds
3822 on the same development machine.
3823 For additional information on how the build process gets
3824 source files when working behind a firewall or proxy server,
3825 see this specific question in the
3826 "<link linkend='how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>FAQ</link>"
3827 chapter.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05003828 You can also refer to the
3829 "<ulink url='&YOCTO_WIKI_URL;/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
3830 Wiki page.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003831 </para>
3832 </glossdef>
3833 </glossentry>
3834
3835 <glossentry id='var-DOC_COMPRESS'><glossterm>DOC_COMPRESS</glossterm>
3836 <info>
3837 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."
3838 </info>
3839 <glossdef>
3840 <para role="glossdeffirst">
3841<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3842 When inheriting the
3843 <link linkend='ref-classes-compress_doc'><filename>compress_doc</filename></link>
3844 class, this variable sets the compression policy used when
3845 the OpenEmbedded build system compresses man pages and info
3846 pages.
3847 By default, the compression method used is gz (gzip).
3848 Other policies available are xz and bz2.
3849 </para>
3850
3851 <para>
3852 For information on policies and on how to use this
3853 variable, see the comments in the
3854 <filename>meta/classes/compress_doc.bbclass</filename> file.
3855 </para>
3856 </glossdef>
3857 </glossentry>
3858
3859 </glossdiv>
3860
3861 <glossdiv id='var-glossary-e'><title>E</title>
3862
3863 <glossentry id='var-EFI_PROVIDER'><glossterm>EFI_PROVIDER</glossterm>
3864 <info>
3865 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."
3866 </info>
3867 <glossdef>
3868 <para role="glossdeffirst">
3869<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3870 When building bootable images (i.e. where
3871 <filename>hddimg</filename> or <filename>vmdk</filename>
3872 is in
3873 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>),
3874 the <filename>EFI_PROVIDER</filename> variable specifies
3875 the EFI bootloader to use.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003876 The default is "grub-efi", but "systemd-boot" can be used
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003877 instead.
3878 </para>
3879
3880 <para>
3881 See the
Patrick Williamsc0f7c042017-02-23 20:41:17 -06003882 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
Brad Bishop6e60e8b2018-02-01 10:27:11 -05003883 and
3884 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
3885 classes for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003886 </para>
3887 </glossdef>
3888 </glossentry>
3889
3890 <glossentry id='var-ENABLE_BINARY_LOCALE_GENERATION'><glossterm>ENABLE_BINARY_LOCALE_GENERATION</glossterm>
3891 <info>
3892 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."
3893 </info>
3894 <glossdef>
3895 <para role="glossdeffirst">
3896<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3897 Variable that controls which locales for
3898 <filename>glibc</filename> are generated during the
3899 build (useful if the target device has 64Mbytes
3900 of RAM or less).
3901 </para>
3902 </glossdef>
3903 </glossentry>
3904
3905 <glossentry id='var-ERR_REPORT_DIR'><glossterm>ERR_REPORT_DIR</glossterm>
3906 <info>
3907 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."
3908 </info>
3909 <glossdef>
3910 <para role="glossdeffirst">
3911<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3912 When used with the
3913 <link linkend='ref-classes-report-error'><filename>report-error</filename></link>
3914 class, specifies the path used for storing the debug files
3915 created by the
3916 <ulink url='&YOCTO_DOCS_DEV_URL;#using-the-error-reporting-tool'>error reporting tool</ulink>,
3917 which allows you to submit build errors you encounter to a
3918 central database.
3919 By default, the value of this variable is
3920 <filename>${</filename><link linkend='var-LOG_DIR'><filename>LOG_DIR</filename></link><filename>}/error-report</filename>.
3921 </para>
3922
3923 <para>
3924 You can set <filename>ERR_REPORT_DIR</filename> to the path
3925 you want the error reporting tool to store the debug files
3926 as follows in your <filename>local.conf</filename> file:
3927 <literallayout class='monospaced'>
3928 ERR_REPORT_DIR = "<replaceable>path</replaceable>"
3929 </literallayout>
3930 </para>
3931 </glossdef>
3932 </glossentry>
3933
3934 <glossentry id='var-ERROR_QA'><glossterm>ERROR_QA</glossterm>
3935 <info>
3936 ERROR_QA[doc] = "Specifies the quality assurance checks whose failures are reported as errors by the OpenEmbedded build system."
3937 </info>
3938 <glossdef>
3939 <para role="glossdeffirst">
3940<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3941 Specifies the quality assurance checks whose failures are
3942 reported as errors by the OpenEmbedded build system.
3943 You set this variable in your distribution configuration
3944 file.
3945 For a list of the checks you can control with this variable,
3946 see the
3947 "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
3948 section.
3949 </para>
3950 </glossdef>
3951 </glossentry>
3952
Patrick Williamsf1e5d692016-03-30 15:21:19 -05003953 <glossentry id='var-EXCLUDE_FROM_SHLIBS'><glossterm>EXCLUDE_FROM_SHLIBS</glossterm>
3954 <info>
3955 EXCLUDE_FROM_SHLIBS[doc] = "Causes the OpenEmbedded build system's shared libraries resolver to exclude an entire package when scanning for shared libraries."
3956 </info>
3957 <glossdef>
3958 <para role="glossdeffirst">
3959<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3960 Triggers the OpenEmbedded build system's shared libraries
3961 resolver to exclude an entire package when scanning for
3962 shared libraries.
3963 <note>
3964 The shared libraries resolver's functionality results
3965 in part from the internal function
3966 <filename>package_do_shlibs</filename>, which is part of
3967 the
3968 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
3969 task.
3970 You should be aware that the shared libraries resolver
3971 might implicitly define some dependencies between
3972 packages.
3973 </note>
3974 The <filename>EXCLUDE_FROM_SHLIBS</filename> variable is
3975 similar to the
3976 <link linkend='var-PRIVATE_LIBS'><filename>PRIVATE_LIBS</filename></link>
3977 variable, which excludes a package's particular libraries
3978 only and not the whole package.
3979 </para>
3980
3981 <para>
3982 Use the
3983 <filename>EXCLUDE_FROM_SHLIBS</filename> variable by
3984 setting it to "1" for a particular package:
3985 <literallayout class='monospaced'>
3986 EXCLUDE_FROM_SHLIBS = "1"
3987 </literallayout>
3988 </para>
3989 </glossdef>
3990 </glossentry>
3991
Patrick Williamsc124f4f2015-09-15 14:41:29 -05003992 <glossentry id='var-EXCLUDE_FROM_WORLD'><glossterm>EXCLUDE_FROM_WORLD</glossterm>
3993 <info>
3994 EXCLUDE_FROM_WORLD[doc] = "Directs BitBake to exclude a recipe from world builds (i.e. bitbake world)."
3995 </info>
3996 <glossdef>
3997 <para role="glossdeffirst">
3998<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
3999 Directs BitBake to exclude a recipe from world builds (i.e.
4000 <filename>bitbake world</filename>).
4001 During world builds, BitBake locates, parses and builds all
4002 recipes found in every layer exposed in the
4003 <filename>bblayers.conf</filename> configuration file.
4004 </para>
4005
4006 <para>
4007 To exclude a recipe from a world build using this variable,
4008 set the variable to "1" in the recipe.
4009 </para>
4010
4011 <note>
4012 Recipes added to <filename>EXCLUDE_FROM_WORLD</filename>
4013 may still be built during a world build in order to satisfy
4014 dependencies of other recipes.
4015 Adding a recipe to <filename>EXCLUDE_FROM_WORLD</filename>
4016 only ensures that the recipe is not explicitly added
4017 to the list of build targets in a world build.
4018 </note>
4019 </glossdef>
4020 </glossentry>
4021
4022 <glossentry id='var-EXTENDPE'><glossterm>EXTENDPE</glossterm>
4023 <info>
4024 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."
4025 </info>
4026 <glossdef>
4027 <para role="glossdeffirst">
4028<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4029 Used with file and pathnames to create a prefix for a recipe's
4030 version based on the recipe's
4031 <link linkend='var-PE'><filename>PE</filename></link> value.
4032 If <filename>PE</filename> is set and greater than zero for a recipe,
4033 <filename>EXTENDPE</filename> becomes that value (e.g if
4034 <filename>PE</filename> is equal to "1" then <filename>EXTENDPE</filename>
4035 becomes "1_").
4036 If a recipe's <filename>PE</filename> is not set (the default) or is equal to
4037 zero, <filename>EXTENDPE</filename> becomes "".</para>
4038 <para>See the <link linkend='var-STAMP'><filename>STAMP</filename></link>
4039 variable for an example.
4040 </para>
4041 </glossdef>
4042 </glossentry>
4043
4044 <glossentry id='var-EXTENDPKGV'><glossterm>EXTENDPKGV</glossterm>
4045 <info>
4046 EXTENDPKGV[doc] = "The full package version specification as it appears on the final packages produced by a recipe."
4047 </info>
4048 <glossdef>
4049 <para role="glossdeffirst">
4050<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4051 The full package version specification as it appears on the
4052 final packages produced by a recipe.
4053 The variable's value is normally used to fix a runtime
4054 dependency to the exact same version of another package
4055 in the same recipe:
4056 <literallayout class='monospaced'>
4057 RDEPENDS_${PN}-additional-module = "${PN} (= ${EXTENDPKGV})"
4058 </literallayout>
4059 </para>
4060
4061 <para>
4062 The dependency relationships are intended to force the
4063 package manager to upgrade these types of packages in
4064 lock-step.
4065 </para>
4066 </glossdef>
4067 </glossentry>
4068
4069 <glossentry id='var-EXTERNAL_KERNEL_TOOLS'><glossterm>EXTERNAL_KERNEL_TOOLS</glossterm>
4070 <info>
4071 EXTERNAL_KERNEL_TOOLS[doc] = "Indicates kernel tools are external to the source tree."
4072 </info>
4073 <glossdef>
4074 <para role="glossdeffirst">
4075<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4076 When set, the <filename>EXTERNAL_KERNEL_TOOLS</filename>
4077 variable indicates that these tools are not in the
4078 source tree.
4079 </para>
4080
4081 <para>
4082 When kernel tools are available in the tree, they are
4083 preferred over any externally installed tools.
4084 Setting the <filename>EXTERNAL_KERNEL_TOOLS</filename>
4085 variable tells the OpenEmbedded build system to prefer
4086 the installed external tools.
4087 See the
4088 <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
4089 class in <filename>meta/classes</filename> to see how
4090 the variable is used.
4091 </para>
4092 </glossdef>
4093 </glossentry>
4094
4095 <glossentry id='var-EXTERNALSRC'><glossterm>EXTERNALSRC</glossterm>
4096 <info>
4097 EXTERNALSRC[doc] = "If externalsrc.bbclass is inherited, this variable points to the source tree, which is outside of the OpenEmbedded build system."
4098 </info>
4099 <glossdef>
4100 <para role="glossdeffirst">
4101<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4102 When inheriting the
4103 <link linkend='ref-classes-externalsrc'><filename>externalsrc</filename></link>
4104 class, this variable points to the source tree, which is
4105 outside of the OpenEmbedded build system.
4106 When set, this variable sets the
4107 <link linkend='var-S'><filename>S</filename></link>
4108 variable, which is what the OpenEmbedded build system uses
4109 to locate unpacked recipe source code.
4110 </para>
4111
4112 <para>
4113 For more information on
4114 <filename>externalsrc.bbclass</filename>, see the
4115 "<link linkend='ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></link>"
4116 section.
4117 You can also find information on how to use this variable
4118 in the
4119 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-software-from-an-external-source'>Building Software from an External Source</ulink>"
4120 section in the Yocto Project Development Manual.
4121 </para>
4122 </glossdef>
4123 </glossentry>
4124
4125 <glossentry id='var-EXTERNALSRC_BUILD'><glossterm>EXTERNALSRC_BUILD</glossterm>
4126 <info>
4127 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."
4128 </info>
4129 <glossdef>
4130 <para role="glossdeffirst">
4131<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4132 When inheriting the
4133 <link linkend='ref-classes-externalsrc'><filename>externalsrc</filename></link>
4134 class, this variable points to the directory in which the
4135 recipe's source code is built, which is outside of the
4136 OpenEmbedded build system.
4137 When set, this variable sets the
4138 <link linkend='var-B'><filename>B</filename></link>
4139 variable, which is what the OpenEmbedded build system uses
4140 to locate the Build Directory.
4141 </para>
4142
4143 <para>
4144 For more information on
4145 <filename>externalsrc.bbclass</filename>, see the
4146 "<link linkend='ref-classes-externalsrc'><filename>externalsrc.bbclass</filename></link>"
4147 section.
4148 You can also find information on how to use this variable
4149 in the
4150 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-software-from-an-external-source'>Building Software from an External Source</ulink>"
4151 section in the Yocto Project Development Manual.
4152 </para>
4153 </glossdef>
4154 </glossentry>
4155
4156 <glossentry id='var-EXTRA_AUTORECONF'><glossterm>EXTRA_AUTORECONF</glossterm>
4157 <info>
4158 EXTRA_AUTORECONF[doc] = "Extra options passed to the autoreconf command, which is executed during do_configure."
4159 </info>
4160 <glossdef>
4161 <para role="glossdeffirst">
4162<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4163 For recipes inheriting the
4164 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
4165 class, you can use <filename>EXTRA_AUTORECONF</filename> to
4166 specify extra options to pass to the
4167 <filename>autoreconf</filename> command that is
4168 executed during the
4169 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
4170 task.
4171 </para>
4172
4173 <para>
4174 The default value is "--exclude=autopoint".
4175 </para>
4176 </glossdef>
4177 </glossentry>
4178
4179 <glossentry id='var-EXTRA_IMAGE_FEATURES'><glossterm>EXTRA_IMAGE_FEATURES</glossterm>
4180 <info>
4181 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."
4182 </info>
4183 <glossdef>
4184 <para role="glossdeffirst">
4185<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4186 A list of additional features to include in an image.
4187 When listing more than one feature, separate them with
4188 a space.
4189 </para>
4190
4191 <para>
4192 Typically, you configure this variable in your
4193 <filename>local.conf</filename> file, which is found in the
4194 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
4195 Although you can use this variable from within a recipe,
4196 best practices dictate that you do not.
4197 <note>
4198 To enable primary features from within the image
4199 recipe, use the
4200 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
4201 variable.
4202 </note>
4203 </para>
4204
4205 <para>
4206 Here are some examples of features you can add:
4207 <literallayout class='monospaced'>
4208"dbg-pkgs" - Adds -dbg packages for all installed packages
4209 including symbol information for debugging and
4210 profiling.
4211
4212"debug-tweaks" - Makes an image suitable for debugging.
4213 For example, allows root logins without
4214 passwords and enables post-installation
4215 logging. See the 'allow-empty-password'
4216 and 'post-install-logging' features in
4217 the "<link linkend='ref-features-image'>Image Features</link>" section for
4218 more information.
4219
4220"dev-pkgs" - Adds -dev packages for all installed packages.
4221 This is useful if you want to develop against
4222 the libraries in the image.
4223
4224"read-only-rootfs" - Creates an image whose root
4225 filesystem is read-only. See the
4226 "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-a-read-only-root-filesystem'>Creating a Read-Only Root Filesystem</ulink>"
4227 section in the Yocto Project
4228 Development Manual for more
4229 information
4230
4231"tools-debug" - Adds debugging tools such as gdb and
4232 strace.
4233
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004234"tools-sdk" - Adds development tools such as gcc, make,
4235 pkgconfig and so forth.
4236
4237"tools-testapps" - Adds useful testing tools such as
4238 ts_print, aplay, arecord and so
4239 forth.
4240
4241 </literallayout>
4242 </para>
4243
4244 <para>
4245 For a complete list of image features that ships with the
4246 Yocto Project, see the
4247 "<link linkend="ref-features-image">Image Features</link>"
4248 section.
4249 </para>
4250
4251 <para>
4252 For an example that shows how to customize your image by
4253 using this variable, see the
4254 "<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>"
4255 section in the Yocto Project Development Manual.
4256 </para>
4257 </glossdef>
4258 </glossentry>
4259
4260 <glossentry id='var-EXTRA_IMAGECMD'><glossterm>EXTRA_IMAGECMD</glossterm>
4261 <info>
4262 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."
4263 </info>
4264 <glossdef>
4265 <para role="glossdeffirst">
4266<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4267 Specifies additional options for the image
4268 creation command that has been specified in
4269 <link linkend='var-IMAGE_CMD'><filename>IMAGE_CMD</filename></link>.
4270 When setting this variable, you should
4271 use an override for the associated type.
4272 Here is an example:
4273 <literallayout class='monospaced'>
4274 EXTRA_IMAGECMD_ext3 ?= "-i 4096"
4275 </literallayout>
4276 </para>
4277 </glossdef>
4278 </glossentry>
4279
4280 <glossentry id='var-EXTRA_IMAGEDEPENDS'><glossterm>EXTRA_IMAGEDEPENDS</glossterm>
4281 <info>
4282 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."
4283 </info>
4284 <glossdef>
4285 <para role="glossdeffirst">
4286<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4287 A list of recipes to build that do not provide packages
4288 for installing into the root filesystem.
4289 </para>
4290
4291 <para>
4292 Sometimes a recipe is required to build the final image but is not
4293 needed in the root filesystem.
4294 You can use the <filename>EXTRA_IMAGEDEPENDS</filename> variable to
4295 list these recipes and thus specify the dependencies.
4296 A typical example is a required bootloader in a machine configuration.
4297 </para>
4298
4299 <note>
4300 To add packages to the root filesystem, see the various
4301 <filename>*<link linkend='var-RDEPENDS'>RDEPENDS</link></filename>
4302 and <filename>*<link linkend='var-RRECOMMENDS'>RRECOMMENDS</link></filename>
4303 variables.
4304 </note>
4305 </glossdef>
4306 </glossentry>
4307
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004308 <glossentry id='var-EXTRANATIVEPATH'><glossterm>EXTRANATIVEPATH</glossterm>
4309 <info>
4310 EXTRANATIVEPATH[doc] = "A list of subdirectories of ${STAGING_BINDIR_NATIVE} added to the beginning of the environment variable PATH."
4311 </info>
4312 <glossdef>
4313 <para role="glossdeffirst">
4314<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4315 A list of subdirectories of
4316 <filename>${</filename><link linkend='var-STAGING_BINDIR_NATIVE'><filename>STAGING_BINDIR_NATIVE</filename></link><filename>}</filename>
4317 added to the beginning of the environment variable
4318 <filename>PATH</filename>.
4319 As an example, the following prepends
4320 "${STAGING_BINDIR_NATIVE}/foo:${STAGING_BINDIR_NATIVE}/bar:"
4321 to <filename>PATH</filename>:
4322 <literallayout class='monospaced'>
4323 EXTRANATIVEPATH = "foo bar"
4324 </literallayout>
4325 </para>
4326 </glossdef>
4327 </glossentry>
4328
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004329 <glossentry id='var-EXTRA_OECMAKE'><glossterm>EXTRA_OECMAKE</glossterm>
4330 <info>
4331 EXTRA_OECMAKE[doc] = "Additional cmake options."
4332 </info>
4333 <glossdef>
4334 <para role="glossdeffirst">
4335<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4336 Additional <filename>cmake</filename> options.
4337 </para>
4338 </glossdef>
4339 </glossentry>
4340
4341 <glossentry id='var-EXTRA_OECONF'><glossterm>EXTRA_OECONF</glossterm>
4342 <info>
4343 EXTRA_OECONF[doc] = "Additional configure script options."
4344 </info>
4345 <glossdef>
4346 <para role="glossdeffirst">
4347<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4348 Additional <filename>configure</filename> script options.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004349 See
4350 <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>
4351 for additional information on passing configure script
4352 options.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004353 </para>
4354 </glossdef>
4355 </glossentry>
4356
4357 <glossentry id='var-EXTRA_OEMAKE'><glossterm>EXTRA_OEMAKE</glossterm>
4358 <info>
4359 EXTRA_OEMAKE[doc] = "Additional GNU make options."
4360 </info>
4361 <glossdef>
4362 <para role="glossdeffirst">
4363<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4364 Additional GNU <filename>make</filename> options.
4365 </para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05004366
4367 <para>
4368 Because the <filename>EXTRA_OEMAKE</filename> defaults to
4369 "", you need to set the variable to specify any required
4370 GNU options.
4371 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004372
4373 <para>
4374 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
4375 and
4376 <link linkend='var-PARALLEL_MAKEINST'><filename>PARALLEL_MAKEINST</filename></link>
4377 also make use of
4378 <filename>EXTRA_OEMAKE</filename> to pass the required
4379 flags.
4380 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004381 </glossdef>
4382 </glossentry>
4383
4384 <glossentry id='var-EXTRA_OESCONS'><glossterm>EXTRA_OESCONS</glossterm>
4385 <info>
4386 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."
4387 </info>
4388 <glossdef>
4389 <para role="glossdeffirst">
4390<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4391 When inheriting the
4392 <link linkend='ref-classes-scons'><filename>scons</filename></link>
4393 class, this variable specifies additional configuration
4394 options you want to pass to the
4395 <filename>scons</filename> command line.
4396 </para>
4397 </glossdef>
4398 </glossentry>
4399
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004400 <glossentry id='var-EXTRA_USERS_PARAMS'><glossterm>EXTRA_USERS_PARAMS</glossterm>
4401 <info>
4402 EXTRA_USERS_PARAMS[doc] = "When a recipe inherits the extrausers class, this variable provides image level user and group operations."
4403 </info>
4404 <glossdef>
4405 <para role="glossdeffirst">
4406<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4407 When inheriting the
4408 <link linkend='ref-classes-extrausers'><filename>extrausers</filename></link>
4409 class, this variable provides image level user and group
4410 operations.
4411 This is a more global method of providing user and group
4412 configuration as compared to using the
4413 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
4414 class, which ties user and group configurations to a
4415 specific recipe.
4416 </para>
4417
4418 <para>
4419 The set list of commands you can configure using the
4420 <filename>EXTRA_USERS_PARAMS</filename> is shown in the
4421 <filename>extrausers</filename> class.
4422 These commands map to the normal Unix commands of the same
4423 names:
4424 <literallayout class='monospaced'>
4425 # EXTRA_USERS_PARAMS = "\
4426 # useradd -p '' tester; \
4427 # groupadd developers; \
4428 # userdel nobody; \
4429 # groupdel -g video; \
4430 # groupmod -g 1020 developers; \
4431 # usermod -s /bin/sh tester; \
4432 # "
4433 </literallayout>
4434 </para>
4435 </glossdef>
4436 </glossentry>
4437
4438 </glossdiv>
4439
4440 <glossdiv id='var-glossary-f'><title>F</title>
4441
4442 <glossentry id='var-FEATURE_PACKAGES'><glossterm>FEATURE_PACKAGES</glossterm>
4443 <info>
4444 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."
4445 </info>
4446 <glossdef>
4447 <para role="glossdeffirst">
4448<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4449 Defines one or more packages to include in an image when
4450 a specific item is included in
4451 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
4452 When setting the value, <filename>FEATURE_PACKAGES</filename>
4453 should have the name of the feature item as an override.
4454 Here is an example:
4455 <literallayout class='monospaced'>
4456 FEATURE_PACKAGES_widget = "<replaceable>package1</replaceable> <replaceable>package2</replaceable>"
4457 </literallayout>
4458 </para>
4459
4460 <para>
4461 In this example, if "widget" were added to
4462 <filename>IMAGE_FEATURES</filename>, <replaceable>package1</replaceable> and
4463 <replaceable>package2</replaceable> would be included in the image.
4464 <note>
4465 Packages installed by features defined through
4466 <filename>FEATURE_PACKAGES</filename> are often package
4467 groups.
4468 While similarly named, you should not confuse the
4469 <filename>FEATURE_PACKAGES</filename> variable with
4470 package groups, which are discussed elsewhere in the
4471 documentation.
4472 </note>
4473 </para>
4474 </glossdef>
4475 </glossentry>
4476
4477 <glossentry id='var-FEED_DEPLOYDIR_BASE_URI'><glossterm>FEED_DEPLOYDIR_BASE_URI</glossterm>
4478 <info>
4479 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."
4480 </info>
4481 <glossdef>
4482 <para role="glossdeffirst">
4483<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4484 Points to the base URL of the server and location within
4485 the document-root that provides the metadata and
4486 packages required by OPKG to support runtime package
4487 management of IPK packages.
4488 You set this variable in your
4489 <filename>local.conf</filename> file.
4490 </para>
4491
4492 <para>
4493 Consider the following example:
4494 <literallayout class='monospaced'>
4495 FEED_DEPLOYDIR_BASE_URI = "http://192.168.7.1/BOARD-dir"
4496 </literallayout>
4497 This example assumes you are serving your packages over
4498 HTTP and your databases are located in a directory
4499 named <filename>BOARD-dir</filename>, which is underneath
4500 your HTTP server's document-root.
4501 In this case, the OpenEmbedded build system generates a set
4502 of configuration files for you in your target that work
4503 with the feed.
4504 </para>
4505 </glossdef>
4506 </glossentry>
4507
4508 <glossentry id='var-FILES'><glossterm>FILES</glossterm>
4509 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004510 FILES[doc] = "The list of directories or files that are placed in a package."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004511 </info>
4512 <glossdef>
4513 <para role="glossdeffirst">
4514<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004515 The list of files and directories that are placed in a
4516 package.
4517 The
4518 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
4519 variable lists the packages generated by a recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004520 </para>
4521
4522 <para>
4523 To use the <filename>FILES</filename> variable, provide a
4524 package name override that identifies the resulting package.
4525 Then, provide a space-separated list of files or paths
4526 that identify the files you want included as part of the
4527 resulting package.
4528 Here is an example:
4529 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004530 FILES_${PN} += "${bindir}/mydir1 ${bindir}/mydir2/myfile"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004531 </literallayout>
4532 </para>
4533
4534 <note>
4535 When specifying paths as part of the
4536 <filename>FILES</filename> variable, it is good practice
4537 to use appropriate path variables.
4538 For example, use <filename>${sysconfdir}</filename> rather
4539 than <filename>/etc</filename>, or
4540 <filename>${bindir}</filename> rather than
4541 <filename>/usr/bin</filename>.
4542 You can find a list of these variables at the top of the
4543 <filename>meta/conf/bitbake.conf</filename> file in the
4544 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004545 You will also find the default values of the various
4546 <filename>FILES_*</filename> variables in this file.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004547 </note>
4548
4549 <para>
4550 If some of the files you provide with the
4551 <filename>FILES</filename> variable are editable and you
4552 know they should not be overwritten during the package
4553 update process by the Package Management System (PMS), you
4554 can identify these files so that the PMS will not
4555 overwrite them.
4556 See the
4557 <link linkend='var-CONFFILES'><filename>CONFFILES</filename></link>
4558 variable for information on how to identify these files to
4559 the PMS.
4560 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004561 </glossdef>
4562 </glossentry>
4563
4564 <glossentry id='var-FILES_SOLIBSDEV'><glossterm>FILES_SOLIBSDEV</glossterm>
4565 <info>
4566 FILES_SOLIBSDEV[doc] = "Defines the full path name of the development symbolic link (symlink) for shared libraries on the target platform."
4567 </info>
4568 <glossdef>
4569 <para role="glossdeffirst">
4570<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4571 Defines the file specification to match
4572 <link linkend='var-SOLIBSDEV'><filename>SOLIBSDEV</filename></link>.
4573 In other words, <filename>FILES_SOLIBSDEV</filename>
4574 defines the full path name of the development symbolic link
4575 (symlink) for shared libraries on the target platform.
4576 </para>
4577
4578 <para>
4579 The following statement from the
4580 <filename>bitbake.conf</filename> shows how it is set:
4581 <literallayout class='monospaced'>
4582 FILES_SOLIBSDEV ?= "${base_libdir}/lib*${SOLIBSDEV} ${libdir}/lib*${SOLIBSDEV}"
4583 </literallayout>
4584 </para>
4585 </glossdef>
4586 </glossentry>
4587
4588 <glossentry id='var-FILESEXTRAPATHS'><glossterm>FILESEXTRAPATHS</glossterm>
4589 <info>
4590 FILESEXTRAPATHS[doc] = "Extends the search path the OpenEmbedded build system uses when looking for files and patches as it processes recipes and append files."
4591 </info>
4592 <glossdef>
4593 <para role="glossdeffirst">
4594<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4595 Extends the search path the OpenEmbedded build system uses
4596 when looking for files and patches as it processes recipes
4597 and append files.
4598 The default directories BitBake uses when it processes
4599 recipes are initially defined by the
4600 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
4601 variable.
4602 You can extend <filename>FILESPATH</filename> variable
4603 by using <filename>FILESEXTRAPATHS</filename>.
4604 </para>
4605
4606 <para>
4607 Best practices dictate that you accomplish this by using
4608 <filename>FILESEXTRAPATHS</filename> from within a
4609 <filename>.bbappend</filename> file and that you prepend
4610 paths as follows:
4611 <literallayout class='monospaced'>
4612 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
4613 </literallayout>
4614 In the above example, the build system first looks for files
4615 in a directory that has the same name as the corresponding
4616 append file.
4617 <note>
4618 <para>When extending <filename>FILESEXTRAPATHS</filename>,
4619 be sure to use the immediate expansion
4620 (<filename>:=</filename>) operator.
4621 Immediate expansion makes sure that BitBake evaluates
4622 <link linkend='var-THISDIR'><filename>THISDIR</filename></link>
4623 at the time the directive is encountered rather than at
4624 some later time when expansion might result in a
4625 directory that does not contain the files you need.
4626 </para>
4627 <para>Also, include the trailing separating colon
4628 character if you are prepending.
4629 The trailing colon character is necessary because you
4630 are directing BitBake to extend the path by prepending
4631 directories to the search path.</para>
4632 </note>
4633 Here is another common use:
4634 <literallayout class='monospaced'>
4635 FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
4636 </literallayout>
4637 In this example, the build system extends the
4638 <filename>FILESPATH</filename> variable to include a
4639 directory named <filename>files</filename> that is in the
4640 same directory as the corresponding append file.
4641 </para>
4642
4643 <para>
4644 Here is a final example that specifically adds three paths:
4645 <literallayout class='monospaced'>
4646 FILESEXTRAPATHS_prepend := "path_1:path_2:path_3:"
4647 </literallayout>
4648 </para>
4649
4650 <para>
4651 By prepending paths in <filename>.bbappend</filename>
4652 files, you allow multiple append files that reside in
4653 different layers but are used for the same recipe to
4654 correctly extend the path.
4655 </para>
4656 </glossdef>
4657 </glossentry>
4658
4659 <glossentry id='var-FILESOVERRIDES'><glossterm>FILESOVERRIDES</glossterm>
4660 <info>
4661 FILESOVERRIDES[doc] = "A subset of OVERRIDES used by the OpenEmbedded build system for creating FILESPATH."
4662 </info>
4663 <glossdef>
4664 <para role="glossdeffirst">
4665<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4666 A subset of <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
4667 used by the OpenEmbedded build system for creating
4668 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>.
4669 You can find more information on how overrides are handled
4670 in the
4671 <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake Manual</ulink>.
4672 </para>
4673
4674 <para>
4675 By default, the <filename>FILESOVERRIDES</filename>
4676 variable is defined as:
4677 <literallayout class='monospaced'>
4678 FILESOVERRIDES = "${TRANSLATED_TARGET_ARCH}:${MACHINEOVERRIDES}:${DISTROOVERRIDES}"
4679 </literallayout>
4680
4681 <note>
4682 Do not hand-edit the <filename>FILESOVERRIDES</filename>
4683 variable.
4684 The values match up with expected overrides and are
4685 used in an expected manner by the build system.
4686 </note>
4687 </para>
4688 </glossdef>
4689 </glossentry>
4690
4691 <glossentry id='var-FILESPATH'><glossterm>FILESPATH</glossterm>
4692 <info>
4693 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."
4694 </info>
4695 <glossdef>
4696 <para role="glossdeffirst">
4697<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4698 The default set of directories the OpenEmbedded build system
4699 uses when searching for patches and files.
4700 During the build process, BitBake searches each directory in
4701 <filename>FILESPATH</filename> in the specified order when
4702 looking for files and patches specified by each
4703 <filename>file://</filename> URI in a recipe.
4704 </para>
4705
4706 <para>
4707 The default value for the <filename>FILESPATH</filename>
4708 variable is defined in the <filename>base.bbclass</filename>
4709 class found in <filename>meta/classes</filename> in the
4710 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>:
4711 <literallayout class='monospaced'>
4712 FILESPATH = "${@base_set_filespath(["${FILE_DIRNAME}/${BP}", \
4713 "${FILE_DIRNAME}/${BPN}", "${FILE_DIRNAME}/files"], d)}"
4714 </literallayout>
4715 <note>
4716 Do not hand-edit the <filename>FILESPATH</filename>
4717 variable.
4718 If you want the build system to look in directories
4719 other than the defaults, extend the
4720 <filename>FILESPATH</filename> variable by using the
4721 <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
4722 variable.
4723 </note>
4724 Be aware that the default <filename>FILESPATH</filename>
4725 directories do not map to directories in custom layers
4726 where append files (<filename>.bbappend</filename>)
4727 are used.
4728 If you want the build system to find patches or files
4729 that reside with your append files, you need to extend
4730 the <filename>FILESPATH</filename> variable by using
4731 the
4732 <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
4733 variable.
4734 </para>
4735 </glossdef>
4736 </glossentry>
4737
4738 <glossentry id='var-FILESYSTEM_PERMS_TABLES'><glossterm>FILESYSTEM_PERMS_TABLES</glossterm>
4739 <info>
4740 FILESYSTEM_PERMS_TABLES[doc] = "Allows you to define your own file permissions settings table as part of your configuration for the packaging process."
4741 </info>
4742 <glossdef>
4743 <para role="glossdeffirst">
4744<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4745 Allows you to define your own file permissions settings table as part of
4746 your configuration for the packaging process.
4747 For example, suppose you need a consistent set of custom permissions for
4748 a set of groups and users across an entire work project.
4749 It is best to do this in the packages themselves but this is not always
4750 possible.
4751 </para>
4752
4753 <para>
4754 By default, the OpenEmbedded build system uses the <filename>fs-perms.txt</filename>, which
4755 is located in the <filename>meta/files</filename> folder in the
4756 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
4757 If you create your own file permissions setting table, you should place it in your
4758 layer or the distro's layer.
4759 </para>
4760
4761 <para>
4762 You define the <filename>FILESYSTEM_PERMS_TABLES</filename> variable in the
4763 <filename>conf/local.conf</filename> file, which is found in the
4764 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>, to
4765 point to your custom <filename>fs-perms.txt</filename>.
4766 You can specify more than a single file permissions setting table.
4767 The paths you specify to these files must be defined within the
4768 <link linkend='var-BBPATH'><filename>BBPATH</filename></link> variable.
4769 </para>
4770
4771 <para>
4772 For guidance on how to create your own file permissions settings table file,
4773 examine the existing <filename>fs-perms.txt</filename>.
4774 </para>
4775 </glossdef>
4776 </glossentry>
4777
4778 <glossentry id='var-FONT_EXTRA_RDEPENDS'><glossterm>FONT_EXTRA_RDEPENDS</glossterm>
4779 <info>
4780 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'."
4781 </info>
4782 <glossdef>
4783 <para role="glossdeffirst">
4784<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4785 When inheriting the
4786 <link linkend='ref-classes-fontcache'><filename>fontcache</filename></link>
4787 class, this variable specifies the runtime dependencies
4788 for font packages.
4789 By default, the <filename>FONT_EXTRA_RDEPENDS</filename>
4790 is set to "fontconfig-utils".
4791 </para>
4792 </glossdef>
4793 </glossentry>
4794
4795 <glossentry id='var-FONT_PACKAGES'><glossterm>FONT_PACKAGES</glossterm>
4796 <info>
4797 FONT_PACKAGES[doc] = "When a recipe inherits the fontcache class, this variable identifies packages containing font files that need to be cached by Fontconfig."
4798 </info>
4799 <glossdef>
4800 <para role="glossdeffirst">
4801<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4802 When inheriting the
4803 <link linkend='ref-classes-fontcache'><filename>fontcache</filename></link>
4804 class, this variable identifies packages containing font
4805 files that need to be cached by Fontconfig.
4806 By default, the <filename>fontcache</filename> class assumes
4807 that fonts are in the recipe's main package
4808 (i.e. <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
4809 Use this variable if fonts you need are in a package
4810 other than that main package.
4811 </para>
4812 </glossdef>
4813 </glossentry>
4814
Patrick Williamsc0f7c042017-02-23 20:41:17 -06004815 <glossentry id='var-FORCE_RO_REMOVE'><glossterm>FORCE_RO_REMOVE</glossterm>
4816 <info>
4817 FORCE_RO_REMOVE[doc] = "Forces the removal of the packages listed in ROOTFS_RO_UNNEEDED during the generation of the root filesystem."
4818 </info>
4819 <glossdef>
4820 <para role="glossdeffirst">
4821<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4822 Forces the removal of the packages listed in
4823 <filename>ROOTFS_RO_UNNEEDED</filename> during the
4824 generation of the root filesystem.
4825 </para>
4826
4827 <para>
4828 Set the variable to "1" to force the removal of these
4829 packages.
4830 </para>
4831 </glossdef>
4832 </glossentry>
4833
Patrick Williamsc124f4f2015-09-15 14:41:29 -05004834 <glossentry id='var-FULL_OPTIMIZATION'><glossterm>FULL_OPTIMIZATION</glossterm>
4835 <info>
4836 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'."
4837 </info>
4838 <glossdef>
4839 <para role="glossdeffirst">
4840<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4841 The options to pass in
4842 <filename><link linkend='var-TARGET_CFLAGS'>TARGET_CFLAGS</link></filename>
4843 and <filename><link linkend='var-CFLAGS'>CFLAGS</link></filename>
4844 when compiling an optimized system.
4845 This variable defaults to
4846 "-O2 -pipe ${DEBUG_FLAGS}".
4847 </para>
4848 </glossdef>
4849 </glossentry>
4850 </glossdiv>
4851
4852 <glossdiv id='var-glossary-g'><title>G</title>
4853
4854 <glossentry id='var-GDB'><glossterm>GDB</glossterm>
4855 <info>
4856 GDB[doc] = "The minimal command and arguments to run the GNU Debugger."
4857 </info>
4858 <glossdef>
4859 <para role="glossdeffirst">
4860<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4861 The minimal command and arguments to run the GNU Debugger.
4862 </para>
4863 </glossdef>
4864 </glossentry>
4865
4866 <glossentry id='var-GITDIR'><glossterm>GITDIR</glossterm>
4867 <info>
4868 GITDIR[doc] = "The directory where Git clones will be stored."
4869 </info>
4870 <glossdef>
4871 <para role="glossdeffirst">
4872<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4873 The directory in which a local copy of a Git repository
4874 is stored when it is cloned.
4875 </para>
4876 </glossdef>
4877 </glossentry>
4878
4879 <glossentry id='var-GLIBC_GENERATE_LOCALES'><glossterm>GLIBC_GENERATE_LOCALES</glossterm>
4880 <info>
4881 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."
4882 </info>
4883 <glossdef>
4884 <para role="glossdeffirst">
4885<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4886 Specifies the list of GLIBC locales to generate should you
4887 not wish generate all LIBC locals, which can be time
4888 consuming.
4889 <note>
4890 If you specifically remove the locale
4891 <filename>en_US.UTF-8</filename>, you must set
4892 <link linkend='var-IMAGE_LINGUAS'><filename>IMAGE_LINGUAS</filename></link>
4893 appropriately.
4894 </note>
4895 </para>
4896
4897 <para>
4898 You can set <filename>GLIBC_GENERATE_LOCALES</filename>
4899 in your <filename>local.conf</filename> file.
4900 By default, all locales are generated.
4901 <literallayout class='monospaced'>
4902 GLIBC_GENERATE_LOCALES = "en_GB.UTF-8 en_US.UTF-8"
4903 </literallayout>
4904 </para>
4905 </glossdef>
4906 </glossentry>
4907
4908 <glossentry id='var-GROUPADD_PARAM'><glossterm>GROUPADD_PARAM</glossterm>
4909 <info>
4910 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."
4911 </info>
4912 <glossdef>
4913 <para role="glossdeffirst">
4914<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4915 When inheriting the
4916 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
4917 class, this variable
4918 specifies for a package what parameters should be passed
4919 to the <filename>groupadd</filename> command
4920 if you wish to add a group to the system when the package
4921 is installed.
4922 </para>
4923
4924 <para>
4925 Here is an example from the <filename>dbus</filename>
4926 recipe:
4927 <literallayout class='monospaced'>
4928 GROUPADD_PARAM_${PN} = "-r netdev"
4929 </literallayout>
4930 For information on the standard Linux shell command
4931 <filename>groupadd</filename>, see
4932 <ulink url='http://linux.die.net/man/8/groupadd'></ulink>.
4933 </para>
4934 </glossdef>
4935 </glossentry>
4936
4937 <glossentry id='var-GROUPMEMS_PARAM'><glossterm>GROUPMEMS_PARAM</glossterm>
4938 <info>
4939 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."
4940 </info>
4941 <glossdef>
4942 <para role="glossdeffirst">
4943<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4944 When inheriting the
4945 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
4946 class, this variable
4947 specifies for a package what parameters should be passed
4948 to the <filename>groupmems</filename> command
4949 if you wish to modify the members of a group when the
4950 package is installed.
4951 </para>
4952
4953 <para>
4954 For information on the standard Linux shell command
4955 <filename>groupmems</filename>, see
4956 <ulink url='http://linux.die.net/man/8/groupmems'></ulink>.
4957 </para>
4958 </glossdef>
4959 </glossentry>
4960
4961 <glossentry id='var-GRUB_GFXSERIAL'><glossterm>GRUB_GFXSERIAL</glossterm>
4962 <info>
4963 GRUB_GFXSERIAL[doc] = "Configures the GNU GRand Unified Bootloader (GRUB) to have graphics and serial in the boot menu."
4964 </info>
4965 <glossdef>
4966 <para role="glossdeffirst">
4967<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4968 Configures the GNU GRand Unified Bootloader (GRUB) to have
4969 graphics and serial in the boot menu.
4970 Set this variable to "1" in your
4971 <filename>local.conf</filename> or distribution
4972 configuration file to enable graphics and serial
4973 in the menu.
4974 </para>
4975
4976 <para>
4977 See the
4978 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
4979 class for more information on how this variable is used.
4980 </para>
4981 </glossdef>
4982 </glossentry>
4983
4984 <glossentry id='var-GRUB_OPTS'><glossterm>GRUB_OPTS</glossterm>
4985 <info>
4986 GRUB_OPTS[doc] = "Additional options to add to the GNU GRand Unified Bootloader (GRUB) configuration."
4987 </info>
4988 <glossdef>
4989 <para role="glossdeffirst">
4990<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
4991 Additional options to add to the GNU GRand Unified
4992 Bootloader (GRUB) configuration.
4993 Use a semi-colon character (<filename>;</filename>) to
4994 separate multiple options.
4995 </para>
4996
4997 <para>
4998 The <filename>GRUB_OPTS</filename> variable is optional.
4999 See the
5000 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
5001 class for more information on how this variable is used.
5002 </para>
5003 </glossdef>
5004 </glossentry>
5005
5006 <glossentry id='var-GRUB_TIMEOUT'><glossterm>GRUB_TIMEOUT</glossterm>
5007 <info>
5008 GRUB_TIMEOUT[doc] = "Specifies the timeout before executing the default LABEL in the GNU GRand Unified Bootloader (GRUB)."
5009 </info>
5010 <glossdef>
5011 <para role="glossdeffirst">
5012<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5013 Specifies the timeout before executing the default
5014 <filename>LABEL</filename> in the GNU GRand Unified
5015 Bootloader (GRUB).
5016 </para>
5017
5018 <para>
5019 The <filename>GRUB_TIMEOUT</filename> variable is optional.
5020 See the
5021 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
5022 class for more information on how this variable is used.
5023 </para>
5024 </glossdef>
5025 </glossentry>
5026
5027 <glossentry id='var-GTKIMMODULES_PACKAGES'><glossterm>GTKIMMODULES_PACKAGES</glossterm>
5028 <info>
5029 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."
5030 </info>
5031 <glossdef>
5032 <para role="glossdeffirst">
5033<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5034 When inheriting the
5035 <link linkend='ref-classes-gtk-immodules-cache'><filename>gtk-immodules-cache</filename></link>
5036 class, this variable specifies the packages that contain the
5037 GTK+ input method modules being installed when the modules
5038 are in packages other than the main package.
5039 </para>
5040 </glossdef>
5041 </glossentry>
5042
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005043 </glossdiv>
5044
5045 <glossdiv id='var-glossary-h'><title>H</title>
5046
5047 <glossentry id='var-HOMEPAGE'><glossterm>HOMEPAGE</glossterm>
5048 <info>
5049 HOMEPAGE[doc] = "Website where more information about the software the recipe is building can be found."
5050 </info>
5051 <glossdef>
5052 <para role="glossdeffirst">
5053<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5054 Website where more information about the software the recipe is building
5055 can be found.
5056 </para>
5057 </glossdef>
5058 </glossentry>
5059
5060 <glossentry id='var-HOST_ARCH'><glossterm>HOST_ARCH</glossterm>
5061 <info>
5062 HOST_ARCH[doc] = "The name of the target architecture. Normally same as the TARGET_ARCH."
5063
5064 </info>
5065 <glossdef>
5066 <para role="glossdeffirst">
5067<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5068 The name of the target architecture, which is normally
5069 the same as
5070 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>.
5071 The OpenEmbedded build system supports many
5072 architectures.
5073 Here is an example list of architectures supported.
5074 This list is by no means complete as the architecture
5075 is configurable:
5076 <literallayout class='monospaced'>
5077 arm
5078 i586
5079 x86_64
5080 powerpc
5081 powerpc64
5082 mips
5083 mipsel
5084 </literallayout>
5085 </para>
5086 </glossdef>
5087 </glossentry>
5088
5089 <glossentry id='var-HOST_CC_ARCH'><glossterm>HOST_CC_ARCH</glossterm>
5090 <info>
5091 HOST_CC_ARCH[doc] = "The name of the host architecture. Normally same as the TARGET_CC_ARCH."
5092 </info>
5093 <glossdef>
5094 <para role="glossdeffirst">
5095<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5096 Specifies architecture-specific compiler flags that are
5097 passed to the C compiler.
5098 </para>
5099
5100 <para>
5101 Default initialization for <filename>HOST_CC_ARCH</filename>
5102 varies depending on what is being built:
5103 <itemizedlist>
5104 <listitem><para>
5105 <link linkend='var-TARGET_CC_ARCH'><filename>TARGET_CC_ARCH</filename></link>
5106 when building for the target
5107 </para></listitem>
5108 <listitem><para>
5109 <filename>BUILD_CC_ARCH</filename>
5110 when building for the build host (i.e.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05005111 <filename>-native</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005112 </para></listitem>
5113 <listitem><para>
5114 <filename>BUILDSDK_CC_ARCH</filename>
5115 when building for an SDK (i.e.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05005116 <filename>nativesdk-</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005117 </para></listitem>
5118 </itemizedlist>
5119 </para>
5120 </glossdef>
5121 </glossentry>
5122
5123 <glossentry id='var-HOST_OS'><glossterm>HOST_OS</glossterm>
5124 <info>
5125 HOST_OS[doc] = "The name of the target operating system. Normally the same as the TARGET_OS."
5126 </info>
5127 <glossdef>
5128 <para role="glossdeffirst">
5129<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5130 Specifies the name of the target operating system, which
5131 is normally the same as the
5132 <link linkend='var-TARGET_OS'><filename>TARGET_OS</filename></link>.
5133 The variable can be set to "linux" for <filename>glibc</filename>-based systems and
Brad Bishop37a0e4d2017-12-04 01:01:44 -05005134 to "linux-musl" for <filename>musl</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005135 For ARM/EABI targets, there are also "linux-gnueabi" and
Brad Bishop37a0e4d2017-12-04 01:01:44 -05005136 "linux-musleabi" values possible.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005137 </para>
5138 </glossdef>
5139 </glossentry>
5140
5141 <glossentry id='var-HOST_PREFIX'><glossterm>HOST_PREFIX</glossterm>
5142 <info>
5143 HOST_PREFIX[doc] = "The prefix for the cross compile toolchain. Normally same as the TARGET_PREFIX."
5144 </info>
5145 <glossdef>
5146 <para role="glossdeffirst">
5147<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5148 Specifies the prefix for the cross-compile toolchain.
5149 <filename>HOST_PREFIX</filename> is normally the same as
5150 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>.
5151 </para>
5152 </glossdef>
5153 </glossentry>
5154
5155 <glossentry id='var-HOST_SYS'><glossterm>HOST_SYS</glossterm>
5156 <info>
5157 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."
5158 </info>
5159 <glossdef>
5160 <para role="glossdeffirst">
5161<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5162 Specifies the system, including the architecture and the
5163 operating system, for which the build is occurring
5164 in the context of the current recipe.
5165 </para>
5166
5167 <para>
5168 The OpenEmbedded build system automatically sets this
5169 variable based on
5170 <link linkend='var-HOST_ARCH'><filename>HOST_ARCH</filename></link>,
5171 <link linkend='var-HOST_VENDOR'><filename>HOST_VENDOR</filename></link>,
5172 and
5173 <link linkend='var-HOST_OS'><filename>HOST_OS</filename></link>
5174 variables.
5175 <note>
5176 You do not need to set the variable yourself.
5177 </note>
5178 </para>
5179
5180 <para>
5181 Consider these two examples:
5182 <itemizedlist>
5183 <listitem><para>Given a native recipe on a 32-bit
5184 x86 machine running Linux, the value is
5185 "i686-linux".
5186 </para></listitem>
5187 <listitem><para>Given a recipe being built for a
5188 little-endian MIPS target running Linux,
5189 the value might be "mipsel-linux".
5190 </para></listitem>
5191 </itemizedlist>
5192 </para>
5193 </glossdef>
5194 </glossentry>
5195
Brad Bishop6e60e8b2018-02-01 10:27:11 -05005196 <glossentry id='var-HOSTTOOLS'><glossterm>HOSTTOOLS</glossterm>
5197 <info>
5198 HOSTTOOLS[doc] = "A space-separated list (filter) of tools on the build host that should be allowed to be called from within build tasks."
5199 </info>
5200 <glossdef>
5201 <para role="glossdeffirst">
5202<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5203 A space-separated list (filter) of tools on the build host
5204 that should be allowed to be called from within build tasks.
5205 Using this filter helps reduce the possibility of host
5206 contamination.
5207 If a tool specified in the value of
5208 <filename>HOSTTOOLS</filename> is not found on the
5209 build host, the OpenEmbedded build system produces
5210 an error and the build is not started.
5211 </para>
5212
5213 <para>
5214 For additional information, see
5215 <link linkend='var-HOSTTOOLS_NONFATAL'><filename>HOSTTOOLS_NONFATAL</filename></link>.
5216 </para>
5217 </glossdef>
5218 </glossentry>
5219
5220 <glossentry id='var-HOSTTOOLS_NONFATAL'><glossterm>HOSTTOOLS_NONFATAL</glossterm>
5221 <info>
5222 HOSTTOOLS_NONFATAL[doc] = "A space-separated list (filter) of tools on the build host that should be allowed to be called from within build tasks."
5223 </info>
5224 <glossdef>
5225 <para role="glossdeffirst">
5226<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5227 A space-separated list (filter) of tools on the build host
5228 that should be allowed to be called from within build tasks.
5229 Using this filter helps reduce the possibility of host
5230 contamination.
5231 Unlike
5232 <link linkend='var-HOSTTOOLS'><filename>HOSTTOOLS</filename></link>,
5233 the OpenEmbedded build system does not produce and error
5234 if a tool specified in the value of
5235 <filename>HOSTTOOLS_NONFATAL</filename> is not found on the
5236 build host.
5237 Thus, you can use <filename>HOSTTOOLS_NONFATAL</filename>
5238 to filter optional host tools.
5239 </para>
5240 </glossdef>
5241 </glossentry>
5242
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005243 <glossentry id='var-HOST_VENDOR'><glossterm>HOST_VENDOR</glossterm>
5244 <info>
5245 HOST_VENDOR[doc] = "The name of the vendor. Normally same as the TARGET_VENDOR."
5246 </info>
5247 <glossdef>
5248 <para role="glossdeffirst">
5249<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5250 Specifies the name of the vendor.
5251 <filename>HOST_VENDOR</filename> is normally the same as
5252 <link linkend='var-TARGET_PREFIX'><filename>TARGET_VENDOR</filename></link>.
5253 </para>
5254 </glossdef>
5255 </glossentry>
5256
5257 </glossdiv>
5258
5259 <glossdiv id='var-glossary-i'><title>I</title>
5260
5261 <glossentry id='var-ICECC_DISABLED'><glossterm>ICECC_DISABLED</glossterm>
5262 <info>
5263 ICECC_DISABLED[doc] = "Disables or enables the icecc (Icecream) function."
5264 </info>
5265 <glossdef>
5266 <para role="glossdeffirst">
5267<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5268 Disables or enables the <filename>icecc</filename>
5269 (Icecream) function.
5270 For more information on this function and best practices
5271 for using this variable, see the
5272 "<link linkend='ref-classes-icecc'><filename>icecc.bbclass</filename></link>"
5273 section.
5274 </para>
5275
5276 <para>
5277 Setting this variable to "1" in your
5278 <filename>local.conf</filename> disables the function:
5279 <literallayout class='monospaced'>
5280 ICECC_DISABLED ??= "1"
5281 </literallayout>
5282 To enable the function, set the variable as follows:
5283 <literallayout class='monospaced'>
5284 ICECC_DISABLED = ""
5285 </literallayout>
5286 </para>
5287 </glossdef>
5288 </glossentry>
5289
5290 <glossentry id='var-ICECC_ENV_EXEC'><glossterm>ICECC_ENV_EXEC</glossterm>
5291 <info>
5292 ICECC_ENV_EXEC[doc] = "Points to the icecc-create-env script that you provide."
5293 </info>
5294 <glossdef>
5295 <para role="glossdeffirst">
5296<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5297 Points to the <filename>icecc-create-env</filename> script
5298 that you provide.
5299 This variable is used by the
5300 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5301 class.
5302 You set this variable in your
5303 <filename>local.conf</filename> file.
5304 </para>
5305
5306 <para>
5307 If you do not point to a script that you provide, the
5308 OpenEmbedded build system uses the default script provided
5309 by the <filename>icecc-create-env.bb</filename> recipe,
5310 which is a modified version and not the one that comes with
5311 <filename>icecc</filename>.
5312 </para>
5313 </glossdef>
5314 </glossentry>
5315
5316 <glossentry id='var-ICECC_PARALLEL_MAKE'><glossterm>ICECC_PARALLEL_MAKE</glossterm>
5317 <info>
5318 ICECC_PARALLEL_MAKE[doc] = "Extra options passed to the make command during the do_compile task that specify parallel compilation."
5319 </info>
5320 <glossdef>
5321 <para role="glossdeffirst">
5322<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5323 Extra options passed to the <filename>make</filename>
5324 command during the
5325 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>
5326 task that specify parallel compilation.
5327 This variable usually takes the form of
5328 "-j <replaceable>x</replaceable>", where
5329 <replaceable>x</replaceable> represents the maximum
5330 number of parallel threads <filename>make</filename> can
5331 run.
5332 <note>
5333 The options passed affect builds on all enabled
5334 machines on the network, which are machines running the
5335 <filename>iceccd</filename> daemon.
5336 </note>
5337 </para>
5338
5339 <para>
5340 If your enabled machines support multiple cores,
5341 coming up with the maximum number of parallel threads
5342 that gives you the best performance could take some
5343 experimentation since machine speed, network lag,
5344 available memory, and existing machine loads can all
5345 affect build time.
5346 Consequently, unlike the
5347 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
5348 variable, there is no rule-of-thumb for setting
5349 <filename>ICECC_PARALLEL_MAKE</filename> to achieve
5350 optimal performance.
5351 </para>
5352
5353 <para>
5354 If you do not set <filename>ICECC_PARALLEL_MAKE</filename>,
5355 the build system does not use it (i.e. the system does
5356 not detect and assign the number of cores as is done with
5357 <filename>PARALLEL_MAKE</filename>).
5358 </para>
5359 </glossdef>
5360 </glossentry>
5361
5362 <glossentry id='var-ICECC_PATH'><glossterm>ICECC_PATH</glossterm>
5363 <info>
5364 ICECC_PATH[doc] = "The location of the icecc binary."
5365 </info>
5366 <glossdef>
5367 <para role="glossdeffirst">
5368<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5369 The location of the <filename>icecc</filename> binary.
5370 You can set this variable in your
5371 <filename>local.conf</filename> file.
5372 If your <filename>local.conf</filename> file does not define
5373 this variable, the
5374 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5375 class attempts to define it by locating
5376 <filename>icecc</filename> using <filename>which</filename>.
5377 </para>
5378 </glossdef>
5379 </glossentry>
5380
5381 <glossentry id='var-ICECC_USER_CLASS_BL'><glossterm>ICECC_USER_CLASS_BL</glossterm>
5382 <info>
5383 ICECC_USER_CLASS_BL[doc] = "Identifies user classes that you do not want the Icecream distributed compile support to consider."
5384 </info>
5385 <glossdef>
5386 <para role="glossdeffirst">
5387<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5388 Identifies user classes that you do not want the
5389 Icecream distributed compile support to consider.
5390 This variable is used by the
5391 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5392 class.
5393 You set this variable in your
5394 <filename>local.conf</filename> file.
5395 </para>
5396
5397 <para>
5398 When you list classes using this variable, you are
5399 "blacklisting" them from distributed compilation across
5400 remote hosts.
5401 Any classes you list will be distributed and compiled
5402 locally.
5403 </para>
5404 </glossdef>
5405 </glossentry>
5406
5407 <glossentry id='var-ICECC_USER_PACKAGE_BL'><glossterm>ICECC_USER_PACKAGE_BL</glossterm>
5408 <info>
5409 ICECC_USER_PACKAGE_BL[doc] = "Identifies user recipes that you do not want the Icecream distributed compile support to consider."
5410 </info>
5411 <glossdef>
5412 <para role="glossdeffirst">
5413<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5414 Identifies user recipes that you do not want the
5415 Icecream distributed compile support to consider.
5416 This variable is used by the
5417 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5418 class.
5419 You set this variable in your
5420 <filename>local.conf</filename> file.
5421 </para>
5422
5423 <para>
5424 When you list packages using this variable, you are
5425 "blacklisting" them from distributed compilation across
5426 remote hosts.
5427 Any packages you list will be distributed and compiled
5428 locally.
5429 </para>
5430 </glossdef>
5431 </glossentry>
5432
5433 <glossentry id='var-ICECC_USER_PACKAGE_WL'><glossterm>ICECC_USER_PACKAGE_WL</glossterm>
5434 <info>
5435 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."
5436 </info>
5437 <glossdef>
5438 <para role="glossdeffirst">
5439<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5440 Identifies user recipes that use an empty
5441 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>
5442 variable that you want to force remote distributed
5443 compilation on using the Icecream distributed compile
5444 support.
5445 This variable is used by the
5446 <link linkend='ref-classes-icecc'><filename>icecc</filename></link>
5447 class.
5448 You set this variable in your
5449 <filename>local.conf</filename> file.
5450 </para>
5451 </glossdef>
5452 </glossentry>
5453
5454 <glossentry id='var-IMAGE_BASENAME'><glossterm>IMAGE_BASENAME</glossterm>
5455 <info>
5456 IMAGE_BASENAME[doc] = "The base name of image output files."
5457 </info>
5458 <glossdef>
5459 <para role="glossdeffirst">
5460<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5461 The base name of image output files.
5462 This variable defaults to the recipe name
5463 (<filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
5464 </para>
5465 </glossdef>
5466 </glossentry>
5467
5468 <glossentry id='var-IMAGE_BOOT_FILES'><glossterm>IMAGE_BOOT_FILES</glossterm>
5469 <info>
5470 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)."
5471 </info>
5472 <glossdef>
5473 <para role="glossdeffirst">
5474<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5475 A space-separated list of files installed into the
5476 boot partition when preparing an image using the
5477 <filename>wic</filename> tool with the
5478 <filename>bootimg-partition</filename> source
5479 plugin.
5480 By default, the files are installed under
5481 the same name as the source files.
5482 To change the installed name, separate it from the
5483 original name with a semi-colon (;).
5484 Source files need to be located in
5485 <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>.
5486 Here are two examples:
5487
5488 <literallayout class="monospaced">
5489 IMAGE_BOOT_FILES = "u-boot.img uImage;kernel"
5490 IMAGE_BOOT_FILES = "u-boot.${UBOOT_SUFFIX} ${KERNEL_IMAGETYPE}"
5491 </literallayout>
5492 </para>
5493
5494 <para>
5495 Alternatively, source files can be picked up using
5496 a glob pattern.
5497 In this case, the destination file
5498 will have the same name as the base name of the source file
5499 path.
5500 To install files into a directory within the
5501 target location, pass its name after a semi-colon
5502 (;).
5503 Here are two examples:
5504 <literallayout class="monospaced">
5505 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*"
5506 IMAGE_BOOT_FILES = "bcm2835-bootfiles/*;boot/"
5507 </literallayout>
5508 The first example installs all files from
5509 <filename>${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles</filename>
5510 into the root of the target partition.
5511 The second example installs the same files into a
5512 <filename>boot</filename> directory within the
5513 target partition.
5514 </para>
5515 </glossdef>
5516 </glossentry>
5517
5518 <glossentry id='var-IMAGE_CLASSES'><glossterm>IMAGE_CLASSES</glossterm>
5519 <info>
5520 IMAGE_CLASSES[doc] = "A list of classes that all images should inherit."
5521 </info>
5522 <glossdef>
5523 <para role="glossdeffirst">
5524<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5525 A list of classes that all images should inherit.
5526 You typically use this variable to specify the list of
5527 classes that register the different types of images
5528 the OpenEmbedded build system creates.
5529 </para>
5530
5531 <para>
5532 The default value for <filename>IMAGE_CLASSES</filename> is
5533 <filename>image_types</filename>.
5534 You can set this variable in your
5535 <filename>local.conf</filename> or in a distribution
5536 configuration file.
5537 </para>
5538
5539 <para>
5540 For more information, see
5541 <filename>meta/classes/image_types.bbclass</filename> in the
5542 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
5543 </para>
5544 </glossdef>
5545 </glossentry>
5546
5547 <glossentry id='var-IMAGE_CMD'><glossterm>IMAGE_CMD</glossterm>
5548 <info>
5549 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)."
5550 </info>
5551 <glossdef>
5552 <para role="glossdeffirst">
5553<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5554 Specifies the command to create the image file for a
5555 specific image type, which corresponds to the value set
5556 set in
5557 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>,
5558 (e.g. <filename>ext3</filename>,
5559 <filename>btrfs</filename>, and so forth).
5560 When setting this variable, you should use
5561 an override for the associated type.
5562 Here is an example:
5563 <literallayout class='monospaced'>
5564 IMAGE_CMD_jffs2 = "mkfs.jffs2 --root=${IMAGE_ROOTFS} \
5565 --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
5566 ${EXTRA_IMAGECMD}"
5567 </literallayout>
5568 </para>
5569
5570 <para>
5571 You typically do not need to set this variable unless
5572 you are adding support for a new image type.
5573 For more examples on how to set this variable, see the
5574 <link linkend='ref-classes-image_types'><filename>image_types</filename></link>
5575 class file, which is
5576 <filename>meta/classes/image_types.bbclass</filename>.
5577 </para>
5578 </glossdef>
5579 </glossentry>
5580
5581 <glossentry id='var-IMAGE_DEVICE_TABLES'><glossterm>IMAGE_DEVICE_TABLES</glossterm>
5582 <info>
5583 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."
5584 </info>
5585 <glossdef>
5586 <para role="glossdeffirst">
5587<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5588 Specifies one or more files that contain custom device
5589 tables that are passed to the
5590 <filename>makedevs</filename> command as part of creating
5591 an image.
5592 These files list basic device nodes that should be
5593 created under <filename>/dev</filename> within the image.
5594 If <filename>IMAGE_DEVICE_TABLES</filename> is not set,
5595 <filename>files/device_table-minimal.txt</filename> is
5596 used, which is located by
5597 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>.
5598 For details on how you should write device table files,
5599 see <filename>meta/files/device_table-minimal.txt</filename>
5600 as an example.
5601 </para>
5602 </glossdef>
5603 </glossentry>
5604
5605 <glossentry id='var-IMAGE_FEATURES'><glossterm>IMAGE_FEATURES</glossterm>
5606 <info>
5607 IMAGE_FEATURES[doc] = "The primary list of features to include in an image. Configure this variable in an image recipe."
5608 </info>
5609 <glossdef>
5610 <para role="glossdeffirst">
5611<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5612 The primary list of features to include in an image.
5613 Typically, you configure this variable in an image recipe.
5614 Although you can use this variable from your
5615 <filename>local.conf</filename> file, which is found in the
5616 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
5617 best practices dictate that you do not.
5618 <note>
5619 To enable extra features from outside the image recipe,
5620 use the
5621 <filename><link linkend='var-EXTRA_IMAGE_FEATURES'>EXTRA_IMAGE_FEATURES</link></filename> variable.
5622 </note>
5623 </para>
5624
5625 <para>
5626 For a list of image features that ships with the Yocto
5627 Project, see the
5628 "<link linkend="ref-features-image">Image Features</link>"
5629 section.
5630 </para>
5631
5632 <para>
5633 For an example that shows how to customize your image by
5634 using this variable, see the
5635 "<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>"
5636 section in the Yocto Project Development Manual.
5637 </para>
5638 </glossdef>
5639 </glossentry>
5640
5641 <glossentry id='var-IMAGE_FSTYPES'><glossterm>IMAGE_FSTYPES</glossterm>
5642 <info>
5643 IMAGE_FSTYPES[doc] = "Formats of root filesystem images that you want to have created."
5644 </info>
5645 <glossdef>
5646 <para role="glossdeffirst">
5647<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5648 Specifies the formats the OpenEmbedded build system uses
5649 during the build when creating the root filesystem.
5650 For example, setting <filename>IMAGE_FSTYPES</filename>
5651 as follows causes the build system to create root
5652 filesystems using two formats: <filename>.ext3</filename>
5653 and <filename>.tar.bz2</filename>:
5654 <literallayout class='monospaced'>
5655 IMAGE_FSTYPES = "ext3 tar.bz2"
5656 </literallayout>
5657 </para>
5658
5659 <para>
5660 For the complete list of supported image formats from which
5661 you can choose, see
5662 <link linkend='var-IMAGE_TYPES'><filename>IMAGE_TYPES</filename></link>.
5663 </para>
5664
5665 <note>
5666 If you add "live" to <filename>IMAGE_FSTYPES</filename>
5667 inside an image recipe, be sure that you do so prior to the
5668 "inherit image" line of the recipe or the live image will
5669 not build.
5670 </note>
5671
5672 <note>
5673 Due to the way this variable is processed, it is not
5674 possible to update its contents using
5675 <filename>_append</filename> or
5676 <filename>_prepend</filename>. To add one or more
5677 additional options to this variable the
5678 <filename>+=</filename> operator must be used.
5679 </note>
5680 </glossdef>
5681 </glossentry>
5682
5683 <glossentry id='var-IMAGE_INSTALL'><glossterm>IMAGE_INSTALL</glossterm>
5684 <info>
5685 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."
5686 </info>
5687 <glossdef>
5688 <para role="glossdeffirst">
5689<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5690 Specifies the packages to install into an image.
5691 The <filename>IMAGE_INSTALL</filename> variable is a
5692 mechanism for an image recipe and you should use it
5693 with care to avoid ordering issues.
5694 <note>
5695 When working with an
5696 <link linkend='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename></link>
5697 image, do not use the <filename>IMAGE_INSTALL</filename>
5698 variable to specify packages for installation.
5699 Instead, use the
5700 <link linkend='var-PACKAGE_INSTALL'><filename>PACKAGE_INSTALL</filename></link>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05005701 variable, which allows the initial RAM filesystem
5702 (initramfs) recipe to use a fixed set of packages and
5703 not be affected by <filename>IMAGE_INSTALL</filename>.
5704 For information on creating an initramfs, see the
5705 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
5706 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005707 </note>
5708 </para>
5709
5710 <para>
5711 Image recipes set <filename>IMAGE_INSTALL</filename>
5712 to specify the packages to install into an image through
5713 <filename>image.bbclass</filename>.
5714 Additionally, "helper" classes exist, such as
5715 <filename>core-image.bbclass</filename>, that can take
5716 <filename><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></filename>
5717 lists and turn these into auto-generated entries in
5718 <filename>IMAGE_INSTALL</filename> in addition to its
5719 default contents.
5720 </para>
5721
5722 <para>
5723 Using <filename>IMAGE_INSTALL</filename> with the
5724 <filename>+=</filename> operator from the
5725 <filename>/conf/local.conf</filename> file or from within
5726 an image recipe is not recommended as it can cause ordering
5727 issues.
5728 Since <filename>core-image.bbclass</filename> sets
5729 <filename>IMAGE_INSTALL</filename> to a default value using
5730 the <filename>?=</filename> operator, using a
5731 <filename>+=</filename> operation against
5732 <filename>IMAGE_INSTALL</filename> will result in
5733 unexpected behavior when used in
5734 <filename>conf/local.conf</filename>.
5735 Furthermore, the same operation from within an image
5736 recipe may or may not succeed depending on the specific
5737 situation.
5738 In both these cases, the behavior is contrary to how most
5739 users expect the <filename>+=</filename> operator to work.
5740 </para>
5741
5742 <para>
5743 When you use this variable, it is best to use it as follows:
5744 <literallayout class='monospaced'>
5745 IMAGE_INSTALL_append = " <replaceable>package-name</replaceable>"
5746 </literallayout>
5747 Be sure to include the space between the quotation character
5748 and the start of the package name or names.
5749 </para>
5750 </glossdef>
5751 </glossentry>
5752
5753 <glossentry id='var-IMAGE_LINGUAS'><glossterm>IMAGE_LINGUAS</glossterm>
5754 <info>
5755 IMAGE_LINGUAS[doc] = "Specifies the list of locales to install into the image during the root filesystem construction process."
5756 </info>
5757 <glossdef>
5758 <para role="glossdeffirst">
5759<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5760 Specifies the list of locales to install into the image
5761 during the root filesystem construction process.
5762 The OpenEmbedded build system automatically splits locale
5763 files, which are used for localization, into separate
5764 packages.
5765 Setting the <filename>IMAGE_LINGUAS</filename> variable
5766 ensures that any locale packages that correspond to packages
5767 already selected for installation into the image are also
5768 installed.
5769 Here is an example:
5770 <literallayout class='monospaced'>
5771 IMAGE_LINGUAS = "pt-br de-de"
5772 </literallayout>
5773 </para>
5774
5775 <para>
5776 In this example, the build system ensures any Brazilian
5777 Portuguese and German locale files that correspond to
5778 packages in the image are installed (i.e.
5779 <filename>*-locale-pt-br</filename>
5780 and <filename>*-locale-de-de</filename> as well as
5781 <filename>*-locale-pt</filename>
5782 and <filename>*-locale-de</filename>, since some software
5783 packages only provide locale files by language and not by
5784 country-specific language).
5785 </para>
5786
5787 <para>
5788 See the
5789 <link linkend='var-GLIBC_GENERATE_LOCALES'><filename>GLIBC_GENERATE_LOCALES</filename></link>
5790 variable for information on generating GLIBC locales.
5791 </para>
5792 </glossdef>
5793 </glossentry>
5794
5795 <glossentry id='var-IMAGE_MANIFEST'><glossterm>IMAGE_MANIFEST</glossterm>
5796 <info>
5797 IMAGE_MANIFEST[doc] = "The manifest file for the image. This file lists all the installed packages that make up the image."
5798 </info>
5799 <glossdef>
5800 <para role="glossdeffirst">
5801<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5802 The manifest file for the image.
5803 This file lists all the installed packages that make up
5804 the image.
5805 The file contains package information on a line-per-package
5806 basis as follows:
5807 <literallayout class='monospaced'>
5808 <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
5809 </literallayout>
5810 </para>
5811
5812 <para>
5813 The
5814 <link linkend='ref-classes-image'><filename>image</filename></link>
5815 class defines the manifest file as follows:
5816 <literallayout class='monospaced'>
5817 IMAGE_MANIFEST = "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.manifest"
5818 </literallayout>
5819 The location is derived using the
5820 <link linkend='var-DEPLOY_DIR_IMAGE'><filename>DEPLOY_DIR_IMAGE</filename></link>
5821 and
5822 <link linkend='var-IMAGE_NAME'><filename>IMAGE_NAME</filename></link>
5823 variables.
5824 You can find information on how the image
5825 is created in the
5826 "<link linkend='image-generation-dev-environment'>Image Generation</link>"
5827 section.
5828 </para>
5829 </glossdef>
5830 </glossentry>
5831
5832 <glossentry id='var-IMAGE_NAME'><glossterm>IMAGE_NAME</glossterm>
5833 <info>
5834 IMAGE_NAME[doc] = "The name of the output image files minus the extension."
5835 </info>
5836 <glossdef>
5837 <para role="glossdeffirst">
5838<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5839 The name of the output image files minus the extension.
5840 This variable is derived using the
5841 <link linkend='var-IMAGE_BASENAME'><filename>IMAGE_BASENAME</filename></link>,
5842 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
5843 and
5844 <link linkend='var-DATETIME'><filename>DATETIME</filename></link>
5845 variables:
5846 <literallayout class='monospaced'>
5847 IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DATETIME}"
5848 </literallayout>
5849 </para>
5850 </glossdef>
5851 </glossentry>
5852
5853 <glossentry id='var-IMAGE_OVERHEAD_FACTOR'><glossterm>IMAGE_OVERHEAD_FACTOR</glossterm>
5854 <info>
5855 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."
5856 </info>
5857 <glossdef>
5858 <para role="glossdeffirst">
5859<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5860 Defines a multiplier that the build system applies to the initial image
5861 size for cases when the multiplier times the returned disk usage value
5862 for the image is greater than the sum of
5863 <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>
5864 and
5865 <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>.
5866 The result of the multiplier applied to the initial image size creates
5867 free disk space in the image as overhead.
5868 By default, the build process uses a multiplier of 1.3 for this variable.
5869 This default value results in 30% free disk space added to the image when this
5870 method is used to determine the final generated image size.
5871 You should be aware that post install scripts and the package management
5872 system uses disk space inside this overhead area.
5873 Consequently, the multiplier does not produce an image with
5874 all the theoretical free disk space.
5875 See <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>
5876 for information on how the build system determines the overall image size.
5877 </para>
5878
5879 <para>
5880 The default 30% free disk space typically gives the image enough room to boot
5881 and allows for basic post installs while still leaving a small amount of
5882 free disk space.
5883 If 30% free space is inadequate, you can increase the default value.
5884 For example, the following setting gives you 50% free space added to the image:
5885 <literallayout class='monospaced'>
5886 IMAGE_OVERHEAD_FACTOR = "1.5"
5887 </literallayout>
5888 </para>
5889
5890 <para>
5891 Alternatively, you can ensure a specific amount of free disk space is added
5892 to the image by using the
5893 <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>
5894 variable.
5895 </para>
5896 </glossdef>
5897 </glossentry>
5898
5899 <glossentry id='var-IMAGE_PKGTYPE'><glossterm>IMAGE_PKGTYPE</glossterm>
5900 <info>
5901 IMAGE_PKGTYPE[doc] = "Defines the package type (DEB, RPM, IPK, or TAR) used by the OpenEmbedded build system."
5902 </info>
5903 <glossdef>
5904 <para role="glossdeffirst">
5905<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5906 Defines the package type (DEB, RPM, IPK, or TAR) used
5907 by the OpenEmbedded build system.
5908 The variable is defined appropriately by the
5909 <link linkend='ref-classes-package_deb'><filename>package_deb</filename></link>,
5910 <link linkend='ref-classes-package_rpm'><filename>package_rpm</filename></link>,
5911 <link linkend='ref-classes-package_ipk'><filename>package_ipk</filename></link>,
5912 or
5913 <link linkend='ref-classes-package_tar'><filename>package_tar</filename></link>
5914 class.
5915 <note><title>Warning</title>
5916 The <filename>package_tar</filename> class is broken
5917 and is not supported.
5918 It is recommended that you do not use it.
5919 </note>
5920 </para>
5921
5922 <para>
5923 The
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05005924 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_*</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005925 and
5926 <link linkend='ref-classes-image'><filename>image</filename></link>
5927 classes use the <filename>IMAGE_PKGTYPE</filename> for
5928 packaging up images and SDKs.
5929 </para>
5930
5931 <para>
5932 You should not set the <filename>IMAGE_PKGTYPE</filename>
5933 manually.
5934 Rather, the variable is set indirectly through the
5935 appropriate
5936 <link linkend='ref-classes-package'><filename>package_*</filename></link>
5937 class using the
5938 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>
5939 variable.
5940 The OpenEmbedded build system uses the first package type
5941 (e.g. DEB, RPM, or IPK) that appears with the variable
5942 <note>
5943 Files using the <filename>.tar</filename> format are
5944 never used as a substitute packaging format for DEB,
5945 RPM, and IPK formatted files for your image or SDK.
5946 </note>
5947 </para>
5948 </glossdef>
5949 </glossentry>
5950
5951 <glossentry id='var-IMAGE_POSTPROCESS_COMMAND'><glossterm>IMAGE_POSTPROCESS_COMMAND</glossterm>
5952 <info>
5953 IMAGE_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created the final image output files."
5954 </info>
5955 <glossdef>
5956 <para role="glossdeffirst">
5957<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5958 Specifies a list of functions to call once the
5959 OpenEmbedded build system has created the final image
5960 output files.
5961 You can specify functions separated by semicolons:
5962 <literallayout class='monospaced'>
5963 IMAGE_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
5964 </literallayout>
5965 </para>
5966
5967 <para>
5968 If you need to pass the root filesystem path to a command
5969 within the function, you can use
5970 <filename>${IMAGE_ROOTFS}</filename>, which points to
5971 the directory that becomes the root filesystem image.
Patrick Williamsf1e5d692016-03-30 15:21:19 -05005972 See the
5973 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
5974 variable for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05005975 </para>
5976 </glossdef>
5977 </glossentry>
5978
5979 <glossentry id='var-IMAGE_PREPROCESS_COMMAND'><glossterm>IMAGE_PREPROCESS_COMMAND</glossterm>
5980 <info>
5981 IMAGE_PREPROCESS_COMMAND[doc] = "Specifies a list of functions to call before the OpenEmbedded build system has created the final image output files."
5982 </info>
5983 <glossdef>
5984 <para role="glossdeffirst">
5985<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
5986 Specifies a list of functions to call before the
5987 OpenEmbedded build system has created the final image
5988 output files.
5989 You can specify functions separated by semicolons:
5990 <literallayout class='monospaced'>
5991 IMAGE_PREPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
5992 </literallayout>
5993 </para>
5994
5995 <para>
5996 If you need to pass the root filesystem path to a command
5997 within the function, you can use
5998 <filename>${IMAGE_ROOTFS}</filename>, which points to
5999 the directory that becomes the root filesystem image.
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006000 See the
6001 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
6002 variable for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006003 </para>
6004 </glossdef>
6005 </glossentry>
6006
6007 <glossentry id='var-IMAGE_ROOTFS'><glossterm>IMAGE_ROOTFS</glossterm>
6008 <info>
6009 IMAGE_ROOTFS[doc] = "The location of the root filesystem while it is under construction (i.e. during do_rootfs)."
6010 </info>
6011 <glossdef>
6012 <para role="glossdeffirst">
6013<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6014 The location of the root filesystem while it is under
6015 construction (i.e. during the
6016 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
6017 task).
6018 This variable is not configurable.
6019 Do not change it.
6020 </para>
6021 </glossdef>
6022 </glossentry>
6023
6024 <glossentry id='var-IMAGE_ROOTFS_ALIGNMENT'><glossterm>IMAGE_ROOTFS_ALIGNMENT</glossterm>
6025 <info>
6026 IMAGE_ROOTFS_ALIGNMENT[doc] = "Specifies the alignment for the output image file in Kbytes."
6027 </info>
6028 <glossdef>
6029 <para role="glossdeffirst">
6030<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6031 Specifies the alignment for the output image file in
6032 Kbytes.
6033 If the size of the image is not a multiple of
6034 this value, then the size is rounded up to the nearest
6035 multiple of the value.
6036 The default value is "1".
6037 See
6038 <link linkend='var-IMAGE_ROOTFS_SIZE'><filename>IMAGE_ROOTFS_SIZE</filename></link>
6039 for additional information.
6040 </para>
6041 </glossdef>
6042 </glossentry>
6043
6044 <glossentry id='var-IMAGE_ROOTFS_EXTRA_SPACE'><glossterm>IMAGE_ROOTFS_EXTRA_SPACE</glossterm>
6045 <info>
6046 IMAGE_ROOTFS_EXTRA_SPACE[doc] = "Defines additional free disk space created in the image in Kbytes. By default, this variable is set to '0'."
6047 </info>
6048 <glossdef>
6049 <para role="glossdeffirst">
6050<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6051 Defines additional free disk space created in the image in Kbytes.
6052 By default, this variable is set to "0".
6053 This free disk space is added to the image after the build system determines
6054 the image size as described in
6055 <filename><link linkend='var-IMAGE_ROOTFS_SIZE'>IMAGE_ROOTFS_SIZE</link></filename>.
6056 </para>
6057
6058 <para>
6059 This variable is particularly useful when you want to ensure that a
6060 specific amount of free disk space is available on a device after an image
6061 is installed and running.
6062 For example, to be sure 5 Gbytes of free disk space is available, set the
6063 variable as follows:
6064 <literallayout class='monospaced'>
6065 IMAGE_ROOTFS_EXTRA_SPACE = "5242880"
6066 </literallayout>
6067 </para>
6068
6069 <para>
6070 For example, the Yocto Project Build Appliance specifically requests 40 Gbytes
6071 of extra space with the line:
6072 <literallayout class='monospaced'>
6073 IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
6074 </literallayout>
6075 </para>
6076 </glossdef>
6077 </glossentry>
6078
6079 <glossentry id='var-IMAGE_ROOTFS_SIZE'><glossterm>IMAGE_ROOTFS_SIZE</glossterm>
6080 <info>
6081 IMAGE_ROOTFS_SIZE[doc] = "Defines the size in Kbytes for the generated image."
6082 </info>
6083 <glossdef>
6084 <para role="glossdeffirst">
6085<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6086 Defines the size in Kbytes for the generated image.
6087 The OpenEmbedded build system determines the final size for the generated
6088 image using an algorithm that takes into account the initial disk space used
6089 for the generated image, a requested size for the image, and requested
6090 additional free disk space to be added to the image.
6091 Programatically, the build system determines the final size of the
6092 generated image as follows:
6093 <literallayout class='monospaced'>
6094 if (image-du * overhead) &lt; rootfs-size:
6095 internal-rootfs-size = rootfs-size + xspace
6096 else:
6097 internal-rootfs-size = (image-du * overhead) + xspace
6098
6099 where:
6100
6101 image-du = Returned value of the du command on
6102 the image.
6103
6104 overhead = IMAGE_OVERHEAD_FACTOR
6105
6106 rootfs-size = IMAGE_ROOTFS_SIZE
6107
6108 internal-rootfs-size = Initial root filesystem
6109 size before any modifications.
6110
6111 xspace = IMAGE_ROOTFS_EXTRA_SPACE
6112 </literallayout>
6113 </para>
6114
6115 <para>
6116 See the <link linkend='var-IMAGE_OVERHEAD_FACTOR'><filename>IMAGE_OVERHEAD_FACTOR</filename></link>
6117 and <link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'><filename>IMAGE_ROOTFS_EXTRA_SPACE</filename></link>
6118 variables for related information.
6119<!-- In the above example, <filename>overhead</filename> is defined by the
6120 <filename><link linkend='var-IMAGE_OVERHEAD_FACTOR'>IMAGE_OVERHEAD_FACTOR</link></filename>
6121 variable, <filename>xspace</filename> is defined by the
6122 <filename><link linkend='var-IMAGE_ROOTFS_EXTRA_SPACE'>IMAGE_ROOTFS_EXTRA_SPACE</link></filename>
6123 variable, and <filename>du</filename> is the results of the disk usage command
6124 on the initially generated image. -->
6125 </para>
6126 </glossdef>
6127 </glossentry>
6128
6129 <glossentry id='var-IMAGE_TYPEDEP'><glossterm>IMAGE_TYPEDEP</glossterm>
6130 <info>
6131 IMAGE_TYPEDEP[doc] = "Specifies a dependency from one image type on another."
6132 </info>
6133 <glossdef>
6134 <para role="glossdeffirst">
6135<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6136 Specifies a dependency from one image type on another.
6137 Here is an example from the
6138 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
6139 class:
6140 <literallayout class='monospaced'>
6141 IMAGE_TYPEDEP_live = "ext3"
6142 </literallayout>
6143 </para>
6144
6145 <para>
6146 In the previous example, the variable ensures that when
6147 "live" is listed with the
6148 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6149 variable, the OpenEmbedded build system produces an
6150 <filename>ext3</filename> image first since one of the
6151 components of the live
6152 image is an <filename>ext3</filename>
6153 formatted partition containing the root
6154 filesystem.
6155 </para>
6156 </glossdef>
6157 </glossentry>
6158
6159 <glossentry id='var-IMAGE_TYPES'><glossterm>IMAGE_TYPES</glossterm>
6160 <info>
6161 IMAGE_TYPES[doc] = "Specifies the complete list of supported image types by default."
6162 </info>
6163 <glossdef>
6164 <para role="glossdeffirst">
6165<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6166 Specifies the complete list of supported image types
6167 by default:
6168 <literallayout class='monospaced'>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006169 btrfs
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006170 cpio
6171 cpio.gz
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006172 cpio.lz4
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006173 cpio.lzma
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006174 cpio.xz
6175 cramfs
6176 elf
6177 ext2
6178 ext2.bz2
6179 ext2.gz
6180 ext2.lzma
6181 ext3
6182 ext3.gz
6183 ext4
6184 ext4.gz
6185 hdddirect
6186 hddimg
6187 iso
6188 jffs2
6189 jffs2.sum
6190 multiubi
6191 qcow2
6192 squashfs
6193 squashfs-lzo
6194 squashfs-xz
6195 tar
6196 tar.bz2
6197 tar.gz
6198 tar.lz4
6199 tar.xz
6200 ubi
6201 ubifs
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006202 vdi
6203 vmdk
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006204 wic
6205 wic.bz2
6206 wic.gz
6207 wic.lzma
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006208 </literallayout>
6209 </para>
6210
6211 <para>
6212 For more information about these types of images, see
6213 <filename>meta/classes/image_types*.bbclass</filename>
6214 in the
6215 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
6216 </para>
6217 </glossdef>
6218 </glossentry>
6219
6220 <glossentry id='var-INC_PR'><glossterm>INC_PR</glossterm>
6221 <info>
6222 INC_PR[doc] = "Helps define the recipe revision for recipes that share a common include file."
6223 </info>
6224 <glossdef>
6225 <para role="glossdeffirst">
6226<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6227 Helps define the recipe revision for recipes that share
6228 a common <filename>include</filename> file.
6229 You can think of this variable as part of the recipe revision
6230 as set from within an include file.
6231 </para>
6232
6233 <para>
6234 Suppose, for example, you have a set of recipes that
6235 are used across several projects.
6236 And, within each of those recipes the revision
6237 (its <link linkend='var-PR'><filename>PR</filename></link>
6238 value) is set accordingly.
6239 In this case, when the revision of those recipes changes,
6240 the burden is on you to find all those recipes and
6241 be sure that they get changed to reflect the updated
6242 version of the recipe.
6243 In this scenario, it can get complicated when recipes
6244 that are used in many places and provide common functionality
6245 are upgraded to a new revision.
6246 </para>
6247
6248 <para>
6249 A more efficient way of dealing with this situation is
6250 to set the <filename>INC_PR</filename> variable inside
6251 the <filename>include</filename> files that the recipes
6252 share and then expand the <filename>INC_PR</filename>
6253 variable within the recipes to help
6254 define the recipe revision.
6255 </para>
6256
6257 <para>
6258 The following provides an example that shows how to use
6259 the <filename>INC_PR</filename> variable
6260 given a common <filename>include</filename> file that
6261 defines the variable.
6262 Once the variable is defined in the
6263 <filename>include</filename> file, you can use the
6264 variable to set the <filename>PR</filename> values in
6265 each recipe.
6266 You will notice that when you set a recipe's
6267 <filename>PR</filename> you can provide more granular
6268 revisioning by appending values to the
6269 <filename>INC_PR</filename> variable:
6270 <literallayout class='monospaced'>
6271recipes-graphics/xorg-font/xorg-font-common.inc:INC_PR = "r2"
6272recipes-graphics/xorg-font/encodings_1.0.4.bb:PR = "${INC_PR}.1"
6273recipes-graphics/xorg-font/font-util_1.3.0.bb:PR = "${INC_PR}.0"
6274recipes-graphics/xorg-font/font-alias_1.0.3.bb:PR = "${INC_PR}.3"
6275 </literallayout>
6276 The first line of the example establishes the baseline
6277 revision to be used for all recipes that use the
6278 <filename>include</filename> file.
6279 The remaining lines in the example are from individual
6280 recipes and show how the <filename>PR</filename> value
6281 is set.
6282 </para>
6283 </glossdef>
6284 </glossentry>
6285
6286 <glossentry id='var-INCOMPATIBLE_LICENSE'><glossterm>INCOMPATIBLE_LICENSE</glossterm>
6287 <info>
6288 INCOMPATIBLE_LICENSE[doc] = "Specifies a space-separated list of license names (as they would appear in LICENSE) that should be excluded from the build."
6289 </info>
6290 <glossdef>
6291 <para role="glossdeffirst">
6292<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6293 Specifies a space-separated list of license names
6294 (as they would appear in
6295 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>)
6296 that should be excluded from the build.
6297 Recipes that provide no alternatives to listed incompatible
6298 licenses are not built.
6299 Packages that are individually licensed with the specified
6300 incompatible licenses will be deleted.
6301 </para>
6302
6303 <note>
6304 This functionality is only regularly tested using
6305 the following setting:
6306 <literallayout class='monospaced'>
6307 INCOMPATIBLE_LICENSE = "GPL-3.0 LGPL-3.0 AGPL-3.0"
6308 </literallayout>
6309 Although you can use other settings, you might be required
6310 to remove dependencies on or provide alternatives to
6311 components that are required to produce a functional system
6312 image.
6313 </note>
6314 </glossdef>
6315 </glossentry>
6316
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006317 <glossentry id='var-INHERIT'><glossterm>INHERIT</glossterm>
6318 <info>
Brad Bishop6e60e8b2018-02-01 10:27:11 -05006319 INHERIT[doc] = "Causes the named class or classes to be inherited globally."
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006320 </info>
6321 <glossdef>
6322 <para role="glossdeffirst">
6323<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Brad Bishop6e60e8b2018-02-01 10:27:11 -05006324 Causes the named class or classes to be inherited globally.
6325 Anonymous functions in the class or classes
6326 are not executed for the
6327 base configuration and in each individual recipe.
6328 The OpenEmbedded build system ignores changes to
6329 <filename>INHERIT</filename> in individual recipes.
6330 </para>
6331
6332 <para>
6333 For more information on <filename>INHERIT</filename>, see
6334 the
6335 "<ulink url="&YOCTO_DOCS_BB_URL;#inherit-configuration-directive"><filename>INHERIT</filename> Configuration Directive</ulink>"
6336 section in the Yocto Project Bitbake User Manual.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006337 </para>
6338 </glossdef>
6339 </glossentry>
6340
6341 <glossentry id='var-INHERIT_DISTRO'><glossterm>INHERIT_DISTRO</glossterm>
6342 <info>
6343 INHERIT_DISTRO[doc] = "Lists classes that will be inherited at the distribution level. It is unlikely that you want to edit this variable."
6344 </info>
6345 <glossdef>
6346 <para role="glossdeffirst">
6347<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6348 Lists classes that will be inherited at the
6349 distribution level.
6350 It is unlikely that you want to edit this variable.
6351 </para>
6352
6353 <para>
6354 The default value of the variable is set as follows in the
6355 <filename>meta/conf/distro/defaultsetup.conf</filename>
6356 file:
6357 <literallayout class='monospaced'>
6358 INHERIT_DISTRO ?= "debian devshell sstate license"
6359 </literallayout>
6360 </para>
6361 </glossdef>
6362 </glossentry>
6363
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006364 <glossentry id='var-INHIBIT_DEFAULT_DEPS'><glossterm>INHIBIT_DEFAULT_DEPS</glossterm>
6365 <info>
6366 INHIBIT_DEFAULT_DEPS[doc] = "Prevents the default dependencies, namely the C compiler and standard C library (libc), from being added to DEPENDS."
6367 </info>
6368 <glossdef>
6369 <para role="glossdeffirst">
6370<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6371 Prevents the default dependencies, namely the C compiler
6372 and standard C library (libc), from being added to
6373 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>.
6374 This variable is usually used within recipes that do not
6375 require any compilation using the C compiler.
6376 </para>
6377
6378 <para>
6379 Set the variable to "1" to prevent the default dependencies
6380 from being added.
6381 </para>
6382 </glossdef>
6383 </glossentry>
6384
6385 <glossentry id='var-INHIBIT_PACKAGE_DEBUG_SPLIT'><glossterm>INHIBIT_PACKAGE_DEBUG_SPLIT</glossterm>
6386 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006387 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 -05006388 </info>
6389 <glossdef>
6390 <para role="glossdeffirst">
6391<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6392 Prevents the OpenEmbedded build system from splitting
6393 out debug information during packaging.
6394 By default, the build system splits out debugging
6395 information during the
6396 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
6397 task.
6398 For more information on how debug information is split out,
6399 see the
6400 <link linkend='var-PACKAGE_DEBUG_SPLIT_STYLE'><filename>PACKAGE_DEBUG_SPLIT_STYLE</filename></link>
6401 variable.
6402 </para>
6403
6404 <para>
6405 To prevent the build system from splitting out
6406 debug information during packaging, set the
6407 <filename>INHIBIT_PACKAGE_DEBUG_SPLIT</filename> variable
6408 as follows:
6409 <literallayout class='monospaced'>
6410 INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
6411 </literallayout>
6412 </para>
6413 </glossdef>
6414 </glossentry>
6415
6416 <glossentry id='var-INHIBIT_PACKAGE_STRIP'><glossterm>INHIBIT_PACKAGE_STRIP</glossterm>
6417 <info>
6418 INHIBIT_PACKAGE_STRIP[doc] = "If set to "1", causes the build to not strip binaries in resulting packages."
6419 </info>
6420 <glossdef>
6421 <para role="glossdeffirst">
6422<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006423 If set to "1", causes the build to not strip binaries in
6424 resulting packages and prevents the
6425 <filename>-dbg</filename> package from containing the
6426 source files.
6427 </para>
6428
6429 <para>
6430 By default, the OpenEmbedded build system strips
6431 binaries and puts the debugging symbols into
6432 <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}-dbg</filename>.
6433 Consequently, you should not set
6434 <filename>INHIBIT_PACKAGE_STRIP</filename> when you plan
6435 to debug in general.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006436 </para>
6437 </glossdef>
6438 </glossentry>
6439
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006440 <glossentry id='var-INITRAMFS_FSTYPES'><glossterm>INITRAMFS_FSTYPES</glossterm>
6441 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006442 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 -05006443 </info>
6444 <glossdef>
6445 <para role="glossdeffirst">
6446<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6447 Defines the format for the output image of an initial
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006448 RAM filesystem (initramfs), which is used during boot.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006449 Supported formats are the same as those supported by the
6450 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6451 variable.
6452 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006453
6454 <para>
6455 The default value of this variable, which is set in the
6456 <filename>meta/conf/bitbake.conf</filename> configuration
6457 file in the
6458 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
6459 is "cpio.gz".
6460 The Linux kernel's initramfs mechanism, as opposed to the
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006461 initial RAM filesystem
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006462 <ulink url='https://en.wikipedia.org/wiki/Initrd'>initrd</ulink>
6463 mechanism, expects an optionally compressed cpio
6464 archive.
6465 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006466 </glossdef>
6467 </glossentry>
6468
6469 <glossentry id='var-INITRAMFS_IMAGE'><glossterm>INITRAMFS_IMAGE</glossterm>
6470 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006471 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 -05006472 </info>
6473 <glossdef>
6474 <para role="glossdeffirst">
6475<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006476 Specifies the
6477 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
6478 name of an image recipe that is used to build an initial
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006479 RAM filesystem (initramfs) image.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006480 An initramfs provides a temporary root filesystem used for
6481 early system initialization (e.g. loading of modules
6482 needed to locate and mount the "real" root filesystem).
6483 The specified recipe is added as a dependency of the root
6484 filesystem recipe (e.g.
6485 <filename>core-image-sato</filename>).
6486 See the <filename>meta/recipes-core/images/core-image-minimal-initramfs.bb</filename>
6487 recipe in the
6488 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
6489 for an example initramfs recipe.
6490 To select this recipe to provide the initramfs,
6491 set <filename>INITRAMFS_IMAGE</filename> to
6492 "core-image-minimal-initramfs".
6493 <note>
6494 The initramfs image recipe should set
6495 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6496 to
6497 <link linkend='var-INITRAMFS_FSTYPES'><filename>INITRAMFS_FSTYPES</filename></link>.
6498 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006499 </para>
6500
6501 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006502 You can also find more information by referencing the
6503 <filename>meta/poky/conf/local.conf.sample.extended</filename>
6504 configuration file in the
6505 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>,
6506 the
6507 <link linkend='ref-classes-image'><filename>image</filename></link>
6508 class, and the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006509 <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006510 class to see how to use the
6511 <filename>INITRAMFS_IMAGE</filename> variable.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006512 </para>
6513
6514 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006515 If <filename>INITRAMFS_IMAGE</filename> is empty, which is
6516 the default, then no initramfs is built.
6517 </para>
6518
6519 <para>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006520 For more information, you can also see the
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006521 <link linkend='var-INITRAMFS_IMAGE_BUNDLE'><filename>INITRAMFS_IMAGE_BUNDLE</filename></link>
6522 variable, which allows the generated image to be bundled
6523 inside the kernel image.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006524 Additionally, for information on creating an initramfs, see
6525 the
6526 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
6527 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006528 </para>
6529 </glossdef>
6530 </glossentry>
6531
6532 <glossentry id='var-INITRAMFS_IMAGE_BUNDLE'><glossterm>INITRAMFS_IMAGE_BUNDLE</glossterm>
6533 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006534 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 -05006535 </info>
6536 <glossdef>
6537 <para role="glossdeffirst">
6538<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6539 Controls whether or not the image recipe specified by
6540 <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006541 is run through an extra pass
6542 (<link linkend='ref-tasks-bundle_initramfs'><filename>do_bundle_initramfs</filename></link>)
6543 during kernel compilation in order to build a single binary
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006544 that contains both the kernel image and the initial RAM
6545 filesystem (initramfs) image.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006546 This makes use of the
6547 <link linkend='var-CONFIG_INITRAMFS_SOURCE'><filename>CONFIG_INITRAMFS_SOURCE</filename></link>
6548 kernel feature.
6549 <note>
6550 Using an extra compilation pass to bundle the initramfs
6551 avoids a circular dependency between the kernel recipe and
6552 the initramfs recipe should the initramfs include kernel
6553 modules.
6554 Should that be the case, the initramfs recipe depends on
6555 the kernel for the kernel modules, and the kernel depends
6556 on the initramfs recipe since the initramfs is bundled
6557 inside the kernel image.
6558 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006559 </para>
6560
6561 <para>
6562 The combined binary is deposited into the
6563 <filename>tmp/deploy</filename> directory, which is part
6564 of the
6565 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
6566 </para>
6567
6568 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006569 Setting the variable to "1" in a configuration file causes the
6570 OpenEmbedded build system to generate a kernel image with the
6571 initramfs specified in
6572 <link linkend='var-INITRAMFS_IMAGE'><filename>INITRAMFS_IMAGE</filename></link>
6573 bundled within:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006574 <literallayout class='monospaced'>
6575 INITRAMFS_IMAGE_BUNDLE = "1"
6576 </literallayout>
6577 By default, the
6578 <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
6579 class sets this variable to a null string as follows:
6580 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06006581 INITRAMFS_IMAGE_BUNDLE ?= ""
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006582 </literallayout>
6583 <note>
6584 You must set the
6585 <filename>INITRAMFS_IMAGE_BUNDLE</filename> variable in
6586 a configuration file.
6587 You cannot set the variable in a recipe file.
6588 </note>
6589 See the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006590 <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 -05006591 file for additional information.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05006592 Also, for information on creating an initramfs, see the
6593 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
6594 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006595 </para>
6596 </glossdef>
6597 </glossentry>
6598
6599 <glossentry id='var-INITRD'><glossterm>INITRD</glossterm>
6600 <info>
6601 INITRD[doc] = "Indicates a list of filesystem images to concatenate and use as an initial RAM disk (initrd)."
6602 </info>
6603 <glossdef>
6604 <para role="glossdeffirst">
6605<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6606 Indicates list of filesystem images to concatenate and use
6607 as an initial RAM disk (<filename>initrd</filename>).
6608 </para>
6609
6610 <para>
6611 The <filename>INITRD</filename> variable is an optional
6612 variable used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006613 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006614 class.
6615 </para>
6616 </glossdef>
6617 </glossentry>
6618
6619 <glossentry id='var-INITRD_IMAGE'><glossterm>INITRD_IMAGE</glossterm>
6620 <info>
6621 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."
6622 </info>
6623 <glossdef>
6624 <para role="glossdeffirst">
6625<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6626 When building a "live" bootable image (i.e. when
6627 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
6628 contains "live"), <filename>INITRD_IMAGE</filename>
6629 specifies the image recipe that should be built
6630 to provide the initial RAM disk image.
6631 The default value is "core-image-minimal-initramfs".
6632 </para>
6633
6634 <para>
6635 See the
6636 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
6637 class for more information.
6638 </para>
6639 </glossdef>
6640 </glossentry>
6641
6642 <glossentry id='var-INITSCRIPT_NAME'><glossterm>INITSCRIPT_NAME</glossterm>
6643 <info>
6644 INITSCRIPT_NAME[doc] = "The filename of the initialization script as installed to ${sysconfdir}/init.d."
6645 </info>
6646 <glossdef>
6647 <para role="glossdeffirst">
6648<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6649 The filename of the initialization script as installed to
6650 <filename>${sysconfdir}/init.d</filename>.
6651 </para>
6652
6653 <para>
6654 This variable is used in recipes when using <filename>update-rc.d.bbclass</filename>.
6655 The variable is mandatory.
6656 </para>
6657 </glossdef>
6658 </glossentry>
6659
6660 <glossentry id='var-INITSCRIPT_PACKAGES'><glossterm>INITSCRIPT_PACKAGES</glossterm>
6661 <info>
6662 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."
6663 </info>
6664 <glossdef>
6665 <para role="glossdeffirst">
6666<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6667 A list of the packages that contain initscripts.
6668 If multiple packages are specified, you need to append the package name
6669 to the other <filename>INITSCRIPT_*</filename> as an override.
6670 </para>
6671
6672 <para>
6673 This variable is used in recipes when using <filename>update-rc.d.bbclass</filename>.
6674 The variable is optional and defaults to the
6675 <link linkend='var-PN'><filename>PN</filename></link> variable.
6676 </para>
6677 </glossdef>
6678 </glossentry>
6679
6680 <glossentry id='var-INITSCRIPT_PARAMS'><glossterm>INITSCRIPT_PARAMS</glossterm>
6681 <info>
6682 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."
6683 </info>
6684 <glossdef>
6685 <para role="glossdeffirst">
6686<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6687 Specifies the options to pass to <filename>update-rc.d</filename>.
6688 Here is an example:
6689 <literallayout class='monospaced'>
6690 INITSCRIPT_PARAMS = "start 99 5 2 . stop 20 0 1 6 ."
6691 </literallayout>
6692 </para>
6693
6694 <para>
6695 In this example, the script has a runlevel of 99,
6696 starts the script in initlevels 2 and 5, and
6697 stops the script in levels 0, 1 and 6.
6698 </para>
6699
6700 <para>
6701 The variable's default value is "defaults", which is
6702 set in the
6703 <link linkend='ref-classes-update-rc.d'><filename>update-rc.d</filename></link>
6704 class.
6705 </para>
6706
6707 <para>
6708 The value in
6709 <filename>INITSCRIPT_PARAMS</filename> is passed through
6710 to the <filename>update-rc.d</filename> command.
6711 For more information on valid parameters, please see the
6712 <filename>update-rc.d</filename> manual page at
6713 <ulink url='http://www.tin.org/bin/man.cgi?section=8&amp;topic=update-rc.d'></ulink>.
6714 </para>
6715 </glossdef>
6716 </glossentry>
6717
6718 <glossentry id='var-INSANE_SKIP'><glossterm>INSANE_SKIP</glossterm>
6719 <info>
6720 INSANE_SKIP[doc] = "Specifies the QA checks to skip for a specific package within a recipe."
6721 </info>
6722 <glossdef>
6723 <para role="glossdeffirst">
6724<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6725 Specifies the QA checks to skip for a specific package
6726 within a recipe.
6727 For example, to skip the check for symbolic link
6728 <filename>.so</filename> files in the main package of a
6729 recipe, add the following to the recipe.
6730 The package name override must be used, which in this
6731 example is <filename>${PN}</filename>:
6732 <literallayout class='monospaced'>
6733 INSANE_SKIP_${PN} += "dev-so"
6734 </literallayout>
6735 </para>
6736
6737 <para>
6738 See the "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
6739 section for a list of the valid QA checks you can
6740 specify using this variable.
6741 </para>
6742 </glossdef>
6743 </glossentry>
6744
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05006745 <glossentry id='var-INSTALL_TIMEZONE_FILE'><glossterm>INSTALL_TIMEZONE_FILE</glossterm>
6746 <info>
6747 INSTALL_TIMEZONE_FILE[doc] = "Enables installation of the /etc/timezone file."
6748 </info>
6749 <glossdef>
6750 <para role="glossdeffirst">
6751<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6752 By default, the <filename>tzdata</filename> recipe packages
6753 an <filename>/etc/timezone</filename> file.
6754 Set the <filename>INSTALL_TIMEZONE_FILE</filename>
6755 variable to "0" at the configuration level to disable this
6756 behavior.
6757 </para>
6758 </glossdef>
6759 </glossentry>
6760
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006761 <glossentry id='var-IPK_FEED_URIS'><glossterm>IPK_FEED_URIS</glossterm>
6762 <info>
6763 IPK_FEED_URIS[doc] = "List of ipkg feed records to put into generated image."
6764 </info>
6765 <glossdef>
6766 <para role="glossdeffirst">
6767<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6768 When the IPK backend is in use and package management
6769 is enabled on the target, you can use this variable to
6770 set up <filename>opkg</filename> in the target image
6771 to point to package feeds on a nominated server.
6772 Once the feed is established, you can perform
6773 installations or upgrades using the package manager
6774 at runtime.
6775 </para>
6776 </glossdef>
6777 </glossentry>
6778
6779<!--
6780 <glossentry id='var-INTERCEPT_DIR'><glossterm>INTERCEPT_DIR</glossterm>
6781 <glossdef>
6782 <para>
6783 An environment variable that defines the directory where
6784 post installation hooks are installed for the
6785 post install environment.
6786 This variable is fixed as follows:
6787 <literallayout class='monospaced'>
6788 ${WORKDIR}/intercept_scripts
6789 </literallayout>
6790 </para>
6791
6792 <para>
6793 After installation of a target's root filesystem,
6794 post installation scripts, which are essentially bash scripts,
6795 are all executed just a single time.
6796 Limiting execution of these scripts minimizes installation
6797 time that would be lengthened due to certain packages
6798 triggering redundant operations.
6799 For example, consider the installation of font packages
6800 as a common example.
6801 Without limiting the execution of post installation scripts,
6802 all font directories would be rescanned to create the
6803 cache after each individual font package was installed.
6804 </para>
6805
6806 <para>
6807 Do not edit the <filename>INTERCEPT_DIR</filename>
6808 variable.
6809 </para>
6810 </glossdef>
6811 </glossentry>
6812-->
6813
6814 </glossdiv>
6815
6816<!-- <glossdiv id='var-glossary-j'><title>J</title>-->
6817<!-- </glossdiv>-->
6818
6819 <glossdiv id='var-glossary-k'><title>K</title>
6820
6821 <glossentry id='var-KARCH'><glossterm>KARCH</glossterm>
6822 <info>
6823 KARCH[doc] = "Defines the kernel architecture used when assembling the configuration. You define the KARCH variable in the BSP Descriptions."
6824 </info>
6825 <glossdef>
6826 <para role="glossdeffirst">
6827<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6828 Defines the kernel architecture used when assembling
6829 the configuration.
6830 Architectures supported for this release are:
6831 <literallayout class='monospaced'>
6832 powerpc
6833 i386
6834 x86_64
6835 arm
6836 qemu
6837 mips
6838 </literallayout>
6839 </para>
6840
6841 <para>
6842 You define the <filename>KARCH</filename> variable in the
6843 <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#bsp-descriptions'>BSP Descriptions</ulink>.
6844 </para>
6845 </glossdef>
6846 </glossentry>
6847
6848 <glossentry id='var-KBRANCH'><glossterm>KBRANCH</glossterm>
6849 <info>
6850 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."
6851 </info>
6852 <glossdef>
6853 <para role="glossdeffirst">
6854<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6855 A regular expression used by the build process to explicitly
6856 identify the kernel branch that is validated, patched,
6857 and configured during a build.
6858 You must set this variable to ensure the exact kernel
6859 branch you want is being used by the build process.
6860 </para>
6861
6862 <para>
6863 Values for this variable are set in the kernel's recipe
6864 file and the kernel's append file.
6865 For example, if you are using the Yocto Project kernel that
6866 is based on the Linux 3.14 kernel, the kernel recipe file
6867 is the
6868 <filename>meta/recipes-kernel/linux/linux-yocto_3.14.bb</filename>
6869 file.
6870 Following is an example for a kernel recipe file:
6871 <literallayout class='monospaced'>
6872 KBRANCH ?= "standard/base"
6873 </literallayout>
6874 </para>
6875
6876 <para>
6877 This variable is also used from the kernel's append file
6878 to identify the kernel branch specific to a particular
6879 machine or target hardware.
6880 The kernel's append file is located in the BSP layer for
6881 a given machine.
6882 For example, the kernel append file for the Emenlow BSP is in the
6883 <filename>meta-intel</filename> Git repository and is named
6884 <filename>meta-emenlow/recipes-kernel/linux/linux-yocto_3.14.bbappend</filename>.
6885 Here are the related statements from the append file:
6886 <literallayout class='monospaced'>
6887 COMPATIBLE_MACHINE_emenlow-noemgd = "emenlow-noemgd"
6888 KMACHINE_emenlow-noemgd = "emenlow"
6889 KBRANCH_emenlow-noemgd = "standard/base"
6890 KERNEL_FEATURES_append_emenlow-noemgd = " features/drm-gma500/drm-gma500.scc"
6891 </literallayout>
6892 The <filename>KBRANCH</filename> statement identifies
6893 the kernel branch to use when building for the Emenlow
6894 BSP.
6895 </para>
6896 </glossdef>
6897 </glossentry>
6898
6899 <glossentry id='var-KBUILD_DEFCONFIG'><glossterm>KBUILD_DEFCONFIG</glossterm>
6900 <info>
6901 KBUILD_DEFCONFIG[doc] = "Specifies an "in-tree" kernel configuration file for use during a kernel build."
6902 </info>
6903 <glossdef>
6904 <para role="glossdeffirst">
6905<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6906 When used with the
6907 <link linkend='ref-classes-kernel-yocto'><filename>kernel-yocto</filename></link>
6908 class, specifies an "in-tree" kernel configuration file
6909 for use during a kernel build.
6910 </para>
6911
6912 <para>
6913 Typically, when using a <filename>defconfig</filename> to
6914 configure a kernel during a build, you place the
6915 file in your layer in the same manner as you would
6916 patch files and configuration fragment files (i.e.
6917 "out-of-tree").
6918 However, if you want to use a <filename>defconfig</filename>
6919 file that is part of the kernel tree (i.e. "in-tree"),
6920 you can use the
6921 <filename>KBUILD_DEFCONFIG</filename> variable to point
6922 to the <filename>defconfig</filename> file.
6923 </para>
6924
6925 <para>
6926 To use the variable, set it in the append file for your
6927 kernel recipe using the following form:
6928 <literallayout class='monospaced'>
6929 KBUILD_DEFCONFIG_<link linkend='var-KMACHINE'>KMACHINE</link> ?= <replaceable>defconfig_file</replaceable>
6930 </literallayout>
6931 Here is an example from a "raspberrypi2"
6932 <filename>KMACHINE</filename> build that uses a
6933 <filename>defconfig</filename> file named
6934 "bcm2709_defconfig":
6935 <literallayout class='monospaced'>
6936 KBUILD_DEFCONFIG_raspberrypi2 = "bcm2709_defconfig"
6937 </literallayout>
6938 As an alternative, you can use the following within your
6939 append file:
6940 <literallayout class='monospaced'>
6941 KBUILD_DEFCONFIG_pn-linux-yocto ?= <replaceable>defconfig_file</replaceable>
6942 </literallayout>
6943 For more information on how to use the
6944 <filename>KBUILD_DEFCONFIG</filename> variable, see the
6945 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#using-an-in-tree-defconfig-file'>Using an "In-Tree" <filename>defconfig</filename> File</ulink>"
6946 section.
6947 </para>
6948 </glossdef>
6949 </glossentry>
6950
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006951 <glossentry id='var-KERNEL_ALT_IMAGETYPE'><glossterm>KERNEL_ALT_IMAGETYPE</glossterm>
6952 <info>
6953 KERNEL_ALT_IMAGETYPE[doc] = "Specifies an alternate kernel image type for creation."
6954 </info>
6955 <glossdef>
6956 <para role="glossdeffirst">
6957<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6958 Specifies an alternate kernel image type for creation in
6959 addition to the kernel image type specified using the
6960 <link linkend='var-KERNEL_IMAGETYPE'><filename>KERNEL_IMAGETYPE</filename></link>
6961 variable.
6962 </para>
6963 </glossdef>
6964 </glossentry>
6965
Patrick Williamsc124f4f2015-09-15 14:41:29 -05006966 <glossentry id='var-KERNEL_CLASSES'><glossterm>KERNEL_CLASSES</glossterm>
6967 <info>
6968 KERNEL_CLASSES[doc] = "A list of classes defining kernel image types that kernel class should inherit."
6969 </info>
6970 <glossdef>
6971 <para role="glossdeffirst">
6972<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6973 A list of classes defining kernel image types that the
6974 <link linkend='ref-classes-kernel'><filename>kernel</filename></link>
6975 class should inherit.
6976 You typically append this variable to enable extended image
6977 types.
6978 An example is the "kernel-fitimage", which enables
6979 fitImage support and resides in
6980 <filename>meta/classes/kernel-fitimage.bbclass</filename>.
6981 You can register custom kernel image types with the
6982 <filename>kernel</filename> class using this variable.
6983 </para>
6984 </glossdef>
6985 </glossentry>
6986
Patrick Williamsf1e5d692016-03-30 15:21:19 -05006987 <glossentry id='var-KERNEL_DEVICETREE'><glossterm>KERNEL_DEVICETREE</glossterm>
6988 <info>
6989 KERNEL_DEVICETREE[doc] = "Specifies the name of the generated Linux kernel device tree (i.e. the <filename>.dtb</filename>) file."
6990 </info>
6991 <glossdef>
6992 <para role="glossdeffirst">
6993<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
6994 Specifies the name of the generated Linux kernel device tree
6995 (i.e. the <filename>.dtb</filename>) file.
6996 <note>
6997 Legacy support exists for specifying the full path
6998 to the device tree.
6999 However, providing just the <filename>.dtb</filename>
7000 file is preferred.
7001 </note>
7002 In order to use this variable, you must have the include
7003 files in your kernel recipe:
7004 <literallayout class='monospaced'>
7005 require recipes-kernel/linux/linux-dtb.inc
7006 </literallayout>
7007 or
7008 <literallayout class='monospaced'>
7009 require recipes-kernel/linux/linux-yocto.inc
7010 </literallayout>
7011 </para>
7012 </glossdef>
7013 </glossentry>
7014
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007015 <glossentry id='var-KERNEL_EXTRA_ARGS'><glossterm>KERNEL_EXTRA_ARGS</glossterm>
7016 <info>
7017 KERNEL_EXTRA_ARGS[doc] = "Specifies additional make command-line arguments the OpenEmbedded build system passes on when compiling the kernel."
7018 </info>
7019 <glossdef>
7020 <para role="glossdeffirst">
7021<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7022 Specifies additional <filename>make</filename>
7023 command-line arguments the OpenEmbedded build system
7024 passes on when compiling the kernel.
7025 </para>
7026 </glossdef>
7027 </glossentry>
7028
7029 <glossentry id='var-KERNEL_FEATURES'><glossterm>KERNEL_FEATURES</glossterm>
7030 <info>
7031 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."
7032 </info>
7033 <glossdef>
7034 <para role="glossdeffirst">
7035<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7036 Includes additional metadata from the Yocto Project kernel Git repository.
7037 In the OpenEmbedded build system, the default Board Support Packages (BSPs)
7038 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
7039 is provided through
7040 the <link linkend='var-KMACHINE'><filename>KMACHINE</filename></link>
7041 and <link linkend='var-KBRANCH'><filename>KBRANCH</filename></link> variables.
7042 You can use the <filename>KERNEL_FEATURES</filename> variable to further
7043 add metadata for all BSPs.
7044 </para>
7045
7046 <para>
7047 The metadata you add through this variable includes config fragments and
7048 features descriptions,
7049 which usually includes patches as well as config fragments.
7050 You typically override the <filename>KERNEL_FEATURES</filename> variable
7051 for a specific machine.
7052 In this way, you can provide validated, but optional, sets of kernel
7053 configurations and features.
7054 </para>
7055
7056 <para>
7057 For example, the following adds <filename>netfilter</filename> to all
7058 the Yocto Project kernels and adds sound support to the <filename>qemux86</filename>
7059 machine:
7060 <literallayout class='monospaced'>
7061 # Add netfilter to all linux-yocto kernels
7062 KERNEL_FEATURES="features/netfilter/netfilter.scc"
7063
7064 # Add sound support to the qemux86 machine
7065 KERNEL_FEATURES_append_qemux86=" cfg/sound.scc"
7066 </literallayout></para>
7067 </glossdef>
7068 </glossentry>
7069
7070 <glossentry id='var-KERNEL_IMAGE_BASE_NAME'><glossterm>KERNEL_IMAGE_BASE_NAME</glossterm>
7071 <info>
7072 KERNEL_IMAGE_BASE_NAME[doc] = "The base name of the kernel image."
7073 </info>
7074 <glossdef>
7075 <para role="glossdeffirst">
7076<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7077 The base name of the kernel image.
7078 This variable is set in the
7079 <link linkend='ref-classes-kernel'>kernel</link> class
7080 as follows:
7081 <literallayout class='monospaced'>
Brad Bishop37a0e4d2017-12-04 01:01:44 -05007082 KERNEL_IMAGE_BASE_NAME ?= "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007083 </literallayout>
7084 </para>
7085
7086 <para>
7087 See the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007088 <link linkend='var-PKGE'><filename>PKGE</filename></link>,
7089 <link linkend='var-PKGV'><filename>PKGV</filename></link>,
7090 <link linkend='var-PKGR'><filename>PKGR</filename></link>,
7091 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
7092 and
7093 <link linkend='var-DATETIME'><filename>DATETIME</filename></link>
7094 variables for additional information.
7095 </para>
7096 </glossdef>
7097 </glossentry>
7098
7099 <glossentry id='var-KERNEL_IMAGE_MAXSIZE'><glossterm>KERNEL_IMAGE_MAXSIZE</glossterm>
7100 <info>
7101 KERNEL_IMAGE_MAXSIZE[doc] = "The maximum allowable size in kilobytes of the kernel image file."
7102 </info>
7103 <glossdef>
7104 <para role="glossdeffirst">
7105<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7106 Specifies the maximum size of the kernel image file in
7107 kilobytes.
7108 If <filename>KERNEL_IMAGE_MAXSIZE</filename> is set,
7109 the size of the kernel image file is checked against
7110 the set value during the
7111 <link linkend='ref-tasks-sizecheck'><filename>do_sizecheck</filename></link>
7112 task.
7113 The task fails if the kernel image file is larger than
7114 the setting.
7115 </para>
7116
7117 <para>
7118 <filename>KERNEL_IMAGE_MAXSIZE</filename> is useful for
7119 target devices that have a limited amount of space in
7120 which the kernel image must be stored.
7121 </para>
7122
7123 <para>
7124 By default, this variable is not set, which means the
7125 size of the kernel image is not checked.
7126 </para>
7127 </glossdef>
7128 </glossentry>
7129
7130 <glossentry id='var-KERNEL_IMAGETYPE'><glossterm>KERNEL_IMAGETYPE</glossterm>
7131 <info>
7132 KERNEL_IMAGETYPE[doc] = "The type of kernel to build for a device, usually set by the machine configuration files and defaults to 'zImage'."
7133 </info>
7134 <glossdef>
7135 <para role="glossdeffirst">
7136<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7137 The type of kernel to build for a device, usually set by the
7138 machine configuration files and defaults to "zImage".
7139 This variable is used
7140 when building the kernel and is passed to <filename>make</filename> as the target to
7141 build.
7142 </para>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05007143
7144 <para>
7145 If you want to build an alternate kernel image type, use the
7146 <link linkend='var-KERNEL_ALT_IMAGETYPE'><filename>KERNEL_ALT_IMAGETYPE</filename></link>
7147 variable.
7148 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007149 </glossdef>
7150 </glossentry>
7151
7152 <glossentry id='var-KERNEL_MODULE_AUTOLOAD'><glossterm>KERNEL_MODULE_AUTOLOAD</glossterm>
7153 <info>
7154 KERNEL_MODULE_AUTOLOAD[doc] = "Lists kernel modules that need to be auto-loaded during boot"
7155 </info>
7156 <glossdef>
7157 <para role="glossdeffirst">
7158<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7159 Lists kernel modules that need to be auto-loaded during
7160 boot.
7161 <note>
7162 This variable replaces the deprecated
7163 <link linkend='var-module_autoload'><filename>module_autoload</filename></link>
7164 variable.
7165 </note>
7166 </para>
7167
7168 <para>
7169 You can use the <filename>KERNEL_MODULE_AUTOLOAD</filename>
7170 variable anywhere that it can be
7171 recognized by the kernel recipe or by an out-of-tree kernel
7172 module recipe (e.g. a machine configuration file, a
7173 distribution configuration file, an append file for the
7174 recipe, or the recipe itself).
7175 </para>
7176
7177 <para>
7178 Specify it as follows:
7179 <literallayout class='monospaced'>
7180 KERNEL_MODULE_AUTOLOAD += "<replaceable>module_name1</replaceable> <replaceable>module_name2</replaceable> <replaceable>module_name3</replaceable>"
7181 </literallayout>
7182 </para>
7183
7184 <para>
7185 Including <filename>KERNEL_MODULE_AUTOLOAD</filename> causes
7186 the OpenEmbedded build system to populate the
7187 <filename>/etc/modules-load.d/modname.conf</filename>
7188 file with the list of modules to be auto-loaded on boot.
7189 The modules appear one-per-line in the file.
7190 Here is an example of the most common use case:
7191 <literallayout class='monospaced'>
7192 KERNEL_MODULE_AUTOLOAD += "<replaceable>module_name</replaceable>"
7193 </literallayout>
7194 </para>
7195
7196 <para>
7197 For information on how to populate the
7198 <filename>modname.conf</filename> file with
7199 <filename>modprobe.d</filename> syntax lines, see the
7200 <link linkend='var-KERNEL_MODULE_PROBECONF'><filename>KERNEL_MODULE_PROBECONF</filename></link>
7201 variable.
7202 </para>
7203 </glossdef>
7204 </glossentry>
7205
7206 <glossentry id='var-KERNEL_MODULE_PROBECONF'><glossterm>KERNEL_MODULE_PROBECONF</glossterm>
7207 <info>
7208 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."
7209 </info>
7210 <glossdef>
7211 <para role="glossdeffirst">
7212<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7213 Provides a list of modules for which the OpenEmbedded
7214 build system expects to find
7215 <filename>module_conf_</filename><replaceable>modname</replaceable>
7216 values that specify configuration for each of the modules.
7217 For information on how to provide those module
7218 configurations, see the
7219 <link linkend='var-module_conf'><filename>module_conf_*</filename></link>
7220 variable.
7221 </para>
7222 </glossdef>
7223 </glossentry>
7224
7225 <glossentry id='var-KERNEL_PATH'><glossterm>KERNEL_PATH</glossterm>
7226 <info>
7227 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)."
7228 </info>
7229 <glossdef>
7230 <para role="glossdeffirst">
7231<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7232 The location of the kernel sources.
7233 This variable is set to the value of the
7234 <link linkend='var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></link>
7235 within the
7236 <link linkend='ref-classes-module'><filename>module</filename></link>
7237 class.
7238 For information on how this variable is used, see the
7239 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
7240 section.
7241 </para>
7242
7243 <para>
7244 To help maximize compatibility with out-of-tree drivers
7245 used to build modules, the OpenEmbedded build system also
7246 recognizes and uses the
7247 <link linkend='var-KERNEL_SRC'><filename>KERNEL_SRC</filename></link>
7248 variable, which is identical to the
7249 <filename>KERNEL_PATH</filename> variable.
7250 Both variables are common variables used by external
7251 Makefiles to point to the kernel source directory.
7252 </para>
7253 </glossdef>
7254 </glossentry>
7255
7256 <glossentry id='var-KERNEL_SRC'><glossterm>KERNEL_SRC</glossterm>
7257 <info>
7258 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)."
7259 </info>
7260 <glossdef>
7261 <para role="glossdeffirst">
7262<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7263 The location of the kernel sources.
7264 This variable is set to the value of the
7265 <link linkend='var-STAGING_KERNEL_DIR'><filename>STAGING_KERNEL_DIR</filename></link>
7266 within the
7267 <link linkend='ref-classes-module'><filename>module</filename></link>
7268 class.
7269 For information on how this variable is used, see the
7270 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#incorporating-out-of-tree-modules'>Incorporating Out-of-Tree Modules</ulink>"
7271 section.
7272 </para>
7273
7274 <para>
7275 To help maximize compatibility with out-of-tree drivers
7276 used to build modules, the OpenEmbedded build system also
7277 recognizes and uses the
7278 <link linkend='var-KERNEL_PATH'><filename>KERNEL_PATH</filename></link>
7279 variable, which is identical to the
7280 <filename>KERNEL_SRC</filename> variable.
7281 Both variables are common variables used by external
7282 Makefiles to point to the kernel source directory.
7283 </para>
7284 </glossdef>
7285 </glossentry>
7286
Patrick Williamsf1e5d692016-03-30 15:21:19 -05007287 <glossentry id='var-KERNEL_VERSION'><glossterm>KERNEL_VERSION</glossterm>
7288 <info>
7289 KERNEL_VERSION[doc] = "Specifies the version of the kernel as extracted from version.h or utsrelease.h within the kernel sources."
7290 </info>
7291 <glossdef>
7292 <para role="glossdeffirst">
7293<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7294 Specifies the version of the kernel as extracted from
7295 <filename>version.h</filename> or
7296 <filename>utsrelease.h</filename> within the kernel sources.
7297 Effects of setting this variable do not take affect until
7298 the kernel has been configured.
7299 Consequently, attempting to refer to this variable in
7300 contexts prior to configuration will not work.
7301 </para>
7302 </glossdef>
7303 </glossentry>
7304
7305 <glossentry id='var-KERNELDEPMODDEPEND'><glossterm>KERNELDEPMODDEPEND</glossterm>
7306 <info>
7307 KERNELDEPMODDEPEND[doc] = "Specifies whether or not to use the data referenced through the PKGDATA_DIR directory."
7308 </info>
7309 <glossdef>
7310 <para role="glossdeffirst">
7311<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7312 Specifies whether the data referenced through
7313 <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
7314 is needed or not.
7315 The <filename>KERNELDEPMODDEPEND</filename> does not
7316 control whether or not that data exists,
7317 but simply whether or not it is used.
7318 If you do not need to use the data, set the
7319 <filename>KERNELDEPMODDEPEND</filename> variable in your
7320 <filename>initramfs</filename> recipe.
7321 Setting the variable there when the data is not needed
7322 avoids a potential dependency loop.
7323 </para>
7324 </glossdef>
7325 </glossentry>
7326
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007327 <glossentry id='var-KFEATURE_DESCRIPTION'><glossterm>KFEATURE_DESCRIPTION</glossterm>
7328 <info>
7329 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."
7330 </info>
7331 <glossdef>
7332 <para role="glossdeffirst">
7333<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7334 Provides a short description of a configuration fragment.
7335 You use this variable in the <filename>.scc</filename>
7336 file that describes a configuration fragment file.
7337 Here is the variable used in a file named
7338 <filename>smp.scc</filename> to describe SMP being
7339 enabled:
7340 <literallayout class='monospaced'>
7341 define KFEATURE_DESCRIPTION "Enable SMP"
7342 </literallayout>
7343 </para>
7344 </glossdef>
7345 </glossentry>
7346
7347 <glossentry id='var-KMACHINE'><glossterm>KMACHINE</glossterm>
7348 <info>
7349 KMACHINE[doc] = "The machine as known by the kernel."
7350 </info>
7351 <glossdef>
7352 <para role="glossdeffirst">
7353<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7354 The machine as known by the kernel.
7355 Sometimes the machine name used by the kernel does not
7356 match the machine name used by the OpenEmbedded build
7357 system.
7358 For example, the machine name that the OpenEmbedded build
7359 system understands as
7360 <filename>core2-32-intel-common</filename> goes by a
7361 different name in the Linux Yocto kernel.
7362 The kernel understands that machine as
7363 <filename>intel-core2-32</filename>.
7364 For cases like these, the <filename>KMACHINE</filename>
7365 variable maps the kernel machine name to the OpenEmbedded
7366 build system machine name.
7367 </para>
7368
7369 <para>
7370 These mappings between different names occur in the
7371 Yocto Linux Kernel's <filename>meta</filename> branch.
7372 As an example take a look in the
7373 <filename>common/recipes-kernel/linux/linux-yocto_3.19.bbappend</filename>
7374 file:
7375 <literallayout class='monospaced'>
7376 LINUX_VERSION_core2-32-intel-common = "3.19.0"
7377 COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
7378 SRCREV_meta_core2-32-intel-common = "8897ef68b30e7426bc1d39895e71fb155d694974"
7379 SRCREV_machine_core2-32-intel-common = "43b9eced9ba8a57add36af07736344dcc383f711"
7380 KMACHINE_core2-32-intel-common = "intel-core2-32"
7381 KBRANCH_core2-32-intel-common = "standard/base"
7382 KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
7383 </literallayout>
7384 The <filename>KMACHINE</filename> statement says that
7385 the kernel understands the machine name as
7386 "intel-core2-32".
7387 However, the OpenEmbedded build system understands the
7388 machine as "core2-32-intel-common".
7389 </para>
7390
7391 </glossdef>
7392 </glossentry>
7393
7394 <glossentry id='var-KTYPE'><glossterm>KTYPE</glossterm>
7395 <info>
7396 KTYPE[doc] = "Defines the kernel type to be used in assembling the configuration."
7397 </info>
7398 <glossdef>
7399 <para role="glossdeffirst">
7400<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7401 Defines the kernel type to be used in assembling the
7402 configuration.
7403 The linux-yocto recipes define "standard", "tiny",
7404 and "preempt-rt" kernel types.
7405 See the
7406 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#kernel-types'>Kernel Types</ulink>"
7407 section in the Yocto Project Linux Kernel Development
7408 Manual for more information on kernel types.
7409 </para>
7410
7411 <para>
7412 You define the <filename>KTYPE</filename> variable in the
7413 <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#bsp-descriptions'>BSP Descriptions</ulink>.
7414 The value you use must match the value used for the
7415 <link linkend='var-LINUX_KERNEL_TYPE'><filename>LINUX_KERNEL_TYPE</filename></link>
7416 value used by the kernel recipe.
7417 </para>
7418 </glossdef>
7419 </glossentry>
7420 </glossdiv>
7421
7422 <glossdiv id='var-glossary-l'><title>L</title>
7423
7424 <glossentry id='var-LABELS'><glossterm>LABELS</glossterm>
7425 <info>
7426 LABELS[doc] = "Provides a list of targets for automatic configuration."
7427 </info>
7428 <glossdef>
7429 <para role="glossdeffirst">
7430<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7431 Provides a list of targets for automatic configuration.
7432 </para>
7433
7434 <para>
7435 See the
7436 <link linkend='ref-classes-grub-efi'><filename>grub-efi</filename></link>
7437 class for more information on how this variable is used.
7438 </para>
7439 </glossdef>
7440 </glossentry>
7441
7442 <glossentry id='var-LAYERDEPENDS'><glossterm>LAYERDEPENDS</glossterm>
7443 <info>
Brad Bishop6e60e8b2018-02-01 10:27:11 -05007444 LAYERDEPENDS[doc] = "Lists the layers, separated by spaces, on 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."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007445 </info>
7446 <glossdef>
7447 <para role="glossdeffirst">
7448<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Brad Bishop6e60e8b2018-02-01 10:27:11 -05007449 Lists the layers, separated by spaces, on which this
7450 recipe depends.
7451 Optionally, you can specify a specific layer version for a
7452 dependency by adding it to the end of the layer name.
7453 Here is an example:
7454 <literallayout class='monospaced'>
7455 LAYERDEPENDS_mylayer = "anotherlayer (=3)"
7456 </literallayout>
7457 In this previous example, version 3 of "anotherlayer"
7458 is compared against
7459 <link linkend='var-LAYERVERSION'><filename>LAYERVERSION</filename></link><filename>_anotherlayer</filename>.
7460 </para>
7461
7462 <para>
7463 An error is produced if any dependency is missing or
7464 the version numbers (if specified) do not match exactly.
7465 This variable is used in the
7466 <filename>conf/layer.conf</filename> file and must be
7467 suffixed with the name of the specific layer (e.g.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007468 <filename>LAYERDEPENDS_mylayer</filename>).
7469 </para>
7470 </glossdef>
7471 </glossentry>
7472
7473 <glossentry id='var-LAYERDIR'><glossterm>LAYERDIR</glossterm>
7474 <info>
7475 LAYERDIR[doc] = "When used inside the layer.conf configuration file, this variable provides the path of the current layer."
7476 </info>
7477 <glossdef>
7478 <para role="glossdeffirst">
7479<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7480 When used inside the <filename>layer.conf</filename> configuration
7481 file, this variable provides the path of the current layer.
7482 This variable is not available outside of <filename>layer.conf</filename>
7483 and references are expanded immediately when parsing of the file completes.
7484 </para>
7485 </glossdef>
7486 </glossentry>
7487
Brad Bishop6e60e8b2018-02-01 10:27:11 -05007488 <glossentry id='var-LAYERRECOMMENDS'><glossterm>LAYERRECOMMENDS</glossterm>
7489 <info>
7490 LAYERRECOMMENDS[doc] = "Lists the layers, separated by spaces, recommended for use with this layer."
7491 </info>
7492 <glossdef>
7493 <para role="glossdeffirst">
7494<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7495 Lists the layers, separated by spaces, recommended for
7496 use with this layer.
7497 </para>
7498
7499 <para>
7500 Optionally, you can specify a specific layer version for a
7501 recommendation by adding the version to the end of the
7502 layer name.
7503 Here is an example:
7504 <literallayout class='monospaced'>
7505 LAYERRECOMMENDS_mylayer = "anotherlayer (=3)"
7506 </literallayout>
7507 In this previous example, version 3 of "anotherlayer" is
7508 compared against
7509 <filename>LAYERVERSION_anotherlayer</filename>.
7510 </para>
7511
7512 <para>
7513 This variable is used in the
7514 <filename>conf/layer.conf</filename> file and must be
7515 suffixed with the name of the specific layer (e.g.
7516 <filename>LAYERRECOMMENDS_mylayer</filename>).
7517 </para>
7518 </glossdef>
7519 </glossentry>
7520
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007521 <glossentry id='var-LAYERVERSION'><glossterm>LAYERVERSION</glossterm>
7522 <info>
7523 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."
7524 </info>
7525 <glossdef>
7526 <para role="glossdeffirst">
7527<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7528 Optionally specifies the version of a layer as a single number.
7529 You can use this within
7530 <link linkend='var-LAYERDEPENDS'><filename>LAYERDEPENDS</filename></link>
7531 for another layer in order to depend on a specific version
7532 of the layer.
7533 This variable is used in the <filename>conf/layer.conf</filename> file
7534 and must be suffixed with the name of the specific layer (e.g.
7535 <filename>LAYERVERSION_mylayer</filename>).
7536 </para>
7537 </glossdef>
7538 </glossentry>
7539
7540 <glossentry id='var-LD'><glossterm>LD</glossterm>
7541 <info>
7542 LD[doc] = "Minimal command and arguments to run the linker."
7543 </info>
7544 <glossdef>
7545 <para role="glossdeffirst">
7546<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7547 The minimal command and arguments used to run the
7548 linker.
7549 </para>
7550 </glossdef>
7551 </glossentry>
7552
7553 <glossentry id='var-LDFLAGS'><glossterm>LDFLAGS</glossterm>
7554 <info>
7555 LDFLAGS[doc] = "Specifies the flags to pass to the linker."
7556 </info>
7557 <glossdef>
7558 <para role="glossdeffirst">
7559<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7560 Specifies the flags to pass to the linker.
7561 This variable is exported to an environment
7562 variable and thus made visible to the software being
7563 built during the compilation step.
7564 </para>
7565
7566 <para>
7567 Default initialization for <filename>LDFLAGS</filename>
7568 varies depending on what is being built:
7569 <itemizedlist>
7570 <listitem><para>
7571 <link linkend='var-TARGET_LDFLAGS'><filename>TARGET_LDFLAGS</filename></link>
7572 when building for the target
7573 </para></listitem>
7574 <listitem><para>
7575 <link linkend='var-BUILD_LDFLAGS'><filename>BUILD_LDFLAGS</filename></link>
7576 when building for the build host (i.e.
7577 <filename>-native</filename>)
7578 </para></listitem>
7579 <listitem><para>
7580 <link linkend='var-BUILDSDK_LDFLAGS'><filename>BUILDSDK_LDFLAGS</filename></link>
7581 when building for an SDK (i.e.
7582 <filename>nativesdk-</filename>)
7583 </para></listitem>
7584 </itemizedlist>
7585 </para>
7586 </glossdef>
7587 </glossentry>
7588
7589 <glossentry id='var-LEAD_SONAME'><glossterm>LEAD_SONAME</glossterm>
7590 <info>
7591 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."
7592 </info>
7593 <glossdef>
7594 <para role="glossdeffirst">
7595<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7596 Specifies the lead (or primary) compiled library file
7597 (<filename>.so</filename>) that the
7598 <link linkend='ref-classes-debian'><filename>debian</filename></link>
7599 class applies its naming policy to given a recipe that
7600 packages multiple libraries.
7601 </para>
7602
7603 <para>
7604 This variable works in conjunction with the
7605 <filename>debian</filename> class.
7606 </para>
7607 </glossdef>
7608 </glossentry>
7609
7610 <glossentry id='var-LIC_FILES_CHKSUM'><glossterm>LIC_FILES_CHKSUM</glossterm>
7611 <info>
7612 LIC_FILES_CHKSUM[doc] = "Checksums of the license text in the recipe source code."
7613 </info>
7614 <glossdef>
7615 <para role="glossdeffirst">
7616<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7617 Checksums of the license text in the recipe source code.
7618 </para>
7619
7620 <para>
7621 This variable tracks changes in license text of the source
7622 code files.
7623 If the license text is changed, it will trigger a build
7624 failure, which gives the developer an opportunity to review any
7625 license change.
7626 </para>
7627
7628 <para>
7629 This variable must be defined for all recipes (unless
7630 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
7631 is set to "CLOSED").</para>
7632 <para>For more information, see the
7633 "<link linkend='usingpoky-configuring-LIC_FILES_CHKSUM'>
7634 Tracking License Changes</link>" section.
7635 </para>
7636 </glossdef>
7637 </glossentry>
7638
7639 <glossentry id='var-LICENSE'><glossterm>LICENSE</glossterm>
7640 <info>
7641 LICENSE[doc] = "The list of source licenses for the recipe. The logical operators &amp;, '|', and parentheses can be used."
7642 </info>
7643 <glossdef>
7644 <para role="glossdeffirst">
7645<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7646 The list of source licenses for the recipe.
7647 Follow these rules:
7648 <itemizedlist>
7649 <listitem><para>Do not use spaces within individual
7650 license names.</para></listitem>
7651 <listitem><para>Separate license names using
7652 | (pipe) when there is a choice between licenses.
7653 </para></listitem>
7654 <listitem><para>Separate license names using
7655 &amp; (ampersand) when multiple licenses exist
7656 that cover different parts of the source.
7657 </para></listitem>
7658 <listitem><para>You can use spaces between license
7659 names.</para></listitem>
7660 <listitem><para>For standard licenses, use the names
7661 of the files in
7662 <filename>meta/files/common-licenses/</filename>
7663 or the
7664 <link linkend='var-SPDXLICENSEMAP'><filename>SPDXLICENSEMAP</filename></link>
7665 flag names defined in
7666 <filename>meta/conf/licenses.conf</filename>.
7667 </para></listitem>
7668 </itemizedlist>
7669 </para>
7670
7671 <para>
7672 Here are some examples:
7673 <literallayout class='monospaced'>
7674 LICENSE = "LGPLv2.1 | GPLv3"
7675 LICENSE = "MPL-1 &amp; LGPLv2.1"
7676 LICENSE = "GPLv2+"
7677 </literallayout>
7678 The first example is from the recipes for Qt, which the user
7679 may choose to distribute under either the LGPL version
7680 2.1 or GPL version 3.
7681 The second example is from Cairo where two licenses cover
7682 different parts of the source code.
7683 The final example is from <filename>sysstat</filename>,
7684 which presents a single license.
7685 </para>
7686
7687 <para>
7688 You can also specify licenses on a per-package basis to
7689 handle situations where components of the output have
7690 different licenses.
7691 For example, a piece of software whose code is
7692 licensed under GPLv2 but has accompanying documentation
7693 licensed under the GNU Free Documentation License 1.2 could
7694 be specified as follows:
7695 <literallayout class='monospaced'>
7696 LICENSE = "GFDL-1.2 &amp; GPLv2"
7697 LICENSE_${PN} = "GPLv2"
7698 LICENSE_${PN}-doc = "GFDL-1.2"
7699 </literallayout>
7700 </para>
7701 </glossdef>
7702 </glossentry>
7703
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05007704 <glossentry id='var-LICENSE_CREATE_PACKAGE'><glossterm>LICENSE_CREATE_PACKAGE</glossterm>
7705 <info>
7706 LICENSE_CREATE_PACKAGE[doc] = "Creates an extra package (i.e. ${PN}-lic) for each recipe and adds that package to the RRECOMMENDS+${PN}."
7707 </info>
7708 <glossdef>
7709 <para role="glossdeffirst">
7710<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7711 Setting <filename>LICENSE_CREATE_PACKAGE</filename>
7712 to "1" causes the OpenEmbedded build system to create
7713 an extra package (i.e.
7714 <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}-lic</filename>)
7715 for each recipe and to add those packages to the
7716 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link><filename>_${PN}</filename>.
7717 </para>
7718
7719 <para>
7720 The <filename>${PN}-lic</filename> package installs a
7721 directory in <filename>/usr/share/licenses</filename>
7722 named <filename>${PN}</filename>, which is the recipe's
7723 base name, and installs files in that directory that
7724 contain license and copyright information (i.e. copies of
7725 the appropriate license files from
7726 <filename>meta/common-licenses</filename> that match the
7727 licenses specified in the
7728 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
7729 variable of the recipe metadata and copies of files marked
7730 in
7731 <link linkend='var-LIC_FILES_CHKSUM'><filename>LIC_FILES_CHKSUM</filename></link>
7732 as containing license text).
7733 </para>
7734
7735 <para>
7736 For related information on providing license text, see the
7737 <link linkend='var-COPY_LIC_DIRS'><filename>COPY_LIC_DIRS</filename></link>
7738 variable, the
7739 <link linkend='var-COPY_LIC_MANIFEST'><filename>COPY_LIC_MANIFEST</filename></link>
7740 variable, and the
7741 "<ulink url='&YOCTO_DOCS_DEV_URL;#providing-license-text'>Providing License Text</ulink>"
7742 section in the Yocto Project Development Manual.
7743 </para>
7744 </glossdef>
7745 </glossentry>
7746
Patrick Williamsc124f4f2015-09-15 14:41:29 -05007747 <glossentry id='var-LICENSE_FLAGS'><glossterm>LICENSE_FLAGS</glossterm>
7748 <info>
7749 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."
7750 </info>
7751 <glossdef>
7752 <para role="glossdeffirst">
7753<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7754 Specifies additional flags for a recipe you must
7755 whitelist through
7756 <link linkend='var-LICENSE_FLAGS_WHITELIST'><filename>LICENSE_FLAGS_WHITELIST</filename></link>
7757 in order to allow the recipe to be built.
7758 When providing multiple flags, separate them with
7759 spaces.
7760 </para>
7761
7762 <para>
7763 This value is independent of
7764 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
7765 and is typically used to mark recipes that might
7766 require additional licenses in order to be used in a
7767 commercial product.
7768 For more information, see the
7769 "<link linkend='enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</link>"
7770 section.
7771 </para>
7772 </glossdef>
7773 </glossentry>
7774
7775 <glossentry id='var-LICENSE_FLAGS_WHITELIST'><glossterm>LICENSE_FLAGS_WHITELIST</glossterm>
7776 <info>
7777 LICENSE_FLAGS_WHITELIST[doc] = "Lists license flags that when specified in LICENSE_FLAGS within a recipe should not prevent that recipe from being built."
7778 </info>
7779 <glossdef>
7780 <para role="glossdeffirst">
7781<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7782 Lists license flags that when specified in
7783 <link linkend='var-LICENSE_FLAGS'><filename>LICENSE_FLAGS</filename></link>
7784 within a recipe should not prevent that recipe from being
7785 built.
7786 This practice is otherwise known as "whitelisting"
7787 license flags.
7788 For more information, see the
7789 <link linkend='enabling-commercially-licensed-recipes'>Enabling Commercially Licensed Recipes</link>"
7790 section.
7791 </para>
7792 </glossdef>
7793 </glossentry>
7794
7795 <glossentry id='var-LICENSE_PATH'><glossterm>LICENSE_PATH</glossterm>
7796 <info>
7797 LICENSE_PATH[doc] = "Path to additional licenses used during the build."
7798 </info>
7799 <glossdef>
7800 <para role="glossdeffirst">
7801<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7802 Path to additional licenses used during the build.
7803 By default, the OpenEmbedded build system uses <filename>COMMON_LICENSE_DIR</filename>
7804 to define the directory that holds common license text used during the build.
7805 The <filename>LICENSE_PATH</filename> variable allows you to extend that
7806 location to other areas that have additional licenses:
7807 <literallayout class='monospaced'>
7808 LICENSE_PATH += "<replaceable>path-to-additional-common-licenses</replaceable>"
7809 </literallayout>
7810 </para>
7811 </glossdef>
7812 </glossentry>
7813
7814 <glossentry id='var-LINUX_KERNEL_TYPE'><glossterm>LINUX_KERNEL_TYPE</glossterm>
7815 <info>
7816 LINUX_KERNEL_TYPE[doc] = "Defines the kernel type to be used in assembling the configuration."
7817 </info>
7818 <glossdef>
7819 <para role="glossdeffirst">
7820<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7821 Defines the kernel type to be used in assembling the
7822 configuration.
7823 The linux-yocto recipes define "standard", "tiny", and
7824 "preempt-rt" kernel types.
7825 See the
7826 "<ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#kernel-types'>Kernel Types</ulink>"
7827 section in the Yocto Project Linux Kernel Development
7828 Manual for more information on kernel types.
7829 </para>
7830
7831 <para>
7832 If you do not specify a
7833 <filename>LINUX_KERNEL_TYPE</filename>, it defaults to
7834 "standard".
7835 Together with
7836 <link linkend='var-KMACHINE'><filename>KMACHINE</filename></link>,
7837 the <filename>LINUX_KERNEL_TYPE</filename> variable
7838 defines the search
7839 arguments used by the kernel tools to find the appropriate
7840 description within the kernel
7841 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>
7842 with which to build out the sources and configuration.
7843 </para>
7844 </glossdef>
7845 </glossentry>
7846
7847 <glossentry id='var-LINUX_VERSION'><glossterm>LINUX_VERSION</glossterm>
7848 <info>
7849 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."
7850 </info>
7851 <glossdef>
7852 <para role="glossdeffirst">
7853<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7854 The Linux version from <filename>kernel.org</filename>
7855 on which the Linux kernel image being built using the
7856 OpenEmbedded build system is based.
7857 You define this variable in the kernel recipe.
7858 For example, the <filename>linux-yocto-3.4.bb</filename>
7859 kernel recipe found in
7860 <filename>meta/recipes-kernel/linux</filename>
7861 defines the variables as follows:
7862 <literallayout class='monospaced'>
7863 LINUX_VERSION ?= "3.4.24"
7864 </literallayout>
7865 </para>
7866
7867 <para>
7868 The <filename>LINUX_VERSION</filename> variable is used to
7869 define <link linkend='var-PV'><filename>PV</filename></link>
7870 for the recipe:
7871 <literallayout class='monospaced'>
7872 PV = "${LINUX_VERSION}+git${SRCPV}"
7873 </literallayout>
7874 </para>
7875 </glossdef>
7876 </glossentry>
7877
7878 <glossentry id='var-LINUX_VERSION_EXTENSION'><glossterm>LINUX_VERSION_EXTENSION</glossterm>
7879 <info>
7880 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."
7881 </info>
7882 <glossdef>
7883 <para role="glossdeffirst">
7884<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7885 A string extension compiled into the version
7886 string of the Linux kernel built with the OpenEmbedded
7887 build system.
7888 You define this variable in the kernel recipe.
7889 For example, the linux-yocto kernel recipes all define
7890 the variable as follows:
7891 <literallayout class='monospaced'>
7892 LINUX_VERSION_EXTENSION ?= "-yocto-${<link linkend='var-LINUX_KERNEL_TYPE'>LINUX_KERNEL_TYPE</link>}"
7893 </literallayout>
7894 </para>
7895
7896 <para>
7897 Defining this variable essentially sets the
7898 Linux kernel configuration item
7899 <filename>CONFIG_LOCALVERSION</filename>, which is visible
7900 through the <filename>uname</filename> command.
7901 Here is an example that shows the extension assuming it
7902 was set as previously shown:
7903 <literallayout class='monospaced'>
7904 $ uname -r
7905 3.7.0-rc8-custom
7906 </literallayout>
7907 </para>
7908 </glossdef>
7909 </glossentry>
7910
7911 <glossentry id='var-LOG_DIR'><glossterm>LOG_DIR</glossterm>
7912 <info>
7913 LOG_DIR[doc] = "Specifies the directory to which the OpenEmbedded build system writes overall log files. The default directory is ${TMPDIR}/log"
7914 </info>
7915 <glossdef>
7916 <para role="glossdeffirst">
7917<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7918 Specifies the directory to which the OpenEmbedded build
7919 system writes overall log files.
7920 The default directory is <filename>${TMPDIR}/log</filename>.
7921 </para>
7922
7923 <para>
7924 For the directory containing logs specific to each task,
7925 see the <link linkend='var-T'><filename>T</filename></link>
7926 variable.
7927 </para>
7928 </glossdef>
7929 </glossentry>
7930
7931 </glossdiv>
7932
7933 <glossdiv id='var-glossary-m'><title>M</title>
7934
7935 <glossentry id='var-MACHINE'><glossterm>MACHINE</glossterm>
7936 <info>
7937 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."
7938 </info>
7939 <glossdef>
7940 <para role="glossdeffirst">
7941<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7942 Specifies the target device for which the image is built.
7943 You define <filename>MACHINE</filename> in the
7944 <filename>local.conf</filename> file found in the
7945 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
7946 By default, <filename>MACHINE</filename> is set to
7947 "qemux86", which is an x86-based architecture machine to
7948 be emulated using QEMU:
7949 <literallayout class='monospaced'>
7950 MACHINE ?= "qemux86"
7951 </literallayout>
7952 </para>
7953
7954 <para>
7955 The variable corresponds to a machine configuration file of the
7956 same name, through which machine-specific configurations are set.
7957 Thus, when <filename>MACHINE</filename> is set to "qemux86" there
7958 exists the corresponding <filename>qemux86.conf</filename> machine
7959 configuration file, which can be found in the
7960 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
7961 in <filename>meta/conf/machine</filename>.
7962 </para>
7963
7964 <para>
7965 The list of machines supported by the Yocto Project as
7966 shipped include the following:
7967 <literallayout class='monospaced'>
7968 MACHINE ?= "qemuarm"
7969 MACHINE ?= "qemuarm64"
7970 MACHINE ?= "qemumips"
7971 MACHINE ?= "qemumips64"
7972 MACHINE ?= "qemuppc"
7973 MACHINE ?= "qemux86"
7974 MACHINE ?= "qemux86-64"
7975 MACHINE ?= "genericx86"
7976 MACHINE ?= "genericx86-64"
7977 MACHINE ?= "beaglebone"
7978 MACHINE ?= "mpc8315e-rdb"
7979 MACHINE ?= "edgerouter"
7980 </literallayout>
7981 The last five are Yocto Project reference hardware boards, which
7982 are provided in the <filename>meta-yocto-bsp</filename> layer.
7983 <note>Adding additional Board Support Package (BSP) layers
7984 to your configuration adds new possible settings for
7985 <filename>MACHINE</filename>.
7986 </note>
7987 </para>
7988 </glossdef>
7989 </glossentry>
7990
7991 <glossentry id='var-MACHINE_ARCH'><glossterm>MACHINE_ARCH</glossterm>
7992 <info>
7993 MACHINE_ARCH[doc] = "Specifies the name of the machine-specific architecture. This variable is set automatically from MACHINE or TUNE_PKGARCH."
7994 </info>
7995 <glossdef>
7996 <para role="glossdeffirst">
7997<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
7998 Specifies the name of the machine-specific architecture.
7999 This variable is set automatically from
8000 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>
8001 or
8002 <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>.
8003 You should not hand-edit the
8004 <filename>MACHINE_ARCH</filename> variable.
8005 </para>
8006 </glossdef>
8007 </glossentry>
8008
8009 <glossentry id='var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'><glossterm>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</glossterm>
8010 <info>
8011 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."
8012 </info>
8013 <glossdef>
8014 <para role="glossdeffirst">
8015<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8016 A list of required machine-specific packages to install as part of
8017 the image being built.
8018 The build process depends on these packages being present.
8019 Furthermore, because this is a "machine essential" variable, the list of
8020 packages are essential for the machine to boot.
8021 The impact of this variable affects images based on
8022 <filename>packagegroup-core-boot</filename>,
8023 including the <filename>core-image-minimal</filename> image.
8024 </para>
8025
8026 <para>
8027 This variable is similar to the
8028 <filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'>MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</link></filename>
8029 variable with the exception that the image being built has a build
8030 dependency on the variable's list of packages.
8031 In other words, the image will not build if a file in this list is not found.
8032 </para>
8033
8034 <para>
8035 As an example, suppose the machine for which you are building requires
8036 <filename>example-init</filename> to be run during boot to initialize the hardware.
8037 In this case, you would use the following in the machine's
8038 <filename>.conf</filename> configuration file:
8039 <literallayout class='monospaced'>
8040 MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "example-init"
8041 </literallayout>
8042 </para>
8043 </glossdef>
8044 </glossentry>
8045
8046 <glossentry id='var-MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS'><glossterm>MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS</glossterm>
8047 <info>
8048 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."
8049 </info>
8050 <glossdef>
8051 <para role="glossdeffirst">
8052<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8053 A list of recommended machine-specific packages to install as part of
8054 the image being built.
8055 The build process does not depend on these packages being present.
8056 However, because this is a "machine essential" variable, the list of
8057 packages are essential for the machine to boot.
8058 The impact of this variable affects images based on
8059 <filename>packagegroup-core-boot</filename>,
8060 including the <filename>core-image-minimal</filename> image.
8061 </para>
8062
8063 <para>
8064 This variable is similar to the
8065 <filename><link linkend='var-MACHINE_ESSENTIAL_EXTRA_RDEPENDS'>MACHINE_ESSENTIAL_EXTRA_RDEPENDS</link></filename>
8066 variable with the exception that the image being built does not have a build
8067 dependency on the variable's list of packages.
8068 In other words, the image will still build if a package in this list is not found.
8069 Typically, this variable is used to handle essential kernel modules, whose
8070 functionality may be selected to be built into the kernel rather than as a module,
8071 in which case a package will not be produced.
8072 </para>
8073
8074 <para>
8075 Consider an example where you have a custom kernel where a specific touchscreen
8076 driver is required for the machine to be usable.
8077 However, the driver can be built as a module or
8078 into the kernel depending on the kernel configuration.
8079 If the driver is built as a module, you want it to be installed.
8080 But, when the driver is built into the kernel, you still want the
8081 build to succeed.
8082 This variable sets up a "recommends" relationship so that in the latter case,
8083 the build will not fail due to the missing package.
8084 To accomplish this, assuming the package for the module was called
8085 <filename>kernel-module-ab123</filename>, you would use the
8086 following in the machine's <filename>.conf</filename> configuration
8087 file:
8088 <literallayout class='monospaced'>
8089 MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "kernel-module-ab123"
8090 </literallayout>
Patrick Williamsf1e5d692016-03-30 15:21:19 -05008091 <note>
8092 In this example, the
8093 <filename>kernel-module-ab123</filename> recipe
8094 needs to explicitly set its
8095 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
8096 variable to ensure that BitBake does not use the
8097 kernel recipe's
8098 <link linkend='var-PACKAGES_DYNAMIC'><filename>PACKAGES_DYNAMIC</filename></link>
8099 variable to satisfy the dependency.
8100 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008101 </para>
8102
8103 <para>
8104 Some examples of these machine essentials are flash, screen, keyboard, mouse,
8105 or touchscreen drivers (depending on the machine).
8106 </para>
8107 </glossdef>
8108 </glossentry>
8109
8110 <glossentry id='var-MACHINE_EXTRA_RDEPENDS'><glossterm>MACHINE_EXTRA_RDEPENDS</glossterm>
8111 <info>
8112 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."
8113 </info>
8114 <glossdef>
8115 <para role="glossdeffirst">
8116<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8117 A list of machine-specific packages to install as part of the
8118 image being built that are not essential for the machine to boot.
8119 However, the build process for more fully-featured images
8120 depends on the packages being present.
8121 </para>
8122
8123 <para>
8124 This variable affects all images based on
8125 <filename>packagegroup-base</filename>, which does not include the
8126 <filename>core-image-minimal</filename> or <filename>core-image-full-cmdline</filename>
8127 images.
8128 </para>
8129
8130 <para>
8131 The variable is similar to the
8132 <filename><link linkend='var-MACHINE_EXTRA_RRECOMMENDS'>MACHINE_EXTRA_RRECOMMENDS</link></filename>
8133 variable with the exception that the image being built has a build
8134 dependency on the variable's list of packages.
8135 In other words, the image will not build if a file in this list is not found.
8136 </para>
8137
8138 <para>
8139 An example is a machine that has WiFi capability but is not
8140 essential for the machine to boot the image.
8141 However, if you are building a more fully-featured image, you want to enable
8142 the WiFi.
8143 The package containing the firmware for the WiFi hardware is always
8144 expected to exist, so it is acceptable for the build process to depend upon
8145 finding the package.
8146 In this case, assuming the package for the firmware was called
8147 <filename>wifidriver-firmware</filename>, you would use the following in the
8148 <filename>.conf</filename> file for the machine:
8149 <literallayout class='monospaced'>
8150 MACHINE_EXTRA_RDEPENDS += "wifidriver-firmware"
8151 </literallayout>
8152 </para>
8153 </glossdef>
8154 </glossentry>
8155
8156 <glossentry id='var-MACHINE_EXTRA_RRECOMMENDS'><glossterm>MACHINE_EXTRA_RRECOMMENDS</glossterm>
8157 <info>
8158 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."
8159 </info>
8160 <glossdef>
8161 <para role="glossdeffirst">
8162<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8163 A list of machine-specific packages to install as part of the
8164 image being built that are not essential for booting the machine.
8165 The image being built has no build dependency on this list of packages.
8166 </para>
8167
8168 <para>
8169 This variable affects only images based on
8170 <filename>packagegroup-base</filename>, which does not include the
8171 <filename>core-image-minimal</filename> or <filename>core-image-full-cmdline</filename>
8172 images.
8173 </para>
8174
8175 <para>
8176 This variable is similar to the
8177 <filename><link linkend='var-MACHINE_EXTRA_RDEPENDS'>MACHINE_EXTRA_RDEPENDS</link></filename>
8178 variable with the exception that the image being built does not have a build
8179 dependency on the variable's list of packages.
8180 In other words, the image will build if a file in this list is not found.
8181 </para>
8182
8183 <para>
8184 An example is a machine that has WiFi capability but is not essential
8185 For the machine to boot the image.
8186 However, if you are building a more fully-featured image, you want to enable
8187 WiFi.
8188 In this case, the package containing the WiFi kernel module will not be produced
8189 if the WiFi driver is built into the kernel, in which case you still want the
8190 build to succeed instead of failing as a result of the package not being found.
8191 To accomplish this, assuming the package for the module was called
8192 <filename>kernel-module-examplewifi</filename>, you would use the
8193 following in the <filename>.conf</filename> file for the machine:
8194 <literallayout class='monospaced'>
8195 MACHINE_EXTRA_RRECOMMENDS += "kernel-module-examplewifi"
8196 </literallayout>
8197 </para>
8198 </glossdef>
8199 </glossentry>
8200
8201 <glossentry id='var-MACHINE_FEATURES'><glossterm>MACHINE_FEATURES</glossterm>
8202 <info>
8203 MACHINE_FEATURES[doc] = "Specifies the list of hardware features the MACHINE supports."
8204 </info>
8205 <glossdef>
8206 <para role="glossdeffirst">
8207<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8208 Specifies the list of hardware features the
8209 <link linkend='var-MACHINE'><filename>MACHINE</filename></link> is capable
8210 of supporting.
8211 For related information on enabling features, see the
8212 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>,
8213 <link linkend='var-COMBINED_FEATURES'><filename>COMBINED_FEATURES</filename></link>,
8214 and
8215 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
8216 variables.
8217 </para>
8218
8219 <para>
8220 For a list of hardware features supported by the Yocto
8221 Project as shipped, see the
8222 "<link linkend='ref-features-machine'>Machine Features</link>"
8223 section.
8224 </para>
8225 </glossdef>
8226 </glossentry>
8227
8228 <glossentry id='var-MACHINE_FEATURES_BACKFILL'><glossterm>MACHINE_FEATURES_BACKFILL</glossterm>
8229 <info>
8230 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."
8231 </info>
8232 <glossdef>
8233 <para role="glossdeffirst">
8234<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8235 Features to be added to
8236 <filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>
8237 if not also present in
8238 <filename><link linkend='var-MACHINE_FEATURES_BACKFILL_CONSIDERED'>MACHINE_FEATURES_BACKFILL_CONSIDERED</link></filename>.
8239 </para>
8240
8241 <para>
8242 This variable is set in the <filename>meta/conf/bitbake.conf</filename> file.
8243 It is not intended to be user-configurable.
8244 It is best to just reference the variable to see which machine features are
8245 being backfilled for all machine configurations.
8246 See the "<link linkend='ref-features-backfill'>Feature backfilling</link>" section for
8247 more information.
8248 </para>
8249 </glossdef>
8250 </glossentry>
8251
8252 <glossentry id='var-MACHINE_FEATURES_BACKFILL_CONSIDERED'><glossterm>MACHINE_FEATURES_BACKFILL_CONSIDERED</glossterm>
8253 <info>
8254 MACHINE_FEATURES_BACKFILL_CONSIDERED[doc] = "Features from MACHINE_FEATURES_BACKFILL that should not be backfilled (i.e. added to MACHINE_FEATURES) during the build."
8255 </info>
8256 <glossdef>
8257 <para role="glossdeffirst">
8258<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8259 Features from
8260 <filename><link linkend='var-MACHINE_FEATURES_BACKFILL'>MACHINE_FEATURES_BACKFILL</link></filename>
8261 that should not be backfilled (i.e. added to
8262 <filename><link linkend='var-MACHINE_FEATURES'>MACHINE_FEATURES</link></filename>)
8263 during the build.
8264 See the "<link linkend='ref-features-backfill'>Feature backfilling</link>" section for
8265 more information.
8266 </para>
8267 </glossdef>
8268 </glossentry>
8269
8270 <glossentry id='var-MACHINEOVERRIDES'><glossterm>MACHINEOVERRIDES</glossterm>
8271 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008272 MACHINEOVERRIDES[doc] = "A colon-separated list of overrides that apply to the current machine."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008273 </info>
8274 <glossdef>
8275 <para role="glossdeffirst">
8276<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008277 A colon-separated list of overrides that apply to the
8278 current machine.
8279 By default, this list includes the value of
8280 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008281 </para>
8282
8283 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008284 You can extend <filename>MACHINEOVERRIDES</filename>
8285 to add extra overrides that should apply to a machine.
8286 For example, all machines emulated in QEMU (e.g.
8287 <filename>qemuarm</filename>, <filename>qemux86</filename>,
8288 and so forth) include a file named
8289 <filename>meta/conf/machine/include/qemu.inc</filename>
8290 that prepends the following override to
8291 <filename>MACHINEOVERRIDES</filename>:
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008292 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008293 MACHINEOVERRIDES =. "qemuall:"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008294 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008295 This override allows variables to be overriden for all
8296 machines emulated in QEMU, like in the following example
8297 from the <filename>connman-conf</filename> recipe:
8298 <literallayout class='monospaced'>
8299 SRC_URI_append_qemuall = "file://wired.config \
8300 file://wired-setup \
8301 "
8302 </literallayout>
8303 The underlying mechanism behind
8304 <filename>MACHINEOVERRIDES</filename> is simply that it is
8305 included in the default value of
8306 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008307 </para>
8308 </glossdef>
8309 </glossentry>
8310
8311 <glossentry id='var-MAINTAINER'><glossterm>MAINTAINER</glossterm>
8312 <info>
8313 MAINTAINER[doc] = "The email address of the distribution maintainer."
8314 </info>
8315 <glossdef>
8316 <para role="glossdeffirst">
8317<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8318 The email address of the distribution maintainer.
8319 </para>
8320 </glossdef>
8321 </glossentry>
8322
8323 <glossentry id='var-MIRRORS'><glossterm>MIRRORS</glossterm>
8324 <info>
8325 MIRRORS[doc] = "Specifies additional paths from which the OpenEmbedded build system gets source code."
8326 </info>
8327 <glossdef>
8328 <para role="glossdeffirst">
8329<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8330 Specifies additional paths from which the OpenEmbedded
8331 build system gets source code.
8332 When the build system searches for source code, it first
8333 tries the local download directory.
8334 If that location fails, the build system tries locations
8335 defined by
8336 <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>,
8337 the upstream source, and then locations specified by
8338 <filename>MIRRORS</filename> in that order.
8339 </para>
8340
8341 <para>
8342 Assuming your distribution
8343 (<link linkend='var-DISTRO'><filename>DISTRO</filename></link>)
8344 is "poky", the default value for
8345 <filename>MIRRORS</filename> is defined in the
8346 <filename>conf/distro/poky.conf</filename> file in the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008347 <filename>meta-poky</filename> Git repository.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008348 </para>
8349 </glossdef>
8350 </glossentry>
8351
8352 <glossentry id='var-MLPREFIX'><glossterm>MLPREFIX</glossterm>
8353 <info>
8354 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."
8355 </info>
8356 <glossdef>
8357 <para role="glossdeffirst">
8358<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8359 Specifies a prefix has been added to
8360 <link linkend='var-PN'><filename>PN</filename></link> to create a special version
8361 of a recipe or package, such as a Multilib version.
8362 The variable is used in places where the prefix needs to be
8363 added to or removed from a the name (e.g. the
8364 <link linkend='var-BPN'><filename>BPN</filename></link> variable).
8365 <filename>MLPREFIX</filename> gets set when a prefix has been
8366 added to <filename>PN</filename>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008367 <note>
8368 The "ML" in <filename>MLPREFIX</filename> stands for
8369 "MultiLib".
8370 This representation is historical and comes from
8371 a time when <filename>nativesdk</filename> was a suffix
8372 rather than a prefix on the recipe name.
8373 When <filename>nativesdk</filename> was turned into a
8374 prefix, it made sense to set
8375 <filename>MLPREFIX</filename> for it as well.
8376 </note>
8377 </para>
8378
8379 <para>
8380 To help understand when <filename>MLPREFIX</filename>
8381 might be needed, consider when
8382 <link linkend='var-BBCLASSEXTEND'><filename>BBCLASSEXTEND</filename></link>
8383 is used to provide a <filename>nativesdk</filename> version
8384 of a recipe in addition to the target version.
8385 If that recipe declares build-time dependencies on tasks in
8386 other recipes by using
8387 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>,
8388 then a dependency on "foo" will automatically get rewritten
8389 to a dependency on "nativesdk-foo".
8390 However, dependencies like the following will not get
8391 rewritten automatically:
8392 <literallayout class='monospaced'>
8393 do_foo[depends] += "<replaceable>recipe</replaceable>:do_foo"
8394 </literallayout>
8395 If you want such a dependency to also get transformed,
8396 you can do the following:
8397 <literallayout class='monospaced'>
8398 do_foo[depends] += "${MLPREFIX}<replaceable>recipe</replaceable>:do_foo"
8399 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008400 </para>
8401 </glossdef>
8402 </glossentry>
8403
8404 <glossentry id='var-module_autoload'><glossterm>module_autoload</glossterm>
8405 <info>
8406 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."
8407 </info>
8408 <glossdef>
8409 <para role="glossdeffirst">
8410<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8411 This variable has been replaced by the
8412 <filename>KERNEL_MODULE_AUTOLOAD</filename> variable.
8413 You should replace all occurrences of
8414 <filename>module_autoload</filename> with additions to
8415 <filename>KERNEL_MODULE_AUTOLOAD</filename>, for example:
8416 <literallayout class='monospaced'>
8417 module_autoload_rfcomm = "rfcomm"
8418 </literallayout>
8419 </para>
8420
8421 <para>
8422 should now be replaced with:
8423 <literallayout class='monospaced'>
8424 KERNEL_MODULE_AUTOLOAD += "rfcomm"
8425 </literallayout>
8426 See the
8427 <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
8428 variable for more information.
8429 </para>
8430 </glossdef>
8431 </glossentry>
8432
8433 <glossentry id='var-module_conf'><glossterm>module_conf</glossterm>
8434 <info>
8435 module_conf[doc] = "Specifies modprobe.d syntax lines for inclusion in the /etc/modprobe.d/modname.conf file."
8436 </info>
8437 <glossdef>
8438 <para role="glossdeffirst">
8439<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8440 Specifies
8441 <ulink url='http://linux.die.net/man/5/modprobe.d'><filename>modprobe.d</filename></ulink>
8442 syntax lines for inclusion in the
8443 <filename>/etc/modprobe.d/modname.conf</filename> file.
8444 </para>
8445
8446 <para>
8447 You can use this variable anywhere that it can be
8448 recognized by the kernel recipe or out-of-tree kernel
8449 module recipe (e.g. a machine configuration file, a
8450 distribution configuration file, an append file for the
8451 recipe, or the recipe itself).
8452 If you use this variable, you must also be sure to list
8453 the module name in the
8454 <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
8455 variable.
8456 </para>
8457
8458 <para>
8459 Here is the general syntax:
8460 <literallayout class='monospaced'>
8461 module_conf_<replaceable>module_name</replaceable> = "<replaceable>modprobe.d-syntax</replaceable>"
8462 </literallayout>
8463 You must use the kernel module name override.
8464 </para>
8465
8466 <para>
8467 Run <filename>man modprobe.d</filename> in the shell to
8468 find out more information on the exact syntax
8469 you want to provide with <filename>module_conf</filename>.
8470 </para>
8471
8472 <para>
8473 Including <filename>module_conf</filename> causes the
8474 OpenEmbedded build system to populate the
8475 <filename>/etc/modprobe.d/modname.conf</filename>
8476 file with <filename>modprobe.d</filename> syntax lines.
8477 Here is an example that adds the options
8478 <filename>arg1</filename> and <filename>arg2</filename>
8479 to a module named <filename>mymodule</filename>:
8480 <literallayout class='monospaced'>
8481 module_conf_mymodule = "options mymodule arg1=val1 arg2=val2"
8482 </literallayout>
8483 </para>
8484
8485 <para>
8486 For information on how to specify kernel modules to
8487 auto-load on boot, see the
8488 <link linkend='var-KERNEL_MODULE_AUTOLOAD'><filename>KERNEL_MODULE_AUTOLOAD</filename></link>
8489 variable.
8490 </para>
8491 </glossdef>
8492 </glossentry>
8493
8494 <glossentry id='var-MODULE_IMAGE_BASE_NAME'><glossterm>MODULE_IMAGE_BASE_NAME</glossterm>
8495 <info>
8496 MODULE_IMAGE_BASE_NAME[doc] = "The base name of the kernel modules tarball."
8497 </info>
8498 <glossdef>
8499 <para role="glossdeffirst">
8500<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8501 The base name of the kernel modules tarball.
8502 This variable is set in the
8503 <link linkend='ref-classes-kernel'>kernel</link> class
8504 as follows:
8505 <literallayout class='monospaced'>
8506 MODULE_IMAGE_BASE_NAME ?= "modules-${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}"
8507 </literallayout>
8508 </para>
8509
8510 <para>
8511 See the
8512 <link linkend='var-PKGE'><filename>PKGE</filename></link>,
8513 <link linkend='var-PKGV'><filename>PKGV</filename></link>,
8514 <link linkend='var-PKGR'><filename>PKGR</filename></link>,
8515 <link linkend='var-MACHINE'><filename>MACHINE</filename></link>,
8516 and
8517 <link linkend='var-DATETIME'><filename>DATETIME</filename></link>
8518 variables for additional information.
8519 </para>
8520 </glossdef>
8521 </glossentry>
8522
8523 <glossentry id='var-MODULE_TARBALL_DEPLOY'><glossterm>MODULE_TARBALL_DEPLOY</glossterm>
8524 <info>
8525 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."
8526 </info>
8527 <glossdef>
8528 <para role="glossdeffirst">
8529<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8530 Controls creation of the <filename>modules-*.tgz</filename>
8531 file.
8532 Set this variable to "0" to disable creation of this
8533 file, which contains all of the kernel modules resulting
8534 from a kernel build.
8535 </para>
8536 </glossdef>
8537 </glossentry>
8538
Brad Bishop6e60e8b2018-02-01 10:27:11 -05008539<!--
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008540 <glossentry id='var-MULTIMACH_HOST_SYS'><glossterm>MULTIMACH_HOST_SYS</glossterm>
8541 <info>
8542 MULTIMACH_HOST_SYS[doc] = "Separates files for different machines such that you can build for multiple host machines using the same output directories."
8543 </info>
8544 <glossdef>
8545 <para role="glossdeffirst">
Brad Bishop6e60e8b2018-02-01 10:27:11 -05008546-->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008547<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Brad Bishop6e60e8b2018-02-01 10:27:11 -05008548<!--
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008549 Serves the same purpose as
8550 <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
8551 but for the "HOST" system, in situations that involve a
8552 "HOST" and a "TARGET" system.
8553 See the
8554 <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
8555 variable for more information.
8556 </para>
8557
8558 <para>
8559 The default value of this variable is:
8560 <literallayout class='monospaced'>
8561 ${PACKAGE_ARCH}${HOST_VENDOR}-${HOST_OS}
8562 </literallayout>
8563 </para>
8564 </glossdef>
8565 </glossentry>
Brad Bishop6e60e8b2018-02-01 10:27:11 -05008566-->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008567
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008568 <glossentry id='var-MULTIMACH_TARGET_SYS'><glossterm>MULTIMACH_TARGET_SYS</glossterm>
8569 <info>
8570 MULTIMACH_TARGET_SYS[doc] = "Separates files for different machines such that you can build for multiple target machines using the same output directories."
8571 </info>
8572 <glossdef>
8573 <para role="glossdeffirst">
8574<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008575 Uniquely identifies the type of the target system for
8576 which packages are being built.
8577 This variable allows output for different types of target
8578 systems to be put into different subdirectories of the same
8579 output directory.
8580 </para>
8581
8582 <para>
8583 The default value of this variable is:
8584 <literallayout class='monospaced'>
8585 ${PACKAGE_ARCH}${TARGET_VENDOR}-${TARGET_OS}
8586 </literallayout>
8587 Some classes (e.g.
8588 <link linkend='ref-classes-cross-canadian'><filename>cross-canadian</filename></link>)
8589 modify the <filename>MULTIMACH_TARGET_SYS</filename> value.
8590 </para>
8591
8592 <para>
8593 See the
8594 <link linkend='var-STAMP'><filename>STAMP</filename></link>
8595 variable for an example.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008596 See the
8597 <link linkend='var-STAGING_DIR_TARGET'><filename>STAGING_DIR_TARGET</filename></link>
8598 variable for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008599 </para>
8600 </glossdef>
8601 </glossentry>
8602
8603 </glossdiv>
8604
8605 <glossdiv id='var-glossary-n'><title>N</title>
8606
8607 <glossentry id='var-NATIVELSBSTRING'><glossterm>NATIVELSBSTRING</glossterm>
8608 <info>
8609 NATIVELSBSTRING[doc] = "A string identifying the host distribution."
8610 </info>
8611 <glossdef>
8612 <para role="glossdeffirst">
8613<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8614 A string identifying the host distribution.
8615 Strings consist of the host distributor ID
8616 followed by the release, as reported by the
8617 <filename>lsb_release</filename> tool
8618 or as read from <filename>/etc/lsb-release</filename>.
8619 For example, when running a build on Ubuntu 12.10, the value
8620 is "Ubuntu-12.10".
8621 If this information is unable to be determined, the value
8622 resolves to "Unknown".
8623 </para>
8624
8625 <para>
8626 This variable is used by default to isolate native shared
8627 state packages for different distributions (e.g. to avoid
8628 problems with <filename>glibc</filename> version
8629 incompatibilities).
8630 Additionally, the variable is checked against
8631 <link linkend='var-SANITY_TESTED_DISTROS'><filename>SANITY_TESTED_DISTROS</filename></link>
8632 if that variable is set.
8633 </para>
8634 </glossdef>
8635 </glossentry>
8636
8637 <glossentry id='var-NM'><glossterm>NM</glossterm>
8638 <info>
8639 NM[doc] = "Minimal command and arguments to run 'nm'."
8640 </info>
8641 <glossdef>
8642 <para role="glossdeffirst">
8643<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8644 The minimal command and arguments to run
8645 <filename>nm</filename>.
8646 </para>
8647 </glossdef>
8648 </glossentry>
8649
8650 <glossentry id='var-NO_RECOMMENDATIONS'><glossterm>NO_RECOMMENDATIONS</glossterm>
8651 <info>
8652 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."
8653 </info>
8654 <glossdef>
8655 <para role="glossdeffirst">
8656<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8657 Prevents installation of all "recommended-only" packages.
8658 Recommended-only packages are packages installed only
8659 through the
8660 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
8661 variable).
8662 Setting the <filename>NO_RECOMMENDATIONS</filename> variable
8663 to "1" turns this feature on:
8664 <literallayout class='monospaced'>
8665 NO_RECOMMENDATIONS = "1"
8666 </literallayout>
8667 </para>
8668
8669 <para>
8670 You can set this variable globally in your
8671 <filename>local.conf</filename> file or you can attach it to
8672 a specific image recipe by using the recipe name override:
8673 <literallayout class='monospaced'>
Brad Bishop6e60e8b2018-02-01 10:27:11 -05008674 NO_RECOMMENDATIONS_pn-<replaceable>target_image</replaceable> = "1"
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008675 </literallayout>
8676 </para>
8677
8678 <para>
8679 It is important to realize that if you choose to not install
8680 packages using this variable and some other packages are
8681 dependent on them (i.e. listed in a recipe's
8682 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
8683 variable), the OpenEmbedded build system ignores your
8684 request and will install the packages to avoid dependency
8685 errors.
8686 <note>
8687 Some recommended packages might be required for certain
8688 system functionality, such as kernel modules.
8689 It is up to you to add packages with the
8690 <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
8691 variable.
8692 </note>
8693 </para>
8694
8695 <para>
8696 Support for this variable exists only when using the
8697 IPK and RPM packaging backend.
8698 Support does not exist for DEB.
8699 </para>
8700
8701 <para>
8702 See the
8703 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
8704 and the
8705 <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
8706 variables for related information.
8707 </para>
8708 </glossdef>
8709 </glossentry>
8710
8711 <glossentry id='var-NOHDD'><glossterm>NOHDD</glossterm>
8712 <info>
8713 NOHDD[doc] = "Causes the OpenEmbedded build system to skip building the .hddimg image."
8714 </info>
8715 <glossdef>
8716 <para role="glossdeffirst">
8717<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8718 Causes the OpenEmbedded build system to skip building the
8719 <filename>.hddimg</filename> image.
8720 The <filename>NOHDD</filename> variable is used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008721 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008722 class.
8723 Set the variable to "1" to prevent the
8724 <filename>.hddimg</filename> image from being built.
8725 </para>
8726 </glossdef>
8727 </glossentry>
8728
8729 <glossentry id='var-NOISO'><glossterm>NOISO</glossterm>
8730 <info>
8731 NOISO[doc] = "Causes the OpenEmbedded build system to skip building the ISO image."
8732 </info>
8733 <glossdef>
8734 <para role="glossdeffirst">
8735<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8736 Causes the OpenEmbedded build system to skip building the
8737 ISO image.
8738 The <filename>NOISO</filename> variable is used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008739 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008740 class.
8741 Set the variable to "1" to prevent the ISO image from
8742 being built.
8743 To enable building an ISO image, set the variable to "0".
8744 </para>
8745 </glossdef>
8746 </glossentry>
8747
8748 </glossdiv>
8749
8750 <glossdiv id='var-glossary-o'><title>O</title>
8751
8752 <glossentry id='var-OBJCOPY'><glossterm>OBJCOPY</glossterm>
8753 <info>
8754 OBJCOPY[doc] = "Minimal command and arguments to run 'objcopy'."
8755 </info>
8756 <glossdef>
8757 <para role="glossdeffirst">
8758<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8759 The minimal command and arguments to run
8760 <filename>objcopy</filename>.
8761 </para>
8762 </glossdef>
8763 </glossentry>
8764
8765 <glossentry id='var-OBJDUMP'><glossterm>OBJDUMP</glossterm>
8766 <info>
8767 OBJDUMP[doc] = "Minimal command and arguments to run 'objdump'."
8768 </info>
8769 <glossdef>
8770 <para role="glossdeffirst">
8771<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8772 The minimal command and arguments to run
8773 <filename>objdump</filename>.
8774 </para>
8775 </glossdef>
8776 </glossentry>
8777
8778 <glossentry id='var-OE_BINCONFIG_EXTRA_MANGLE'><glossterm>OE_BINCONFIG_EXTRA_MANGLE</glossterm>
8779 <info>
8780 OE_BINCONFIG_EXTRA_MANGLE[doc] = "When a recipe inherits the binconfig.bbclass class, this variable specifies additional arguments passed to the "sed" command."
8781 </info>
8782 <glossdef>
8783 <para role="glossdeffirst">
8784<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8785 When inheriting the
8786 <link linkend='ref-classes-binconfig'><filename>binconfig</filename></link>
8787 class, this variable
8788 specifies additional arguments passed to the "sed" command.
8789 The sed command alters any paths in configuration scripts
8790 that have been set up during compilation.
8791 Inheriting this class results in all paths in these scripts
8792 being changed to point into the
8793 <filename>sysroots/</filename> directory so that all builds
8794 that use the script will use the correct directories
8795 for the cross compiling layout.
8796 </para>
8797
8798 <para>
8799 See the <filename>meta/classes/binconfig.bbclass</filename>
8800 in the
8801 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
8802 for details on how this class applies these additional
8803 sed command arguments.
8804 For general information on the
8805 <filename>binconfig.bbclass</filename> class, see the
8806 "<link linkend='ref-classes-binconfig'>Binary Configuration Scripts - <filename>binconfig.bbclass</filename></link>"
8807 section.
8808 </para>
8809 </glossdef>
8810 </glossentry>
8811
8812 <glossentry id='var-OE_IMPORTS'><glossterm>OE_IMPORTS</glossterm>
8813 <info>
8814 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."
8815 </info>
8816 <glossdef>
8817 <para role="glossdeffirst">
8818<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8819 An internal variable used to tell the OpenEmbedded build
8820 system what Python modules to import for every Python
8821 function run by the system.
8822 </para>
8823
8824 <note>
8825 Do not set this variable.
8826 It is for internal use only.
8827 </note>
8828 </glossdef>
8829 </glossentry>
8830
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05008831 <glossentry id='var-OE_INIT_ENV_SCRIPT'><glossterm>OE_INIT_ENV_SCRIPT</glossterm>
8832 <info>
8833 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."
8834 </info>
8835 <glossdef>
8836 <para role="glossdeffirst">
8837<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8838 The name of the build environment setup script for the
8839 purposes of setting up the environment within the
8840 extensible SDK.
8841 The default value is "oe-init-build-env".
8842 </para>
8843
8844 <para>
8845 If you use a custom script to set up your build
8846 environment, set the
8847 <filename>OE_INIT_ENV_SCRIPT</filename> variable to its
8848 name.
8849 </para>
8850 </glossdef>
8851 </glossentry>
8852
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008853 <glossentry id='var-OE_TERMINAL'><glossterm>OE_TERMINAL</glossterm>
8854 <info>
8855 OE_TERMINAL[doc] = "Controls how the OpenEmbedded build system spawns interactive terminals on the host development system."
8856 </info>
8857 <glossdef>
8858 <para role="glossdeffirst">
8859<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8860 Controls how the OpenEmbedded build system spawns
8861 interactive terminals on the host development system
8862 (e.g. using the BitBake command with the
8863 <filename>-c devshell</filename> command-line option).
8864 For more information, see the
8865 "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-appdev-devshell'>Using a Development Shell</ulink>" section
8866 in the Yocto Project Development Manual.
8867 </para>
8868
8869 <para>
8870 You can use the following values for the
8871 <filename>OE_TERMINAL</filename> variable:
8872 <literallayout class='monospaced'>
8873 auto
8874 gnome
8875 xfce
8876 rxvt
8877 screen
8878 konsole
8879 none
8880 </literallayout>
8881 </para>
8882 </glossdef>
8883 </glossentry>
8884
8885 <glossentry id='var-OEROOT'><glossterm>OEROOT</glossterm>
8886 <info>
8887 OEROOT[doc] = "The directory from which the top-level build environment setup script is sourced."
8888 </info>
8889 <glossdef>
8890 <para role="glossdeffirst">
8891<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8892 The directory from which the top-level build environment
8893 setup script is sourced.
8894 The Yocto Project makes two top-level build environment
8895 setup scripts available:
8896 <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
8897 and
8898 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>.
8899 When you run one of these scripts, the
8900 <filename>OEROOT</filename> variable resolves to the
8901 directory that contains the script.
8902 </para>
8903
8904 <para>
8905 For additional information on how this variable is used,
8906 see the initialization scripts.
8907 </para>
8908 </glossdef>
8909 </glossentry>
8910
8911 <glossentry id='var-OLDEST_KERNEL'><glossterm>OLDEST_KERNEL</glossterm>
8912 <info>
8913 OLDEST_KERNEL[doc] = "Declares the oldest version of the Linux kernel that the produced binaries must support."
8914 </info>
8915 <glossdef>
8916 <para role="glossdeffirst">
8917<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
8918 Declares the oldest version of the Linux kernel that the
8919 produced binaries must support.
8920 This variable is passed into the build of the Embedded
8921 GNU C Library (<filename>glibc</filename>).
8922 </para>
8923
8924 <para>
8925 The default for this variable comes from the
8926 <filename>meta/conf/bitbake.conf</filename> configuration
8927 file.
8928 You can override this default by setting the variable
8929 in a custom distribution configuration file.
8930 </para>
8931 </glossdef>
8932 </glossentry>
8933
8934 <glossentry id='var-OVERRIDES'><glossterm>OVERRIDES</glossterm>
8935 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008936 OVERRIDES[doc] = "A colon-separated list of overrides that currently apply."
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008937 </info>
8938 <glossdef>
8939 <para role="glossdeffirst">
8940<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008941 A colon-separated list of overrides that currently apply.
8942 Overrides are a BitBake mechanism that allows variables to
8943 be selectively overridden at the end of parsing.
8944 The set of overrides in <filename>OVERRIDES</filename>
8945 represents the "state" during building, which includes
8946 the current recipe being built, the machine for which
8947 it is being built, and so forth.
8948 </para>
8949
8950 <para>
8951 As an example, if the string "an-override" appears as an
8952 element in the colon-separated list in
8953 <filename>OVERRIDES</filename>, then the following
8954 assignment will override <filename>FOO</filename> with the
8955 value "overridden" at the end of parsing:
8956 <literallayout class='monospaced'>
8957 FOO_an-override = "overridden"
8958 </literallayout>
8959 See the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008960 "<ulink url='&YOCTO_DOCS_BB_URL;#conditional-syntax-overrides'>Conditional Syntax (Overrides)</ulink>"
Patrick Williamsc0f7c042017-02-23 20:41:17 -06008961 section in the BitBake User Manual for more information on
8962 the overrides mechanism.
8963 </para>
8964
8965 <para>
8966 The default value of <filename>OVERRIDES</filename>
8967 includes the values of the
8968 <link linkend='var-CLASSOVERRIDE'><filename>CLASSOVERRIDE</filename></link>,
8969 <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>,
8970 and
8971 <link linkend='var-DISTROOVERRIDES'><filename>DISTROOVERRIDES</filename></link>
8972 variables.
8973 Another important override included by default is
8974 <filename>pn-${PN}</filename>.
8975 This override allows variables to be set for a single
8976 recipe within configuration (<filename>.conf</filename>)
8977 files.
8978 Here is an example:
8979 <literallayout class='monospaced'>
8980 FOO_pn-myrecipe = "myrecipe-specific value"
8981 </literallayout>
8982 <note><title>Tip</title>
8983 An easy way to see what overrides apply is to search for
8984 <filename>OVERRIDES</filename> in the output of the
8985 <filename>bitbake -e</filename> command.
8986 See the
8987 "<link linkend='usingpoky-debugging-viewing-variable-values'>Viewing Variable Values</link>"
8988 section for more information.
8989 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05008990 </para>
8991 </glossdef>
8992 </glossentry>
8993 </glossdiv>
8994
8995 <glossdiv id='var-glossary-p'><title>P</title>
8996
8997 <glossentry id='var-P'><glossterm>P</glossterm>
8998 <info>
8999 P[doc] = "The recipe name and version. P is comprised of ${PN}-${PV}."
9000 </info>
9001 <glossdef>
9002 <para role="glossdeffirst">
9003<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9004 The recipe name and version.
9005 <filename>P</filename> is comprised of the following:
9006 <literallayout class='monospaced'>
9007 ${PN}-${PV}
9008 </literallayout>
9009 </para>
9010 </glossdef>
9011 </glossentry>
9012
9013 <glossentry id='var-PACKAGE_ARCH'><glossterm>PACKAGE_ARCH</glossterm>
9014 <info>
9015 PACKAGE_ARCH[doc] = "The architecture of the resulting package or packages."
9016 </info>
9017 <glossdef>
9018 <para role="glossdeffirst">
9019<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9020 The architecture of the resulting package or packages.
9021 </para>
9022
9023 <para>
9024 By default, the value of this variable is set to
9025 <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>
9026 when building for the target,
9027 <filename>BUILD_ARCH</filename> when building for the
9028 build host and "${SDK_ARCH}-${SDKPKGSUFFIX}" when building
9029 for the SDK.
9030 However, if your recipe's output packages are built
9031 specific to the target machine rather than general for
9032 the architecture of the machine, you should set
9033 <filename>PACKAGE_ARCH</filename> to the value of
9034 <link linkend='var-MACHINE_ARCH'><filename>MACHINE_ARCH</filename></link>
9035 in the recipe as follows:
9036 <literallayout class='monospaced'>
9037 PACKAGE_ARCH = "${MACHINE_ARCH}"
9038 </literallayout>
9039 </para>
9040 </glossdef>
9041 </glossentry>
9042
9043 <glossentry id='var-PACKAGE_ARCHS'><glossterm>PACKAGE_ARCHS</glossterm>
9044 <info>
9045 PACKAGE_ARCHS[doc] = "A list of architectures compatible with the given target in order of priority."
9046 </info>
9047 <glossdef>
9048 <para role="glossdeffirst">
9049<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9050 Specifies a list of architectures compatible with
9051 the target machine.
9052 This variable is set automatically and should not
9053 normally be hand-edited.
9054 Entries are separated using spaces and listed in order
9055 of priority.
9056 The default value for
9057 <filename>PACKAGE_ARCHS</filename> is "all any noarch
9058 ${PACKAGE_EXTRA_ARCHS} ${MACHINE_ARCH}".
9059 </para>
9060 </glossdef>
9061 </glossentry>
9062
9063 <glossentry id='var-PACKAGE_BEFORE_PN'><glossterm>PACKAGE_BEFORE_PN</glossterm>
9064 <info>
9065 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."
9066 </info>
9067 <glossdef>
9068 <para role="glossdeffirst">
9069<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9070 Enables easily adding packages to
9071 <filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
9072 before <filename>${<link linkend='var-PN'>PN</link>}</filename>
9073 so that those added packages can pick up files that would normally be
9074 included in the default package.
9075 </para>
9076 </glossdef>
9077 </glossentry>
9078
9079 <glossentry id='var-PACKAGE_CLASSES'><glossterm>PACKAGE_CLASSES</glossterm>
9080 <info>
9081 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."
9082 </info>
9083 <glossdef>
9084 <para role="glossdeffirst">
9085<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9086 This variable, which is set in the
9087 <filename>local.conf</filename> configuration file found in
9088 the <filename>conf</filename> folder of the
9089 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
9090 specifies the package manager the OpenEmbedded build system
9091 uses when packaging data.
9092 </para>
9093
9094 <para>
9095 You can provide one or more of the following arguments for
9096 the variable:
9097 <literallayout class='monospaced'>
9098 PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk package_tar"
9099 </literallayout>
9100 <note><title>Warning</title>
9101 While it is a legal option, the
9102 <filename>package_tar</filename> class is broken
9103 and is not supported.
9104 It is recommended that you do not use it.
9105 </note>
9106 The build system uses only the first argument in the list
9107 as the package manager when creating your image or SDK.
9108 However, packages will be created using any additional
9109 packaging classes you specify.
9110 For example, if you use the following in your
9111 <filename>local.conf</filename> file:
9112 <literallayout class='monospaced'>
9113 PACKAGE_CLASSES ?= "package_ipk"
9114 </literallayout>
9115 The OpenEmbedded build system uses the IPK package manager
9116 to create your image or SDK.
9117 </para>
9118
9119 <para>
9120 For information on packaging and build performance effects
9121 as a result of the package manager in use, see the
9122 "<link linkend='ref-classes-package'><filename>package.bbclass</filename></link>"
9123 section.
9124 </para>
9125 </glossdef>
9126 </glossentry>
9127
9128 <glossentry id='var-PACKAGE_DEBUG_SPLIT_STYLE'><glossterm>PACKAGE_DEBUG_SPLIT_STYLE</glossterm>
9129 <info>
9130 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)."
9131 </info>
9132 <glossdef>
9133 <para role="glossdeffirst">
9134<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9135 Determines how to split up the binary and debug information
9136 when creating <filename>*-dbg</filename> packages to be
9137 used with the GNU Project Debugger (GDB).
9138 </para>
9139
9140 <para>
9141 With the
9142 <filename>PACKAGE_DEBUG_SPLIT_STYLE</filename> variable,
9143 you can control where debug information, which can include
9144 or exclude source files, is stored:
9145 <itemizedlist>
9146 <listitem><para>
9147 ".debug": Debug symbol files are placed next
9148 to the binary in a <filename>.debug</filename>
9149 directory on the target.
9150 For example, if a binary is installed into
9151 <filename>/bin</filename>, the corresponding debug
9152 symbol files are installed in
9153 <filename>/bin/.debug</filename>.
9154 Source files are placed in
9155 <filename>/usr/src/debug</filename>.
9156 This is the default behavior.
9157 </para></listitem>
9158 <listitem><para>
9159 "debug-file-directory": Debug symbol files are
9160 placed under <filename>/usr/lib/debug</filename>
9161 on the target, and separated by the path from where
9162 the binary is installed.
9163 For example, if a binary is installed in
9164 <filename>/bin</filename>, the corresponding debug
9165 symbols are installed in
9166 <filename>/usr/lib/debug/bin</filename>.
9167 Source files are placed in
9168 <filename>/usr/src/debug</filename>.
9169 </para></listitem>
9170 <listitem><para>
9171 "debug-without-src": The same behavior as
9172 ".debug" previously described with the exception
9173 that no source files are installed.
9174 </para></listitem>.
9175 </itemizedlist>
9176 </para>
9177
9178 <para>
9179 You can find out more about debugging using GDB by reading
9180 the
9181 "<ulink url='&YOCTO_DOCS_DEV_URL;#platdev-gdb-remotedebug'>Debugging With the GNU Project Debugger (GDB) Remotely</ulink>"
9182 section in the Yocto Project Development Manual.
9183 </para>
9184 </glossdef>
9185 </glossentry>
9186
Patrick Williamsf1e5d692016-03-30 15:21:19 -05009187 <glossentry id='var-PACKAGE_EXCLUDE_COMPLEMENTARY'><glossterm>PACKAGE_EXCLUDE_COMPLEMENTARY</glossterm>
9188 <info>
9189 PACKAGE_EXCLUDE_COMPLEMENTARY[doc] = "Prevents specific packages from being installed when you are installing complementary packages."
9190 </info>
9191 <glossdef>
9192 <para role="glossdeffirst">
9193<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9194 Prevents specific packages from being installed when
9195 you are installing complementary packages.
9196 </para>
9197
9198 <para>
9199 You might find that you want to prevent installing certain
9200 packages when you are installing complementary packages.
9201 For example, if you are using
9202 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>
9203 to install <filename>dev-pkgs</filename>, you might not want
9204 to install all packages from a particular multilib.
9205 If you find yourself in this situation, you can use the
9206 <filename>PACKAGE_EXCLUDE_COMPLEMENTARY</filename> variable
9207 to specify regular expressions to match the packages you
9208 want to exclude.
9209 </para>
9210 </glossdef>
9211 </glossentry>
9212
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009213 <glossentry id='var-PACKAGE_EXCLUDE'><glossterm>PACKAGE_EXCLUDE</glossterm>
9214 <info>
9215 PACKAGE_EXCLUDE[doc] = "Packages to exclude from the installation. If a listed package is required, an error is generated."
9216 </info>
9217 <glossdef>
9218 <para role="glossdeffirst">
9219<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9220 Lists packages that should not be installed into an image.
9221 For example:
9222 <literallayout class='monospaced'>
9223 PACKAGE_EXCLUDE = "<replaceable>package_name</replaceable> <replaceable>package_name</replaceable> <replaceable>package_name</replaceable> ..."
9224 </literallayout>
9225 </para>
9226
9227 <para>
9228 You can set this variable globally in your
9229 <filename>local.conf</filename> file or you can attach it to
9230 a specific image recipe by using the recipe name override:
9231 <literallayout class='monospaced'>
9232 PACKAGE_EXCLUDE_pn-<replaceable>target_image</replaceable> = "<replaceable>package_name</replaceable>"
9233 </literallayout>
9234 </para>
9235
9236 <para>
9237 If you choose to not install
9238 a package using this variable and some other package is
9239 dependent on it (i.e. listed in a recipe's
9240 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
9241 variable), the OpenEmbedded build system generates a fatal
9242 installation error.
9243 Because the build system halts the process with a fatal
9244 error, you can use the variable with an iterative
9245 development process to remove specific components from a
9246 system.
9247 </para>
9248
9249 <para>
9250 Support for this variable exists only when using the
9251 IPK and RPM packaging backend.
9252 Support does not exist for DEB.
9253 </para>
9254
9255 <para>
9256 See the
9257 <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>
9258 and the
9259 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>
9260 variables for related information.
9261 </para>
9262 </glossdef>
9263 </glossentry>
9264
9265 <glossentry id='var-PACKAGE_EXTRA_ARCHS'><glossterm>PACKAGE_EXTRA_ARCHS</glossterm>
9266 <info>
9267 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."
9268 </info>
9269 <glossdef>
9270 <para role="glossdeffirst">
9271<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9272 Specifies the list of architectures compatible with the device CPU.
9273 This variable is useful when you build for several different devices that use
9274 miscellaneous processors such as XScale and ARM926-EJS.
9275 </para>
9276 </glossdef>
9277 </glossentry>
9278
Patrick Williamsf1e5d692016-03-30 15:21:19 -05009279 <glossentry id='var-PACKAGE_FEED_ARCHS'><glossterm>PACKAGE_FEED_ARCHS</glossterm>
9280 <info>
9281 PACKAGE_FEED_ARCHS[doc] = "Specifies user-defined package architectures when constructing package feed URIs."
9282 </info>
9283 <glossdef>
9284 <para role="glossdeffirst">
9285<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9286 Specifies the package architectures used as part of the
9287 package feed URIs during the build.
9288 The <filename>PACKAGE_FEED_ARCHS</filename> variable is
9289 appended to the final package feed URI, which is constructed
9290 using the
9291 <link linkend='var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></link>
9292 and
9293 <link linkend='var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></link>
9294 variables.
9295 </para>
9296
9297 <para>
9298 Consider the following example where the
9299 <filename>PACKAGE_FEED_URIS</filename>,
9300 <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
9301 <filename>PACKAGE_FEED_ARCHS</filename> variables are
9302 defined in your <filename>local.conf</filename> file:
9303 <literallayout class='monospaced'>
9304 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
9305 https://example.com/packagerepos/updates"
9306 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
9307 PACKAGE_FEED_ARCHS = "all core2-64"
9308 </literallayout>
9309 Given these settings, the resulting package feeds are
9310 as follows:
9311 <literallayout class='monospaced'>
9312 https://example.com/packagerepos/release/rpm/all
9313 https://example.com/packagerepos/release/rpm/core2-64
9314 https://example.com/packagerepos/release/rpm-dev/all
9315 https://example.com/packagerepos/release/rpm-dev/core2-64
9316 https://example.com/packagerepos/updates/rpm/all
9317 https://example.com/packagerepos/updates/rpm/core2-64
9318 https://example.com/packagerepos/updates/rpm-dev/all
9319 https://example.com/packagerepos/updates/rpm-dev/core2-64
9320 </literallayout>
9321 </para>
9322 </glossdef>
9323 </glossentry>
9324
9325 <glossentry id='var-PACKAGE_FEED_BASE_PATHS'><glossterm>PACKAGE_FEED_BASE_PATHS</glossterm>
9326 <info>
9327 PACKAGE_FEED_BASE_PATHS[doc] = "Specifies base path used when constructing package feed URIs."
9328 </info>
9329 <glossdef>
9330 <para role="glossdeffirst">
9331<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9332 Specifies the base path used when constructing package feed
9333 URIs.
9334 The <filename>PACKAGE_FEED_BASE_PATHS</filename> variable
9335 makes up the middle portion of a package feed URI used
9336 by the OpenEmbedded build system.
9337 The base path lies between the
9338 <link linkend='var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></link>
9339 and
9340 <link linkend='var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></link>
9341 variables.
9342 </para>
9343
9344 <para>
9345 Consider the following example where the
9346 <filename>PACKAGE_FEED_URIS</filename>,
9347 <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
9348 <filename>PACKAGE_FEED_ARCHS</filename> variables are
9349 defined in your <filename>local.conf</filename> file:
9350 <literallayout class='monospaced'>
9351 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
9352 https://example.com/packagerepos/updates"
9353 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
9354 PACKAGE_FEED_ARCHS = "all core2-64"
9355 </literallayout>
9356 Given these settings, the resulting package feeds are
9357 as follows:
9358 <literallayout class='monospaced'>
9359 https://example.com/packagerepos/release/rpm/all
9360 https://example.com/packagerepos/release/rpm/core2-64
9361 https://example.com/packagerepos/release/rpm-dev/all
9362 https://example.com/packagerepos/release/rpm-dev/core2-64
9363 https://example.com/packagerepos/updates/rpm/all
9364 https://example.com/packagerepos/updates/rpm/core2-64
9365 https://example.com/packagerepos/updates/rpm-dev/all
9366 https://example.com/packagerepos/updates/rpm-dev/core2-64
9367 </literallayout>
9368 </para>
9369 </glossdef>
9370 </glossentry>
9371
9372 <glossentry id='var-PACKAGE_FEED_URIS'><glossterm>PACKAGE_FEED_URIS</glossterm>
9373 <info>
9374 PACKAGE_FEED_URIS[doc] = "Specifies the front portion of the package feed URI used by the OpenEmbedded build system."
9375 </info>
9376 <glossdef>
9377 <para role="glossdeffirst">
9378<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9379 Specifies the front portion of the package feed URI
9380 used by the OpenEmbedded build system.
9381 Each final package feed URI is comprised of
9382 <filename>PACKAGE_FEED_URIS</filename>,
9383 <link linkend='var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></link>,
9384 and
9385 <link linkend='var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></link>
9386 variables.
9387 </para>
9388
9389 <para>
9390 Consider the following example where the
9391 <filename>PACKAGE_FEED_URIS</filename>,
9392 <filename>PACKAGE_FEED_BASE_PATHS</filename>, and
9393 <filename>PACKAGE_FEED_ARCHS</filename> variables are
9394 defined in your <filename>local.conf</filename> file:
9395 <literallayout class='monospaced'>
9396 PACKAGE_FEED_URIS = "https://example.com/packagerepos/release \
9397 https://example.com/packagerepos/updates"
9398 PACKAGE_FEED_BASE_PATHS = "rpm rpm-dev"
9399 PACKAGE_FEED_ARCHS = "all core2-64"
9400 </literallayout>
9401 Given these settings, the resulting package feeds are
9402 as follows:
9403 <literallayout class='monospaced'>
9404 https://example.com/packagerepos/release/rpm/all
9405 https://example.com/packagerepos/release/rpm/core2-64
9406 https://example.com/packagerepos/release/rpm-dev/all
9407 https://example.com/packagerepos/release/rpm-dev/core2-64
9408 https://example.com/packagerepos/updates/rpm/all
9409 https://example.com/packagerepos/updates/rpm/core2-64
9410 https://example.com/packagerepos/updates/rpm-dev/all
9411 https://example.com/packagerepos/updates/rpm-dev/core2-64
9412 </literallayout>
9413 </para>
9414 </glossdef>
9415 </glossentry>
9416
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009417 <glossentry id='var-PACKAGE_GROUP'><glossterm>PACKAGE_GROUP</glossterm>
9418 <info>
9419 PACKAGE_GROUP[doc] = "Defines one or more packages to include in an image when a specific item is included in IMAGE_FEATURES."
9420 </info>
9421 <glossdef>
9422 <para role="glossdeffirst">
9423<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9424 The <filename>PACKAGE_GROUP</filename> variable has been
9425 renamed to
9426 <link linkend='var-FEATURE_PACKAGES'><filename>FEATURE_PACKAGES</filename></link>.
9427 See the variable description for
9428 <filename>FEATURE_PACKAGES</filename> for information.
9429 </para>
9430
9431 <para>
9432 If if you use the <filename>PACKAGE_GROUP</filename>
9433 variable, the OpenEmbedded build system issues a warning
9434 message.
9435 </para>
9436 </glossdef>
9437 </glossentry>
9438
9439 <glossentry id='var-PACKAGE_INSTALL'><glossterm>PACKAGE_INSTALL</glossterm>
9440 <info>
9441 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."
9442 </info>
9443 <glossdef>
9444 <para role="glossdeffirst">
9445<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9446 The final list of packages passed to the package manager
9447 for installation into the image.
9448 </para>
9449
9450 <para>
9451 Because the package manager controls actual installation
9452 of all packages, the list of packages passed using
9453 <filename>PACKAGE_INSTALL</filename> is not the final list
9454 of packages that are actually installed.
9455 This variable is internal to the image construction
9456 code.
9457 Consequently, in general, you should use the
9458 <link linkend='var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></link>
9459 variable to specify packages for installation.
9460 The exception to this is when working with
9461 the
9462 <link linkend='images-core-image-minimal-initramfs'><filename>core-image-minimal-initramfs</filename></link>
9463 image.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05009464 When working with an initial RAM filesystem (initramfs)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009465 image, use the <filename>PACKAGE_INSTALL</filename>
9466 variable.
Brad Bishop37a0e4d2017-12-04 01:01:44 -05009467 For information on creating an initramfs, see the
9468 "<ulink url='&YOCTO_DOCS_DEV_URL;#building-an-initramfs-image'>Building an Initial RAM Filesystem (initramfs) Image</ulink>"
9469 section in the Yocto Project Development Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009470 </para>
9471 </glossdef>
9472 </glossentry>
9473
9474 <glossentry id='var-PACKAGE_INSTALL_ATTEMPTONLY'><glossterm>PACKAGE_INSTALL_ATTEMPTONLY</glossterm>
9475 <info>
9476 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."
9477 </info>
9478 <glossdef>
9479 <para role="glossdeffirst">
9480<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9481 Specifies a list of packages the OpenEmbedded build
9482 system attempts to install when creating an image.
9483 If a listed package fails to install, the build system
9484 does not generate an error.
9485 This variable is generally not user-defined.
9486 </para>
9487 </glossdef>
9488 </glossentry>
9489
9490 <glossentry id='var-PACKAGE_PREPROCESS_FUNCS'><glossterm>PACKAGE_PREPROCESS_FUNCS</glossterm>
9491 <info>
9492 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."
9493 </info>
9494 <glossdef>
9495 <para role="glossdeffirst">
9496<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9497 Specifies a list of functions run to pre-process the
9498 <link linkend='var-PKGD'><filename>PKGD</filename></link>
9499 directory prior to splitting the files out to individual
9500 packages.
9501 </para>
9502 </glossdef>
9503 </glossentry>
9504
Brad Bishop6e60e8b2018-02-01 10:27:11 -05009505 <glossentry id='var-PACKAGE_WRITE_DEPS'><glossterm>PACKAGE_WRITE_DEPS</glossterm>
9506 <info>
9507 PACKAGE_WRITE_DEPS[doc] = "Specifies post-installation and pre-installation script dependencies on native/cross tools."
9508 </info>
9509 <glossdef>
9510 <para role="glossdeffirst">
9511<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9512 Specifies a list of dependencies for post-installation and
9513 pre-installation scripts on native/cross tools.
9514 If your post-installation or pre-installation script can
9515 execute at rootfs creation time rather than on the
9516 target but depends on a native tool in order to execute,
9517 you need to list the tools in
9518 <filename>PACKAGE_WRITE_DEPENDS</filename>.
9519 </para>
9520
9521 <para>
9522 For information on running post-installation scripts, see
9523 the
9524 "<ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-post-installation-scripts'>Post-Installation Scripts</ulink>"
9525 section in the Yocto Project Development Manual.
9526 </para>
9527 </glossdef>
9528 </glossentry>
9529
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009530 <glossentry id='var-PACKAGECONFIG'><glossterm>PACKAGECONFIG</glossterm>
9531 <info>
9532 PACKAGECONFIG[doc] = "This variable provides a means of enabling or disabling features of a recipe on a per-recipe basis."
9533 </info>
9534 <glossdef>
9535 <para role="glossdeffirst">
9536<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9537 This variable provides a means of enabling or disabling
9538 features of a recipe on a per-recipe basis.
9539 <filename>PACKAGECONFIG</filename> blocks are defined
9540 in recipes when you specify features and then arguments
9541 that define feature behaviors.
9542 Here is the basic block structure:
9543 <literallayout class='monospaced'>
9544 PACKAGECONFIG ??= "f1 f2 f3 ..."
9545 PACKAGECONFIG[f1] = "--with-f1,--without-f1,build-deps-f1,rt-deps-f1"
9546 PACKAGECONFIG[f2] = "--with-f2,--without-f2,build-deps-f2,rt-deps-f2"
9547 PACKAGECONFIG[f3] = "--with-f3,--without-f3,build-deps-f3,rt-deps-f3"
9548 </literallayout>
9549 </para>
9550
9551 <para>
9552 The <filename>PACKAGECONFIG</filename>
9553 variable itself specifies a space-separated list of the
9554 features to enable.
9555 Following the features, you can determine the behavior of
9556 each feature by providing up to four order-dependent
9557 arguments, which are separated by commas.
9558 You can omit any argument you like but must retain the
9559 separating commas.
9560 The order is important and specifies the following:
9561 <orderedlist>
9562 <listitem><para>Extra arguments
9563 that should be added to the configure script
9564 argument list
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009565 (<link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
9566 or
9567 <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009568 if the feature is enabled.</para></listitem>
9569 <listitem><para>Extra arguments
9570 that should be added to <filename>EXTRA_OECONF</filename>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009571 or <filename>PACKAGECONFIG_CONFARGS</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009572 if the feature is disabled.
9573 </para></listitem>
9574 <listitem><para>Additional build dependencies
9575 (<link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>)
9576 that should be added if the feature is enabled.
9577 </para></listitem>
9578 <listitem><para>Additional runtime dependencies
9579 (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
9580 that should be added if the feature is enabled.
9581 </para></listitem>
9582 </orderedlist>
9583 </para>
9584
9585 <para>
9586 Consider the following
9587 <filename>PACKAGECONFIG</filename> block taken from the
9588 <filename>librsvg</filename> recipe.
9589 In this example the feature is <filename>croco</filename>,
9590 which has three arguments that determine the feature's
9591 behavior.
9592 <literallayout class='monospaced'>
9593 PACKAGECONFIG ??= "croco"
9594 PACKAGECONFIG[croco] = "--with-croco,--without-croco,libcroco"
9595 </literallayout>
9596 The <filename>--with-croco</filename> and
9597 <filename>libcroco</filename> arguments apply only if
9598 the feature is enabled.
9599 In this case, <filename>--with-croco</filename> is
9600 added to the configure script argument list and
9601 <filename>libcroco</filename> is added to
9602 <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename>.
9603 On the other hand, if the feature is disabled say through
9604 a <filename>.bbappend</filename> file in another layer, then
9605 the second argument <filename>--without-croco</filename> is
9606 added to the configure script rather than
9607 <filename>--with-croco</filename>.
9608 </para>
9609
9610 <para>
9611 The basic <filename>PACKAGECONFIG</filename> structure
9612 previously described holds true regardless of whether you
9613 are creating a block or changing a block.
9614 When creating a block, use the structure inside your
9615 recipe.
9616 </para>
9617
9618 <para>
9619 If you want to change an existing
9620 <filename>PACKAGECONFIG</filename> block, you can do so
9621 one of two ways:
9622 <itemizedlist>
9623 <listitem><para><emphasis>Append file:</emphasis>
9624 Create an append file named
9625 <replaceable>recipename</replaceable><filename>.bbappend</filename>
9626 in your layer and override the value of
9627 <filename>PACKAGECONFIG</filename>.
9628 You can either completely override the variable:
9629 <literallayout class='monospaced'>
9630 PACKAGECONFIG="f4 f5"
9631 </literallayout>
9632 Or, you can just append the variable:
9633 <literallayout class='monospaced'>
9634 PACKAGECONFIG_append = " f4"
9635 </literallayout></para></listitem>
9636 <listitem><para><emphasis>Configuration file:</emphasis>
9637 This method is identical to changing the block
9638 through an append file except you edit your
9639 <filename>local.conf</filename> or
9640 <filename><replaceable>mydistro</replaceable>.conf</filename> file.
9641 As with append files previously described,
9642 you can either completely override the variable:
9643 <literallayout class='monospaced'>
9644 PACKAGECONFIG_pn-<replaceable>recipename</replaceable>="f4 f5"
9645 </literallayout>
9646 Or, you can just amend the variable:
9647 <literallayout class='monospaced'>
9648 PACKAGECONFIG_append_pn-<replaceable>recipename</replaceable> = " f4"
9649 </literallayout></para></listitem>
9650 </itemizedlist>
9651 </para>
9652 </glossdef>
9653 </glossentry>
9654
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009655 <glossentry id='var-PACKAGECONFIG_CONFARGS'><glossterm>PACKAGECONFIG_CONFARGS</glossterm>
9656 <info>
9657 PACKAGECONFIG_CONFARGS[doc] = "A space-separated list of configuration options generated from PACKAGECONFIG."
9658 </info>
9659 <glossdef>
9660 <para role="glossdeffirst">
9661<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9662 A space-separated list of configuration options generated
9663 from the
9664 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
9665 setting.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009666 </para>
9667
9668 <para>
Brad Bishop6e60e8b2018-02-01 10:27:11 -05009669 Classes such as
9670 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
9671 and
9672 <link linkend='ref-classes-cmake'><filename>cmake</filename></link>
9673 use <filename>PACKAGECONFIG_CONFARGS</filename> to pass
9674 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
9675 options to <filename>configure</filename> and
9676 <filename>cmake</filename>, respectively.
9677 If you are using
9678 <filename>PACKAGECONFIG</filename> but not a class that
9679 handles the <filename>do_configure</filename> task, then
9680 you need to use
9681 <filename>PACKAGECONFIG_CONFARGS</filename> appropriately.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009682 </para>
9683
9684 <para>
9685 For additional information, see the
9686 <link linkend='var-PACKAGECONFIG'><filename>PACKAGECONFIG</filename></link>
9687 variable.
9688 </para>
9689 </glossdef>
9690 </glossentry>
9691
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009692 <glossentry id='var-PACKAGEGROUP_DISABLE_COMPLEMENTARY'><glossterm>PACKAGEGROUP_DISABLE_COMPLEMENTARY</glossterm>
9693 <info>
9694 PACKAGEGROUP_DISABLE_COMPLEMENTARY[doc] = "Prevents automatic creation of the normal complementary packages such as -dev and -dbg in a packagegroup recipe."
9695 </info>
9696 <glossdef>
9697 <para role="glossdeffirst">
9698<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9699 For recipes inheriting the
9700 <link linkend='ref-classes-packagegroup'><filename>packagegroup</filename></link>
9701 class, setting
9702 <filename>PACKAGEGROUP_DISABLE_COMPLEMENTARY</filename> to
9703 "1" specifies that the normal complementary packages
9704 (i.e. <filename>-dev</filename>,
9705 <filename>-dbg</filename>, and so forth) should not be
9706 automatically created by the
9707 <filename>packagegroup</filename> recipe, which is the
9708 default behavior.
9709 </para>
9710 </glossdef>
9711 </glossentry>
9712
9713 <glossentry id='var-PACKAGES'><glossterm>PACKAGES</glossterm>
9714 <info>
9715 PACKAGES[doc] = "The list of packages to be created from the recipe."
9716 </info>
9717 <glossdef>
9718 <para role="glossdeffirst">
9719<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9720 The list of packages to be created from the recipe.
9721 The default value is the following:
9722 <literallayout class='monospaced'>
9723 ${PN}-dbg ${PN}-staticdev ${PN}-dev ${PN}-doc ${PN}-locale ${PACKAGE_BEFORE_PN} ${PN}
9724 </literallayout>
9725 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009726
9727 <para>
9728 During packaging, the
9729 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
9730 task goes through <filename>PACKAGES</filename> and uses
9731 the
9732 <link linkend='var-FILES'><filename>FILES</filename></link>
9733 variable corresponding to each package to assign files to
9734 the package.
9735 If a file matches the <filename>FILES</filename> variable
9736 for more than one package in <filename>PACKAGES</filename>,
9737 it will be assigned to the earliest (leftmost) package.
9738 </para>
9739
9740 <para>
9741 Packages in the variable's list that are empty (i.e. where
9742 none of the patterns in
9743 <filename>FILES_</filename><replaceable>pkg</replaceable>
9744 match any files installed by the
9745 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
9746 task) are not generated, unless generation is forced through
9747 the
9748 <link linkend='var-ALLOW_EMPTY'><filename>ALLOW_EMPTY</filename></link>
9749 variable.
9750 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009751 </glossdef>
9752 </glossentry>
9753
9754 <glossentry id='var-PACKAGES_DYNAMIC'><glossterm>PACKAGES_DYNAMIC</glossterm>
9755 <info>
9756 PACKAGES_DYNAMIC[doc] = "A promise that your recipe satisfies runtime dependencies for optional modules that are found in other recipes."
9757 </info>
9758 <glossdef>
9759 <para role="glossdeffirst">
9760<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9761 A promise that your recipe satisfies runtime dependencies
9762 for optional modules that are found in other recipes.
9763 <filename>PACKAGES_DYNAMIC</filename>
9764 does not actually satisfy the dependencies, it only states that
9765 they should be satisfied.
9766 For example, if a hard, runtime dependency
9767 (<link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>)
9768 of another package is satisfied
9769 at build time through the <filename>PACKAGES_DYNAMIC</filename>
9770 variable, but a package with the module name is never actually
9771 produced, then the other package will be broken.
9772 Thus, if you attempt to include that package in an image,
9773 you will get a dependency failure from the packaging system
9774 during the
9775 <link linkend='ref-tasks-rootfs'><filename>do_rootfs</filename></link>
9776 task.
9777 </para>
9778
9779 <para>
9780 Typically, if there is a chance that such a situation can
9781 occur and the package that is not created is valid
9782 without the dependency being satisfied, then you should use
9783 <link linkend='var-RRECOMMENDS'><filename>RRECOMMENDS</filename></link>
9784 (a soft runtime dependency) instead of
9785 <filename>RDEPENDS</filename>.
9786 </para>
9787
9788 <para>
9789 For an example of how to use the <filename>PACKAGES_DYNAMIC</filename>
9790 variable when you are splitting packages, see the
9791 "<ulink url='&YOCTO_DOCS_DEV_URL;#handling-optional-module-packaging'>Handling Optional Module Packaging</ulink>" section
9792 in the Yocto Project Development Manual.
9793 </para>
9794 </glossdef>
9795 </glossentry>
9796
9797 <glossentry id='var-PACKAGESPLITFUNCS'><glossterm>PACKAGESPLITFUNCS</glossterm>
9798 <info>
9799 PACKAGESPLITFUNCS[doc] = "Specifies a list of functions run to perform additional splitting of files into individual packages."
9800 </info>
9801 <glossdef>
9802 <para role="glossdeffirst">
9803<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9804 Specifies a list of functions run to perform additional
9805 splitting of files into individual packages.
9806 Recipes can either prepend to this variable or prepend
9807 to the <filename>populate_packages</filename> function
9808 in order to perform additional package splitting.
9809 In either case, the function should set
9810 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>,
9811 <link linkend='var-FILES'><filename>FILES</filename></link>,
9812 <link linkend='var-RDEPENDS'><filename>RDEPENDS</filename></link>
9813 and other packaging variables appropriately in order to
9814 perform the desired splitting.
9815 </para>
9816 </glossdef>
9817 </glossentry>
9818
9819 <glossentry id='var-PARALLEL_MAKE'><glossterm>PARALLEL_MAKE</glossterm>
9820 <info>
9821 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."
9822 </info>
9823 <glossdef>
9824 <para role="glossdeffirst">
9825<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9826 Extra options passed to the <filename>make</filename>
9827 command during the
9828 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>
9829 task in order to specify parallel compilation on the local
9830 build host.
9831 This variable is usually in the form "-j <replaceable>x</replaceable>",
9832 where <replaceable>x</replaceable> represents the maximum
9833 number of parallel threads <filename>make</filename> can
9834 run.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009835 <note><title>Caution</title>
9836 In order for <filename>PARALLEL_MAKE</filename> to be
9837 effective, <filename>make</filename> must be called
9838 with
9839 <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
9840 An easy way to ensure this is to use the
9841 <filename>oe_runmake</filename> function.
9842 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009843 </para>
9844
9845 <para>
9846 By default, the OpenEmbedded build system automatically
9847 sets this variable to be equal to the number of cores the
9848 build system uses.
9849 <note>
9850 If the software being built experiences dependency
9851 issues during the <filename>do_compile</filename>
9852 task that result in race conditions, you can clear
9853 the <filename>PARALLEL_MAKE</filename> variable within
9854 the recipe as a workaround.
9855 For information on addressing race conditions, see the
9856 "<ulink url='&YOCTO_DOCS_DEV_URL;#debugging-parallel-make-races'>Debugging Parallel Make Races</ulink>"
9857 section in the Yocto Project Development Manual.
9858 </note>
9859 For single socket systems (i.e. one CPU), you should not
9860 have to override this variable to gain optimal parallelism
9861 during builds.
9862 However, if you have very large systems that employ
9863 multiple physical CPUs, you might want to make sure the
9864 <filename>PARALLEL_MAKE</filename> variable is not
9865 set higher than "-j 20".
9866 </para>
9867
9868 <para>
9869 For more information on speeding up builds, see the
9870 "<link linkend='speeding-up-the-build'>Speeding Up the Build</link>"
9871 section.
9872 </para>
9873 </glossdef>
9874 </glossentry>
9875
9876 <glossentry id='var-PARALLEL_MAKEINST'><glossterm>PARALLEL_MAKEINST</glossterm>
9877 <info>
9878 PARALLEL_MAKEINST[doc] = "Extra options passed to the make install command during the do_install task in order to specify parallel installation."
9879 </info>
9880 <glossdef>
9881 <para role="glossdeffirst">
9882<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9883 Extra options passed to the
9884 <filename>make install</filename> command during the
9885 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
9886 task in order to specify parallel installation.
9887 This variable defaults to the value of
9888 <link linkend='var-PARALLEL_MAKE'><filename>PARALLEL_MAKE</filename></link>.
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009889 <note><title>Notes and Cautions</title>
9890 <para>In order for <filename>PARALLEL_MAKEINST</filename>
9891 to be
9892 effective, <filename>make</filename> must be called
9893 with
9894 <filename>${</filename><link linkend='var-EXTRA_OEMAKE'><filename>EXTRA_OEMAKE</filename></link><filename>}</filename>.
9895 An easy way to ensure this is to use the
9896 <filename>oe_runmake</filename> function.</para>
9897
9898 <para>If the software being built experiences
9899 dependency issues during the
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009900 <filename>do_install</filename> task that result in
9901 race conditions, you can clear the
9902 <filename>PARALLEL_MAKEINST</filename> variable within
9903 the recipe as a workaround.
9904 For information on addressing race conditions, see the
9905 "<ulink url='&YOCTO_DOCS_DEV_URL;#debugging-parallel-make-races'>Debugging Parallel Make Races</ulink>"
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009906 section in the Yocto Project Development Manual.</para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009907 </note>
9908 </para>
9909 </glossdef>
9910 </glossentry>
9911
9912 <glossentry id='var-PATCHRESOLVE'><glossterm>PATCHRESOLVE</glossterm>
9913 <info>
9914 PATCHRESOLVE[doc] = "Enable or disable interactive patch resolution."
9915 </info>
9916 <glossdef>
9917 <para role="glossdeffirst">
9918<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9919 Determines the action to take when a patch fails.
9920 You can set this variable to one of two values: "noop" and
9921 "user".
9922 </para>
9923
9924 <para>
9925 The default value of "noop" causes the build to simply fail
9926 when the OpenEmbedded build system cannot successfully
9927 apply a patch.
9928 Setting the value to "user" causes the build system to
9929 launch a shell and places you in the right location so that
9930 you can manually resolve the conflicts.
9931 </para>
9932
9933 <para>
9934 Set this variable in your
9935 <filename>local.conf</filename> file.
9936 </para>
9937 </glossdef>
9938 </glossentry>
9939
9940 <glossentry id='var-PATCHTOOL'><glossterm>PATCHTOOL</glossterm>
9941 <info>
9942 PATCHTOOL[doc] = "Specifies the utility used to apply patches for a recipe during do_patch."
9943 </info>
9944 <glossdef>
9945 <para role="glossdeffirst">
9946<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9947 Specifies the utility used to apply patches for a recipe
9948 during the
9949 <link linkend='ref-tasks-patch'><filename>do_patch</filename></link>
9950 task.
9951 You can specify one of three utilities: "patch", "quilt", or
9952 "git".
9953 The default utility used is "quilt" except for the
9954 quilt-native recipe itself.
9955 Because the quilt tool is not available at the
9956 time quilt-native is being patched, it uses "patch".
9957 </para>
9958
9959 <para>
9960 If you wish to use an alternative patching tool, set the
9961 variable in the recipe using one of the following:
9962 <literallayout class='monospaced'>
9963 PATCHTOOL = "patch"
9964 PATCHTOOL = "quilt"
9965 PATCHTOOL = "git"
9966 </literallayout>
9967 </para>
9968 </glossdef>
9969 </glossentry>
9970
9971 <glossentry id='var-PE'><glossterm>PE</glossterm>
9972 <info>
9973 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."
9974 </info>
9975 <glossdef>
9976 <para role="glossdeffirst">
9977<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
9978 The epoch of the recipe.
9979 By default, this variable is unset.
9980 The variable is used to make upgrades possible when the
9981 versioning scheme changes in some backwards incompatible
9982 way.
9983 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -06009984
9985 <para>
9986 <filename>PE</filename> is the default value of the
9987 <link linkend='var-PKGE'><filename>PKGE</filename></link>
9988 variable.
9989 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -05009990 </glossdef>
9991 </glossentry>
9992
9993 <glossentry id='var-PF'><glossterm>PF</glossterm>
9994 <info>
9995 PF[doc] = "Specifies the recipe or package name and includes all version and revision numbers. This variable is comprised of ${PN}-${EXTENDPE}${PV}-${PR}."
9996 </info>
9997 <glossdef>
9998 <para role="glossdeffirst">
9999<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10000 Specifies the recipe or package name and includes all version and revision
10001 numbers (i.e. <filename>glibc-2.13-r20+svnr15508/</filename> and
10002 <filename>bash-4.2-r1/</filename>).
10003 This variable is comprised of the following:
10004 <literallayout class='monospaced'>
10005 ${<link linkend='var-PN'>PN</link>}-${<link linkend='var-EXTENDPE'>EXTENDPE</link>}${<link linkend='var-PV'>PV</link>}-${<link linkend='var-PR'>PR</link>}
10006 </literallayout>
10007 </para>
10008 </glossdef>
10009 </glossentry>
10010
10011 <glossentry id='var-PIXBUF_PACKAGES'><glossterm>PIXBUF_PACKAGES</glossterm>
10012 <info>
10013 PIXBUF_PACKAGES[doc] = "When a recipe inherits the pixbufcache class, this variable identifies packages that contain the pixbuf loaders used with gdk-pixbuf."
10014 </info>
10015 <glossdef>
10016 <para role="glossdeffirst">
10017<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10018 When inheriting the
10019 <link linkend='ref-classes-pixbufcache'><filename>pixbufcache</filename></link>
10020 class, this variable identifies packages that contain
10021 the pixbuf loaders used with
10022 <filename>gdk-pixbuf</filename>.
10023 By default, the <filename>pixbufcache</filename> class
10024 assumes that the loaders are in the recipe's main package
10025 (i.e. <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>).
10026 Use this variable if the loaders you need are in a package
10027 other than that main package.
10028 </para>
10029 </glossdef>
10030 </glossentry>
10031
10032 <glossentry id='var-PKG'><glossterm>PKG</glossterm>
10033 <info>
10034 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."
10035 </info>
10036 <glossdef>
10037 <para role="glossdeffirst">
10038<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10039 The name of the resulting package created by the
10040 OpenEmbedded build system.
10041 <note>
10042 When using the <filename>PKG</filename> variable, you
10043 must use a package name override.
10044 </note>
10045 </para>
10046
10047 <para>
10048 For example, when the
10049 <link linkend='ref-classes-debian'><filename>debian</filename></link>
10050 class renames the output package, it does so by setting
10051 <filename>PKG_<replaceable>packagename</replaceable></filename>.
10052 </para>
10053 </glossdef>
10054 </glossentry>
10055
10056 <glossentry id='var-PKG_CONFIG_PATH'><glossterm>PKG_CONFIG_PATH</glossterm>
10057 <info>
10058 PKG_CONFIG_PATH[doc] = "Path to pkg-config files for the current build context."
10059 </info>
10060 <glossdef>
10061 <para role="glossdeffirst">
10062<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10063 The path to <filename>pkg-config</filename> files for the
10064 current build context.
10065 <filename>pkg-config</filename> reads this variable
10066 from the environment.
10067 </para>
10068 </glossdef>
10069 </glossentry>
10070
10071 <glossentry id='var-PKGD'><glossterm>PKGD</glossterm>
10072 <info>
10073 PKGD[doc] = "Points to the destination directory for files to be packaged before they are split into individual packages."
10074 </info>
10075 <glossdef>
10076 <para role="glossdeffirst">
10077<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10078 Points to the destination directory for files to be
10079 packaged before they are split into individual packages.
10080 This directory defaults to the following:
10081 <literallayout class='monospaced'>
10082 ${WORKDIR}/package
10083 </literallayout>
10084 </para>
10085
10086 <para>
10087 Do not change this default.
10088 </para>
10089 </glossdef>
10090 </glossentry>
10091
10092 <glossentry id='var-PKGDATA_DIR'><glossterm>PKGDATA_DIR</glossterm>
10093 <info>
10094 PKGDATA_DIR[doc] = "Points to a shared, global-state directory that holds data generated during the packaging process."
10095 </info>
10096 <glossdef>
10097 <para role="glossdeffirst">
10098<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10099 Points to a shared, global-state directory that holds data
10100 generated during the packaging process.
10101 During the packaging process, the
10102 <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
10103 task packages data for each recipe and installs it into
10104 this temporary, shared area.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010105 This directory defaults to the following, which you should
10106 not change:
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010107 <literallayout class='monospaced'>
10108 ${STAGING_DIR_HOST}/pkgdata
10109 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010110 For examples of how this data is used, see the
10111 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
10112 section and the
10113 "<link linkend='viewing-package-information-with-oe-pkgdata-util'>Viewing Package Information with <filename>oe-pkgdata-util</filename></link>"
10114 section.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010115 </para>
10116 </glossdef>
10117 </glossentry>
10118
10119 <glossentry id='var-PKGDEST'><glossterm>PKGDEST</glossterm>
10120 <info>
10121 PKGDEST[doc] = "Points to the parent directory for files to be packaged after they have been split into individual packages."
10122 </info>
10123 <glossdef>
10124 <para role="glossdeffirst">
10125<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10126 Points to the parent directory for files to be packaged
10127 after they have been split into individual packages.
10128 This directory defaults to the following:
10129 <literallayout class='monospaced'>
10130 ${WORKDIR}/packages-split
10131 </literallayout>
10132 </para>
10133
10134 <para>
10135 Under this directory, the build system creates
10136 directories for each package specified in
10137 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>.
10138 Do not change this default.
10139 </para>
10140 </glossdef>
10141 </glossentry>
10142
10143 <glossentry id='var-PKGDESTWORK'><glossterm>PKGDESTWORK</glossterm>
10144 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010145 PKGDESTWORK[doc] = "Points to a temporary work area where the do_package task saves package metadata."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010146 </info>
10147 <glossdef>
10148 <para role="glossdeffirst">
10149<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010150 Points to a temporary work area where the
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010151 <link linkend='ref-tasks-package'><filename>do_package</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010152 task saves package metadata.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010153 The <filename>PKGDESTWORK</filename> location defaults to
10154 the following:
10155 <literallayout class='monospaced'>
10156 ${WORKDIR}/pkgdata
10157 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010158 Do not change this default.
10159 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010160
10161 <para>
10162 The
10163 <link linkend='ref-tasks-packagedata'><filename>do_packagedata</filename></link>
10164 task copies the package metadata from
10165 <filename>PKGDESTWORK</filename> to
10166 <link linkend='var-PKGDATA_DIR'><filename>PKGDATA_DIR</filename></link>
10167 to make it available globally.
10168 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010169 </glossdef>
10170 </glossentry>
10171
10172 <glossentry id='var-PKGE'><glossterm>PKGE</glossterm>
10173 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010174 PKGE[doc] = "The epoch of the package(s) built by the recipe."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010175 </info>
10176 <glossdef>
10177 <para role="glossdeffirst">
10178<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010179 The epoch of the package(s) built by the recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010180 By default, <filename>PKGE</filename> is set to
10181 <link linkend='var-PE'><filename>PE</filename></link>.
10182 </para>
10183 </glossdef>
10184 </glossentry>
10185
10186 <glossentry id='var-PKGR'><glossterm>PKGR</glossterm>
10187 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010188 PKGR[doc] = "The revision of the package(s) built by the recipe."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010189 </info>
10190 <glossdef>
10191 <para role="glossdeffirst">
10192<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010193 The revision of the package(s) built by the recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010194 By default, <filename>PKGR</filename> is set to
10195 <link linkend='var-PR'><filename>PR</filename></link>.
10196 </para>
10197 </glossdef>
10198 </glossentry>
10199
10200 <glossentry id='var-PKGV'><glossterm>PKGV</glossterm>
10201 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010202 PKGV[doc] = "The version of the package(s) built by the recipe."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010203 </info>
10204 <glossdef>
10205 <para role="glossdeffirst">
10206<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010207 The version of the package(s) built by the
10208 recipe.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010209 By default, <filename>PKGV</filename> is set to
10210 <link linkend='var-PV'><filename>PV</filename></link>.
10211 </para>
10212 </glossdef>
10213 </glossentry>
10214
10215 <glossentry id='var-PN'><glossterm>PN</glossterm>
10216 <info>
10217 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."
10218 </info>
10219 <glossdef>
10220 <para role="glossdeffirst">
10221<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10222 This variable can have two separate functions depending on the context: a recipe
10223 name or a resulting package name.
10224 </para>
10225
10226 <para>
10227 <filename>PN</filename> refers to a recipe name in the context of a file used
10228 by the OpenEmbedded build system as input to create a package.
10229 The name is normally extracted from the recipe file name.
10230 For example, if the recipe is named
10231 <filename>expat_2.0.1.bb</filename>, then the default value of <filename>PN</filename>
10232 will be "expat".
10233 </para>
10234
10235 <para>
10236 The variable refers to a package name in the context of a file created or produced by the
10237 OpenEmbedded build system.
10238 </para>
10239
10240 <para>
10241 If applicable, the <filename>PN</filename> variable also contains any special
10242 suffix or prefix.
10243 For example, using <filename>bash</filename> to build packages for the native
10244 machine, <filename>PN</filename> is <filename>bash-native</filename>.
10245 Using <filename>bash</filename> to build packages for the target and for Multilib,
10246 <filename>PN</filename> would be <filename>bash</filename> and
10247 <filename>lib64-bash</filename>, respectively.
10248 </para>
10249 </glossdef>
10250 </glossentry>
10251
10252 <glossentry id='var-PNBLACKLIST'><glossterm>PNBLACKLIST</glossterm>
10253 <info>
10254 PNBLACKLIST[doc] = "Lists recipes you do not want the OpenEmbedded build system to build."
10255 </info>
10256 <glossdef>
10257 <para role="glossdeffirst">
10258<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10259 Lists recipes you do not want the OpenEmbedded build system
10260 to build.
10261 This variable works in conjunction with the
10262 <link linkend='ref-classes-blacklist'><filename>blacklist</filename></link>
10263 class, which the recipe must inherit globally.
10264 </para>
10265
10266 <para>
10267 To prevent a recipe from being built, inherit the class
10268 globally and use the variable in your
10269 <filename>local.conf</filename> file.
10270 Here is an example that prevents
10271 <filename>myrecipe</filename> from being built:
10272 <literallayout class='monospaced'>
10273 INHERIT += "blacklist"
10274 PNBLACKLIST[myrecipe] = "Not supported by our organization."
10275 </literallayout>
10276 </para>
10277 </glossdef>
10278 </glossentry>
10279
10280 <glossentry id='var-POPULATE_SDK_POST_HOST_COMMAND'><glossterm>POPULATE_SDK_POST_HOST_COMMAND</glossterm>
10281 <info>
10282 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."
10283 </info>
10284 <glossdef>
10285 <para role="glossdeffirst">
10286<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10287 Specifies a list of functions to call once the
10288 OpenEmbedded build system has created the host part of
10289 the SDK.
10290 You can specify functions separated by semicolons:
10291 <literallayout class='monospaced'>
10292 POPULATE_SDK_POST_HOST_COMMAND += "<replaceable>function</replaceable>; ... "
10293 </literallayout>
10294 </para>
10295
10296 <para>
10297 If you need to pass the SDK path to a command
10298 within a function, you can use
10299 <filename>${SDK_DIR}</filename>, which points to
10300 the parent directory used by the OpenEmbedded build
10301 system when creating SDK output.
10302 See the
10303 <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
10304 variable for more information.
10305 </para>
10306 </glossdef>
10307 </glossentry>
10308
10309 <glossentry id='var-POPULATE_SDK_POST_TARGET_COMMAND'><glossterm>POPULATE_SDK_POST_TARGET_COMMAND</glossterm>
10310 <info>
10311 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."
10312 </info>
10313 <glossdef>
10314 <para role="glossdeffirst">
10315<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10316 Specifies a list of functions to call once the
10317 OpenEmbedded build system has created the target part of
10318 the SDK.
10319 You can specify functions separated by semicolons:
10320 <literallayout class='monospaced'>
10321 POPULATE_SDK_POST_TARGET_COMMAND += "<replaceable>function</replaceable>; ... "
10322 </literallayout>
10323 </para>
10324
10325 <para>
10326 If you need to pass the SDK path to a command
10327 within a function, you can use
10328 <filename>${SDK_DIR}</filename>, which points to
10329 the parent directory used by the OpenEmbedded build
10330 system when creating SDK output.
10331 See the
10332 <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
10333 variable for more information.
10334 </para>
10335 </glossdef>
10336 </glossentry>
10337
10338 <glossentry id='var-PR'><glossterm>PR</glossterm>
10339 <info>
10340 PR[doc] = "The revision of the recipe. The default value for this variable is 'r0'."
10341 </info>
10342 <glossdef>
10343 <para role="glossdeffirst">
10344<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010345 The revision of the recipe. The default value for this
10346 variable is "r0".
10347 Subsequent revisions of the recipe conventionally have the
10348 values "r1", "r2", and so forth.
10349 When
10350 <link linkend='var-PV'><filename>PV</filename></link>
10351 increases, <filename>PR</filename> is conventionally reset
10352 to "r0".
10353 <note>
10354 The OpenEmbedded build system does not need the aid of
10355 <filename>PR</filename> to know when to rebuild a
10356 recipe.
10357 The build system uses the task
10358 <ulink url='&YOCTO_DOCS_BB_URL;#checksums'>input checksums</ulink>
10359 along with the
10360 <link linkend='structure-build-tmp-stamps'>stamp</link>
10361 and
10362 <link linkend='shared-state-cache'>shared state cache</link>
10363 mechanisms.
10364 </note>
10365 The <filename>PR</filename> variable primarily becomes
10366 significant when a package manager dynamically installs
10367 packages on an already built image.
10368 In this case, <filename>PR</filename>, which is the default
10369 value of
10370 <link linkend='var-PKGR'><filename>PKGR</filename></link>,
10371 helps the package manager distinguish which package is the
10372 most recent one in cases where many packages have the same
10373 <filename>PV</filename> (i.e. <filename>PKGV</filename>).
10374 A component having many packages with the same
10375 <filename>PV</filename> usually means that the packages all
10376 install the same upstream version, but with later
10377 (<filename>PR</filename>) version packages including
10378 packaging fixes.
10379 <note>
10380 <filename>PR</filename> does not need to be increased
10381 for changes that do not change the package contents or
10382 metadata.
10383 </note>
10384 Because manually managing <filename>PR</filename> can be
10385 cumbersome and error-prone, an automated solution exists.
10386 See the
10387 "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>Working With a PR Service</ulink>"
10388 section for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010389 </para>
10390 </glossdef>
10391 </glossentry>
10392
10393 <glossentry id='var-PREFERRED_PROVIDER'><glossterm>PREFERRED_PROVIDER</glossterm>
10394 <info>
10395 PREFERRED_PROVIDER[doc] = "If multiple recipes provide an item, this variable determines which recipe should be given preference."
10396 </info>
10397 <glossdef>
10398 <para role="glossdeffirst">
10399<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10400 If multiple recipes provide an item, this variable
10401 determines which recipe should be given preference.
10402 You should always suffix the variable with the name of the
10403 provided item, and you should set it to the
10404 <link linkend='var-PN'><filename>PN</filename></link>
10405 of the recipe to which you want to give precedence.
10406 Some examples:
10407 <literallayout class='monospaced'>
10408 PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
10409 PREFERRED_PROVIDER_virtual/xserver = "xserver-xf86"
10410 PREFERRED_PROVIDER_virtual/libgl ?= "mesa"
10411 </literallayout>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050010412 <note>
10413 If you set <filename>PREFERRED_PROVIDER</filename>
10414 for a <filename>virtual/*</filename> item, then any
10415 recipe that
10416 <link linkend='var-PROVIDES'><filename>PROVIDES</filename></link>
10417 that item that is not selected by
10418 <filename>PREFERRED_PROVIDER</filename> is prevented
10419 from building, which is usually desirable since this
10420 mechanism is designed to select between mutually
10421 exclusive alternative providers.
10422 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010423 </para>
10424 </glossdef>
10425 </glossentry>
10426
10427 <glossentry id='var-PREFERRED_VERSION'><glossterm>PREFERRED_VERSION</glossterm>
10428 <info>
10429 PREFERRED_VERSION[doc] = "If there are multiple versions of recipes available, this variable determines which recipe should be given preference."
10430 </info>
10431 <glossdef>
10432 <para role="glossdeffirst">
10433<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10434 If there are multiple versions of recipes available, this
10435 variable determines which recipe should be given preference.
10436 You must always suffix the variable with the
10437 <link linkend='var-PN'><filename>PN</filename></link>
10438 you want to select, and you should set the
10439 <link linkend='var-PV'><filename>PV</filename></link>
10440 accordingly for precedence.
10441 You can use the "<filename>%</filename>" character as a
10442 wildcard to match any number of characters, which can be
10443 useful when specifying versions that contain long revision
10444 numbers that could potentially change.
10445 Here are two examples:
10446 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010447 PREFERRED_VERSION_python = "3.4.0"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010448 PREFERRED_VERSION_linux-yocto = "3.19%"
10449 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010450 <note>
10451 The specified version is matched against
10452 <link linkend='var-PV'><filename>PV</filename></link>,
10453 which does not necessarily match the version part of
10454 the recipe's filename.
10455 For example, consider two recipes
10456 <filename>foo_1.2.bb</filename> and
10457 <filename>foo_git.bb</filename> where
10458 <filename>foo_git.bb</filename> contains the following
10459 assignment:
10460 <literallayout class='monospaced'>
10461 PV = "1.1+git${SRCPV}"
10462 </literallayout>
10463 In this case, the correct way to select
10464 <filename>foo_git.bb</filename> is by using an
10465 assignment such as the following:
10466 <literallayout class='monospaced'>
10467 PREFERRED_VERSION_foo = "1.1+git%"
10468 </literallayout>
10469 Compare that previous example against the following
10470 incorrect example, which does not work:
10471 <literallayout class='monospaced'>
10472 PREFERRED_VERSION_foo = "git"
10473 </literallayout>
10474 </note>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050010475 Sometimes the <filename>PREFERRED_VERSION</filename>
10476 variable can be set by configuration files in a way that
10477 is hard to change.
10478 You can use
10479 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
10480 to set a machine-specific override.
10481 Here is an example:
10482 <literallayout class='monospaced'>
10483 PREFERRED_VERSION_linux-yocto_qemux86 = "3.4%"
10484 </literallayout>
10485 Although not recommended, worst case, you can also use the
10486 "forcevariable" override, which is the strongest override
10487 possible.
10488 Here is an example:
10489 <literallayout class='monospaced'>
10490 PREFERRED_VERSION_linux-yocto_forcevariable = "3.4%"
10491 </literallayout>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010492 <note>
10493 The <filename>_forcevariable</filename> override is
10494 not handled specially.
10495 This override only works because the default value of
10496 <link linkend='var-OVERRIDES'><filename>OVERRIDES</filename></link>
10497 includes "forcevariable".
10498 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010499 </para>
10500 </glossdef>
10501 </glossentry>
10502
10503 <glossentry id='var-PREMIRRORS'><glossterm>PREMIRRORS</glossterm>
10504 <info>
10505 PREMIRRORS[doc] = "Specifies additional paths from which the OpenEmbedded build system gets source code."
10506 </info>
10507 <glossdef>
10508 <para role="glossdeffirst">
10509<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10510 Specifies additional paths from which the OpenEmbedded
10511 build system gets source code.
10512 When the build system searches for source code, it first
10513 tries the local download directory.
10514 If that location fails, the build system tries locations
10515 defined by <filename>PREMIRRORS</filename>, the upstream
10516 source, and then locations specified by
10517 <link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
10518 in that order.
10519 </para>
10520
10521 <para>
10522 Assuming your distribution
10523 (<link linkend='var-DISTRO'><filename>DISTRO</filename></link>)
10524 is "poky", the default value for
10525 <filename>PREMIRRORS</filename> is defined in the
10526 <filename>conf/distro/poky.conf</filename> file in the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050010527 <filename>meta-poky</filename> Git repository.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010528 </para>
10529
10530 <para>
10531 Typically, you could add a specific server for the
10532 build system to attempt before any others by adding
10533 something like the following to the
10534 <filename>local.conf</filename> configuration file in the
10535 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>:
10536 <literallayout class='monospaced'>
10537 PREMIRRORS_prepend = "\
10538 git://.*/.* http://www.yoctoproject.org/sources/ \n \
10539 ftp://.*/.* http://www.yoctoproject.org/sources/ \n \
10540 http://.*/.* http://www.yoctoproject.org/sources/ \n \
10541 https://.*/.* http://www.yoctoproject.org/sources/ \n"
10542 </literallayout>
10543 These changes cause the build system to intercept
10544 Git, FTP, HTTP, and HTTPS requests and direct them to
10545 the <filename>http://</filename> sources mirror.
10546 You can use <filename>file://</filename> URLs to point
10547 to local directories or network shares as well.
10548 </para>
10549 </glossdef>
10550 </glossentry>
10551
10552 <glossentry id='var-PRIORITY'><glossterm>PRIORITY</glossterm>
10553 <info>
10554 PRIORITY[doc] = "Indicates the importance of a package. The default value is 'optional'. Other standard values are 'required', 'standard' and 'extra'."
10555 </info>
10556 <glossdef>
10557 <para role="glossdeffirst">
10558<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10559 Indicates the importance of a package.
10560 </para>
10561
10562 <para>
10563 <filename>PRIORITY</filename> is considered to be part of
10564 the distribution policy because the importance of any given
10565 recipe depends on the purpose for which the distribution
10566 is being produced.
10567 Thus, <filename>PRIORITY</filename> is not normally set
10568 within recipes.
10569 </para>
10570
10571 <para>
10572 You can set <filename>PRIORITY</filename> to "required",
10573 "standard", "extra", and "optional", which is the default.
10574 </para>
10575 </glossdef>
10576 </glossentry>
10577
10578 <glossentry id='var-PRIVATE_LIBS'><glossterm>PRIVATE_LIBS</glossterm>
10579 <info>
10580 PRIVATE_LIBS[doc] = "Specifies libraries installed within a recipe that should be ignored by the OpenEmbedded build system's shared library resolver."
10581 </info>
10582 <glossdef>
10583 <para role="glossdeffirst">
10584<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10585 Specifies libraries installed within a recipe that
10586 should be ignored by the OpenEmbedded build system's
10587 shared library resolver.
10588 This variable is typically used when software being
10589 built by a recipe has its own private versions of a
10590 library normally provided by another recipe.
10591 In this case, you would not want the package containing
10592 the private libraries to be set as a dependency on other
10593 unrelated packages that should instead depend on the
10594 package providing the standard version of the library.
10595 </para>
10596
10597 <para>
10598 Libraries specified in this variable should be specified
10599 by their file name.
10600 For example, from the Firefox recipe in meta-browser:
10601 <literallayout class='monospaced'>
10602 PRIVATE_LIBS = "libmozjs.so \
10603 libxpcom.so \
10604 libnspr4.so \
10605 libxul.so \
10606 libmozalloc.so \
10607 libplc4.so \
10608 libplds4.so"
10609 </literallayout>
10610 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010611
10612 <para>
10613 For more information, see the
10614 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
10615 section.
10616 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010617 </glossdef>
10618 </glossentry>
10619
10620 <glossentry id='var-PROVIDES'><glossterm>PROVIDES</glossterm>
10621 <info>
10622 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."
10623 </info>
10624 <glossdef>
10625 <para role="glossdeffirst">
10626<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10627 A list of aliases by which a particular recipe can be
10628 known.
10629 By default, a recipe's own
10630 <filename><link linkend='var-PN'>PN</link></filename>
10631 is implicitly already in its <filename>PROVIDES</filename>
10632 list.
10633 If a recipe uses <filename>PROVIDES</filename>, the
10634 additional aliases are synonyms for the recipe and can
10635 be useful satisfying dependencies of other recipes during
10636 the build as specified by
10637 <filename><link linkend='var-DEPENDS'>DEPENDS</link></filename>.
10638 </para>
10639
10640 <para>
10641 Consider the following example
10642 <filename>PROVIDES</filename> statement from a recipe
10643 file <filename>libav_0.8.11.bb</filename>:
10644 <literallayout class='monospaced'>
10645 PROVIDES += "libpostproc"
10646 </literallayout>
10647 The <filename>PROVIDES</filename> statement results in
10648 the "libav" recipe also being known as "libpostproc".
10649 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010650
10651 <para>
10652 In addition to providing recipes under alternate names,
10653 the <filename>PROVIDES</filename> mechanism is also used
10654 to implement virtual targets.
10655 A virtual target is a name that corresponds to some
10656 particular functionality (e.g. a Linux kernel).
10657 Recipes that provide the functionality in question list the
10658 virtual target in <filename>PROVIDES</filename>.
10659 Recipes that depend on the functionality in question can
10660 include the virtual target in
10661 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
10662 to leave the choice of provider open.
10663 </para>
10664
10665 <para>
10666 Conventionally, virtual targets have names on the form
10667 "virtual/function" (e.g. "virtual/kernel").
10668 The slash is simply part of the name and has no
10669 syntactical significance.
10670 </para>
10671
10672 <para>
10673 The
10674 <link linkend='var-PREFERRED_PROVIDER'><filename>PREFERRED_PROVIDER</filename></link>
10675 variable is used to select which particular recipe
10676 provides a virtual target.
10677 <note>
10678 <para>A corresponding mechanism for virtual runtime
10679 dependencies (packages) exists.
10680 However, the mechanism does not depend on any special
10681 functionality beyond ordinary variable assignments.
10682 For example,
10683 <filename>VIRTUAL-RUNTIME_dev_manager</filename>
10684 refers to the package of the component that manages
10685 the <filename>/dev</filename> directory.</para>
10686
10687 <para>Setting the "preferred provider" for runtime
10688 dependencies is as simple as using the following
10689 assignment in a configuration file:</para>
10690 <literallayout class='monospaced'>
10691 VIRTUAL-RUNTIME_dev_manager = "udev"
10692 </literallayout>
10693 </note>
10694 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010695 </glossdef>
10696 </glossentry>
10697
10698 <glossentry id='var-PRSERV_HOST'><glossterm>PRSERV_HOST</glossterm>
10699 <info>
10700 PRSERV_HOST[doc] = "The network based PR service host and port."
10701 </info>
10702 <glossdef>
10703 <para role="glossdeffirst">
10704<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10705 The network based
10706 <link linkend='var-PR'><filename>PR</filename></link>
10707 service host and port.
10708 </para>
10709
10710 <para>
10711 The <filename>conf/local.conf.sample.extended</filename>
10712 configuration file in the
10713 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
10714 shows how the <filename>PRSERV_HOST</filename> variable is
10715 set:
10716 <literallayout class='monospaced'>
10717 PRSERV_HOST = "localhost:0"
10718 </literallayout>
10719 You must set the variable if you want to automatically
10720 start a local
10721 <ulink url='&YOCTO_DOCS_DEV_URL;#working-with-a-pr-service'>PR service</ulink>.
10722 You can set <filename>PRSERV_HOST</filename> to other
10723 values to use a remote PR service.
10724 </para>
10725 </glossdef>
10726 </glossentry>
10727
10728 <glossentry id='var-PTEST_ENABLED'><glossterm>PTEST_ENABLED</glossterm>
10729 <info>
10730 PRSERV_HOST[doc] = "Specifies whether or not Package Test (ptest) functionality is enabled when building a recipe."
10731 </info>
10732 <glossdef>
10733 <para role="glossdeffirst">
10734<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10735 Specifies whether or not
10736 <ulink url='&YOCTO_DOCS_DEV_URL;#testing-packages-with-ptest'>Package Test</ulink>
10737 (ptest) functionality is enabled when building a recipe.
10738 You should not set this variable directly.
10739 Enabling and disabling building Package Tests
10740 at build time should be done by adding "ptest" to (or
10741 removing it from)
10742 <link linkend='var-DISTRO_FEATURES'><filename>DISTRO_FEATURES</filename></link>.
10743 </para>
10744 </glossdef>
10745 </glossentry>
10746
10747 <glossentry id='var-PV'><glossterm>PV</glossterm>
10748 <info>
10749 PV[doc] = "The version of the recipe. The version is normally extracted from the recipe filename."
10750 </info>
10751 <glossdef>
10752 <para role="glossdeffirst">
10753<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10754 The version of the recipe.
10755 The version is normally extracted from the recipe filename.
10756 For example, if the recipe is named
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010757 <filename>expat_2.0.1.bb</filename>, then the default value
10758 of <filename>PV</filename> will be "2.0.1".
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010759 <filename>PV</filename> is generally not overridden within
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010760 a recipe unless it is building an unstable (i.e.
10761 development) version from a source code repository
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010762 (e.g. Git or Subversion).
10763 </para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010764
10765 <para>
10766 <filename>PV</filename> is the default value of the
10767 <link linkend='var-PKGV'><filename>PKGV</filename></link>
10768 variable.
10769 </para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010770 </glossdef>
10771 </glossentry>
10772
10773 <glossentry id='var-PYTHON_ABI'><glossterm>PYTHON_ABI</glossterm>
10774 <info>
10775 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."
10776 </info>
10777 <glossdef>
10778 <para role="glossdeffirst">
10779<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10780 When used by recipes that inherit the
10781 <link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>,
10782 <link linkend='ref-classes-setuptools3'><filename>setuptools3</filename></link>,
10783 <link linkend='ref-classes-distutils'><filename>distutils</filename></link>,
10784 or
10785 <link linkend='ref-classes-setuptools'><filename>setuptools</filename></link>
10786 classes, denotes the Application Binary Interface (ABI)
10787 currently in use for Python.
10788 By default, the ABI is "m".
10789 You do not have to set this variable as the OpenEmbedded
10790 build system sets it for you.
10791 </para>
10792
10793 <para>
10794 The OpenEmbedded build system uses the ABI to construct
10795 directory names used when installing the Python headers
10796 and libraries in sysroot
10797 (e.g. <filename>.../python3.3m/...</filename>).
10798 </para>
10799
10800 <para>
10801 Recipes that inherit the
10802 <link linkend='ref-classes-distutils'><filename>distutils</filename></link>
10803 class during cross-builds also use this variable to
10804 locate the headers and libraries of the appropriate Python
10805 that the extension is targeting.
10806 </para>
10807 </glossdef>
10808 </glossentry>
10809
10810 <glossentry id='var-PYTHON_PN'><glossterm>PYTHON_PN</glossterm>
10811 <info>
10812 PYTHON_PN[doc] = "When used by recipes that inherit the distutils3, setuptools3, distutils, or setuptools classes, specifies the major Python version being built."
10813 </info>
10814 <glossdef>
10815 <para role="glossdeffirst">
10816<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10817 When used by recipes that inherit the
10818 <link linkend='ref-classes-distutils3'><filename>distutils3</filename></link>,
10819 <link linkend='ref-classes-setuptools3'><filename>setuptools3</filename></link>,
10820 <link linkend='ref-classes-distutils'><filename>distutils</filename></link>,
10821 or
10822 <link linkend='ref-classes-setuptools'><filename>setuptools</filename></link>
10823 classes, specifies the major Python version being built.
10824 For Python 2.x, <filename>PYTHON_PN</filename> would
10825 be "python2". For Python 3.x, the variable would be
10826 "python3".
10827 You do not have to set this variable as the
10828 OpenEmbedded build system automatically sets it for you.
10829 </para>
10830
10831 <para>
10832 The variable allows recipes to use common infrastructure
10833 such as the following:
10834 <literallayout class='monospaced'>
10835 DEPENDS += "${PYTHON_PN}-native"
10836 </literallayout>
10837 In the previous example, the version of the dependency
10838 is <filename>PYTHON_PN</filename>.
10839 </para>
10840 </glossdef>
10841 </glossentry>
10842
10843 </glossdiv>
10844
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010845 <glossdiv id='var-glossary-r'><title>R</title>
10846
10847 <glossentry id='var-RANLIB'><glossterm>RANLIB</glossterm>
10848 <info>
10849 RANLIB[doc] = "Minimal command and arguments to run 'ranlib'."
10850 </info>
10851 <glossdef>
10852 <para role="glossdeffirst">
10853<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10854 The minimal command and arguments to run
10855 <filename>ranlib</filename>.
10856 </para>
10857 </glossdef>
10858 </glossentry>
10859
10860 <glossentry id='var-RCONFLICTS'><glossterm>RCONFLICTS</glossterm>
10861 <info>
10862 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."
10863 </info>
10864 <glossdef>
10865 <para role="glossdeffirst">
10866<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
10867 The list of packages that conflict with packages.
10868 Note that packages will not be installed if conflicting
10869 packages are not first removed.
10870 </para>
10871
10872 <para>
10873 Like all package-controlling variables, you must always use
10874 them in conjunction with a package name override.
10875 Here is an example:
10876 <literallayout class='monospaced'>
10877 RCONFLICTS_${PN} = "<replaceable>another_conflicting_package_name</replaceable>"
10878 </literallayout>
10879 </para>
10880
10881 <para>
10882 BitBake, which the OpenEmbedded build system uses, supports
10883 specifying versioned dependencies.
10884 Although the syntax varies depending on the packaging
10885 format, BitBake hides these differences from you.
10886 Here is the general syntax to specify versions with
10887 the <filename>RCONFLICTS</filename> variable:
10888 <literallayout class='monospaced'>
10889 RCONFLICTS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
10890 </literallayout>
10891 For <filename>operator</filename>, you can specify the
10892 following:
10893 <literallayout class='monospaced'>
10894 =
10895 &lt;
10896 &gt;
10897 &lt;=
10898 &gt;=
10899 </literallayout>
10900 For example, the following sets up a dependency on version
10901 1.2 or greater of the package <filename>foo</filename>:
10902 <literallayout class='monospaced'>
10903 RCONFLICTS_${PN} = "foo (>= 1.2)"
10904 </literallayout>
10905 </para>
10906 </glossdef>
10907 </glossentry>
10908
10909 <glossentry id='var-RDEPENDS'><glossterm>RDEPENDS</glossterm>
10910 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010911 RDEPENDS[doc] = "Lists runtime dependencies of a package."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010912 </info>
10913 <glossdef>
10914 <para role="glossdeffirst">
10915<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010916 Lists runtime dependencies of a package.
10917 These dependencies are other packages that must be
10918 installed in order for the package to function correctly.
10919 As an example, the following assignment declares that the
10920 package <filename>foo</filename> needs the packages
10921 <filename>bar</filename> and <filename>baz</filename> to
10922 be installed:
10923 <literallayout class='monospaced'>
10924 RDEPENDS_foo = "bar baz"
10925 </literallayout>
10926 The most common types of package runtime dependencies are
10927 automatically detected and added.
10928 Therefore, most recipes do not need to set
10929 <filename>RDEPENDS</filename>.
10930 For more information, see the
10931 "<link linkend='automatically-added-runtime-dependencies'>Automatically Added Runtime Dependencies</link>"
10932 section.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010933 </para>
10934
10935 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010936 The practical effect of the above
10937 <filename>RDEPENDS</filename> assignment is that
10938 <filename>bar</filename> and <filename>baz</filename>
10939 will be declared as dependencies inside the package
10940 <filename>foo</filename> when it is written out by one of
10941 the
10942 <link linkend='ref-tasks-package_write_deb'><filename>do_package_write_*</filename></link>
10943 tasks.
10944 Exactly how this is done depends on which package format
10945 is used, which is determined by
10946 <link linkend='var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></link>.
10947 When the corresponding package manager installs the
10948 package, it will know to also install the packages on
10949 which it depends.
10950 </para>
10951
10952 <para>
10953 To ensure that the packages <filename>bar</filename> and
10954 <filename>baz</filename> get built, the previous
10955 <filename>RDEPENDS</filename> assignment also causes a task
10956 dependency to be added.
10957 This dependency is from the recipe's
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010958 <link linkend='ref-tasks-build'><filename>do_build</filename></link>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010959 (not to be confused with
10960 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>)
10961 task to the <filename>do_package_write_*</filename>
10962 task of the recipes that build <filename>bar</filename> and
10963 <filename>baz</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010964 </para>
10965
10966 <para>
10967 The names of the packages you list within
10968 <filename>RDEPENDS</filename> must be the names of other
10969 packages - they cannot be recipe names.
10970 Although package names and recipe names usually match,
10971 the important point here is that you are
10972 providing package names within the
10973 <filename>RDEPENDS</filename> variable.
10974 For an example of the default list of packages created from
10975 a recipe, see the
10976 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
10977 variable.
10978 </para>
10979
10980 <para>
10981 Because the <filename>RDEPENDS</filename> variable applies
10982 to packages being built, you should always use the variable
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010983 in a form with an attached package name (remember that a
10984 single recipe can build multiple packages).
Patrick Williamsc124f4f2015-09-15 14:41:29 -050010985 For example, suppose you are building a development package
10986 that depends on the <filename>perl</filename> package.
10987 In this case, you would use the following
10988 <filename>RDEPENDS</filename> statement:
10989 <literallayout class='monospaced'>
10990 RDEPENDS_${PN}-dev += "perl"
10991 </literallayout>
10992 In the example, the development package depends on
10993 the <filename>perl</filename> package.
10994 Thus, the <filename>RDEPENDS</filename> variable has the
10995 <filename>${PN}-dev</filename> package name as part of the
10996 variable.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060010997 <note>
10998 <title>Caution</title>
10999 <filename>RDEPENDS_${PN}-dev</filename> includes
11000 <filename>${</filename><link linkend='var-PN'><filename>PN</filename></link><filename>}</filename>
11001 by default.
11002 This default is set in the BitBake configuration file
11003 (<filename>meta/conf/bitbake.conf</filename>).
11004 Be careful not to accidentally remove
11005 <filename>${PN}</filename> when modifying
11006 <filename>RDEPENDS_${PN}-dev</filename>.
11007 Use the "+=" operator rather than the "=" operator.
11008 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011009 </para>
11010
11011 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060011012 The package names you use with
11013 <filename>RDEPENDS</filename> must appear as they would in
11014 the <filename>PACKAGES</filename> variable.
11015 The
11016 <link linkend='var-PKG'><filename>PKG</filename></link>
11017 variable allows a different name to be used for
11018 the final package (e.g. the
11019 <link linkend='ref-classes-debian'><filename>debian</filename></link>
11020 class uses this to rename packages), but this final package
11021 name cannot be used with <filename>RDEPENDS</filename>,
11022 which makes sense as <filename>RDEPENDS</filename> is meant
11023 to be independent of the package format used.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011024 </para>
11025
11026 <para>
11027 BitBake, which the OpenEmbedded build system uses, supports
11028 specifying versioned dependencies.
11029 Although the syntax varies depending on the packaging
11030 format, BitBake hides these differences from you.
11031 Here is the general syntax to specify versions with
11032 the <filename>RDEPENDS</filename> variable:
11033 <literallayout class='monospaced'>
11034 RDEPENDS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
11035 </literallayout>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050011036 For <replaceable>operator</replaceable>, you can specify the
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011037 following:
11038 <literallayout class='monospaced'>
11039 =
11040 &lt;
11041 &gt;
11042 &lt;=
11043 &gt;=
11044 </literallayout>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050011045 For <replaceable>version</replaceable>, provide the version
11046 number.
11047 <note><title>Tip</title>
11048 You can use
11049 <link linkend='var-EXTENDPKGV'><filename>EXTENDPKGV</filename></link>
11050 to provide a full package version specification.
11051 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011052 For example, the following sets up a dependency on version
11053 1.2 or greater of the package <filename>foo</filename>:
11054 <literallayout class='monospaced'>
11055 RDEPENDS_${PN} = "foo (>= 1.2)"
11056 </literallayout>
11057 </para>
11058
11059 <para>
11060 For information on build-time dependencies, see the
11061 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
11062 variable.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060011063 You can also see the
11064 "<ulink url='&YOCTO_DOCS_BB_URL;#tasks'>Tasks</ulink>" and
11065 "<ulink url='&YOCTO_DOCS_BB_URL;#dependencies'>Dependencies</ulink>"
11066 sections in the BitBake User Manual for additional
11067 information on tasks and dependencies.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011068 </para>
11069 </glossdef>
11070 </glossentry>
11071
11072 <glossentry id='var-REQUIRED_DISTRO_FEATURES'><glossterm>REQUIRED_DISTRO_FEATURES</glossterm>
11073 <info>
11074 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."
11075 </info>
11076 <glossdef>
11077 <para role="glossdeffirst">
11078<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11079 When inheriting the
11080 <link linkend='ref-classes-distro_features_check'><filename>distro_features_check</filename></link>
11081 class, this
11082 variable identifies distribution features that must
11083 exist in the current configuration in order for the
11084 OpenEmbedded build system to build the recipe.
11085 In other words, if the
11086 <filename>REQUIRED_DISTRO_FEATURES</filename> variable
11087 lists a feature that does not appear in
11088 <filename>DISTRO_FEATURES</filename> within the
11089 current configuration, an error occurs and the
11090 build stops.
11091 </para>
11092 </glossdef>
11093 </glossentry>
11094
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011095 <glossentry id='var-RM_WORK_EXCLUDE'><glossterm>RM_WORK_EXCLUDE</glossterm>
11096 <info>
11097 RM_WORK_EXCLUDE[doc] = "With rm_work enabled, this variable specifies a list of packages whose work directories should not be removed."
11098 </info>
11099 <glossdef>
11100 <para role="glossdeffirst">
11101<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11102 With <filename>rm_work</filename> enabled, this
11103 variable specifies a list of recipes whose work directories
11104 should not be removed.
11105 See the "<link linkend='ref-classes-rm-work'><filename>rm_work.bbclass</filename></link>"
11106 section for more details.
11107 </para>
11108 </glossdef>
11109 </glossentry>
11110
11111 <glossentry id='var-ROOT_HOME'><glossterm>ROOT_HOME</glossterm>
11112 <info>
11113 ROOT_HOME[doc] = "Defines the root home directory."
11114 </info>
11115 <glossdef>
11116 <para role="glossdeffirst">
11117<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11118 Defines the root home directory.
11119 By default, this directory is set as follows in the
11120 BitBake configuration file:
11121 <literallayout class='monospaced'>
11122 ROOT_HOME ??= "/home/root"
11123 </literallayout>
11124 <note>
11125 This default value is likely used because some
11126 embedded solutions prefer to have a read-only root
11127 filesystem and prefer to keep writeable data in one
11128 place.
11129 </note>
11130 </para>
11131
11132 <para>
11133 You can override the default by setting the variable
11134 in any layer or in the <filename>local.conf</filename> file.
11135 Because the default is set using a "weak" assignment
11136 (i.e. "??="), you can use either of the following forms
11137 to define your override:
11138 <literallayout class='monospaced'>
11139 ROOT_HOME = "/root"
11140 ROOT_HOME ?= "/root"
11141 </literallayout>
11142 These override examples use <filename>/root</filename>,
11143 which is probably the most commonly used override.
11144 </para>
11145 </glossdef>
11146 </glossentry>
11147
11148 <glossentry id='var-ROOTFS'><glossterm>ROOTFS</glossterm>
11149 <info>
11150 ROOTFS[doc] = "Indicates a filesystem image to include as the root filesystem."
11151 </info>
11152 <glossdef>
11153 <para role="glossdeffirst">
11154<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11155 Indicates a filesystem image to include as the root
11156 filesystem.
11157 </para>
11158
11159 <para>
11160 The <filename>ROOTFS</filename> variable is an optional
11161 variable used with the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011162 <link linkend='ref-classes-image-live'><filename>image-live</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011163 class.
11164 </para>
11165 </glossdef>
11166 </glossentry>
11167
11168 <glossentry id='var-ROOTFS_POSTINSTALL_COMMAND'><glossterm>ROOTFS_POSTINSTALL_COMMAND</glossterm>
11169 <info>
11170 ROOTFS_POSTINSTALL_COMMAND[doc] = "Specifies a list of functions to call after installing packages."
11171 </info>
11172 <glossdef>
11173 <para role="glossdeffirst">
11174<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11175 Specifies a list of functions to call after the
11176 OpenEmbedded build system has installed packages.
11177 You can specify functions separated by semicolons:
11178 <literallayout class='monospaced'>
11179 ROOTFS_POSTINSTALL_COMMAND += "<replaceable>function</replaceable>; ... "
11180 </literallayout>
11181 </para>
11182
11183 <para>
11184 If you need to pass the root filesystem path to a command
11185 within a function, you can use
11186 <filename>${IMAGE_ROOTFS}</filename>, which points to
11187 the directory that becomes the root filesystem image.
11188 See the
11189 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
11190 variable for more information.
11191 </para>
11192 </glossdef>
11193 </glossentry>
11194
11195 <glossentry id='var-ROOTFS_POSTPROCESS_COMMAND'><glossterm>ROOTFS_POSTPROCESS_COMMAND</glossterm>
11196 <info>
11197 ROOTFS_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created the root filesystem."
11198 </info>
11199 <glossdef>
11200 <para role="glossdeffirst">
11201<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11202 Specifies a list of functions to call once the
11203 OpenEmbedded build system has created the root filesystem.
11204 You can specify functions separated by semicolons:
11205 <literallayout class='monospaced'>
11206 ROOTFS_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
11207 </literallayout>
11208 </para>
11209
11210 <para>
11211 If you need to pass the root filesystem path to a command
11212 within a function, you can use
11213 <filename>${IMAGE_ROOTFS}</filename>, which points to
11214 the directory that becomes the root filesystem image.
11215 See the
11216 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
11217 variable for more information.
11218 </para>
11219 </glossdef>
11220 </glossentry>
11221
11222 <glossentry id='var-ROOTFS_POSTUNINSTALL_COMMAND'><glossterm>ROOTFS_POSTUNINSTALL_COMMAND</glossterm>
11223 <info>
11224 ROOTFS_POSTUNINSTALL_COMMAND[doc] = "Specifies a list of functions to call after removal of unneeded packages."
11225 </info>
11226 <glossdef>
11227 <para role="glossdeffirst">
11228<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11229 Specifies a list of functions to call after the
11230 OpenEmbedded build system has removed unnecessary
11231 packages.
11232 When runtime package management is disabled in the
11233 image, several packages are removed including
11234 <filename>base-passwd</filename>,
11235 <filename>shadow</filename>, and
11236 <filename>update-alternatives</filename>.
11237 You can specify functions separated by semicolons:
11238 <literallayout class='monospaced'>
11239 ROOTFS_POSTUNINSTALL_COMMAND += "<replaceable>function</replaceable>; ... "
11240 </literallayout>
11241 </para>
11242
11243 <para>
11244 If you need to pass the root filesystem path to a command
11245 within a function, you can use
11246 <filename>${IMAGE_ROOTFS}</filename>, which points to
11247 the directory that becomes the root filesystem image.
11248 See the
11249 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
11250 variable for more information.
11251 </para>
11252 </glossdef>
11253 </glossentry>
11254
11255 <glossentry id='var-ROOTFS_PREPROCESS_COMMAND'><glossterm>ROOTFS_PREPROCESS_COMMAND</glossterm>
11256 <info>
11257 ROOTFS_PREPROCESS_COMMAND[doc] = "Specifies a list of functions to call before the OpenEmbedded build system has created the root filesystem."
11258 </info>
11259 <glossdef>
11260 <para role="glossdeffirst">
11261<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11262 Specifies a list of functions to call before the
11263 OpenEmbedded build system has created the root filesystem.
11264 You can specify functions separated by semicolons:
11265 <literallayout class='monospaced'>
11266 ROOTFS_PREPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
11267 </literallayout>
11268 </para>
11269
11270 <para>
11271 If you need to pass the root filesystem path to a command
11272 within a function, you can use
11273 <filename>${IMAGE_ROOTFS}</filename>, which points to
11274 the directory that becomes the root filesystem image.
11275 See the
11276 <link linkend='var-IMAGE_ROOTFS'><filename>IMAGE_ROOTFS</filename></link>
11277 variable for more information.
11278 </para>
11279 </glossdef>
11280 </glossentry>
11281
11282 <glossentry id='var-RPROVIDES'><glossterm>RPROVIDES</glossterm>
11283 <info>
11284 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."
11285 </info>
11286 <glossdef>
11287 <para role="glossdeffirst">
11288<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11289 A list of package name aliases that a package also provides.
11290 These aliases are useful for satisfying runtime dependencies
11291 of other packages both during the build and on the target
11292 (as specified by
11293 <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename>).
11294 <note>
11295 A package's own name is implicitly already in its
11296 <filename>RPROVIDES</filename> list.
11297 </note>
11298 </para>
11299
11300 <para>
11301 As with all package-controlling variables, you must always
11302 use the variable in conjunction with a package name override.
11303 Here is an example:
11304 <literallayout class='monospaced'>
11305 RPROVIDES_${PN} = "widget-abi-2"
11306 </literallayout>
11307 </para>
11308 </glossdef>
11309 </glossentry>
11310
11311 <glossentry id='var-RRECOMMENDS'><glossterm>RRECOMMENDS</glossterm>
11312 <info>
11313 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."
11314 </info>
11315 <glossdef>
11316 <para role="glossdeffirst">
11317<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11318 A list of packages that extends the usability of a package
11319 being built.
11320 The package being built does not depend on this list of
11321 packages in order to successfully build, but rather
11322 uses them for extended usability.
11323 To specify runtime dependencies for packages, see the
11324 <filename><link linkend='var-RDEPENDS'>RDEPENDS</link></filename>
11325 variable.
11326 </para>
11327
11328 <para>
11329 The package manager will automatically install the
11330 <filename>RRECOMMENDS</filename> list of packages when
11331 installing the built package.
11332 However, you can prevent listed packages from being
11333 installed by using the
11334 <link linkend='var-BAD_RECOMMENDATIONS'><filename>BAD_RECOMMENDATIONS</filename></link>,
11335 <link linkend='var-NO_RECOMMENDATIONS'><filename>NO_RECOMMENDATIONS</filename></link>,
11336 and
11337 <link linkend='var-PACKAGE_EXCLUDE'><filename>PACKAGE_EXCLUDE</filename></link>
11338 variables.
11339 </para>
11340
11341 <para>
11342 Packages specified in
11343 <filename>RRECOMMENDS</filename> need not actually be
11344 produced.
11345 However, a recipe must exist that provides each package,
11346 either through the
11347 <link linkend='var-PACKAGES'><filename>PACKAGES</filename></link>
11348 or
11349 <link linkend='var-PACKAGES_DYNAMIC'><filename>PACKAGES_DYNAMIC</filename></link>
11350 variables or the
11351 <link linkend='var-RPROVIDES'><filename>RPROVIDES</filename></link>
11352 variable, or an error will occur during the build.
11353 If such a recipe does exist and the package is not produced,
11354 the build continues without error.
11355 </para>
11356
11357 <para>
11358 Because the <filename>RRECOMMENDS</filename> variable
11359 applies to packages being built, you should always attach
11360 an override to the variable to specify the particular
11361 package whose usability is being extended.
11362 For example, suppose you are building a development package
11363 that is extended to support wireless functionality.
11364 In this case, you would use the following:
11365 <literallayout class='monospaced'>
11366 RRECOMMENDS_${PN}-dev += "<replaceable>wireless_package_name</replaceable>"
11367 </literallayout>
11368 In the example, the package name
11369 (<filename>${<link linkend='var-PN'>PN</link>}-dev</filename>)
11370 must appear as it would in the
11371 <filename><link linkend='var-PACKAGES'>PACKAGES</link></filename>
11372 namespace before any renaming of the output package by
11373 classes such as <filename>debian.bbclass</filename>.
11374 </para>
11375
11376 <para>
11377 BitBake, which the OpenEmbedded build system uses, supports
11378 specifying versioned recommends.
11379 Although the syntax varies depending on the packaging
11380 format, BitBake hides these differences from you.
11381 Here is the general syntax to specify versions with
11382 the <filename>RRECOMMENDS</filename> variable:
11383 <literallayout class='monospaced'>
11384 RRECOMMENDS_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
11385 </literallayout>
11386 For <filename>operator</filename>, you can specify the
11387 following:
11388 <literallayout class='monospaced'>
11389 =
11390 &lt;
11391 &gt;
11392 &lt;=
11393 &gt;=
11394 </literallayout>
11395 For example, the following sets up a recommend on version
11396 1.2 or greater of the package <filename>foo</filename>:
11397 <literallayout class='monospaced'>
11398 RRECOMMENDS_${PN} = "foo (>= 1.2)"
11399 </literallayout>
11400 </para>
11401 </glossdef>
11402 </glossentry>
11403
11404 <glossentry id='var-RREPLACES'><glossterm>RREPLACES</glossterm>
11405 <info>
11406 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."
11407 </info>
11408 <glossdef>
11409 <para role="glossdeffirst">
11410<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11411 A list of packages replaced by a package.
11412 The package manager uses this variable to determine which
11413 package should be installed to replace other package(s)
11414 during an upgrade.
11415 In order to also have the other package(s) removed at the
11416 same time, you must add the name of the other
11417 package to the
11418 <filename><link linkend='var-RCONFLICTS'>RCONFLICTS</link></filename> variable.
11419 </para>
11420
11421 <para>
11422 As with all package-controlling variables, you must use
11423 this variable in conjunction with a package name
11424 override.
11425 Here is an example:
11426 <literallayout class='monospaced'>
11427 RREPLACES_${PN} = "<replaceable>other_package_being_replaced</replaceable>"
11428 </literallayout>
11429 </para>
11430
11431 <para>
11432 BitBake, which the OpenEmbedded build system uses, supports
11433 specifying versioned replacements.
11434 Although the syntax varies depending on the packaging
11435 format, BitBake hides these differences from you.
11436 Here is the general syntax to specify versions with
11437 the <filename>RREPLACES</filename> variable:
11438 <literallayout class='monospaced'>
11439 RREPLACES_${PN} = "<replaceable>package</replaceable> (<replaceable>operator</replaceable> <replaceable>version</replaceable>)"
11440 </literallayout>
11441 For <filename>operator</filename>, you can specify the
11442 following:
11443 <literallayout class='monospaced'>
11444 =
11445 &lt;
11446 &gt;
11447 &lt;=
11448 &gt;=
11449 </literallayout>
11450 For example, the following sets up a replacement using
11451 version 1.2 or greater of the package
11452 <filename>foo</filename>:
11453 <literallayout class='monospaced'>
11454 RREPLACES_${PN} = "foo (>= 1.2)"
11455 </literallayout>
11456 </para>
11457 </glossdef>
11458 </glossentry>
11459
11460 <glossentry id='var-RSUGGESTS'><glossterm>RSUGGESTS</glossterm>
11461 <info>
11462 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."
11463 </info>
11464 <glossdef>
11465 <para role="glossdeffirst">
11466<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11467 A list of additional packages that you can suggest for
11468 installation by the package manager at the time a package
11469 is installed.
11470 Not all package managers support this functionality.
11471 </para>
11472
11473 <para>
11474 As with all package-controlling variables, you must always
11475 use this variable in conjunction with a package name
11476 override.
11477 Here is an example:
11478 <literallayout class='monospaced'>
11479 RSUGGESTS_${PN} = "<replaceable>useful_package</replaceable> <replaceable>another_package</replaceable>"
11480 </literallayout>
11481 </para>
11482 </glossdef>
11483 </glossentry>
11484
11485 </glossdiv>
11486
11487 <glossdiv id='var-glossary-s'><title>S</title>
11488
11489 <glossentry id='var-S'><glossterm>S</glossterm>
11490 <info>
11491 S[doc] = "The location in the Build Directory where unpacked package source code resides."
11492 </info>
11493 <glossdef>
11494 <para role="glossdeffirst">
11495<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11496 The location in the
11497 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
11498 where unpacked recipe source code resides.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011499 By default, this directory is
11500 <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>,
11501 where <filename>${BPN}</filename> is the base recipe name
11502 and <filename>${PV}</filename> is the recipe version.
11503 If the source tarball extracts the code to a directory
11504 named anything other than <filename>${BPN}-${PV}</filename>,
11505 or if the source code if fetched from an SCM such as
11506 Git or Subversion, then you must set <filename>S</filename>
11507 in the recipe so that the OpenEmbedded build system
11508 knows where to find the unpacked source.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011509 </para>
11510
11511 <para>
11512 As an example, assume a
11513 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
11514 top-level folder named <filename>poky</filename> and a
11515 default Build Directory at <filename>poky/build</filename>.
11516 In this case, the work directory the build system uses
11517 to keep the unpacked recipe for <filename>db</filename>
11518 is the following:
11519 <literallayout class='monospaced'>
11520 poky/build/tmp/work/qemux86-poky-linux/db/5.1.19-r3/db-5.1.19
11521 </literallayout>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011522 The unpacked source code resides in the
11523 <filename>db-5.1.19</filename> folder.
11524 </para>
11525
11526 <para>
11527 This next example assumes a Git repository.
11528 By default, Git repositories are cloned to
11529 <filename>${WORKDIR}/git</filename> during
11530 <link linkend='ref-tasks-fetch'><filename>do_fetch</filename></link>.
11531 Since this path is different from the default value of
11532 <filename>S</filename>, you must set it specifically
11533 so the source can be located:
11534 <literallayout class='monospaced'>
11535 SRC_URI = "git://path/to/repo.git"
11536 S = "${WORKDIR}/git"
11537 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011538 </para>
11539 </glossdef>
11540 </glossentry>
11541
11542 <glossentry id='var-SANITY_REQUIRED_UTILITIES'><glossterm>SANITY_REQUIRED_UTILITIES</glossterm>
11543 <info>
11544 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."
11545 </info>
11546 <glossdef>
11547 <para role="glossdeffirst">
11548<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11549 Specifies a list of command-line utilities that should be
11550 checked for during the initial sanity checking process when
11551 running BitBake.
11552 If any of the utilities are not installed on the build host,
11553 then BitBake immediately exits with an error.
11554 </para>
11555 </glossdef>
11556 </glossentry>
11557
11558 <glossentry id='var-SANITY_TESTED_DISTROS'><glossterm>SANITY_TESTED_DISTROS</glossterm>
11559 <info>
11560 SANITY_TESTED_DISTROS[doc] = "A list of the host distribution identifiers that the build system has been tested against."
11561 </info>
11562 <glossdef>
11563 <para role="glossdeffirst">
11564<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11565 A list of the host distribution identifiers that the
11566 build system has been tested against.
11567 Identifiers consist of the host distributor ID
11568 followed by the release,
11569 as reported by the <filename>lsb_release</filename> tool
11570 or as read from <filename>/etc/lsb-release</filename>.
11571 Separate the list items with explicit newline
11572 characters (<filename>\n</filename>).
11573 If <filename>SANITY_TESTED_DISTROS</filename> is not empty
11574 and the current value of
11575 <link linkend='var-NATIVELSBSTRING'><filename>NATIVELSBSTRING</filename></link>
11576 does not appear in the list, then the build system reports
11577 a warning that indicates the current host distribution has
11578 not been tested as a build host.
11579 </para>
11580 </glossdef>
11581 </glossentry>
11582
11583 <glossentry id='var-SDK_ARCH'><glossterm>SDK_ARCH</glossterm>
11584 <info>
11585 SDK_ARCH[doc] = "The target architecture for the SDK."
11586 </info>
11587 <glossdef>
11588 <para role="glossdeffirst">
11589<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11590 The target architecture for the SDK.
11591 Typically, you do not directly set this variable.
11592 Instead, use
11593 <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>.
11594 </para>
11595 </glossdef>
11596 </glossentry>
11597
11598 <glossentry id='var-SDK_DEPLOY'><glossterm>SDK_DEPLOY</glossterm>
11599 <info>
11600 SDK_DEPLOY[doc] = "The directory set up and used by the populate_sdk_base to which the SDK is deployed."
11601 </info>
11602 <glossdef>
11603 <para role="glossdeffirst">
11604<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11605 The directory set up and used by the
11606 <link linkend='ref-classes-populate-sdk'><filename>populate_sdk_base</filename></link>
11607 to which the SDK is deployed.
11608 The <filename>populate_sdk_base</filename> class defines
11609 <filename>SDK_DEPLOY</filename> as follows:
11610 <literallayout class='monospaced'>
11611 SDK_DEPLOY = "${<link linkend='var-TMPDIR'>TMPDIR</link>}/deploy/sdk"
11612 </literallayout>
11613 </para>
11614 </glossdef>
11615 </glossentry>
11616
11617 <glossentry id='var-SDK_DIR'><glossterm>SDK_DIR</glossterm>
11618 <info>
11619 SDK_DIR[doc] = "The parent directory used by the OpenEmbedded build system when creating SDK output."
11620 </info>
11621 <glossdef>
11622 <para role="glossdeffirst">
11623<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11624 The parent directory used by the OpenEmbedded build system
11625 when creating SDK output.
11626 The
11627 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
11628 class defines the variable as follows:
11629 <literallayout class='monospaced'>
11630 SDK_DIR = "${<link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>}/sdk"
11631 </literallayout>
11632 <note>
11633 The <filename>SDK_DIR</filename> directory is a
11634 temporary directory as it is part of
11635 <filename>WORKDIR</filename>.
11636 The final output directory is
11637 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>.
11638 </note>
11639 </para>
11640 </glossdef>
11641 </glossentry>
11642
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011643 <glossentry id='var-SDK_EXT_TYPE'><glossterm>SDK_EXT_TYPE</glossterm>
11644 <info>
11645 SDK_EXT_TYPE[doc] = "Controls whether or not shared state artifacts are copied into the extensible SDK."
11646 </info>
11647 <glossdef>
11648 <para role="glossdeffirst">
11649<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11650 Controls whether or not shared state artifacts are copied
11651 into the extensible SDK.
11652 The default value of "full" copies all of the required
11653 shared state artifacts into the extensible SDK.
11654 The value "minimal" leaves these artifacts out of the
11655 SDK.
11656 <note>
11657 If you set the variable to "minimal", you need to
11658 ensure
11659 <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
11660 is set in the SDK's configuration to enable the
11661 artifacts to be fetched as needed.
11662 </note>
11663 </para>
11664 </glossdef>
11665 </glossentry>
11666
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011667 <glossentry id='var-SDK_HOST_MANIFEST'><glossterm>SDK_HOST_MANIFEST</glossterm>
11668 <info>
11669 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."
11670 </info>
11671 <glossdef>
11672 <para role="glossdeffirst">
11673<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11674 The manifest file for the host part of the SDK.
11675 This file lists all the installed packages that make up
11676 the host part of SDK.
11677 The file contains package information on a line-per-package
11678 basis as follows:
11679 <literallayout class='monospaced'>
11680 <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
11681 </literallayout>
11682 </para>
11683
11684 <para>
11685 The
11686 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
11687 class defines the manifest file as follows:
11688 <literallayout class='monospaced'>
11689 SDK_HOST_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.host.manifest"
11690 </literallayout>
11691 The location is derived using the
11692 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>
11693 and
11694 <link linkend='var-TOOLCHAIN_OUTPUTNAME'><filename>TOOLCHAIN_OUTPUTNAME</filename></link>
11695 variables.
11696 </para>
11697 </glossdef>
11698 </glossentry>
11699
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011700 <glossentry id='var-SDK_INCLUDE_PKGDATA'><glossterm>SDK_INCLUDE_PKGDATA</glossterm>
11701 <info>
11702 SDK_INCLUDE_PKGDATA[doc] = "When set to "1", specifies to include the packagedata for all recipes in the "world" target in the extensible SDK."
11703 </info>
11704 <glossdef>
11705 <para role="glossdeffirst">
11706<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11707 When set to "1", specifies to include the packagedata for
11708 all recipes in the "world" target in the extensible SDK.
11709 Including this data allows the
11710 <filename>devtool search</filename> command to find these
11711 recipes in search results, as well as allows the
11712 <filename>devtool add</filename> command to map
11713 dependencies more effectively.
11714 <note>
11715 Enabling the <filename>SDK_INCLUDE_PKGDATA</filename>
11716 variable significantly increases build time because
11717 all of world needs to be built.
11718 Enabling the variable also slightly increases the size
11719 of the extensible SDK.
11720 </note>
11721 </para>
11722 </glossdef>
11723 </glossentry>
11724
Patrick Williamsc0f7c042017-02-23 20:41:17 -060011725 <glossentry id='var-SDK_INCLUDE_TOOLCHAIN'><glossterm>SDK_INCLUDE_TOOLCHAIN</glossterm>
11726 <info>
11727 SDK_INCLUDE_TOOLCHAIN[doc] = "When set to "1", specifies to include the toolchain in the extensible SDK."
11728 </info>
11729 <glossdef>
11730 <para role="glossdeffirst">
11731<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11732 When set to "1", specifies to include the toolchain in the
11733 extensible SDK.
11734 Including the toolchain is useful particularly when
11735 <link linkend='var-SDK_EXT_TYPE'><filename>SDK_EXT_TYPE</filename></link>
11736 is set to "minimal" to keep the SDK reasonably small
11737 but you still want to provide a usable toolchain.
11738 For example, suppose you want to use the toolchain from an
11739 IDE (e.g. Eclipse) or from other tools and you do not
11740 want to perform additional steps to install the toolchain.
11741 </para>
11742
11743 <para>
11744 The <filename>SDK_INCLUDE_TOOLCHAIN</filename> variable
11745 defaults to "0" if <filename>SDK_EXT_TYPE</filename>
11746 is set to "minimal", and defaults to "1" if
11747 <filename>SDK_EXT_TYPE</filename> is set to "full".
11748 </para>
11749 </glossdef>
11750 </glossentry>
11751
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011752 <glossentry id='var-SDK_INHERIT_BLACKLIST'><glossterm>SDK_INHERIT_BLACKLIST</glossterm>
11753 <info>
11754 SDK_INHERIT_BLACKLIST[doc] = "A list of classes to remove from the INHERIT value globally within the extensible SDK configuration."
11755 </info>
11756 <glossdef>
11757 <para role="glossdeffirst">
11758<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11759 A list of classes to remove from the
11760 <link linkend='var-INHERIT'><filename>INHERIT</filename></link>
11761 value globally within the extensible SDK configuration.
11762 The default value is "buildhistory icecc".
11763 </para>
11764
11765 <para>
11766 Some classes are not generally applicable within
11767 the extensible SDK context and you can use this variable
11768 to disable them.
11769 </para>
11770 </glossdef>
11771 </glossentry>
11772
11773 <glossentry id='var-SDK_LOCAL_CONF_BLACKLIST'><glossterm>SDK_LOCAL_CONF_BLACKLIST</glossterm>
11774 <info>
11775 SDK_LOCAL_CONF_BLACKLIST[doc] = "A list of variables not allowed through from the build system configuration into the extensible SDK configuration."
11776 </info>
11777 <glossdef>
11778 <para role="glossdeffirst">
11779<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11780 A list of variables not allowed through from the build
11781 system configuration into the extensible SDK configuration.
11782 Usually, these are variables that are specific to the
11783 machine on which the build system is running and thus
11784 would be potentially problematic within the extensible SDK.
11785 </para>
11786 </glossdef>
11787 </glossentry>
11788
11789 <glossentry id='var-SDK_LOCAL_CONF_WHITELIST'><glossterm>SDK_LOCAL_CONF_WHITELIST</glossterm>
11790 <info>
11791 SDK_LOCAL_CONF_WHITELIST[doc] = "A list of variables allowed through from the build system configuration into the extensible SDK configuration."
11792 </info>
11793 <glossdef>
11794 <para role="glossdeffirst">
11795<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11796 A list of variables allowed through from the build system
11797 configuration into the extensible SDK configuration.
11798 This list overrides the variables specified using the
11799 <link linkend='var-SDK_LOCAL_CONF_BLACKLIST'><filename>SDK_LOCAL_CONF_BLACKLIST</filename></link>
11800 variable as well as any variables identified by automatic
11801 blacklisting due to the "/" character being found at the
11802 start of the value, which is usually indicative of being a
11803 path and thus might not be valid on the system where the
11804 SDK is installed.
11805 </para>
11806 </glossdef>
11807 </glossentry>
11808
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011809 <glossentry id='var-SDK_NAME'><glossterm>SDK_NAME</glossterm>
11810 <info>
11811 SDK_NAME[doc] = "The base name for SDK output files."
11812 </info>
11813 <glossdef>
11814 <para role="glossdeffirst">
11815<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11816 The base name for SDK output files.
11817 The name is derived from the
11818 <link linkend='var-DISTRO'><filename>DISTRO</filename></link>,
11819 <link linkend='var-TCLIBC'><filename>TCLIBC</filename></link>,
11820 <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
11821 <link linkend='var-IMAGE_BASENAME'><filename>IMAGE_BASENAME</filename></link>,
11822 and
11823 <link linkend='var-TUNE_PKGARCH'><filename>TUNE_PKGARCH</filename></link>
11824 variables:
11825 <literallayout class='monospaced'>
11826 SDK_NAME = "${DISTRO}-${TCLIBC}-${SDK_ARCH}-${IMAGE_BASENAME}-${TUNE_PKGARCH}"
11827 </literallayout>
11828 </para>
11829 </glossdef>
11830 </glossentry>
11831
11832 <glossentry id='var-SDK_OS'><glossterm>SDK_OS</glossterm>
11833 <info>
11834 SDK_OS[doc] = "The operating system for which the SDK will be built."
11835 </info>
11836 <glossdef>
11837 <para role="glossdeffirst">
11838<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11839 Specifies the operating system for which the SDK
11840 will be built.
11841 The default value is the value of
11842 <link linkend='var-BUILD_OS'><filename>BUILD_OS</filename></link>.
11843 </para>
11844 </glossdef>
11845 </glossentry>
11846
11847 <glossentry id='var-SDK_OUTPUT'><glossterm>SDK_OUTPUT</glossterm>
11848 <info>
11849 SDK_OUTPUT[doc] = "The location used by the OpenEmbedded build system when creating SDK output."
11850 </info>
11851 <glossdef>
11852 <para role="glossdeffirst">
11853<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11854 The location used by the OpenEmbedded build system when
11855 creating SDK output.
11856 The
11857 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
11858 class defines the variable as follows:
11859 <literallayout class='monospaced'>
11860 SDK_OUTPUT = "${<link linkend='var-SDK_DIR'>SDK_DIR</link>}/image"
11861 </literallayout>
11862 <note>
11863 The <filename>SDK_OUTPUT</filename> directory is a
11864 temporary directory as it is part of
11865 <filename>WORKDIR</filename> by way of
11866 <filename>SDK_DIR</filename>.
11867 The final output directory is
11868 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>.
11869 </note>
11870 </para>
11871 </glossdef>
11872 </glossentry>
11873
11874 <glossentry id='var-SDK_PACKAGE_ARCHS'><glossterm>SDK_PACKAGE_ARCHS</glossterm>
11875 <info>
11876 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."
11877 </info>
11878 <glossdef>
11879 <para role="glossdeffirst">
11880<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11881 Specifies a list of architectures compatible with
11882 the SDK machine.
11883 This variable is set automatically and should not
11884 normally be hand-edited.
11885 Entries are separated using spaces and listed in order
11886 of priority.
11887 The default value for
11888 <filename>SDK_PACKAGE_ARCHS</filename> is "all any noarch
11889 ${SDK_ARCH}-${SDKPKGSUFFIX}".
11890 </para>
11891 </glossdef>
11892 </glossentry>
11893
11894 <glossentry id='var-SDK_POSTPROCESS_COMMAND'><glossterm>SDK_POSTPROCESS_COMMAND</glossterm>
11895 <info>
11896 SDK_POSTPROCESS_COMMAND[doc] = "Specifies a list of functions to call once the OpenEmbedded build system has created the SDK."
11897 </info>
11898 <glossdef>
11899 <para role="glossdeffirst">
11900<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11901 Specifies a list of functions to call once the
11902 OpenEmbedded build system has created the SDK.
11903 You can specify functions separated by semicolons:
11904 <literallayout class='monospaced'>
11905 SDK_POSTPROCESS_COMMAND += "<replaceable>function</replaceable>; ... "
11906 </literallayout>
11907 </para>
11908
11909 <para>
11910 If you need to pass an SDK path to a command within a
11911 function, you can use
11912 <filename>${SDK_DIR}</filename>, which points to
11913 the parent directory used by the OpenEmbedded build system
11914 when creating SDK output.
11915 See the
11916 <link linkend='var-SDK_DIR'><filename>SDK_DIR</filename></link>
11917 variable for more information.
11918 </para>
11919 </glossdef>
11920 </glossentry>
11921
11922 <glossentry id='var-SDK_PREFIX'><glossterm>SDK_PREFIX</glossterm>
11923 <info>
11924 SDK_PREFIX[doc] = "The toolchain binary prefix used for nativesdk recipes."
11925 </info>
11926 <glossdef>
11927 <para role="glossdeffirst">
11928<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011929 The toolchain binary prefix used for
11930 <filename>nativesdk</filename> recipes.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011931 The OpenEmbedded build system uses the
11932 <filename>SDK_PREFIX</filename> value to set the
11933 <link linkend='var-TARGET_PREFIX'><filename>TARGET_PREFIX</filename></link>
11934 when building <filename>nativesdk</filename> recipes.
11935 The default value is "${SDK_SYS}-".
11936 </para>
11937 </glossdef>
11938 </glossentry>
11939
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050011940 <glossentry id='var-SDK_RECRDEP_TASKS'><glossterm>SDK_RECRDEP_TASKS</glossterm>
11941 <info>
11942 SDK_RECRDEP_TASKS[doc] = "A list of shared state tasks added to the extensible SDK."
11943 </info>
11944 <glossdef>
11945 <para role="glossdeffirst">
11946<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11947 A list of shared state tasks added to the extensible SDK.
11948 By default, the following tasks are added:
11949 <literallayout class='monospaced'>
11950 do_populate_lic
11951 do_package_qa
11952 do_populate_sysroot
11953 do_deploy
11954 </literallayout>
11955 Despite the default value of "" for the
11956 <filename>SDK_RECRDEP_TASKS</filename> variable, the
11957 above four tasks are always added to the SDK.
11958 To specify tasks beyond these four, you need to use
11959 the <filename>SDK_RECRDEP_TASKS</filename> variable (e.g.
11960 you are defining additional tasks that are needed in
11961 order to build
11962 <link linkend='var-SDK_TARGETS'><filename>SDK_TARGETS</filename></link>).
11963 </para>
11964 </glossdef>
11965 </glossentry>
11966
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011967 <glossentry id='var-SDK_SYS'><glossterm>SDK_SYS</glossterm>
11968 <info>
11969 SDK_SYS[doc] = "Specifies the system, including the architecture and the operating system, for which the SDK will be built."
11970 </info>
11971 <glossdef>
11972 <para role="glossdeffirst">
11973<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11974 Specifies the system, including the architecture and the
11975 operating system, for which the SDK will be built.
11976 </para>
11977
11978 <para>
11979 The OpenEmbedded build system automatically sets this
11980 variable based on
11981 <link linkend='var-SDK_ARCH'><filename>SDK_ARCH</filename></link>,
11982 <link linkend='var-SDK_VENDOR'><filename>SDK_VENDOR</filename></link>,
11983 and
11984 <link linkend='var-SDK_OS'><filename>SDK_OS</filename></link>.
11985 You do not need to set the <filename>SDK_SYS</filename>
11986 variable yourself.
11987 </para>
11988 </glossdef>
11989 </glossentry>
11990
11991 <glossentry id='var-SDK_TARGET_MANIFEST'><glossterm>SDK_TARGET_MANIFEST</glossterm>
11992 <info>
11993 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."
11994 </info>
11995 <glossdef>
11996 <para role="glossdeffirst">
11997<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
11998 The manifest file for the target part of the SDK.
11999 This file lists all the installed packages that make up
12000 the target part of the SDK.
12001 The file contains package information on a line-per-package
12002 basis as follows:
12003 <literallayout class='monospaced'>
12004 <replaceable>packagename</replaceable> <replaceable>packagearch</replaceable> <replaceable>version</replaceable>
12005 </literallayout>
12006 </para>
12007
12008 <para>
12009 The
12010 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
12011 class defines the manifest file as follows:
12012 <literallayout class='monospaced'>
12013 SDK_TARGET_MANIFEST = "${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.target.manifest"
12014 </literallayout>
12015 The location is derived using the
12016 <link linkend='var-SDK_DEPLOY'><filename>SDK_DEPLOY</filename></link>
12017 and
12018 <link linkend='var-TOOLCHAIN_OUTPUTNAME'><filename>TOOLCHAIN_OUTPUTNAME</filename></link>
12019 variables.
12020 </para>
12021 </glossdef>
12022 </glossentry>
12023
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012024 <glossentry id='var-SDK_TARGETS'><glossterm>SDK_TARGETS</glossterm>
12025 <info>
12026 SDK_TARGETS[doc] = "A list of targets to install from shared state as part of the standard or extensible SDK installation."
12027 </info>
12028 <glossdef>
12029 <para role="glossdeffirst">
12030<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12031 A list of targets to install from shared state as part of
12032 the standard or extensible SDK installation.
12033 The default value is "${PN}" (i.e. the image from which
12034 the SDK is built).
12035 </para>
12036
12037 <para>
12038 The <filename>SDK_TARGETS</filename> variable is an
12039 internal variable and typically would not be changed.
12040 </para>
12041 </glossdef>
12042 </glossentry>
12043
12044 <glossentry id='var-SDK_TITLE'><glossterm>SDK_TITLE</glossterm>
12045 <info>
12046 SDK_TITLE[doc] = "Specifies a title to be printed when running the SDK installer."
12047 </info>
12048 <glossdef>
12049 <para role="glossdeffirst">
12050<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12051 Specifies a title to be printed when running the SDK
12052 installer.
12053 The <filename>SDK_TITLE</filename> variable defaults to
12054 "<replaceable>distro</replaceable> SDK" for the standard
12055 SDK and "<replaceable>distro</replaceable> Extensible SDK"
12056 for the extensible SDK, where
12057 <replaceable>distro</replaceable> is the first one of
12058 <link linkend='var-DISTRO_NAME'><filename>DISTRO_NAME</filename></link>
12059 or
12060 <link linkend='var-DISTRO'><filename>DISTRO</filename></link>
12061 that is set in your configuration.
12062 </para>
12063 </glossdef>
12064 </glossentry>
12065
12066 <glossentry id='var-SDK_UPDATE_URL'><glossterm>SDK_UPDATE_URL</glossterm>
12067 <info>
12068 SDK_UPDATE_URL[doc] = "An optional URL for an update server for the extensible SDK."
12069 </info>
12070 <glossdef>
12071 <para role="glossdeffirst">
12072<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12073 An optional URL for an update server for the extensible
12074 SDK.
12075 If set, the value is used as the default update server when
12076 running <filename>devtool sdk-update</filename> within the
12077 extensible SDK.
12078 </para>
12079 </glossdef>
12080 </glossentry>
12081
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012082 <glossentry id='var-SDK_VENDOR'><glossterm>SDK_VENDOR</glossterm>
12083 <info>
12084 SDK_VENDOR[doc] = "Specifies the name of the SDK vendor."
12085 </info>
12086 <glossdef>
12087 <para role="glossdeffirst">
12088<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12089 Specifies the name of the SDK vendor.
12090 </para>
12091 </glossdef>
12092 </glossentry>
12093
12094 <glossentry id='var-SDK_VERSION'><glossterm>SDK_VERSION</glossterm>
12095 <info>
12096 SDK_VERSION[doc] = "Specifies the version for the SDK."
12097 </info>
12098 <glossdef>
12099 <para role="glossdeffirst">
12100<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12101 Specifies the version of the SDK.
12102 The distribution configuration file (e.g.
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012103 <filename>/meta-poky/conf/distro/poky.conf</filename>)
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012104 defines the <filename>SDK_VERSION</filename> as follows:
12105 <literallayout class='monospaced'>
12106 SDK_VERSION := "${@'${DISTRO_VERSION}'.replace('snapshot-${DATE}','snapshot')}"
12107 </literallayout>
12108 </para>
12109
12110 <para>
12111 For additional information, see the
12112 <link linkend='var-DISTRO_VERSION'><filename>DISTRO_VERSION</filename></link>
12113 and
12114 <link linkend='var-DATE'><filename>DATE</filename></link>
12115 variables.
12116 </para>
12117 </glossdef>
12118 </glossentry>
12119
12120 <glossentry id='var-SDKIMAGE_FEATURES'><glossterm>SDKIMAGE_FEATURES</glossterm>
12121 <info>
12122 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'."
12123 </info>
12124 <glossdef>
12125 <para role="glossdeffirst">
12126<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12127 Equivalent to
12128 <filename><link linkend='var-IMAGE_FEATURES'>IMAGE_FEATURES</link></filename>.
12129 However, this variable applies to the SDK generated from an
12130 image using the following command:
12131 <literallayout class='monospaced'>
12132 $ bitbake -c populate_sdk <replaceable>imagename</replaceable>
12133 </literallayout>
12134 </para>
12135 </glossdef>
12136 </glossentry>
12137
12138 <glossentry id='var-SDKMACHINE'><glossterm>SDKMACHINE</glossterm>
12139 <info>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012140 SDKMACHINE[doc] = "Specifies the architecture (i.e. i686 or x86_64) for which to build SDK items."
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012141 </info>
12142 <glossdef>
12143 <para role="glossdeffirst">
12144<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050012145 The machine for which the SDK is built.
12146 In other words, the SDK is built such that it
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012147 runs on the target you specify with the
12148 <filename>SDKMACHINE</filename> value.
12149 The value points to a corresponding
12150 <filename>.conf</filename> file under
12151 <filename>conf/machine-sdk/</filename>.
12152 </para>
12153
12154 <para>
12155 You can use "i686" and "x86_64" as possible values
12156 for this variable. The variable defaults to "i686"
12157 and is set in the local.conf file in the Build Directory.
12158 <literallayout class='monospaced'>
12159 SDKMACHINE ?= "i686"
12160 </literallayout>
12161 <note>
12162 You cannot set the <filename>SDKMACHINE</filename>
12163 variable in your distribution configuration file.
12164 If you do, the configuration will not take affect.
12165 </note>
12166 </para>
12167 </glossdef>
12168 </glossentry>
12169
12170 <glossentry id='var-SDKPATH'><glossterm>SDKPATH</glossterm>
12171 <info>
12172 SDKPATH[doc] = "Defines the path offered to the user for installation of the SDK that is generated by the OpenEmbedded build system."
12173 </info>
12174 <glossdef>
12175 <para role="glossdeffirst">
12176<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12177 Defines the path offered to the user for installation
12178 of the SDK that is generated by the OpenEmbedded build
12179 system.
12180 The path appears as the default location for installing
12181 the SDK when you run the SDK's installation script.
12182 You can override the offered path when you run the
12183 script.
12184 </para>
12185 </glossdef>
12186 </glossentry>
12187
12188 <glossentry id='var-SDKTARGETSYSROOT'><glossterm>SDKTARGETSYSROOT</glossterm>
12189 <info>
12190 SDKTARGETSYSROOT[doc] = "Full path to the sysroot used for cross-compilation within an SDK as it will be when installed into the default SDKPATH."
12191 </info>
12192 <glossdef>
12193 <para role="glossdeffirst">
12194<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12195 The full path to the sysroot used for cross-compilation
12196 within an SDK as it will be when installed into the
12197 default
12198 <link linkend='var-SDKPATH'><filename>SDKPATH</filename></link>.
12199 </para>
12200 </glossdef>
12201 </glossentry>
12202
12203 <glossentry id='var-SECTION'><glossterm>SECTION</glossterm>
12204 <info>
12205 SECTION[doc] = "The section in which packages should be categorized. Package management utilities can make use of this variable."
12206 </info>
12207 <glossdef>
12208 <para role="glossdeffirst">
12209<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12210 The section in which packages should be categorized.
12211 Package management utilities can make use of this variable.
12212 </para>
12213 </glossdef>
12214 </glossentry>
12215
12216 <glossentry id='var-SELECTED_OPTIMIZATION'><glossterm>SELECTED_OPTIMIZATION</glossterm>
12217 <info>
12218 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."
12219 </info>
12220 <glossdef>
12221 <para role="glossdeffirst">
12222<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12223 Specifies the optimization flags passed to the C compiler
12224 when building for the target.
12225 The flags are passed through the default value of the
12226 <link linkend='var-TARGET_CFLAGS'><filename>TARGET_CFLAGS</filename></link>
12227 variable.
12228 </para>
12229
12230 <para>
12231 The <filename>SELECTED_OPTIMIZATION</filename> variable
12232 takes the value of
12233 <filename><link linkend='var-FULL_OPTIMIZATION'>FULL_OPTIMIZATION</link></filename>
12234 unless <filename><link linkend='var-DEBUG_BUILD'>DEBUG_BUILD</link></filename> = "1".
12235 If that is the case, the value of
12236 <filename><link linkend='var-DEBUG_OPTIMIZATION'>DEBUG_OPTIMIZATION</link></filename> is used.
12237 </para>
12238 </glossdef>
12239 </glossentry>
12240
12241 <glossentry id='var-SERIAL_CONSOLE'><glossterm>SERIAL_CONSOLE</glossterm>
12242 <info>
12243 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."
12244 </info>
12245 <glossdef>
12246 <para role="glossdeffirst">
12247<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12248 Defines a serial console (TTY) to enable using getty.
12249 Provide a value that specifies the baud rate followed by
12250 the TTY device name separated by a space.
12251 You cannot specify more than one TTY device:
12252 <literallayout class='monospaced'>
12253 SERIAL_CONSOLE = "115200 ttyS0"
12254 </literallayout>
12255 <note>
12256 The <filename>SERIAL_CONSOLE</filename> variable
12257 is deprecated.
12258 Please use the
12259 <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>
12260 variable.
12261 </note>
12262 </para>
12263 </glossdef>
12264 </glossentry>
12265
12266 <glossentry id='var-SERIAL_CONSOLES'><glossterm>SERIAL_CONSOLES</glossterm>
12267 <info>
12268 SERIAL_CONSOLES[doc] = "Defines the serial consoles (TTYs) to enable using getty."
12269 </info>
12270 <glossdef>
12271 <para role="glossdeffirst">
12272<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12273 Defines the serial consoles (TTYs) to enable using getty.
12274 Provide a value that specifies the baud rate followed by
12275 the TTY device name separated by a semicolon.
12276 Use spaces to separate multiple devices:
12277 <literallayout class='monospaced'>
12278 SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
12279 </literallayout>
12280 </para>
12281 </glossdef>
12282 </glossentry>
12283
12284 <glossentry id='var-SERIAL_CONSOLES_CHECK'><glossterm>SERIAL_CONSOLES_CHECK</glossterm>
12285 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012286 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 -050012287 </info>
12288 <glossdef>
12289 <para role="glossdeffirst">
12290<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012291 Specifies serial consoles, which must be listed in
12292 <link linkend='var-SERIAL_CONSOLES'><filename>SERIAL_CONSOLES</filename></link>,
12293 to check against <filename>/proc/console</filename>
12294 before enabling them using getty.
12295 This variable allows aliasing in the format:
12296 &lt;device&gt;:&lt;alias&gt;.
12297 If a device was listed as "sclp_line0"
12298 in <filename>/dev/</filename> and "ttyS0" was listed
12299 in <filename>/proc/console</filename>, you would do the
12300 following:
12301 <literallayout class='monospaced'>
12302 SERIAL_CONSOLES_CHECK = "slcp_line0:ttyS0"
12303 </literallayout>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012304 This variable is currently only supported with SysVinit
12305 (i.e. not with systemd).
12306 </para>
12307 </glossdef>
12308 </glossentry>
12309
12310 <glossentry id='var-SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS'><glossterm>SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS</glossterm>
12311 <info>
12312 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."
12313 </info>
12314 <glossdef>
12315 <para role="glossdeffirst">
12316<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12317 A list of recipe dependencies that should not be used to
12318 determine signatures of tasks from one recipe when they
12319 depend on tasks from another recipe.
12320 For example:
12321 <literallayout class='monospaced'>
12322 SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "intone->mplayer2"
12323 </literallayout>
12324 </para>
12325
12326 <para>
12327 In this example, <filename>intone</filename> depends on
12328 <filename>mplayer2</filename>.
12329 </para>
12330
12331 <para>
12332 Use of this variable is one mechanism to remove dependencies
12333 that affect task signatures and thus force rebuilds when a
12334 recipe changes.
12335 <note><title>Caution</title>
12336 If you add an inappropriate dependency for a recipe
12337 relationship, the software might break during
12338 runtime if the interface of the second recipe was
12339 changed after the first recipe had been built.
12340 </note>
12341 </para>
12342 </glossdef>
12343 </glossentry>
12344
12345 <glossentry id='var-SIGGEN_EXCLUDERECIPES_ABISAFE'><glossterm>SIGGEN_EXCLUDERECIPES_ABISAFE</glossterm>
12346 <info>
12347 SIGGEN_EXCLUDERECIPES_ABISAFE[doc] = "A list of recipes that are completely stable and will never change."
12348 </info>
12349 <glossdef>
12350 <para role="glossdeffirst">
12351<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12352 A list of recipes that are completely stable and will
12353 never change.
12354 The ABI for the recipes in the list are presented by
12355 output from the tasks run to build the recipe.
12356 Use of this variable is one way to remove dependencies from
12357 one recipe on another that affect task signatures and
12358 thus force rebuilds when the recipe changes.
12359 <note><title>Caution</title>
12360 If you add an inappropriate variable to this list,
12361 the software might break at runtime if the
12362 interface of the recipe was changed after the other
12363 had been built.
12364 </note>
12365 </para>
12366 </glossdef>
12367 </glossentry>
12368
12369 <glossentry id='var-SITEINFO_BITS'><glossterm>SITEINFO_BITS</glossterm>
12370 <info>
12371 SITEINFO_BITS[doc] = "Specifies the number of bits for the target system CPU."
12372 </info>
12373 <glossdef>
12374 <para role="glossdeffirst">
12375<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12376 Specifies the number of bits for the target system CPU.
12377 The value should be either "32" or "64".
12378 </para>
12379 </glossdef>
12380 </glossentry>
12381
12382 <glossentry id='var-SITEINFO_ENDIANNESS'><glossterm>SITEINFO_ENDIANNESS</glossterm>
12383 <info>
12384 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'."
12385 </info>
12386 <glossdef>
12387 <para role="glossdeffirst">
12388<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12389 Specifies the endian byte order of the target system.
12390 The value should be either "le" for little-endian or "be" for big-endian.
12391 </para>
12392 </glossdef>
12393 </glossentry>
12394
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012395 <glossentry id='var-SKIP_FILEDEPS'><glossterm>SKIP_FILEDEPS</glossterm>
12396 <info>
12397 SKIP_FILEDEPS[doc] = "Enables you to remove all files from
12398 the "Provides" section of an RPM package."
12399 </info>
12400 <glossdef>
12401 <para role="glossdeffirst">
12402<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12403 Enables removal of all files from the "Provides" section of
12404 an RPM package.
12405 Removal of these files is required for packages containing
12406 prebuilt binaries and libraries such as
12407 <filename>libstdc++</filename> and
12408 <filename>glibc</filename>.
12409 </para>
12410
12411 <para>
12412 To enable file removal, set the variable to "1" in your
12413 <filename>conf/local.conf</filename> configuration file
12414 in your:
12415 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
12416 <literallayout class='monospaced'>
12417 SKIP_FILEDEPS = "1"
12418 </literallayout>
12419 </para>
12420 </glossdef>
12421 </glossentry>
12422
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012423 <glossentry id='var-SOC_FAMILY'><glossterm>SOC_FAMILY</glossterm>
12424 <info>
12425 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."
12426 </info>
12427 <glossdef>
12428 <para role="glossdeffirst">
12429<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12430 Groups together machines based upon the same family
12431 of SOC (System On Chip).
12432 You typically set this variable in a common
12433 <filename>.inc</filename> file that you include in the
12434 configuration files of all the machines.
12435 <note>
12436 You must include
12437 <filename>conf/machine/include/soc-family.inc</filename>
12438 for this variable to appear in
12439 <link linkend='var-MACHINEOVERRIDES'><filename>MACHINEOVERRIDES</filename></link>.
12440 </note>
12441 </para>
12442 </glossdef>
12443 </glossentry>
12444
12445 <glossentry id='var-SOLIBS'><glossterm>SOLIBS</glossterm>
12446 <info>
12447 SOLIBS[doc] = "Defines the suffix for shared libraries used on the target platform."
12448 </info>
12449 <glossdef>
12450 <para role="glossdeffirst">
12451<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12452 Defines the suffix for shared libraries used on the
12453 target platform.
12454 By default, this suffix is ".so.*" for all Linux-based
12455 systems and is defined in the
12456 <filename>meta/conf/bitbake.conf</filename> configuration
12457 file.
12458 </para>
12459
12460 <para>
12461 You will see this variable referenced in the default values
12462 of <filename>FILES_${PN}</filename>.
12463 </para>
12464 </glossdef>
12465 </glossentry>
12466
12467 <glossentry id='var-SOLIBSDEV'><glossterm>SOLIBSDEV</glossterm>
12468 <info>
12469 SOLIBSDEV[doc] = "Defines the suffix for the development symbolic link (symlink) for shared libraries on the target platform."
12470 </info>
12471 <glossdef>
12472 <para role="glossdeffirst">
12473<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12474 Defines the suffix for the development symbolic link
12475 (symlink) for shared libraries on the target platform.
12476 By default, this suffix is ".so" for Linux-based
12477 systems and is defined in the
12478 <filename>meta/conf/bitbake.conf</filename> configuration
12479 file.
12480 </para>
12481
12482 <para>
12483 You will see this variable referenced in the default values
12484 of <filename>FILES_${PN}-dev</filename>.
12485 </para>
12486 </glossdef>
12487 </glossentry>
12488
12489 <glossentry id='var-SOURCE_MIRROR_FETCH'><glossterm>SOURCE_MIRROR_FETCH</glossterm>
12490 <info>
12491 SOURCE_MIRROR_FETCH[doc] = "Set as part of a source mirror generation script to skip COMPATIBLE_MACHINE and COMPATIBLE_HOST checks."
12492 </info>
12493 <glossdef>
12494 <para role="glossdeffirst">
12495<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12496 When you are fetching files to create a mirror of sources
12497 (i.e. creating a source mirror), setting
12498 <filename>SOURCE_MIRROR_FETCH</filename> to "1" in your
12499 <filename>local.conf</filename> configuration file ensures
12500 the source for all recipes are fetched regardless of
12501 whether or not a recipe is compatible with the
12502 configuration.
12503 A recipe is considered incompatible with the currently
12504 configured machine when either or both the
12505 <link linkend='var-COMPATIBLE_MACHINE'><filename>COMPATIBLE_MACHINE</filename></link>
12506 variable and
12507 <link linkend='var-COMPATIBLE_HOST'><filename>COMPATIBLE_HOST</filename></link>
12508 variables specify compatibility with a machine other
12509 than that of the current machine or host.
12510 <note><title>Warning</title>
12511 Do not set the
12512 <filename>SOURCE_MIRROR_FETCH</filename> variable
12513 unless you are creating a source mirror.
12514 In other words, do not set the variable during a
12515 normal build.
12516 </note>
12517 </para>
12518 </glossdef>
12519 </glossentry>
12520
12521 <glossentry id='var-SOURCE_MIRROR_URL'><glossterm>SOURCE_MIRROR_URL</glossterm>
12522 <info>
12523 SOURCE_MIRROR_URL[doc] = "URL to source mirror that will be used before fetching from original SRC_URI."
12524 </info>
12525 <glossdef>
12526 <para role="glossdeffirst">
12527<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12528 Defines your own
12529 <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
12530 from which to first fetch source before attempting to fetch
12531 from the upstream specified in
12532 <link linkend='var-SRC_URI'><filename>SRC_URI</filename></link>.
12533 </para>
12534
12535 <para>
12536 To use this variable, you must globally inherit the
12537 <link linkend='ref-classes-own-mirrors'><filename>own-mirrors</filename></link>
12538 class and then provide the URL to your mirrors.
12539 Here is the general syntax:
12540 <literallayout class='monospaced'>
12541 INHERIT += "own-mirrors"
12542 SOURCE_MIRROR_URL = "http://<replaceable>example</replaceable>.com/<replaceable>my_source_mirror</replaceable>"
12543 </literallayout>
12544 <note>
12545 You can specify only a single URL in
12546 <filename>SOURCE_MIRROR_URL</filename>.
12547 </note>
12548 </para>
12549 </glossdef>
12550 </glossentry>
12551
12552 <glossentry id='var-SPDXLICENSEMAP'><glossterm>SPDXLICENSEMAP</glossterm>
12553 <info>
12554 SPDXLICENSEMAP[doc] = "Maps commonly used license names to their SPDX counterparts found in meta/files/common-licenses/."
12555 </info>
12556 <glossdef>
12557 <para role="glossdeffirst">
12558<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12559 Maps commonly used license names to their SPDX counterparts
12560 found in <filename>meta/files/common-licenses/</filename>.
12561 For the default <filename>SPDXLICENSEMAP</filename>
12562 mappings, see the
12563 <filename>meta/conf/licenses.conf</filename> file.
12564 </para>
12565
12566 <para>
12567 For additional information, see the
12568 <link linkend='var-LICENSE'><filename>LICENSE</filename></link>
12569 variable.
12570 </para>
12571 </glossdef>
12572 </glossentry>
12573
12574 <glossentry id='var-SPECIAL_PKGSUFFIX'><glossterm>SPECIAL_PKGSUFFIX</glossterm>
12575 <info>
12576 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."
12577 </info>
12578 <glossdef>
12579 <para role="glossdeffirst">
12580<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12581 A list of prefixes for <link linkend='var-PN'><filename>PN</filename></link> used by the
12582 OpenEmbedded build system to create variants of recipes or packages.
12583 The list specifies the prefixes to strip off during certain circumstances
12584 such as the generation of the <link linkend='var-BPN'><filename>BPN</filename></link> variable.
12585 </para>
12586 </glossdef>
12587 </glossentry>
12588
12589 <glossentry id='var-SRC_URI'><glossterm>SRC_URI</glossterm>
12590 <info>
12591 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."
12592 </info>
12593 <glossdef>
12594 <para role="glossdeffirst">
12595<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12596 The list of source files - local or remote.
12597 This variable tells the OpenEmbedded build system which bits
12598 to pull in for the build and how to pull them in.
12599 For example, if the recipe or append file only needs to
12600 fetch a tarball from the Internet, the recipe or
12601 append file uses a single <filename>SRC_URI</filename>
12602 entry.
12603 On the other hand, if the recipe or append file needs to
12604 fetch a tarball, apply two patches, and include a custom
12605 file, the recipe or append file would include four
12606 instances of the variable.
12607 </para>
12608
12609 <para>
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012610 The following list explains the available URI protocols.
12611 URI protocols are highly dependent on particular BitBake
12612 Fetcher submodules.
12613 Depending on the fetcher BitBake uses, various URL
12614 parameters are employed.
12615 For specifics on the supported Fetchers, see the
12616 "<ulink url='&YOCTO_DOCS_BB_URL;#bb-fetchers'>Fetchers</ulink>"
12617 section in the BitBake User Manual.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012618 <itemizedlist>
12619 <listitem><para><emphasis><filename>file://</filename> -</emphasis>
12620 Fetches files, which are usually files shipped with
12621 the
12622 <ulink url='&YOCTO_DOCS_DEV_URL;#metadata'>Metadata</ulink>,
12623 from the local machine.
12624 The path is relative to the
12625 <link linkend='var-FILESPATH'><filename>FILESPATH</filename></link>
12626 variable.
12627 Thus, the build system searches, in order, from the
12628 following directories, which are assumed to be a
12629 subdirectories of the directory in which the
12630 recipe file (<filename>.bb</filename>) or
12631 append file (<filename>.bbappend</filename>)
12632 resides:
12633 <itemizedlist>
12634 <listitem><para><emphasis><filename>${BPN}</filename> -</emphasis>
12635 The base recipe name without any special
12636 suffix or version numbers.
12637 </para></listitem>
12638 <listitem><para><emphasis><filename>${BP}</filename> -</emphasis>
12639 <filename>${<link linkend='var-BPN'>BPN</link>}-${PV}</filename>.
12640 The base recipe name and version but without
12641 any special package name suffix.
12642 </para></listitem>
12643 <listitem><para><emphasis>files -</emphasis>
12644 Files within a directory, which is named
12645 <filename>files</filename> and is also
12646 alongside the recipe or append file.
12647 </para></listitem>
12648 </itemizedlist>
12649 <note>
12650 If you want the build system to pick up files
12651 specified through a
12652 <filename>SRC_URI</filename>
12653 statement from your append file, you need to be
12654 sure to extend the
12655 <filename>FILESPATH</filename>
12656 variable by also using the
12657 <link linkend='var-FILESEXTRAPATHS'><filename>FILESEXTRAPATHS</filename></link>
12658 variable from within your append file.
12659 </note>
12660 </para></listitem>
12661 <listitem><para><emphasis><filename>bzr://</filename> -</emphasis> Fetches files from a
12662 Bazaar revision control repository.</para></listitem>
12663 <listitem><para><emphasis><filename>git://</filename> -</emphasis> Fetches files from a
12664 Git revision control repository.</para></listitem>
12665 <listitem><para><emphasis><filename>osc://</filename> -</emphasis> Fetches files from
12666 an OSC (OpenSUSE Build service) revision control repository.</para></listitem>
12667 <listitem><para><emphasis><filename>repo://</filename> -</emphasis> Fetches files from
12668 a repo (Git) repository.</para></listitem>
12669 <listitem><para><emphasis><filename>ccrc://</filename> -</emphasis>
12670 Fetches files from a ClearCase repository.
12671 </para></listitem>
12672 <listitem><para><emphasis><filename>http://</filename> -</emphasis> Fetches files from
12673 the Internet using <filename>http</filename>.</para></listitem>
12674 <listitem><para><emphasis><filename>https://</filename> -</emphasis> Fetches files
12675 from the Internet using <filename>https</filename>.</para></listitem>
12676 <listitem><para><emphasis><filename>ftp://</filename> -</emphasis> Fetches files
12677 from the Internet using <filename>ftp</filename>.</para></listitem>
12678 <listitem><para><emphasis><filename>cvs://</filename> -</emphasis> Fetches files from
12679 a CVS revision control repository.</para></listitem>
12680 <listitem><para><emphasis><filename>hg://</filename> -</emphasis> Fetches files from
12681 a Mercurial (<filename>hg</filename>) revision control repository.</para></listitem>
12682 <listitem><para><emphasis><filename>p4://</filename> -</emphasis> Fetches files from
12683 a Perforce (<filename>p4</filename>) revision control repository.</para></listitem>
12684 <listitem><para><emphasis><filename>ssh://</filename> -</emphasis> Fetches files from
12685 a secure shell.</para></listitem>
12686 <listitem><para><emphasis><filename>svn://</filename> -</emphasis> Fetches files from
12687 a Subversion (<filename>svn</filename>) revision control repository.</para></listitem>
12688 </itemizedlist>
12689 </para>
12690
12691 <para>
12692 Standard and recipe-specific options for <filename>SRC_URI</filename> exist.
12693 Here are standard options:
12694 <itemizedlist>
12695 <listitem><para><emphasis><filename>apply</filename> -</emphasis> Whether to apply
12696 the patch or not.
12697 The default action is to apply the patch.</para></listitem>
12698 <listitem><para><emphasis><filename>striplevel</filename> -</emphasis> Which
12699 striplevel to use when applying the patch.
12700 The default level is 1.</para></listitem>
12701 <listitem><para><emphasis><filename>patchdir</filename> -</emphasis> Specifies
12702 the directory in which the patch should be applied.
12703 The default is <filename>${</filename><link linkend='var-S'><filename>S</filename></link><filename>}</filename>.
12704 </para></listitem>
12705 </itemizedlist>
12706 </para>
12707
12708 <para>
12709 Here are options specific to recipes building code from a revision control system:
12710 <itemizedlist>
12711 <listitem><para><emphasis><filename>mindate</filename> -</emphasis>
12712 Apply the patch only if
12713 <link linkend='var-SRCDATE'><filename>SRCDATE</filename></link>
12714 is equal to or greater than <filename>mindate</filename>.
12715 </para></listitem>
12716 <listitem><para><emphasis><filename>maxdate</filename> -</emphasis>
12717 Apply the patch only if <filename>SRCDATE</filename>
12718 is not later than <filename>mindate</filename>.
12719 </para></listitem>
12720 <listitem><para><emphasis><filename>minrev</filename> -</emphasis>
12721 Apply the patch only if <filename>SRCREV</filename>
12722 is equal to or greater than <filename>minrev</filename>.
12723 </para></listitem>
12724 <listitem><para><emphasis><filename>maxrev</filename> -</emphasis>
12725 Apply the patch only if <filename>SRCREV</filename>
12726 is not later than <filename>maxrev</filename>.
12727 </para></listitem>
12728 <listitem><para><emphasis><filename>rev</filename> -</emphasis>
12729 Apply the patch only if <filename>SRCREV</filename>
12730 is equal to <filename>rev</filename>.
12731 </para></listitem>
12732 <listitem><para><emphasis><filename>notrev</filename> -</emphasis>
12733 Apply the patch only if <filename>SRCREV</filename>
12734 is not equal to <filename>rev</filename>.
12735 </para></listitem>
12736 </itemizedlist>
12737 </para>
12738
12739 <para>
12740 Here are some additional options worth mentioning:
12741 <itemizedlist>
12742 <listitem><para><emphasis><filename>unpack</filename> -</emphasis> Controls
12743 whether or not to unpack the file if it is an archive.
12744 The default action is to unpack the file.</para></listitem>
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012745 <listitem><para><emphasis><filename>destsuffix</filename> -</emphasis> Places the file
12746 (or extracts its contents) into the specified
12747 subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
12748 when the Git fetcher is used.
12749 </para></listitem>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012750 <listitem><para><emphasis><filename>subdir</filename> -</emphasis> Places the file
12751 (or extracts its contents) into the specified
Patrick Williamsf1e5d692016-03-30 15:21:19 -050012752 subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
12753 when the local (<filename>file://</filename>)
12754 fetcher is used.
12755 </para></listitem>
12756 <listitem><para><emphasis><filename>localdir</filename> -</emphasis> Places the file
12757 (or extracts its contents) into the specified
12758 subdirectory of <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
12759 when the CVS fetcher is used.
12760 </para></listitem>
12761 <listitem><para><emphasis><filename>subpath</filename> -</emphasis>
12762 Limits the checkout to a specific subpath of the
12763 tree when using the Git fetcher is used.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012764 </para></listitem>
12765 <listitem><para><emphasis><filename>name</filename> -</emphasis> Specifies a
12766 name to be used for association with <filename>SRC_URI</filename> checksums
12767 when you have more than one file specified in <filename>SRC_URI</filename>.
12768 </para></listitem>
12769 <listitem><para><emphasis><filename>downloadfilename</filename> -</emphasis> Specifies
12770 the filename used when storing the downloaded file.</para></listitem>
12771 </itemizedlist>
12772 </para>
12773 </glossdef>
12774 </glossentry>
12775
12776 <glossentry id='var-SRC_URI_OVERRIDES_PACKAGE_ARCH'><glossterm>SRC_URI_OVERRIDES_PACKAGE_ARCH</glossterm>
12777 <info>
12778 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."
12779 </info>
12780 <glossdef>
12781 <para role="glossdeffirst">
12782<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12783 By default, the OpenEmbedded build system automatically detects whether
12784 <filename><link linkend='var-SRC_URI'>SRC_URI</link></filename>
12785 contains files that are machine-specific.
12786 If so, the build system automatically changes
12787 <filename><link linkend='var-PACKAGE_ARCH'>PACKAGE_ARCH</link></filename>.
12788 Setting this variable to "0" disables this behavior.
12789 </para>
12790 </glossdef>
12791 </glossentry>
12792
12793 <glossentry id='var-SRCDATE'><glossterm>SRCDATE</glossterm>
12794 <info>
12795 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)."
12796 </info>
12797 <glossdef>
12798 <para role="glossdeffirst">
12799<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12800 The date of the source code used to build the package.
12801 This variable applies only if the source was fetched from a Source Code Manager (SCM).
12802 </para>
12803 </glossdef>
12804 </glossentry>
12805
12806 <glossentry id='var-SRCPV'><glossterm>SRCPV</glossterm>
12807 <info>
12808 SRCPV[doc] = "Returns the version string of the current package. This string is used to help define the value of PV."
12809 </info>
12810 <glossdef>
12811 <para role="glossdeffirst">
12812<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12813 Returns the version string of the current package.
12814 This string is used to help define the value of
12815 <link linkend='var-PV'><filename>PV</filename></link>.
12816 </para>
12817
12818 <para>
12819 The <filename>SRCPV</filename> variable is defined in the
12820 <filename>meta/conf/bitbake.conf</filename> configuration
12821 file in the
12822 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
12823 as follows:
12824 <literallayout class='monospaced'>
12825 SRCPV = "${@bb.fetch2.get_srcrev(d)}"
12826 </literallayout>
12827 </para>
12828
12829 <para>
12830 Recipes that need to define <filename>PV</filename> do so
12831 with the help of the <filename>SRCPV</filename>.
12832 For example, the <filename>ofono</filename> recipe
12833 (<filename>ofono_git.bb</filename>) located in
12834 <filename>meta/recipes-connectivity</filename> in the
12835 Source Directory defines <filename>PV</filename> as
12836 follows:
12837 <literallayout class='monospaced'>
12838 PV = "0.12-git${SRCPV}"
12839 </literallayout>
12840 </para>
12841 </glossdef>
12842 </glossentry>
12843
12844 <glossentry id='var-SRCREV'><glossterm>SRCREV</glossterm>
12845 <info>
12846 SRCREV[doc] = "The revision of the source code used to build the package. This variable applies to Subversion, Git, Mercurial and Bazaar only."
12847 </info>
12848 <glossdef>
12849 <para role="glossdeffirst">
12850<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12851 The revision of the source code used to build the package.
12852 This variable applies to Subversion, Git, Mercurial and
12853 Bazaar only.
12854 Note that if you want to build a fixed revision and you
12855 want to avoid performing a query on the remote repository
12856 every time BitBake parses your recipe, you should specify
12857 a <filename>SRCREV</filename> that is a
12858 full revision identifier and not just a tag.
Brad Bishop6e60e8b2018-02-01 10:27:11 -050012859 <note>
12860 For information on limitations when inheriting the
12861 latest revision of software using
12862 <filename>SRCREV</filename>, see the
12863 <link linkend='var-AUTOREV'><filename>AUTOREV</filename></link>
12864 variable description and the
12865 "<ulink url='&YOCTO_DOCS_DEV_URL;#automatically-incrementing-a-binary-package-revision-number'>Automatically Incrementing a Binary Package Revision Number</ulink>"
12866 section, which is in the Yocto Project Development Manual.
12867 </note>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012868 </para>
12869
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012870 </glossdef>
12871 </glossentry>
12872
12873 <glossentry id='var-SSTATE_DIR'><glossterm>SSTATE_DIR</glossterm>
12874 <info>
12875 SSTATE_DIR[doc] = "The directory for the shared state cache."
12876 </info>
12877 <glossdef>
12878 <para role="glossdeffirst">
12879<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12880 The directory for the shared state cache.
12881 </para>
12882 </glossdef>
12883 </glossentry>
12884
12885 <glossentry id='var-SSTATE_MIRROR_ALLOW_NETWORK'><glossterm>SSTATE_MIRROR_ALLOW_NETWORK</glossterm>
12886 <info>
12887 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"."
12888 </info>
12889 <glossdef>
12890 <para role="glossdeffirst">
12891<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12892 If set to "1", allows fetches from
12893 mirrors that are specified in
12894 <link linkend='var-SSTATE_MIRRORS'><filename>SSTATE_MIRRORS</filename></link>
12895 to work even when fetching from the network has been
12896 disabled by setting <filename>BB_NO_NETWORK</filename>
12897 to "1".
12898 Using the
12899 <filename>SSTATE_MIRROR_ALLOW_NETWORK</filename>
12900 variable is useful if you have set
12901 <filename>SSTATE_MIRRORS</filename> to point to an
12902 internal server for your shared state cache, but
12903 you want to disable any other fetching from the network.
12904 </para>
12905 </glossdef>
12906 </glossentry>
12907
12908 <glossentry id='var-SSTATE_MIRRORS'><glossterm>SSTATE_MIRRORS</glossterm>
12909 <info>
12910 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."
12911 </info>
12912 <glossdef>
12913 <para role="glossdeffirst">
12914<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12915 Configures the OpenEmbedded build system to search other
12916 mirror locations for prebuilt cache data objects before
12917 building out the data.
12918 This variable works like fetcher
12919 <link linkend='var-MIRRORS'><filename>MIRRORS</filename></link>
12920 and <link linkend='var-PREMIRRORS'><filename>PREMIRRORS</filename></link>
12921 and points to the cache locations to check for the shared
12922 objects.
12923 </para>
12924
12925 <para>
12926 You can specify a filesystem directory or a remote URL such
12927 as HTTP or FTP.
12928 The locations you specify need to contain the shared state
12929 cache (sstate-cache) results from previous builds.
12930 The sstate-cache you point to can also be from builds on
12931 other machines.
12932 </para>
12933
12934 <para>
12935 If a mirror uses the same structure as
12936 <link linkend='var-SSTATE_DIR'><filename>SSTATE_DIR</filename></link>,
12937 you need to add
12938 "PATH" at the end as shown in the examples below.
12939 The build system substitutes the correct path within the
12940 directory structure.
12941 <literallayout class='monospaced'>
12942 SSTATE_MIRRORS ?= "\
Patrick Williamsc0f7c042017-02-23 20:41:17 -060012943 file://.* http://<replaceable>someserver</replaceable>.tld/share/sstate/PATH;downloadfilename=PATH \n \
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012944 file://.* file:///<replaceable>some-local-dir</replaceable>/sstate/PATH"
12945 </literallayout>
12946 </para>
12947 </glossdef>
12948 </glossentry>
12949
Brad Bishop6e60e8b2018-02-01 10:27:11 -050012950 <glossentry id='var-SSTATE_SCAN_FILES'><glossterm>SSTATE_SCAN_FILES</glossterm>
12951 <info>
12952 SSTATE_SCAN_FILES[doc] = "Controls the list of files the OpenEmbedded build system scans for hardcoded installation paths."
12953 </info>
12954 <glossdef>
12955 <para role="glossdeffirst">
12956<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12957 Controls the list of files the OpenEmbedded build system
12958 scans for hardcoded installation paths. The variable uses a
12959 space-separated list of filenames (not paths) with standard
12960 wildcard characters allowed.
12961 </para>
12962
12963 <para>
12964 During a build, the OpenEmbedded build system creates a
12965 shared state (sstate) object during the first stage of
12966 preparing the sysroots. That object is scanned for
12967 hardcoded paths for original installation locations.
12968 The list of files that are scanned for paths is controlled
12969 by the <filename>SSTATE_SCAN_FILES</filename> variable.
12970 Typically, recipes add files they want to be scanned to the
12971 value of <filename>SSTATE_SCAN_FILES</filename> rather than
12972 the variable being comprehensively set. The
12973 <link linkend='ref-classes-sstate'><filename>sstate</filename></link>
12974 class specifies the default list of files.
12975 </para>
12976
12977 <para>
12978 For details on the process, see the
12979 <link linkend='ref-classes-staging'><filename>staging</filename></link>
12980 class.
12981 </para>
12982 </glossdef>
12983 </glossentry>
12984
Patrick Williamsc124f4f2015-09-15 14:41:29 -050012985 <glossentry id='var-STAGING_BASE_LIBDIR_NATIVE'><glossterm>STAGING_BASE_LIBDIR_NATIVE</glossterm>
12986 <info>
12987 STAGING_BASE_LIBDIR_NATIVE[doc] = "Specifies the path to the /lib subdirectory of the sysroot directory for the build host."
12988 </info>
12989 <glossdef>
12990 <para role="glossdeffirst">
12991<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
12992 Specifies the path to the <filename>/lib</filename>
12993 subdirectory of the sysroot directory for the
12994 build host.
12995 </para>
12996 </glossdef>
12997 </glossentry>
12998
12999 <glossentry id='var-STAGING_BASELIBDIR'><glossterm>STAGING_BASELIBDIR</glossterm>
13000 <info>
13001 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)."
13002 </info>
13003 <glossdef>
13004 <para role="glossdeffirst">
13005<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13006 Specifies the path to the <filename>/lib</filename>
13007 subdirectory of the sysroot directory for the target
13008 for which the current recipe is being built
13009 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
13010 </para>
13011 </glossdef>
13012 </glossentry>
13013
13014 <glossentry id='var-STAGING_BINDIR'><glossterm>STAGING_BINDIR</glossterm>
13015 <info>
13016 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)."
13017 </info>
13018 <glossdef>
13019 <para role="glossdeffirst">
13020<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13021 Specifies the path to the
13022 <filename>/usr/bin</filename> subdirectory of the
13023 sysroot directory for the target for which the current
13024 recipe is being built
13025 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
13026 </para>
13027 </glossdef>
13028 </glossentry>
13029
13030 <glossentry id='var-STAGING_BINDIR_CROSS'><glossterm>STAGING_BINDIR_CROSS</glossterm>
13031 <info>
13032 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."
13033 </info>
13034 <glossdef>
13035 <para role="glossdeffirst">
13036<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13037 Specifies the path to the directory containing binary
13038 configuration scripts.
13039 These scripts provide configuration information for
13040 other software that wants to make use of libraries or
13041 include files provided by the software associated with
13042 the script.
13043 <note>
13044 This style of build configuration has been largely
13045 replaced by <filename>pkg-config</filename>.
13046 Consequently, if <filename>pkg-config</filename>
13047 is supported by the library to which you are linking,
13048 it is recommended you use
13049 <filename>pkg-config</filename> instead of a
13050 provided configuration script.
13051 </note>
13052 </para>
13053 </glossdef>
13054 </glossentry>
13055
13056 <glossentry id='var-STAGING_BINDIR_NATIVE'><glossterm>STAGING_BINDIR_NATIVE</glossterm>
13057 <info>
13058 STAGING_BINDIR_NATIVE[doc] = "Specifies the path to the /usr/bin subdirectory of the sysroot directory for the build host."
13059 </info>
13060 <glossdef>
13061 <para role="glossdeffirst">
13062<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13063 Specifies the path to the
13064 <filename>/usr/bin</filename> subdirectory of the
13065 sysroot directory for the build host.
13066 </para>
13067 </glossdef>
13068 </glossentry>
13069
13070 <glossentry id='var-STAGING_DATADIR'><glossterm>STAGING_DATADIR</glossterm>
13071 <info>
13072 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)."
13073 </info>
13074 <glossdef>
13075 <para role="glossdeffirst">
13076<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13077 Specifies the path to the <filename>/usr/share</filename>
13078 subdirectory of the sysroot directory for the target
13079 for which the current recipe is being built
13080 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
13081 </para>
13082 </glossdef>
13083 </glossentry>
13084
13085 <glossentry id='var-STAGING_DATADIR_NATIVE'><glossterm>STAGING_DATADIR_NATIVE</glossterm>
13086 <info>
13087 STAGING_DATADIR_NATIVE[doc] = "Specifies the path to the /usr/share subdirectory of the sysroot directory for the build host."
13088 </info>
13089 <glossdef>
13090 <para role="glossdeffirst">
13091<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13092 Specifies the path to the <filename>/usr/share</filename>
13093 subdirectory of the sysroot directory for the build host.
13094 </para>
13095 </glossdef>
13096 </glossentry>
13097
13098 <glossentry id='var-STAGING_DIR'><glossterm>STAGING_DIR</glossterm>
13099 <info>
13100 STAGING_DIR[doc] = "Specifies the path to the top-level sysroots directory (i.e. ${TMPDIR}/sysroots)."
13101 </info>
13102 <glossdef>
13103 <para role="glossdeffirst">
13104<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13105 Specifies the path to the top-level sysroots directory
13106 (i.e.
13107 <filename>${</filename><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link><filename>}/sysroots</filename>).
Brad Bishop37a0e4d2017-12-04 01:01:44 -050013108 </para>
13109
13110 <para>
13111 <filename>STAGING_DIR</filename> contains the directories
13112 that are staged into the sysroot by the
13113 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13114 task.
13115 See the
13116 <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
13117 variable and the
13118 "<ulink url='&YOCTO_DOCS_DEV_URL;#new-sharing-files-between-recipes'>Sharing Files Between Recipes</ulink>"
13119 section for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013120 <note>
13121 Recipes should never write files directly under
Brad Bishop37a0e4d2017-12-04 01:01:44 -050013122 the <filename>STAGING_DIR</filename> directory because
13123 the OpenEmbedded build system
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013124 manages the directory automatically.
13125 Instead, files should be installed to
13126 <filename>${</filename><link linkend='var-D'><filename>D</filename></link><filename>}</filename>
13127 within your recipe's
13128 <link linkend='ref-tasks-install'><filename>do_install</filename></link>
13129 task and then the OpenEmbedded build system will
13130 stage a subset of those files into the sysroot.
13131 </note>
13132 </para>
13133 </glossdef>
13134 </glossentry>
13135
13136 <glossentry id='var-STAGING_DIR_HOST'><glossterm>STAGING_DIR_HOST</glossterm>
13137 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013138 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 -050013139 </info>
13140 <glossdef>
13141 <para role="glossdeffirst">
13142<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013143 Specifies the path to the sysroot directory for the system
13144 that the component is built to run on (the system that hosts
13145 the component).
13146 For most recipes, this sysroot is the one that the recipe's
13147 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13148 task copies files into.
13149 Exceptions include <filename>-native</filename> recipes,
13150 where the <filename>do_populate_sysroot</filename> task
13151 instead uses
13152 <link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>.
13153 Depending on the type of recipe and the build target,
13154 <filename>STAGING_DIR_HOST</filename> can have the
13155 following values:
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013156 <itemizedlist>
13157 <listitem><para>For recipes building for the target
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013158 machine, the value is
13159 "${<link linkend='var-STAGING_DIR'>STAGING_DIR</link>}/${<link linkend='var-MACHINE'>MACHINE</link>}".
13160 </para></listitem>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050013161 <listitem><para>For native recipes building
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013162 for the build host, the value is empty given the
13163 assumption that when building for the build host,
13164 the build host's own directories should be used.
13165 <note><para>
13166 <filename>-native</filename> recipes are not
13167 installed into host paths like such as
13168 <filename>/usr</filename>.
13169 Rather, these recipes are installed into
13170 <filename>STAGING_DIR_NATIVE</filename>.
13171 When compiling <filename>-native</filename>
13172 recipes, standard build environment variables
13173 such as
13174 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
13175 and
13176 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
13177 are set up so that both host paths and
13178 <filename>STAGING_DIR_NATIVE</filename> are
13179 searched for libraries and headers using, for
13180 example, GCC's <filename>-isystem</filename>
13181 option.</para>
13182
13183 <para>This emphasizes that the
13184 <filename>STAGING_DIR*</filename> variables
13185 should be viewed as input variables by tasks
13186 such as
13187 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>,
13188 <link linkend='ref-tasks-compile'><filename>do_compile</filename></link>,
13189 and
13190 <link linkend='ref-tasks-install'><filename>do_install</filename></link>.
13191 Having the real system root correspond to
13192 <filename>STAGING_DIR_HOST</filename> makes
13193 conceptual sense for
13194 <filename>-native</filename> recipes, as
13195 they make use of host headers and libraries.
13196 </para>
13197 </note>
Brad Bishop6e60e8b2018-02-01 10:27:11 -050013198 </para></listitem>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013199 </itemizedlist>
13200 </para>
13201 </glossdef>
13202 </glossentry>
13203
13204 <glossentry id='var-STAGING_DIR_NATIVE'><glossterm>STAGING_DIR_NATIVE</glossterm>
13205 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013206 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 -050013207 </info>
13208 <glossdef>
13209 <para role="glossdeffirst">
13210<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013211 Specifies the path to the sysroot directory used when
13212 building components that run on the build host itself.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013213 </para>
13214 </glossdef>
13215 </glossentry>
13216
13217 <glossentry id='var-STAGING_DIR_TARGET'><glossterm>STAGING_DIR_TARGET</glossterm>
13218 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013219 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 -050013220 </info>
13221 <glossdef>
13222 <para role="glossdeffirst">
13223<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013224 Specifies the path to the sysroot used for the system for
13225 which the component generates code.
13226 For components that do not generate code, which is the
13227 majority, <filename>STAGING_DIR_TARGET</filename> is set
13228 to match
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013229 <link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>.
13230 </para>
13231
13232 <para>
13233 Some recipes build binaries that can run on the target
13234 system but those binaries in turn generate code for
13235 another different system (e.g. cross-canadian recipes).
13236 Using terminology from GNU, the primary system is referred
13237 to as the "HOST" and the secondary, or different, system is
13238 referred to as the "TARGET".
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013239 Thus, the binaries run on the "HOST" system
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013240 and generate binaries for the "TARGET" system.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013241 The <filename>STAGING_DIR_HOST</filename> variable points
13242 to the sysroot used for the "HOST" system, while
13243 <filename>STAGING_DIR_TARGET</filename>
13244 points to the sysroot used for the "TARGET" system.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013245 </para>
13246 </glossdef>
13247 </glossentry>
13248
13249 <glossentry id='var-STAGING_ETCDIR_NATIVE'><glossterm>STAGING_ETCDIR_NATIVE</glossterm>
13250 <info>
13251 STAGING_ETCDIR_NATIVE[doc] = "Specifies the path to the /etc subdirectory of the sysroot directory for the build host."
13252 </info>
13253 <glossdef>
13254 <para role="glossdeffirst">
13255<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13256 Specifies the path to the <filename>/etc</filename>
13257 subdirectory of the sysroot directory for the
13258 build host.
13259 </para>
13260 </glossdef>
13261 </glossentry>
13262
13263 <glossentry id='var-STAGING_EXECPREFIXDIR'><glossterm>STAGING_EXECPREFIXDIR</glossterm>
13264 <info>
13265 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)."
13266 </info>
13267 <glossdef>
13268 <para role="glossdeffirst">
13269<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13270 Specifies the path to the <filename>/usr</filename>
13271 subdirectory of the sysroot directory for the target
13272 for which the current recipe is being built
13273 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
13274 </para>
13275 </glossdef>
13276 </glossentry>
13277
13278 <glossentry id='var-STAGING_INCDIR'><glossterm>STAGING_INCDIR</glossterm>
13279 <info>
13280 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)."
13281 </info>
13282 <glossdef>
13283 <para role="glossdeffirst">
13284<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13285 Specifies the path to the
13286 <filename>/usr/include</filename> subdirectory of the
13287 sysroot directory for the target for which the current
13288 recipe being built
13289 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
13290 </para>
13291 </glossdef>
13292 </glossentry>
13293
13294 <glossentry id='var-STAGING_INCDIR_NATIVE'><glossterm>STAGING_INCDIR_NATIVE</glossterm>
13295 <info>
13296 STAGING_INCDIR_NATIVE[doc] = "Specifies the path to the /usr/include subdirectory of the sysroot directory for the build host."
13297 </info>
13298 <glossdef>
13299 <para role="glossdeffirst">
13300<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13301 Specifies the path to the <filename>/usr/include</filename>
13302 subdirectory of the sysroot directory for the build host.
13303 </para>
13304 </glossdef>
13305 </glossentry>
13306
Patrick Williamsf1e5d692016-03-30 15:21:19 -050013307 <glossentry id='var-STAGING_KERNEL_BUILDDIR'><glossterm>STAGING_KERNEL_BUILDDIR</glossterm>
13308 <info>
13309 STAGING_KERNEL_BUILDDIR[doc] = "Points to the directory containing the kernel build artifacts."
13310 </info>
13311 <glossdef>
13312 <para role="glossdeffirst">
13313<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13314 Points to the directory containing the kernel build
13315 artifacts.
13316 Recipes building software that needs to access kernel
13317 build artifacts
13318 (e.g. <filename>systemtap-uprobes</filename>) can look in
13319 the directory specified with the
13320 <filename>STAGING_KERNEL_BUILDDIR</filename> variable to
13321 find these artifacts after the kernel has been built.
13322 </para>
13323 </glossdef>
13324 </glossentry>
13325
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013326 <glossentry id='var-STAGING_KERNEL_DIR'><glossterm>STAGING_KERNEL_DIR</glossterm>
13327 <info>
13328 STAGING_KERNEL_DIR[doc] = "The directory with kernel headers that are required to build out-of-tree modules."
13329 </info>
13330 <glossdef>
13331 <para role="glossdeffirst">
13332<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13333 The directory with kernel headers that are required to build out-of-tree
13334 modules.
13335 </para>
13336 </glossdef>
13337 </glossentry>
13338
13339 <glossentry id='var-STAGING_LIBDIR'><glossterm>STAGING_LIBDIR</glossterm>
13340 <info>
13341 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)."
13342 </info>
13343 <glossdef>
13344 <para role="glossdeffirst">
13345<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13346 Specifies the path to the <filename>/usr/lib</filename>
13347 subdirectory of the sysroot directory for the target for
13348 which the current recipe is being built
13349 (<link linkend='var-STAGING_DIR_HOST'><filename>STAGING_DIR_HOST</filename></link>).
13350 </para>
13351 </glossdef>
13352 </glossentry>
13353
13354 <glossentry id='var-STAGING_LIBDIR_NATIVE'><glossterm>STAGING_LIBDIR_NATIVE</glossterm>
13355 <info>
13356 STAGING_LIBDIR_NATIVE[doc] = "Specifies the path to the /usr/lib subdirectory of the sysroot directory for the build host."
13357 </info>
13358 <glossdef>
13359 <para role="glossdeffirst">
13360<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13361 Specifies the path to the <filename>/usr/lib</filename>
13362 subdirectory of the sysroot directory for the build host.
13363 </para>
13364 </glossdef>
13365 </glossentry>
13366
13367 <glossentry id='var-STAMP'><glossterm>STAMP</glossterm>
13368 <info>
13369 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."
13370 </info>
13371 <glossdef>
13372 <para role="glossdeffirst">
13373<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13374 Specifies the base path used to create recipe stamp files.
13375 The path to an actual stamp file is constructed by evaluating this
13376 string and then appending additional information.
13377 Currently, the default assignment for <filename>STAMP</filename>
13378 as set in the <filename>meta/conf/bitbake.conf</filename> file
13379 is:
13380 <literallayout class='monospaced'>
13381 STAMP = "${STAMPS_DIR}/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}"
13382 </literallayout>
13383 </para>
13384
13385 <para>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013386 For information on how BitBake uses stamp files to determine
13387 if a task should be rerun, see the
13388 "<link linkend='stamp-files-and-the-rerunning-of-tasks'>Stamp Files and the Rerunning of Tasks</link>"
13389 section.
13390 </para>
13391
13392 <para>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013393 See <link linkend='var-STAMPS_DIR'><filename>STAMPS_DIR</filename></link>,
13394 <link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>,
13395 <link linkend='var-PN'><filename>PN</filename></link>,
13396 <link linkend='var-EXTENDPE'><filename>EXTENDPE</filename></link>,
13397 <link linkend='var-PV'><filename>PV</filename></link>, and
13398 <link linkend='var-PR'><filename>PR</filename></link> for related variable
13399 information.
13400 </para>
13401 </glossdef>
13402 </glossentry>
13403
13404 <glossentry id='var-STAMPS_DIR'><glossterm>STAMPS_DIR</glossterm>
13405 <info>
13406 STAMPS_DIR[doc] = "Specifies the base directory in which the OpenEmbedded build system places stamps."
13407 </info>
13408 <glossdef>
13409 <para role="glossdeffirst">
13410<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13411 Specifies the base directory in which the OpenEmbedded
13412 build system places stamps.
13413 The default directory is
13414 <filename>${TMPDIR}/stamps</filename>.
13415 </para>
13416 </glossdef>
13417 </glossentry>
13418
13419 <glossentry id='var-STRIP'><glossterm>STRIP</glossterm>
13420 <info>
13421 STRIP[doc] = "Minimal command and arguments to run 'strip' (strip symbols)."
13422 </info>
13423 <glossdef>
13424 <para role="glossdeffirst">
13425<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13426 The minimal command and arguments to run
13427 <filename>strip</filename>, which is used to strip
13428 symbols.
13429 </para>
13430 </glossdef>
13431 </glossentry>
13432
13433 <glossentry id='var-SUMMARY'><glossterm>SUMMARY</glossterm>
13434 <info>
13435 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."
13436 </info>
13437 <glossdef>
13438 <para role="glossdeffirst">
13439<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13440 The short (72 characters or less) summary of the binary package for packaging
13441 systems such as <filename>opkg</filename>, <filename>rpm</filename> or
13442 <filename>dpkg</filename>.
13443 By default, <filename>SUMMARY</filename> is used to define
13444 the <link linkend='var-DESCRIPTION'><filename>DESCRIPTION</filename></link>
13445 variable if <filename>DESCRIPTION</filename> is not set
13446 in the recipe.
13447 </para>
13448 </glossdef>
13449 </glossentry>
13450
13451 <glossentry id='var-SVNDIR'><glossterm>SVNDIR</glossterm>
13452 <info>
13453 SVNDIR[doc] = "The directory where Subversion checkouts will be stored."
13454 </info>
13455 <glossdef>
13456 <para role="glossdeffirst">
13457<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13458 The directory in which files checked out of a Subversion
13459 system are stored.
13460 </para>
13461 </glossdef>
13462 </glossentry>
13463
13464 <glossentry id='var-SYSLINUX_DEFAULT_CONSOLE'><glossterm>SYSLINUX_DEFAULT_CONSOLE</glossterm>
13465 <info>
13466 SYSLINUX_DEFAULT_CONSOLE[doc] = "Specifies the kernel boot default console."
13467 </info>
13468 <glossdef>
13469 <para role="glossdeffirst">
13470<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13471 Specifies the kernel boot default console.
13472 If you want to use a console other than the default,
13473 set this variable in your recipe as follows where "X" is
13474 the console number you want to use:
13475 <literallayout class='monospaced'>
13476 SYSLINUX_DEFAULT_CONSOLE = "console=ttyX"
13477 </literallayout>
13478 </para>
13479
13480 <para>
13481 The
13482 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13483 class initially sets this variable to null but then checks
13484 for a value later.
13485 </para>
13486 </glossdef>
13487 </glossentry>
13488
13489 <glossentry id='var-SYSLINUX_OPTS'><glossterm>SYSLINUX_OPTS</glossterm>
13490 <info>
13491 SYSLINUX_OPTS[doc] = "Lists additional options to add to the syslinux file."
13492 </info>
13493 <glossdef>
13494 <para role="glossdeffirst">
13495<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13496 Lists additional options to add to the syslinux file.
13497 You need to set this variable in your recipe.
13498 If you want to list multiple options, separate the options
13499 with a semicolon character (<filename>;</filename>).
13500 </para>
13501
13502 <para>
13503 The
13504 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13505 class uses this variable to create a set of options.
13506 </para>
13507 </glossdef>
13508 </glossentry>
13509
13510 <glossentry id='var-SYSLINUX_SERIAL'><glossterm>SYSLINUX_SERIAL</glossterm>
13511 <info>
13512 SYSLINUX_SERIAL[doc] = "Specifies the alternate serial port or turns it off."
13513 </info>
13514 <glossdef>
13515 <para role="glossdeffirst">
13516<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13517 Specifies the alternate serial port or turns it off.
13518 To turn off serial, set this variable to an empty string
13519 in your recipe.
13520 The variable's default value is set in the
13521 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13522 as follows:
13523 <literallayout class='monospaced'>
13524 SYSLINUX_SERIAL ?= "0 115200"
13525 </literallayout>
13526 </para>
13527
13528 <para>
13529 The class checks for and uses the variable as needed.
13530 </para>
13531 </glossdef>
13532 </glossentry>
13533
13534 <glossentry id='var-SYSLINUX_SPLASH'><glossterm>SYSLINUX_SPLASH</glossterm>
13535 <info>
13536 SYSLINUX_SPLASH[doc] = "An .LSS file used as the background for the VGA boot menu when you are using the boot menu."
13537 </info>
13538 <glossdef>
13539 <para role="glossdeffirst">
13540<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13541 An <filename>.LSS</filename> file used as the background
13542 for the VGA boot menu when you are using the boot menu.
13543 You need to set this variable in your recipe.
13544 </para>
13545
13546 <para>
13547 The
13548 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13549 class checks for this variable and if found, the
13550 OpenEmbedded build system installs the splash screen.
13551 </para>
13552 </glossdef>
13553 </glossentry>
13554
13555 <glossentry id='var-SYSLINUX_SERIAL_TTY'><glossterm>SYSLINUX_SERIAL_TTY</glossterm>
13556 <info>
13557 SYSLINUX_SERIAL_TTY[doc] = "Specifies the alternate console=tty... kernel boot argument."
13558 </info>
13559 <glossdef>
13560 <para role="glossdeffirst">
13561<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13562 Specifies the alternate console=tty... kernel boot argument.
13563 The variable's default value is set in the
13564 <link linkend='ref-classes-syslinux'><filename>syslinux</filename></link>
13565 as follows:
13566 <literallayout class='monospaced'>
13567 SYSLINUX_SERIAL_TTY ?= "console=ttyS0,115200"
13568 </literallayout>
13569 </para>
13570
13571 <para>
13572 The class checks for and uses the variable as needed.
13573 </para>
13574 </glossdef>
13575 </glossentry>
13576
Brad Bishop6e60e8b2018-02-01 10:27:11 -050013577 <glossentry id='var-SYSROOT_DESTDIR'><glossterm>SYSROOT_DESTDIR</glossterm>
13578 <info>
13579 SYSROOT_DESTDIR[doc] = "Points to the temporary work directory (default ${WORKDIR}/sysroot-destdir) where the files that will be populated into the sysroot are assembled during the do_populate_sysroot task."
13580 </info>
13581 <glossdef>
13582 <para role="glossdeffirst">
13583<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13584 Points to the temporary directory under the work directory
13585 (default
13586 <filename>${</filename><link linkend='var-WORKDIR'><filename>WORKDIR</filename></link><filename>}/sysroot-destidir</filename>)
13587 where the files
13588 that will be populated into the sysroot are assembled
13589 during the
13590 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13591 task.
13592 <literallayout class='monospaced'>
13593 SYSROOT_DESTDIR ?= "console=ttyS0,115200"
13594 </literallayout>
13595 </para>
13596 </glossdef>
13597 </glossentry>
13598
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013599 <glossentry id='var-SYSROOT_DIRS'><glossterm>SYSROOT_DIRS</glossterm>
13600 <info>
13601 SYSROOT_DIRS[doc] = "Directories that are staged into the sysroot by the do_populate_sysroot task."
13602 </info>
13603 <glossdef>
13604 <para role="glossdeffirst">
13605<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13606 Directories that are staged into the sysroot by the
13607 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13608 task.
13609 By default, the following directories are staged:
13610 <literallayout class='monospaced'>
13611 SYSROOT_DIRS = " \
13612 ${includedir} \
13613 ${libdir} \
13614 ${base_libdir} \
13615 ${nonarch_base_libdir} \
13616 ${datadir} \
13617 "
13618 </literallayout>
13619 </para>
13620 </glossdef>
13621 </glossentry>
13622
13623 <glossentry id='var-SYSROOT_DIRS_BLACKLIST'><glossterm>SYSROOT_DIRS_BLACKLIST</glossterm>
13624 <info>
13625 SYSROOT_DIRS_BLACKLIST[doc] = "Directories that are not staged into the sysroot by the do_populate_sysroot task."
13626 </info>
13627 <glossdef>
13628 <para role="glossdeffirst">
13629<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13630 Directories that are not staged into the sysroot by the
13631 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13632 task.
13633 You can use this variable to exclude certain subdirectories
13634 of directories listed in
13635 <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>
13636 from staging.
13637 By default, the following directories are not staged:
13638 <literallayout class='monospaced'>
13639 SYSROOT_DIRS_BLACKLIST = " \
13640 ${mandir} \
13641 ${docdir} \
13642 ${infodir} \
13643 ${datadir}/locale \
13644 ${datadir}/applications \
13645 ${datadir}/fonts \
13646 ${datadir}/pixmaps \
13647 "
13648 </literallayout>
13649 </para>
13650 </glossdef>
13651 </glossentry>
13652
13653 <glossentry id='var-SYSROOT_DIRS_NATIVE'><glossterm>SYSROOT_DIRS_NATIVE</glossterm>
13654 <info>
13655 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."
13656 </info>
13657 <glossdef>
13658 <para role="glossdeffirst">
13659<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13660 Extra directories staged into the sysroot by the
13661 <link linkend='ref-tasks-populate_sysroot'><filename>do_populate_sysroot</filename></link>
13662 task for <filename>-native</filename> recipes, in addition
13663 to those specified in
13664 <link linkend='var-SYSROOT_DIRS'><filename>SYSROOT_DIRS</filename></link>.
13665 By default, the following extra directories are staged:
13666 <literallayout class='monospaced'>
13667 SYSROOT_DIRS_NATIVE = " \
13668 ${bindir} \
13669 ${sbindir} \
13670 ${base_bindir} \
13671 ${base_sbindir} \
13672 ${libexecdir} \
13673 ${sysconfdir} \
13674 ${localstatedir} \
13675 "
13676 </literallayout>
13677 <note>
13678 Programs built by <filename>-native</filename> recipes
13679 run directly from the sysroot
13680 (<link linkend='var-STAGING_DIR_NATIVE'><filename>STAGING_DIR_NATIVE</filename></link>),
13681 which is why additional directories containing program
13682 executables and supporting files need to be staged.
13683 </note>
13684 </para>
13685 </glossdef>
13686 </glossentry>
13687
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013688 <glossentry id='var-SYSROOT_PREPROCESS_FUNCS'><glossterm>SYSROOT_PREPROCESS_FUNCS</glossterm>
13689 <info>
13690 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."
13691 </info>
13692 <glossdef>
13693 <para role="glossdeffirst">
13694<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13695 A list of functions to execute after files are staged into
13696 the sysroot.
13697 These functions are usually used to apply additional
13698 processing on the staged files, or to stage additional
13699 files.
13700 </para>
13701 </glossdef>
13702 </glossentry>
13703
13704 <glossentry id='var-SYSTEMD_AUTO_ENABLE'><glossterm>SYSTEMD_AUTO_ENABLE</glossterm>
13705 <info>
13706 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."
13707 </info>
13708 <glossdef>
13709 <para role="glossdeffirst">
13710<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13711 When inheriting the
13712 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13713 class, this variable specifies whether the service you have
13714 specified in
13715 <link linkend='var-SYSTEMD_SERVICE'><filename>SYSTEMD_SERVICE</filename></link>
13716 should be started automatically or not.
13717 By default, the service is enabled to automatically start
13718 at boot time.
13719 The default setting is in the
13720 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13721 class as follows:
13722 <literallayout class='monospaced'>
13723 SYSTEMD_AUTO_ENABLE ??= "enable"
13724 </literallayout>
13725 </para>
13726
13727 <para>
13728 You can disable the service by setting the variable to
13729 "disable".
13730 </para>
13731 </glossdef>
13732 </glossentry>
13733
Patrick Williamsc0f7c042017-02-23 20:41:17 -060013734 <glossentry id='var-SYSTEMD_BOOT_CFG'><glossterm>SYSTEMD_BOOT_CFG</glossterm>
13735 <info>
13736 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."
13737 </info>
13738 <glossdef>
13739 <para role="glossdeffirst">
13740<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13741 When
13742 <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
13743 is set to "systemd-boot", the
13744 <filename>SYSTEMD_BOOT_CFG</filename> variable specifies the
13745 configuration file that should be used.
13746 By default, the
13747 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
13748 class sets the <filename>SYSTEMD_BOOT_CFG</filename> as
13749 follows:
13750 <literallayout class='monospaced'>
13751 SYSTEMD_BOOT_CFG ?= "${<link linkend='var-S'>S</link>}/loader.conf"
13752 </literallayout>
13753 </para>
13754
13755 <para>
13756 For information on Systemd-boot, see the
13757 <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
13758 </para>
13759 </glossdef>
13760 </glossentry>
13761
13762 <glossentry id='var-SYSTEMD_BOOT_ENTRIES'><glossterm>SYSTEMD_BOOT_ENTRIES</glossterm>
13763 <info>
13764 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."
13765 </info>
13766 <glossdef>
13767 <para role="glossdeffirst">
13768<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13769 When
13770 <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
13771 is set to "systemd-boot", the
13772 <filename>SYSTEMD_BOOT_ENTRIES</filename> variable specifies
13773 a list of entry files
13774 (<filename>*.conf</filename>) to be installed
13775 containing one boot entry per file.
13776 By default, the
13777 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
13778 class sets the <filename>SYSTEMD_BOOT_ENTRIES</filename> as
13779 follows:
13780 <literallayout class='monospaced'>
13781 SYSTEMD_BOOT_ENTRIES ?= ""
13782 </literallayout>
13783 </para>
13784
13785 <para>
13786 For information on Systemd-boot, see the
13787 <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
13788 </para>
13789 </glossdef>
13790 </glossentry>
13791
13792 <glossentry id='var-SYSTEMD_BOOT_TIMEOUT'><glossterm>SYSTEMD_BOOT_TIMEOUT</glossterm>
13793 <info>
13794 SYSTEMD_BOOT_TIMEOUT[doc] = "When EFI_PROVIDER is set to "systemd-boot", the SYSTEMD_BOOT_TIMEOUT variable specifies the boot menu timeout in seconds."
13795 </info>
13796 <glossdef>
13797 <para role="glossdeffirst">
13798<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13799 When
13800 <link linkend='var-EFI_PROVIDER'><filename>EFI_PROVIDER</filename></link>
13801 is set to "systemd-boot", the
13802 <filename>SYSTEMD_BOOT_TIMEOUT</filename> variable specifies
13803 the boot menu timeout in seconds.
13804 By default, the
13805 <link linkend='ref-classes-systemd-boot'><filename>systemd-boot</filename></link>
13806 class sets the <filename>SYSTEMD_BOOT_TIMEOUT</filename> as
13807 follows:
13808 <literallayout class='monospaced'>
13809 SYSTEMD_BOOT_TIMEOUT ?= "10"
13810 </literallayout>
13811 </para>
13812
13813 <para>
13814 For information on Systemd-boot, see the
13815 <ulink url='http://www.freedesktop.org/wiki/Software/systemd/systemd-boot/'>Systemd-boot documentation</ulink>.
13816 </para>
13817 </glossdef>
13818 </glossentry>
13819
Patrick Williamsc124f4f2015-09-15 14:41:29 -050013820 <glossentry id='var-SYSTEMD_PACKAGES'><glossterm>SYSTEMD_PACKAGES</glossterm>
13821 <info>
13822 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."
13823 </info>
13824 <glossdef>
13825 <para role="glossdeffirst">
13826<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13827 When inheriting the
13828 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13829 class, this variable locates the systemd unit files when
13830 they are not found in the main recipe's package.
13831 By default, the
13832 <filename>SYSTEMD_PACKAGES</filename> variable is set
13833 such that the systemd unit files are assumed to reside in
13834 the recipes main package:
13835 <literallayout class='monospaced'>
13836 SYSTEMD_PACKAGES ?= "${PN}"
13837 </literallayout>
13838 </para>
13839
13840 <para>
13841 If these unit files are not in this recipe's main
13842 package, you need to use
13843 <filename>SYSTEMD_PACKAGES</filename> to list the package
13844 or packages in which the build system can find the systemd
13845 unit files.
13846 </para>
13847 </glossdef>
13848 </glossentry>
13849
13850 <glossentry id='var-SYSTEMD_SERVICE'><glossterm>SYSTEMD_SERVICE</glossterm>
13851 <info>
13852 SYSTEMD_SERVICE[doc] = "For recipes that inherit the systemd class, this variable specifies the systemd service name for a package."
13853 </info>
13854 <glossdef>
13855 <para role="glossdeffirst">
13856<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13857 When inheriting the
13858 <link linkend='ref-classes-systemd'><filename>systemd</filename></link>
13859 class, this variable specifies the systemd service name for
13860 a package.
13861 </para>
13862
13863 <para>
13864 When you specify this file in your recipe, use a package
13865 name override to indicate the package to which the value
13866 applies.
13867 Here is an example from the connman recipe:
13868 <literallayout class='monospaced'>
13869 SYSTEMD_SERVICE_${PN} = "connman.service"
13870 </literallayout>
13871 </para>
13872 </glossdef>
13873 </glossentry>
13874
13875 <glossentry id='var-SYSVINIT_ENABLED_GETTYS'><glossterm>SYSVINIT_ENABLED_GETTYS</glossterm>
13876 <info>
13877 SYSVINIT_ENABLED_GETTYS[doc] = "Specifies which virtual terminals should be running a getty, the default is '1'."
13878 </info>
13879 <glossdef>
13880 <para role="glossdeffirst">
13881<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13882 When using
13883 <ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-enabling-system-services'>SysVinit</ulink>,
13884 specifies a space-separated list of the virtual terminals
13885 that should be running a
13886 <ulink url='http://en.wikipedia.org/wiki/Getty_%28Unix%29'>getty</ulink>
13887 (allowing login), assuming
13888 <link linkend='var-USE_VT'><filename>USE_VT</filename></link>
13889 is not set to "0".
13890 </para>
13891
13892 <para>
13893 The default value for
13894 <filename>SYSVINIT_ENABLED_GETTYS</filename> is "1"
13895 (i.e. only run a getty on the first virtual terminal).
13896 </para>
13897 </glossdef>
13898 </glossentry>
13899
13900 </glossdiv>
13901
13902 <glossdiv id='var-glossary-t'><title>T</title>
13903
13904 <glossentry id='var-T'><glossterm>T</glossterm>
13905 <info>
13906 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."
13907 </info>
13908 <glossdef>
13909 <para role="glossdeffirst">
13910<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13911 This variable points to a directory were BitBake places
13912 temporary files, which consist mostly of task logs and
13913 scripts, when building a particular recipe.
13914 The variable is typically set as follows:
13915 <literallayout class='monospaced'>
13916 T = "${WORKDIR}/temp"
13917 </literallayout>
13918 </para>
13919
13920 <para>
13921 The <link linkend='var-WORKDIR'><filename>WORKDIR</filename></link>
13922 is the directory into which BitBake unpacks and builds the
13923 recipe.
13924 The default <filename>bitbake.conf</filename> file sets this variable.</para>
13925 <para>The <filename>T</filename> variable is not to be confused with
13926 the <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link> variable,
13927 which points to the root of the directory tree where BitBake
13928 places the output of an entire build.
13929 </para>
13930 </glossdef>
13931 </glossentry>
13932
13933 <glossentry id='var-TARGET_ARCH'><glossterm>TARGET_ARCH</glossterm>
13934 <info>
13935 TARGET_ARCH[doc] = "The architecture of the device being built. The OpenEmbedded build system supports the following architectures: arm, mips, ppc, x86, x86-64."
13936 </info>
13937 <glossdef>
13938 <para role="glossdeffirst">
13939<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13940 The target machine's architecture.
13941 The OpenEmbedded build system supports many
13942 architectures.
13943 Here is an example list of architectures supported.
13944 This list is by no means complete as the architecture
13945 is configurable:
13946 <literallayout class='monospaced'>
13947 arm
13948 i586
13949 x86_64
13950 powerpc
13951 powerpc64
13952 mips
13953 mipsel
13954 </literallayout>
13955 </para>
13956
13957 <para>
13958 For additional information on machine architectures, see
13959 the
13960 <link linkend='var-TUNE_ARCH'><filename>TUNE_ARCH</filename></link>
13961 variable.
13962 </para>
13963 </glossdef>
13964 </glossentry>
13965
13966 <glossentry id='var-TARGET_AS_ARCH'><glossterm>TARGET_AS_ARCH</glossterm>
13967 <info>
13968 TARGET_AS_ARCH[doc] = "Specifies architecture-specific assembler flags for the target system."
13969 </info>
13970 <glossdef>
13971 <para role="glossdeffirst">
13972<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13973 Specifies architecture-specific assembler flags for the
13974 target system.
13975 <filename>TARGET_AS_ARCH</filename> is initialized from
13976 <link linkend='var-TUNE_ASARGS'><filename>TUNE_ASARGS</filename></link>
13977 by default in the BitBake configuration file
13978 (<filename>meta/conf/bitbake.conf</filename>):
13979 <literallayout class='monospaced'>
13980 TARGET_AS_ARCH = "${TUNE_ASARGS}"
13981 </literallayout>
13982 </para>
13983 </glossdef>
13984 </glossentry>
13985
13986 <glossentry id='var-TARGET_CC_ARCH'><glossterm>TARGET_CC_ARCH</glossterm>
13987 <info>
13988 TARGET_CC_ARCH[doc] = "Specifies architecture-specific C compiler flags for the target system."
13989 </info>
13990 <glossdef>
13991 <para role="glossdeffirst">
13992<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
13993 Specifies architecture-specific C compiler flags for the
13994 target system.
13995 <filename>TARGET_CC_ARCH</filename> is initialized from
13996 <link linkend='var-TUNE_CCARGS'><filename>TUNE_CCARGS</filename></link>
13997 by default.
13998 <note>
13999 It is a common workaround to append
14000 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
14001 to <filename>TARGET_CC_ARCH</filename>
14002 in recipes that build software for the target that
14003 would not otherwise respect the exported
14004 <filename>LDFLAGS</filename> variable.
14005 </note>
14006 </para>
14007 </glossdef>
14008 </glossentry>
14009
14010 <glossentry id='var-TARGET_CC_KERNEL_ARCH'><glossterm>TARGET_CC_KERNEL_ARCH</glossterm>
14011 <info>
14012 TARGET_CC_KERNEL_ARCH[doc] = "This is a specific kernel compiler flag for a CPU or Application Binary Interface (ABI) tune."
14013 </info>
14014 <glossdef>
14015 <para role="glossdeffirst">
14016<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14017 This is a specific kernel compiler flag for a CPU or
14018 Application Binary Interface (ABI) tune.
14019 The flag is used rarely and only for cases where a
14020 userspace
14021 <link linkend='var-TUNE_CCARGS'><filename>TUNE_CCARGS</filename></link>
14022 is not compatible with the kernel compilation.
14023 The <filename>TARGET_CC_KERNEL_ARCH</filename> variable
14024 allows the kernel (and associated modules) to use a
14025 different configuration.
14026 See the
14027 <filename>meta/conf/machine/include/arm/feature-arm-thumb.inc</filename>
14028 file in the
14029 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
14030 for an example.
14031 </para>
14032 </glossdef>
14033 </glossentry>
14034
14035 <glossentry id='var-TARGET_CFLAGS'><glossterm>TARGET_CFLAGS</glossterm>
14036 <info>
14037 TARGET_CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as CFLAGS."
14038 </info>
14039 <glossdef>
14040 <para role="glossdeffirst">
14041<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14042 Specifies the flags to pass to the C compiler when building
14043 for the target.
14044 When building in the target context,
14045 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
14046 is set to the value of this variable by default.
14047 </para>
14048
14049 <para>
14050 Additionally, the SDK's environment setup script sets
14051 the
14052 <link linkend='var-CFLAGS'><filename>CFLAGS</filename></link>
14053 variable in the environment to the
14054 <filename>TARGET_CFLAGS</filename> value so that
14055 executables built using the SDK also have the flags
14056 applied.
14057 </para>
14058 </glossdef>
14059 </glossentry>
14060
14061 <glossentry id='var-TARGET_CPPFLAGS'><glossterm>TARGET_CPPFLAGS</glossterm>
14062 <info>
14063 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."
14064 </info>
14065 <glossdef>
14066 <para role="glossdeffirst">
14067<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14068 Specifies the flags to pass to the C pre-processor
14069 (i.e. to both the C and the C++ compilers) when building
14070 for the target.
14071 When building in the target context,
14072 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
14073 is set to the value of this variable by default.
14074 </para>
14075
14076 <para>
14077 Additionally, the SDK's environment setup script sets
14078 the
14079 <link linkend='var-CPPFLAGS'><filename>CPPFLAGS</filename></link>
14080 variable in the environment to the
14081 <filename>TARGET_CPPFLAGS</filename> value so that
14082 executables built using the SDK also have the flags
14083 applied.
14084 </para>
14085 </glossdef>
14086 </glossentry>
14087
14088 <glossentry id='var-TARGET_CXXFLAGS'><glossterm>TARGET_CXXFLAGS</glossterm>
14089 <info>
14090 TARGET_CXXFLAGS[doc] = "Specifies the flags to pass to the C++ compiler when building for the target."
14091 </info>
14092 <glossdef>
14093 <para role="glossdeffirst">
14094<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14095 Specifies the flags to pass to the C++ compiler when
14096 building for the target.
14097 When building in the target context,
14098 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
14099 is set to the value of this variable by default.
14100 </para>
14101
14102 <para>
14103 Additionally, the SDK's environment setup script sets
14104 the
14105 <link linkend='var-CXXFLAGS'><filename>CXXFLAGS</filename></link>
14106 variable in the environment to the
14107 <filename>TARGET_CXXFLAGS</filename> value so that
14108 executables built using the SDK also have the flags
14109 applied.
14110 </para>
14111 </glossdef>
14112 </glossentry>
14113
14114 <glossentry id='var-TARGET_FPU'><glossterm>TARGET_FPU</glossterm>
14115 <info>
14116 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."
14117 </info>
14118 <glossdef>
14119 <para role="glossdeffirst">
14120<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14121 Specifies the method for handling FPU code.
14122 For FPU-less targets, which include most ARM CPUs, the variable must be
14123 set to "soft".
14124 If not, the kernel emulation gets used, which results in a performance penalty.
14125 </para>
14126 </glossdef>
14127 </glossentry>
14128
14129 <glossentry id='var-TARGET_LD_ARCH'><glossterm>TARGET_LD_ARCH</glossterm>
14130 <info>
14131 TARGET_LD_ARCH[doc] = "Specifies architecture-specific linker flags for the target system."
14132 </info>
14133 <glossdef>
14134 <para role="glossdeffirst">
14135<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14136 Specifies architecture-specific linker flags for the
14137 target system.
14138 <filename>TARGET_LD_ARCH</filename> is initialized from
14139 <link linkend='var-TUNE_LDARGS'><filename>TUNE_LDARGS</filename></link>
14140 by default in the BitBake configuration file
14141 (<filename>meta/conf/bitbake.conf</filename>):
14142 <literallayout class='monospaced'>
14143 TARGET_LD_ARCH = "${TUNE_LDARGS}"
14144 </literallayout>
14145 </para>
14146 </glossdef>
14147 </glossentry>
14148
14149 <glossentry id='var-TARGET_LDFLAGS'><glossterm>TARGET_LDFLAGS</glossterm>
14150 <info>
14151 TARGET_LDFLAGS[doc] = "Specifies the flags to pass to the linker when building for the target."
14152 </info>
14153 <glossdef>
14154 <para role="glossdeffirst">
14155<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14156 Specifies the flags to pass to the linker when building
14157 for the target.
14158 When building in the target context,
14159 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
14160 is set to the value of this variable by default.
14161 </para>
14162
14163 <para>
14164 Additionally, the SDK's environment setup script sets
14165 the
14166 <link linkend='var-LDFLAGS'><filename>LDFLAGS</filename></link>
14167 variable in the environment to the
14168 <filename>TARGET_LDFLAGS</filename> value so that
14169 executables built using the SDK also have the flags
14170 applied.
14171 </para>
14172 </glossdef>
14173 </glossentry>
14174
14175 <glossentry id='var-TARGET_OS'><glossterm>TARGET_OS</glossterm>
14176 <info>
14177 TARGET_OS[doc] = "Specifies the target's operating system."
14178 </info>
14179 <glossdef>
14180 <para role="glossdeffirst">
14181<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14182 Specifies the target's operating system.
14183 The variable can be set to "linux" for <filename>glibc</filename>-based systems and
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014184 to "linux-musl" for <filename>musl</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014185 For ARM/EABI targets, there are also "linux-gnueabi" and
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014186 "linux-musleabi" values possible.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014187 </para>
14188 </glossdef>
14189 </glossentry>
14190
14191 <glossentry id='var-TARGET_PREFIX'><glossterm>TARGET_PREFIX</glossterm>
14192 <info>
14193 TARGET_PREFIX[doc] = "The prefix used for the toolchain binary target tools."
14194 </info>
14195 <glossdef>
14196 <para role="glossdeffirst">
14197<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14198 Specifies the prefix used for the toolchain binary target
14199 tools.
14200 </para>
14201
14202 <para>
14203 Depending on the type of recipe and the build target,
14204 <filename>TARGET_PREFIX</filename> is set as follows:
14205 <itemizedlist>
14206 <listitem><para>
14207 For recipes building for the target machine,
14208 the value is
14209 "${<link linkend='var-TARGET_SYS'>TARGET_SYS</link>}-".
14210 </para></listitem>
14211 <listitem><para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014212 For native recipes, the build system sets the
14213 variable to the value of
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014214 <filename>BUILD_PREFIX</filename>.
14215 </para></listitem>
14216 <listitem><para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014217 For native SDK recipes
14218 (<filename>nativesdk</filename>), the
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014219 build system sets the variable to the value of
14220 <filename>SDK_PREFIX</filename>.
14221 </para></listitem>
14222 </itemizedlist>
14223 </para>
14224 </glossdef>
14225 </glossentry>
14226
14227 <glossentry id='var-TARGET_SYS'><glossterm>TARGET_SYS</glossterm>
14228 <info>
14229 TARGET_SYS[doc] = "The target system is comprised of TARGET_ARCH,TARGET_VENDOR and TARGET_OS."
14230 </info>
14231 <glossdef>
14232 <para role="glossdeffirst">
14233<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14234 Specifies the system, including the architecture and the
14235 operating system, for which the build is occurring in
14236 the context of the current recipe.
14237 </para>
14238
14239 <para>
14240 The OpenEmbedded build system automatically sets this
14241 variable based on
14242 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>,
14243 <link linkend='var-TARGET_VENDOR'><filename>TARGET_VENDOR</filename></link>,
14244 and
14245 <link linkend='var-TARGET_OS'><filename>TARGET_OS</filename></link>
14246 variables.
14247 <note>
14248 You do not need to set the
14249 <filename>TARGET_SYS</filename> variable yourself.
14250 </note>
14251 </para>
14252
14253 <para>
14254 Consider these two examples:
14255 <itemizedlist>
14256 <listitem><para>
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014257 Given a native recipe on a 32-bit, x86 machine
14258 running Linux, the value is "i686-linux".
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014259 </para></listitem>
14260 <listitem><para>
14261 Given a recipe being built for a little-endian,
14262 MIPS target running Linux, the value might be
14263 "mipsel-linux".
14264 </para></listitem>
14265 </itemizedlist>
14266 </para>
14267 </glossdef>
14268 </glossentry>
14269
14270 <glossentry id='var-TARGET_VENDOR'><glossterm>TARGET_VENDOR</glossterm>
14271 <info>
14272 TARGET_VENDOR[doc] = "The name of the target vendor."
14273 </info>
14274 <glossdef>
14275 <para role="glossdeffirst">
14276<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14277 Specifies the name of the target vendor.
14278 </para>
14279 </glossdef>
14280 </glossentry>
14281
14282 <glossentry id='var-TCLIBCAPPEND'><glossterm>TCLIBCAPPEND</glossterm>
14283 <info>
14284 TCLIBCAPPEND[doc] = "Specifies a suffix appended to TMPDIR that identifies the libc variant for the build."
14285 </info>
14286 <glossdef>
14287 <para role="glossdeffirst">
14288<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14289 Specifies a suffix to be appended onto the
14290 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
14291 value.
14292 The suffix identifies the <filename>libc</filename> variant
14293 for building.
14294 When you are building for multiple variants with the same
14295 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>,
14296 this mechanism ensures that output for different
14297 <filename>libc</filename> variants is kept separate to
14298 avoid potential conflicts.
14299 </para>
14300
14301 <para>
14302 In the <filename>defaultsetup.conf</filename> file, the
14303 default value of <filename>TCLIBCAPPEND</filename> is
14304 "-${TCLIBC}".
14305 However, distros such as poky, which normally only support
14306 one <filename>libc</filename> variant, set
14307 <filename>TCLIBCAPPEND</filename> to "" in their distro
14308 configuration file resulting in no suffix being applied.
14309 </para>
14310 </glossdef>
14311 </glossentry>
14312
14313 <glossentry id='var-TCLIBC'><glossterm>TCLIBC</glossterm>
14314 <info>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014315 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 -050014316 </info>
14317 <glossdef>
14318 <para role="glossdeffirst">
14319<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14320 Specifies the GNU standard C library (<filename>libc</filename>)
14321 variant to use during the build process.
14322 This variable replaces <filename>POKYLIBC</filename>, which is no longer
14323 supported.
14324 </para>
14325
14326 <para>
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014327 You can select "glibc" or "musl".
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014328 </para>
14329 </glossdef>
14330 </glossentry>
14331
14332 <glossentry id='var-TCMODE'><glossterm>TCMODE</glossterm>
14333 <info>
14334 TCMODE[doc] = "Enables an external toolchain (where provided by an additional layer) if set to a value other than 'default'."
14335 </info>
14336 <glossdef>
14337 <para role="glossdeffirst">
14338<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14339 Specifies the toolchain selector.
14340 <filename>TCMODE</filename> controls the characteristics
14341 of the generated packages and images by telling the
14342 OpenEmbedded build system which toolchain profile to use.
14343 By default, the OpenEmbedded build system builds its own
14344 internal toolchain.
14345 The variable's default value is "default", which uses
14346 that internal toolchain.
14347 <note>
14348 If <filename>TCMODE</filename> is set to a value
14349 other than "default", then it is your responsibility
14350 to ensure that the toolchain is compatible with the
14351 default toolchain.
14352 Using older or newer versions of these components
14353 might cause build problems.
14354 See the
14355 <ulink url='&YOCTO_RELEASE_NOTES;'>Release Notes</ulink>
14356 for the specific components with which the toolchain
14357 must be compatible.
14358 </note>
14359 </para>
14360
14361 <para>
14362 The <filename>TCMODE</filename> variable is similar to
14363 <link linkend='var-TCLIBC'><filename>TCLIBC</filename></link>,
14364 which controls the variant of the GNU standard C library
14365 (<filename>libc</filename>) used during the build process:
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014366 <filename>glibc</filename> or <filename>musl</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014367 </para>
14368
14369 <para>
14370 With additional layers, it is possible to use a pre-compiled
14371 external toolchain.
14372 One example is the Sourcery G++ Toolchain.
14373 The support for this toolchain resides in the separate
14374 <trademark class='registered'>Mentor Graphics</trademark>
14375 <filename>meta-sourcery</filename> layer at
14376 <ulink url='http://github.com/MentorEmbedded/meta-sourcery/'></ulink>.
14377 </para>
14378
14379 <para>
14380 The layer's <filename>README</filename> file contains
14381 information on how to use the Sourcery G++ Toolchain as
14382 an external toolchain.
14383 In summary, you must be sure to add the layer to your
14384 <filename>bblayers.conf</filename> file in front of the
14385 <filename>meta</filename> layer and then set the
14386 <filename>EXTERNAL_TOOLCHAIN</filename>
14387 variable in your <filename>local.conf</filename> file
14388 to the location in which you installed the toolchain.
14389 </para>
14390
14391 <para>
14392 The fundamentals used for this example apply to any
14393 external toolchain.
14394 You can use <filename>meta-sourcery</filename> as a
14395 template for adding support for other external toolchains.
14396 </para>
14397 </glossdef>
14398 </glossentry>
14399
14400 <glossentry id='var-TEST_EXPORT_DIR'><glossterm>TEST_EXPORT_DIR</glossterm>
14401 <info>
14402 TEST_EXPORT_DIR[doc] = "The location the OpenEmbedded build system uses to export tests when the TEST_EXPORT_ONLY variable is set to "1"."
14403 </info>
14404 <glossdef>
14405 <para role="glossdeffirst">
14406<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14407 The location the OpenEmbedded build system uses to export
14408 tests when the
14409 <link linkend='var-TEST_EXPORT_ONLY'><filename>TEST_EXPORT_ONLY</filename></link>
14410 variable is set to "1".
14411 </para>
14412
14413 <para>
14414 The <filename>TEST_EXPORT_DIR</filename> variable defaults
14415 to <filename>"${TMPDIR}/testimage/${PN}"</filename>.
14416 </para>
14417 </glossdef>
14418 </glossentry>
14419
14420 <glossentry id='var-TEST_EXPORT_ONLY'><glossterm>TEST_EXPORT_ONLY</glossterm>
14421 <info>
14422 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."
14423 </info>
14424 <glossdef>
14425 <para role="glossdeffirst">
14426<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14427 Specifies to export the tests only.
14428 Set this variable to "1" if you do not want to run the
14429 tests but you want them to be exported in a manner that
14430 you to run them outside of the build system.
14431 </para>
14432 </glossdef>
14433 </glossentry>
14434
14435 <glossentry id='var-TEST_IMAGE'><glossterm>TEST_IMAGE</glossterm>
14436 <info>
14437 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."
14438 </info>
14439 <glossdef>
14440 <para role="glossdeffirst">
14441<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14442 Automatically runs the series of automated tests for
14443 images when an image is successfully built.
14444 </para>
14445
14446 <para>
14447 These tests are written in Python making use of the
14448 <filename>unittest</filename> module, and the majority of
14449 them run commands on the target system over
14450 <filename>ssh</filename>.
14451 You can set this variable to "1" in your
14452 <filename>local.conf</filename> file in the
14453 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>
14454 to have the OpenEmbedded build system automatically run
14455 these tests after an image successfully builds:
14456 <literallayout class='monospaced'>
14457 TEST_IMAGE = "1"
14458 </literallayout>
14459 For more information on enabling, running, and writing
14460 these tests, see the
14461 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
14462 section in the Yocto Project Development Manual and the
Patrick Williamsf1e5d692016-03-30 15:21:19 -050014463 "<link linkend='ref-classes-testimage*'><filename>testimage*.bbclass</filename></link>"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014464 section.
14465 </para>
14466 </glossdef>
14467 </glossentry>
14468
14469 <glossentry id='var-TEST_LOG_DIR'><glossterm>TEST_LOG_DIR</glossterm>
14470 <info>
14471 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"."
14472 </info>
14473 <glossdef>
14474 <para role="glossdeffirst">
14475<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14476 Holds the SSH log and the boot log for QEMU machines.
14477 The <filename>TEST_LOG_DIR</filename> variable defaults
14478 to <filename>"${WORKDIR}/testimage"</filename>.
14479 <note>
14480 Actual test results reside in the task log
14481 (<filename>log.do_testimage</filename>), which is in
14482 the <filename>${WORKDIR}/temp/</filename> directory.
14483 </note>
14484 </para>
14485 </glossdef>
14486 </glossentry>
14487
14488 <glossentry id='var-TEST_POWERCONTROL_CMD'><glossterm>TEST_POWERCONTROL_CMD</glossterm>
14489 <info>
14490 TEST_POWERCONTROL_CMD[doc] = "For automated hardware testing, specifies the command to use to control the power of the target machine under test"
14491 </info>
14492 <glossdef>
14493 <para role="glossdeffirst">
14494<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14495 For automated hardware testing, specifies the command to
14496 use to control the power of the target machine under test.
14497 Typically, this command would point to a script that
14498 performs the appropriate action (e.g. interacting
14499 with a web-enabled power strip).
14500 The specified command should expect to receive as the last
14501 argument "off", "on" or "cycle" specifying to power off,
14502 on, or cycle (power off and then power on) the device,
14503 respectively.
14504 </para>
14505 </glossdef>
14506 </glossentry>
14507
14508 <glossentry id='var-TEST_POWERCONTROL_EXTRA_ARGS'><glossterm>TEST_POWERCONTROL_EXTRA_ARGS</glossterm>
14509 <info>
14510 TEST_POWERCONTROL_EXTRA_ARGS[doc] = "For automated hardware testing, specifies additional arguments to pass through to the command specified in TEST_POWERCONTROL_CMD"
14511 </info>
14512 <glossdef>
14513 <para role="glossdeffirst">
14514<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14515 For automated hardware testing, specifies additional
14516 arguments to pass through to the command specified in
14517 <link linkend='var-TEST_POWERCONTROL_CMD'><filename>TEST_POWERCONTROL_CMD</filename></link>.
14518 Setting <filename>TEST_POWERCONTROL_EXTRA_ARGS</filename>
14519 is optional.
14520 You can use it if you wish, for example, to separate the
14521 machine-specific and non-machine-specific parts of the
14522 arguments.
14523 </para>
14524 </glossdef>
14525 </glossentry>
14526
14527 <glossentry id='var-TEST_QEMUBOOT_TIMEOUT'><glossterm>TEST_QEMUBOOT_TIMEOUT</glossterm>
14528 <info>
14529 TEST_QEMUBOOT_TIMEOUT[doc] = "The time in seconds allowed for an image to boot before automated runtime tests begin to run against an image."
14530 </info>
14531 <glossdef>
14532 <para role="glossdeffirst">
14533<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14534 The time in seconds allowed for an image to boot before
14535 automated runtime tests begin to run against an
14536 image.
14537 The default timeout period to allow the boot process to
14538 reach the login prompt is 500 seconds.
14539 You can specify a different value in the
14540 <filename>local.conf</filename> file.
14541 </para>
14542
14543 <para>
14544 For more information on testing images, see the
14545 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
14546 section in the Yocto Project Development Manual.
14547 </para>
14548 </glossdef>
14549 </glossentry>
14550
14551 <glossentry id='var-TEST_SERIALCONTROL_CMD'><glossterm>TEST_SERIALCONTROL_CMD</glossterm>
14552 <info>
14553 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."
14554 </info>
14555 <glossdef>
14556 <para role="glossdeffirst">
14557<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14558 For automated hardware testing, specifies the command
14559 to use to connect to the serial console of the target
14560 machine under test.
14561 This command simply needs to connect to the serial console
14562 and forward that connection to standard input and output
14563 as any normal terminal program does.
14564 </para>
14565
14566 <para>
14567 For example, to use the Picocom terminal program on
14568 serial device <filename>/dev/ttyUSB0</filename> at
14569 115200bps, you would set the variable as follows:
14570 <literallayout class='monospaced'>
14571 TEST_SERIALCONTROL_CMD = "picocom /dev/ttyUSB0 -b 115200"
14572 </literallayout>
14573 </para>
14574 </glossdef>
14575 </glossentry>
14576
14577 <glossentry id='var-TEST_SERIALCONTROL_EXTRA_ARGS'><glossterm>TEST_SERIALCONTROL_EXTRA_ARGS</glossterm>
14578 <info>
14579 TEST_SERIALCONTROL_EXTRA_ARGS[doc] = "For automated hardware testing, specifies additional arguments to pass through to the command specified in TEST_SERIALCONTROL_CMD."
14580 </info>
14581 <glossdef>
14582 <para role="glossdeffirst">
14583<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14584 For automated hardware testing, specifies additional
14585 arguments to pass through to the command specified in
14586 <link linkend='var-TEST_SERIALCONTROL_CMD'><filename>TEST_SERIALCONTROL_CMD</filename></link>.
14587 Setting <filename>TEST_SERIALCONTROL_EXTRA_ARGS</filename>
14588 is optional.
14589 You can use it if you wish, for example, to separate the
14590 machine-specific and non-machine-specific parts of the
14591 command.
14592 </para>
14593 </glossdef>
14594 </glossentry>
14595
14596 <glossentry id='var-TEST_SERVER_IP'><glossterm>TEST_SERVER_IP</glossterm>
14597 <info>
14598 TEST_SERVER_IP[doc] = "The IP address of the build machine (host machine). This IP address is usually automatically detected."
14599 </info>
14600 <glossdef>
14601 <para role="glossdeffirst">
14602<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14603 The IP address of the build machine (host machine).
14604 This IP address is usually automatically detected.
14605 However, if detection fails, this variable needs to be set
14606 to the IP address of the build machine (i.e. where
14607 the build is taking place).
14608 <note>
14609 The <filename>TEST_SERVER_IP</filename> variable
14610 is only used for a small number of tests such as
Brad Bishop6e60e8b2018-02-01 10:27:11 -050014611 the "dnf" test suite, which needs to download
14612 packages from
14613 <filename>WORKDIR/oe-rootfs-repo</filename>.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014614 </note>
14615 </para>
14616 </glossdef>
14617 </glossentry>
14618
14619 <glossentry id='var-TEST_TARGET'><glossterm>TEST_TARGET</glossterm>
14620 <info>
14621 TEST_TARGET[doc] = "For automated runtime testing, specifies the method of deploying the image and running tests on the target machine."
14622 </info>
14623 <glossdef>
14624 <para role="glossdeffirst">
14625<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14626 Specifies the target controller to use when running tests
14627 against a test image.
14628 The default controller to use is "qemu":
14629 <literallayout class='monospaced'>
14630 TEST_TARGET = "qemu"
14631 </literallayout>
14632 </para>
14633
14634 <para>
14635 A target controller is a class that defines how an
14636 image gets deployed on a target and how a target is started.
14637 A layer can extend the controllers by adding a module
14638 in the layer's <filename>/lib/oeqa/controllers</filename>
14639 directory and by inheriting the
14640 <filename>BaseTarget</filename> class, which is an abstract
14641 class that cannot be used as a value of
14642 <filename>TEST_TARGET</filename>.
14643 </para>
14644
14645 <para>
14646 You can provide the following arguments with
14647 <filename>TEST_TARGET</filename>:
14648 <itemizedlist>
14649 <listitem><para><emphasis>"qemu" and "QemuTarget":</emphasis>
14650 Boots a QEMU image and runs the tests.
14651 See the
14652 "<ulink url='&YOCTO_DOCS_DEV_URL;#qemu-image-enabling-tests'>Enabling Runtime Tests on QEMU</ulink>"
14653 section in the Yocto Project Development Manual for
14654 more information.
14655 </para></listitem>
14656 <listitem><para><emphasis>"simpleremote" and "SimpleRemoteTarget":</emphasis>
14657 Runs the tests on target hardware that is already
14658 up and running.
14659 The hardware can be on the network or it can be
14660 a device running an image on QEMU.
14661 You must also set
14662 <link linkend='var-TEST_TARGET_IP'><filename>TEST_TARGET_IP</filename></link>
14663 when you use "simpleremote" or "SimpleRemoteTarget".
14664 <note>
14665 This argument is defined in
14666 <filename>meta/lib/oeqa/targetcontrol.py</filename>.
14667 The small caps names are kept for compatibility
14668 reasons.
14669 </note>
14670 </para></listitem>
14671 <listitem><para><emphasis>"GummibootTarget":</emphasis>
14672 Automatically deploys and runs tests on an
14673 EFI-enabled machine that has a master image
14674 installed.
14675 <note>
14676 This argument is defined in
14677 <filename>meta/lib/oeqa/controllers/masterimage.py</filename>.
14678 </note>
14679 </para></listitem>
14680 </itemizedlist>
14681 </para>
14682
14683 <para>
14684 For information on running tests on hardware, see the
14685 "<ulink url='&YOCTO_DOCS_DEV_URL;#hardware-image-enabling-tests'>Enabling Runtime Tests on Hardware</ulink>"
14686 section in the Yocto Project Development Manual.
14687 </para>
14688 </glossdef>
14689 </glossentry>
14690
14691 <glossentry id='var-TEST_TARGET_IP'><glossterm>TEST_TARGET_IP</glossterm>
14692 <info>
14693 TEST_TARGET_IP[doc] = "The IP address of your hardware under test."
14694 </info>
14695 <glossdef>
14696 <para role="glossdeffirst">
14697<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14698 The IP address of your hardware under test.
14699 The <filename>TEST_TARGET_IP</filename> variable has no
14700 effect when
14701 <link linkend='var-TEST_TARGET'><filename>TEST_TARGET</filename></link>
14702 is set to "qemu".
14703 </para>
14704
14705 <para>
14706 When you specify the IP address, you can also include a
14707 port.
14708 Here is an example:
14709 <literallayout class='monospaced'>
14710 TEST_TARGET_IP = "192.168.1.4:2201"
14711 </literallayout>
14712 Specifying a port is useful when SSH is started on a
14713 non-standard port or in cases when your hardware under test
14714 is behind a firewall or network that is not directly
14715 accessible from your host and you need to do port address
14716 translation.
14717 </para>
14718 </glossdef>
14719 </glossentry>
14720
14721 <glossentry id='var-TEST_SUITES'><glossterm>TEST_SUITES</glossterm>
14722 <info>
14723 TEST_SUITES[doc] = "An ordered list of tests (modules) to run against an image when performing automated runtime testing."
14724 </info>
14725 <glossdef>
14726 <para role="glossdeffirst">
14727<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14728 An ordered list of tests (modules) to run against
14729 an image when performing automated runtime testing.
14730 </para>
14731
14732 <para>
14733 The OpenEmbedded build system provides a core set of tests
14734 that can be used against images.
14735 <note>
14736 Currently, there is only support for running these tests
14737 under QEMU.
14738 </note>
14739 Tests include <filename>ping</filename>,
14740 <filename>ssh</filename>, <filename>df</filename> among
14741 others.
14742 You can add your own tests to the list of tests by
14743 appending <filename>TEST_SUITES</filename> as follows:
14744 <literallayout class='monospaced'>
14745 TEST_SUITES_append = " <replaceable>mytest</replaceable>"
14746 </literallayout>
14747 Alternatively, you can provide the "auto" option to
14748 have all applicable tests run against the image.
14749 <literallayout class='monospaced'>
14750 TEST_SUITES_append = " auto"
14751 </literallayout>
14752 Using this option causes the build system to automatically
14753 run tests that are applicable to the image.
14754 Tests that are not applicable are skipped.
14755 </para>
14756
14757 <para>
14758 The order in which tests are run is important.
14759 Tests that depend on another test must appear later in the
14760 list than the test on which they depend.
14761 For example, if you append the list of tests with two
14762 tests (<filename>test_A</filename> and
14763 <filename>test_B</filename>) where
14764 <filename>test_B</filename> is dependent on
14765 <filename>test_A</filename>, then you must order the tests
14766 as follows:
14767 <literallayout class='monospaced'>
14768 TEST_SUITES = " test_A test_B"
14769 </literallayout>
14770 </para>
14771
14772 <para>
14773 For more information on testing images, see the
14774 "<ulink url='&YOCTO_DOCS_DEV_URL;#performing-automated-runtime-testing'>Performing Automated Runtime Testing</ulink>"
14775 section in the Yocto Project Development Manual.
14776 </para>
14777 </glossdef>
14778 </glossentry>
14779
14780 <glossentry id='var-THISDIR'><glossterm>THISDIR</glossterm>
14781 <info>
14782 THISDIR[doc] = "The directory in which the file BitBake is currently parsing is located."
14783 </info>
14784 <glossdef>
14785 <para role="glossdeffirst">
14786<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14787 The directory in which the file BitBake is currently
14788 parsing is located.
14789 Do not manually set this variable.
14790 </para>
14791 </glossdef>
14792 </glossentry>
14793
14794 <glossentry id='var-TIME'><glossterm>TIME</glossterm>
14795 <info>
14796 TIME[doc] = "The time the build was started using HMS format."
14797 </info>
14798 <glossdef>
14799 <para role="glossdeffirst">
14800<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14801 The time the build was started.
14802 Times appear using the hour, minute, and second (HMS)
14803 format (e.g. "140159" for one minute and fifty-nine
14804 seconds past 1400 hours).
14805 </para>
14806 </glossdef>
14807 </glossentry>
14808
14809 <glossentry id='var-TMPDIR'><glossterm>TMPDIR</glossterm>
14810 <info>
14811 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."
14812 </info>
14813 <glossdef>
14814 <para role="glossdeffirst">
14815<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14816 This variable is the base directory the OpenEmbedded
14817 build system uses for all build output and intermediate
14818 files (other than the shared state cache).
14819 By default, the <filename>TMPDIR</filename> variable points
14820 to <filename>tmp</filename> within the
14821 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
14822 </para>
14823
14824 <para>
14825 If you want to establish this directory in a location other
14826 than the default, you can uncomment and edit the following
14827 statement in the
14828 <filename>conf/local.conf</filename> file in the
14829 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>:
14830 <literallayout class='monospaced'>
14831 #TMPDIR = "${TOPDIR}/tmp"
14832 </literallayout>
14833 An example use for this scenario is to set
14834 <filename>TMPDIR</filename> to a local disk, which does
14835 not use NFS, while having the Build Directory use NFS.
14836 </para>
14837
14838 <para>
14839 The filesystem used by <filename>TMPDIR</filename> must
14840 have standard filesystem semantics (i.e. mixed-case files
14841 are unique, POSIX file locking, and persistent inodes).
14842 Due to various issues with NFS and bugs in some
14843 implementations, NFS does not meet this minimum
14844 requirement.
14845 Consequently, <filename>TMPDIR</filename> cannot be on
14846 NFS.
14847 </para>
14848 </glossdef>
14849 </glossentry>
14850
14851 <glossentry id='var-TOOLCHAIN_HOST_TASK'><glossterm>TOOLCHAIN_HOST_TASK</glossterm>
14852 <info>
14853 TOOLCHAIN_HOST_TASK[doc] = "This variable lists packages the OpenEmbedded build system uses when building an SDK, which contains a cross-development environment."
14854 </info>
14855 <glossdef>
14856 <para role="glossdeffirst">
14857<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14858 This variable lists packages the OpenEmbedded build system
14859 uses when building an SDK, which contains a
14860 cross-development environment.
14861 The packages specified by this variable are part of the
14862 toolchain set that runs on the
14863 <link linkend='var-SDKMACHINE'><filename>SDKMACHINE</filename></link>,
14864 and each package should usually have the prefix
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014865 <filename>nativesdk-</filename>.
14866 For example, consider the following command when
14867 building an SDK:
14868 <literallayout class='monospaced'>
14869 $ bitbake -c populate_sdk <replaceable>imagename</replaceable>
14870 </literallayout>
14871 In this case, a default list of packages is set in this
14872 variable, but you can add additional packages to the list.
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014873 See the
14874 "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-adding-individual-packages'>Adding Individual Packages to the Standard SDK</ulink>"
14875 section in the Yocto Project Software Development Kit (SDK)
14876 Developer's Guide for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014877 </para>
14878
14879 <para>
14880 For background information on cross-development toolchains
14881 in the Yocto Project development environment, see the
14882 "<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>"
14883 section.
14884 For information on setting up a cross-development
14885 environment, see the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014886 <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 -050014887 </para>
14888 </glossdef>
14889 </glossentry>
14890
14891 <glossentry id='var-TOOLCHAIN_OUTPUTNAME'><glossterm>TOOLCHAIN_OUTPUTNAME</glossterm>
14892 <info>
14893 TOOLCHAIN_OUTPUTNAME[doc] = "Defines the name used for the toolchain output."
14894 </info>
14895 <glossdef>
14896 <para role="glossdeffirst">
14897<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14898 This variable defines the name used for the toolchain
14899 output.
14900 The
14901 <link linkend='ref-classes-populate-sdk-*'><filename>populate_sdk_base</filename></link>
14902 class sets the
14903 <filename>TOOLCHAIN_OUTPUTNAME</filename> variable as
14904 follows:
14905 <literallayout class='monospaced'>
14906 TOOLCHAIN_OUTPUTNAME ?= "${SDK_NAME}-toolchain-${SDK_VERSION}"
14907 </literallayout>
14908 See the
14909 <link linkend='var-SDK_NAME'><filename>SDK_NAME</filename></link>
14910 and
14911 <link linkend='var-SDK_VERSION'><filename>SDK_VERSION</filename></link>
14912 variables for additional information.
14913 </para>
14914 </glossdef>
14915 </glossentry>
14916
14917 <glossentry id='var-TOOLCHAIN_TARGET_TASK'><glossterm>TOOLCHAIN_TARGET_TASK</glossterm>
14918 <info>
14919 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."
14920 </info>
14921 <glossdef>
14922 <para role="glossdeffirst">
14923<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14924 This variable lists packages the OpenEmbedded build system
14925 uses when it creates the target part of an SDK
14926 (i.e. the part built for the target hardware), which
14927 includes libraries and headers.
Brad Bishop37a0e4d2017-12-04 01:01:44 -050014928 Use this variable to add individual packages to the
14929 part of the SDK that runs on the target.
14930 See the
14931 "<ulink url='&YOCTO_DOCS_SDK_URL;#sdk-adding-individual-packages'>Adding Individual Packages to the Standard SDK</ulink>"
14932 section in the Yocto Project Software Development Kit (SDK)
14933 Developer's Guide for more information.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050014934 </para>
14935
14936 <para>
14937 For background information on cross-development toolchains
14938 in the Yocto Project development environment, see the
14939 "<link linkend='cross-development-toolchain-generation'>Cross-Development Toolchain Generation</link>"
14940 section.
14941 For information on setting up a cross-development
14942 environment, see the
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050014943 <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 -050014944 </para>
14945 </glossdef>
14946 </glossentry>
14947
14948 <glossentry id='var-TOPDIR'><glossterm>TOPDIR</glossterm>
14949 <info>
14950 TOPDIR[doc] = "The Build Directory. BitBake automatically sets this variable. The OpenEmbedded build system uses the Build Directory when building images."
14951 </info>
14952 <glossdef>
14953 <para role="glossdeffirst">
14954<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14955 The top-level
14956 <ulink url='&YOCTO_DOCS_DEV_URL;#build-directory'>Build Directory</ulink>.
14957 BitBake automatically sets this variable when you
14958 initialize your build environment using either
14959 <link linkend='structure-core-script'><filename>&OE_INIT_FILE;</filename></link>
14960 or
14961 <link linkend='structure-memres-core-script'><filename>oe-init-build-env-memres</filename></link>.
14962 </para>
14963 </glossdef>
14964 </glossentry>
14965
14966 <glossentry id='var-TRANSLATED_TARGET_ARCH'><glossterm>TRANSLATED_TARGET_ARCH</glossterm>
14967 <info>
14968 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."
14969 </info>
14970 <glossdef>
14971 <para role="glossdeffirst">
14972<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14973 A sanitized version of
14974 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>.
14975 This variable is used where the architecture is needed in
14976 a value where underscores are not allowed, for example
14977 within package filenames.
14978 In this case, dash characters replace any underscore
14979 characters used in TARGET_ARCH.
14980 </para>
14981
14982 <para>
14983 Do not edit this variable.
14984 </para>
14985 </glossdef>
14986 </glossentry>
14987
14988 <glossentry id='var-TUNE_ARCH'><glossterm>TUNE_ARCH</glossterm>
14989 <info>
14990 TUNE_ARCH[doc] = "The GNU canonical architecture for a specific architecture (i.e. arm, armeb, mips, mips64, and so forth)."
14991 </info>
14992 <glossdef>
14993 <para role="glossdeffirst">
14994<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
14995 The GNU canonical architecture for a specific architecture
14996 (i.e. <filename>arm</filename>,
14997 <filename>armeb</filename>,
14998 <filename>mips</filename>,
14999 <filename>mips64</filename>, and so forth).
15000 BitBake uses this value to setup configuration.
15001 </para>
15002
15003 <para>
15004 <filename>TUNE_ARCH</filename> definitions are specific to
15005 a given architecture.
15006 The definitions can be a single static definition, or
15007 can be dynamically adjusted.
15008 You can see details for a given CPU family by looking at
15009 the architecture's <filename>README</filename> file.
15010 For example, the
15011 <filename>meta/conf/machine/include/mips/README</filename>
15012 file in the
15013 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
15014 provides information for <filename>TUNE_ARCH</filename>
15015 specific to the <filename>mips</filename> architecture.
15016 </para>
15017
15018 <para>
15019 <filename>TUNE_ARCH</filename> is tied closely to
15020 <link linkend='var-TARGET_ARCH'><filename>TARGET_ARCH</filename></link>,
15021 which defines the target machine's architecture.
15022 The BitBake configuration file
15023 (<filename>meta/conf/bitbake.conf</filename>) sets
15024 <filename>TARGET_ARCH</filename> as follows:
15025 <literallayout class='monospaced'>
15026 TARGET_ARCH = "${TUNE_ARCH}"
15027 </literallayout>
15028 </para>
15029
15030 <para>
15031 The following list, which is by no means complete since
15032 architectures are configurable, shows supported machine
15033 architectures:
15034 <literallayout class='monospaced'>
15035 arm
15036 i586
15037 x86_64
15038 powerpc
15039 powerpc64
15040 mips
15041 mipsel
15042 </literallayout>
15043 </para>
15044 </glossdef>
15045 </glossentry>
15046
15047 <glossentry id='var-TUNE_ASARGS'><glossterm>TUNE_ASARGS</glossterm>
15048 <info>
15049 TUNE_ASARGS[doc] = "Specifies architecture-specific assembler flags for the target system."
15050 </info>
15051 <glossdef>
15052 <para role="glossdeffirst">
15053<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15054 Specifies architecture-specific assembler flags for
15055 the target system.
15056 The set of flags is based on the selected tune features.
15057 <filename>TUNE_ASARGS</filename> is set using
15058 the tune include files, which are typically under
15059 <filename>meta/conf/machine/include/</filename> and are
15060 influenced through
15061 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
15062 For example, the
15063 <filename>meta/conf/machine/include/x86/arch-x86.inc</filename>
15064 file defines the flags for the x86 architecture as follows:
15065 <literallayout class='monospaced'>
15066 TUNE_ASARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-x32", "", d)}"
15067 </literallayout>
15068 <note>
15069 Board Support Packages (BSPs) select the tune.
15070 The selected tune, in turn, affects the tune variables
15071 themselves (i.e. the tune can supply its own
15072 set of flags).
15073 </note>
15074 </para>
15075 </glossdef>
15076 </glossentry>
15077
15078 <glossentry id='var-TUNE_CCARGS'><glossterm>TUNE_CCARGS</glossterm>
15079 <info>
15080 TUNE_CCARGS[doc] = "Specifies architecture-specific C compiler flags for the target system."
15081 </info>
15082 <glossdef>
15083 <para role="glossdeffirst">
15084<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15085 Specifies architecture-specific C compiler flags for
15086 the target system.
15087 The set of flags is based on the selected tune features.
15088 <filename>TUNE_CCARGS</filename> is set using
15089 the tune include files, which are typically under
15090 <filename>meta/conf/machine/include/</filename> and are
15091 influenced through
15092 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
15093 <note>
15094 Board Support Packages (BSPs) select the tune.
15095 The selected tune, in turn, affects the tune variables
15096 themselves (i.e. the tune can supply its own
15097 set of flags).
15098 </note>
15099 </para>
15100 </glossdef>
15101 </glossentry>
15102
15103 <glossentry id='var-TUNE_LDARGS'><glossterm>TUNE_LDARGS</glossterm>
15104 <info>
15105 TUNE_LDARGS[doc] = "Specifies architecture-specific linker flags for the target system."
15106 </info>
15107 <glossdef>
15108 <para role="glossdeffirst">
15109<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15110 Specifies architecture-specific linker flags for
15111 the target system.
15112 The set of flags is based on the selected tune features.
15113 <filename>TUNE_LDARGS</filename> is set using
15114 the tune include files, which are typically under
15115 <filename>meta/conf/machine/include/</filename> and are
15116 influenced through
15117 <link linkend='var-TUNE_FEATURES'><filename>TUNE_FEATURES</filename></link>.
15118 For example, the
15119 <filename>meta/conf/machine/include/x86/arch-x86.inc</filename>
15120 file defines the flags for the x86 architecture as follows:
15121 <literallayout class='monospaced'>
15122 TUNE_LDARGS += "${@bb.utils.contains("TUNE_FEATURES", "mx32", "-m elf32_x86_64", "", d)}"
15123 </literallayout>
15124 <note>
15125 Board Support Packages (BSPs) select the tune.
15126 The selected tune, in turn, affects the tune variables
15127 themselves (i.e. the tune can supply its own
15128 set of flags).
15129 </note>
15130 </para>
15131 </glossdef>
15132 </glossentry>
15133
15134 <glossentry id='var-TUNE_FEATURES'><glossterm>TUNE_FEATURES</glossterm>
15135 <info>
15136 TUNE_FEATURES[doc] = "Features used to "tune" a compiler for optimal use given a specific processor."
15137 </info>
15138 <glossdef>
15139 <para role="glossdeffirst">
15140<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15141 Features used to "tune" a compiler for optimal use
15142 given a specific processor.
15143 The features are defined within the tune files and allow
15144 arguments (i.e. <filename>TUNE_*ARGS</filename>) to be
15145 dynamically generated based on the features.
15146 </para>
15147
15148 <para>
15149 The OpenEmbedded build system verifies the features
15150 to be sure they are not conflicting and that they are
15151 supported.
15152 </para>
15153
15154 <para>
15155 The BitBake configuration file
15156 (<filename>meta/conf/bitbake.conf</filename>) defines
15157 <filename>TUNE_FEATURES</filename> as follows:
15158 <literallayout class='monospaced'>
15159 TUNE_FEATURES ??= "${TUNE_FEATURES_tune-${DEFAULTTUNE}}"
15160 </literallayout>
15161 See the
15162 <link linkend='var-DEFAULTTUNE'><filename>DEFAULTTUNE</filename></link>
15163 variable for more information.
15164 </para>
15165 </glossdef>
15166 </glossentry>
15167
15168 <glossentry id='var-TUNE_PKGARCH'><glossterm>TUNE_PKGARCH</glossterm>
15169 <info>
15170 TUNE_PKGARCH[doc] = "The package architecture understood by the packaging system to define the architecture, ABI, and tuning of output packages."
15171 </info>
15172 <glossdef>
15173 <para role="glossdeffirst">
15174<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15175 The package architecture understood by the packaging
15176 system to define the architecture, ABI, and tuning of
15177 output packages.
15178 The specific tune is defined using the "_tune" override
15179 as follows:
15180 <literallayout class='monospaced'>
15181 TUNE_PKGARCH_tune-<replaceable>tune</replaceable> = "<replaceable>tune</replaceable>"
15182 </literallayout>
15183 </para>
15184
15185 <para>
15186 These tune-specific package architectures are defined in
15187 the machine include files.
15188 Here is an example of the "core2-32" tuning as used
15189 in the
15190 <filename>meta/conf/machine/include/tune-core2.inc</filename>
15191 file:
15192 <literallayout class='monospaced'>
15193 TUNE_PKGARCH_tune-core2-32 = "core2-32"
15194 </literallayout>
15195 </para>
15196 </glossdef>
15197 </glossentry>
15198
15199 <glossentry id='var-TUNEABI'><glossterm>TUNEABI</glossterm>
15200 <info>
15201 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."
15202 </info>
15203 <glossdef>
15204 <para role="glossdeffirst">
15205<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15206 An underlying Application Binary Interface (ABI) used by
15207 a particular tuning in a given toolchain layer.
15208 Providers that use prebuilt libraries can use the
15209 <filename>TUNEABI</filename>,
15210 <link linkend='var-TUNEABI_OVERRIDE'><filename>TUNEABI_OVERRIDE</filename></link>,
15211 and
15212 <link linkend='var-TUNEABI_WHITELIST'><filename>TUNEABI_WHITELIST</filename></link>
15213 variables to check compatibility of tunings against their
15214 selection of libraries.
15215 </para>
15216
15217 <para>
15218 If <filename>TUNEABI</filename> is undefined, then every
15219 tuning is allowed.
15220 See the
15221 <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
15222 class to see how the variable is used.
15223 </para>
15224 </glossdef>
15225 </glossentry>
15226
15227 <glossentry id='var-TUNEABI_OVERRIDE'><glossterm>TUNEABI_OVERRIDE</glossterm>
15228 <info>
15229 TUNEABI_OVERRIDE[doc] = "If set, ignores TUNEABI_WHITELIST."
15230 </info>
15231 <glossdef>
15232 <para role="glossdeffirst">
15233<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15234 If set, the OpenEmbedded system ignores the
15235 <link linkend='var-TUNEABI_WHITELIST'><filename>TUNEABI_WHITELIST</filename></link>
15236 variable.
15237 Providers that use prebuilt libraries can use the
15238 <filename>TUNEABI_OVERRIDE</filename>,
15239 <filename>TUNEABI_WHITELIST</filename>,
15240 and
15241 <link linkend='var-TUNEABI'><filename>TUNEABI</filename></link>
15242 variables to check compatibility of a tuning against their
15243 selection of libraries.
15244 </para>
15245
15246 <para>
15247 See the
15248 <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
15249 class to see how the variable is used.
15250 </para>
15251 </glossdef>
15252 </glossentry>
15253
15254 <glossentry id='var-TUNEABI_WHITELIST'><glossterm>TUNEABI_WHITELIST</glossterm>
15255 <info>
15256 TUNEABI_WHITELIST[doc] = "A whitelist of permissible TUNEABI values. If the variable is not set, all values are allowed."
15257 </info>
15258 <glossdef>
15259 <para role="glossdeffirst">
15260<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15261 A whitelist of permissible
15262 <link linkend='var-TUNEABI'><filename>TUNEABI</filename></link>
15263 values.
15264 If <filename>TUNEABI_WHITELIST</filename> is not set,
15265 all tunes are allowed.
15266 Providers that use prebuilt libraries can use the
15267 <filename>TUNEABI_WHITELIST</filename>,
15268 <link linkend='var-TUNEABI_OVERRIDE'><filename>TUNEABI_OVERRIDE</filename></link>,
15269 and <filename>TUNEABI</filename> variables to check
15270 compatibility of a tuning against their selection of
15271 libraries.
15272 </para>
15273
15274 <para>
15275 See the
15276 <link linkend='ref-classes-sanity'><filename>sanity</filename></link>
15277 class to see how the variable is used.
15278 </para>
15279 </glossdef>
15280 </glossentry>
15281
15282 <glossentry id='var-TUNECONFLICTS'><glossterm>TUNECONFLICTS[<replaceable>feature</replaceable>]</glossterm>
15283 <info>
15284 TUNECONFLICTS[doc] = "Specifies CPU or Application Binary Interface (ABI) tuning features that conflict with specified feature."
15285 </info>
15286 <glossdef>
15287 <para role="glossdeffirst">
15288<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15289 Specifies CPU or Application Binary Interface (ABI)
15290 tuning features that conflict with <replaceable>feature</replaceable>.
15291 </para>
15292
15293 <para>
15294 Known tuning conflicts are specified in the machine include
15295 files in the
15296 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
15297 Here is an example from the
15298 <filename>meta/conf/machine/include/mips/arch-mips.inc</filename>
15299 include file that lists the "o32" and "n64" features as
15300 conflicting with the "n32" feature:
15301 <literallayout class='monospaced'>
15302 TUNECONFLICTS[n32] = "o32 n64"
15303 </literallayout>
15304 </para>
15305 </glossdef>
15306 </glossentry>
15307
15308 <glossentry id='var-TUNEVALID'><glossterm>TUNEVALID[<replaceable>feature</replaceable>]</glossterm>
15309 <info>
15310 TUNEVALID[doc] = "Descriptions, stored as flags, of valid tuning features."
15311 </info>
15312 <glossdef>
15313 <para role="glossdeffirst">
15314<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15315 Specifies a valid CPU or Application Binary Interface (ABI)
15316 tuning feature.
15317 The specified feature is stored as a flag.
15318 Valid features are specified in the machine include files
15319 (e.g. <filename>meta/conf/machine/include/arm/arch-arm.inc</filename>).
15320 Here is an example from that file:
15321 <literallayout class='monospaced'>
15322 TUNEVALID[bigendian] = "Enable big-endian mode."
15323 </literallayout>
15324 </para>
15325
15326 <para>
15327 See the machine include files in the
15328 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>
15329 for these features.
15330 </para>
15331 </glossdef>
15332 </glossentry>
15333
15334 </glossdiv>
15335
15336 <glossdiv id='var-glossary-u'><title>U</title>
15337
15338 <glossentry id='var-UBOOT_CONFIG'><glossterm>UBOOT_CONFIG</glossterm>
15339 <info>
15340 UBOOT_CONFIG[doc] = "Configures the UBOOT_MACHINE and can also define IMAGE_FSTYPES for individual cases."
15341 </info>
15342 <glossdef>
15343 <para role="glossdeffirst">
15344<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15345 Configures the
15346 <link linkend='var-UBOOT_MACHINE'><filename>UBOOT_MACHINE</filename></link>
15347 and can also define
15348 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
15349 for individual cases.
15350 </para>
15351
15352 <para>
15353 Following is an example from the
15354 <filename>meta-fsl-arm</filename> layer.
15355 <literallayout class='monospaced'>
15356 UBOOT_CONFIG ??= "sd"
15357 UBOOT_CONFIG[sd] = "mx6qsabreauto_config,sdcard"
15358 UBOOT_CONFIG[eimnor] = "mx6qsabreauto_eimnor_config"
15359 UBOOT_CONFIG[nand] = "mx6qsabreauto_nand_config,ubifs"
15360 UBOOT_CONFIG[spinor] = "mx6qsabreauto_spinor_config"
15361 </literallayout>
15362 In this example, "sd" is selected as the configuration
15363 of the possible four for the
15364 <filename>UBOOT_MACHINE</filename>.
15365 The "sd" configuration defines "mx6qsabreauto_config"
15366 as the value for <filename>UBOOT_MACHINE</filename>, while
15367 the "sdcard" specifies the
15368 <filename>IMAGE_FSTYPES</filename> to use for the U-boot
15369 image.
15370 </para>
15371
15372 <para>
15373 For more information on how the
15374 <filename>UBOOT_CONFIG</filename> is handled, see the
15375 <ulink url='http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/uboot-config.bbclass'><filename>uboot-config</filename></ulink>
15376 class.
15377 </para>
15378 </glossdef>
15379 </glossentry>
15380
15381 <glossentry id='var-UBOOT_ENTRYPOINT'><glossterm>UBOOT_ENTRYPOINT</glossterm>
15382 <info>
15383 UBOOT_ENTRYPOINT[doc] = "Specifies the entry point for the U-Boot image."
15384 </info>
15385 <glossdef>
15386 <para role="glossdeffirst">
15387<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15388 Specifies the entry point for the U-Boot image.
15389 During U-Boot image creation, the
15390 <filename>UBOOT_ENTRYPOINT</filename> variable is passed
15391 as a command-line parameter to the
15392 <filename>uboot-mkimage</filename> utility.
15393 </para>
15394 </glossdef>
15395 </glossentry>
15396
15397 <glossentry id='var-UBOOT_LOADADDRESS'><glossterm>UBOOT_LOADADDRESS</glossterm>
15398 <info>
15399 UBOOT_LOADADDRESS[doc] = "Specifies the load address for the U-Boot image."
15400 </info>
15401 <glossdef>
15402 <para role="glossdeffirst">
15403<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15404 Specifies the load address for the U-Boot image.
15405 During U-Boot image creation, the
15406 <filename>UBOOT_LOADADDRESS</filename> variable is passed
15407 as a command-line parameter to the
15408 <filename>uboot-mkimage</filename> utility.
15409 </para>
15410 </glossdef>
15411 </glossentry>
15412
15413 <glossentry id='var-UBOOT_LOCALVERSION'><glossterm>UBOOT_LOCALVERSION</glossterm>
15414 <info>
15415 UBOOT_LOCALVERSION[doc] = "Appends a string to the name of the local version of the U-Boot image."
15416 </info>
15417 <glossdef>
15418 <para role="glossdeffirst">
15419<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15420 Appends a string to the name of the local version of the
15421 U-Boot image.
15422 For example, assuming the version of the U-Boot image
15423 built was "2013.10, the full version string reported by
15424 U-Boot would be "2013.10-yocto" given the following
15425 statement:
15426 <literallayout class='monospaced'>
15427 UBOOT_LOCALVERSION = "-yocto"
15428 </literallayout>
15429 </para>
15430 </glossdef>
15431 </glossentry>
15432
15433 <glossentry id='var-UBOOT_MACHINE'><glossterm>UBOOT_MACHINE</glossterm>
15434 <info>
15435 UBOOT_MACHINE[doc] = "Specifies the value passed on the make command line when building a U-Boot image."
15436 </info>
15437 <glossdef>
15438 <para role="glossdeffirst">
15439<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15440 Specifies the value passed on the
15441 <filename>make</filename> command line when building
15442 a U-Boot image.
15443 The value indicates the target platform configuration.
15444 You typically set this variable from the machine
15445 configuration file (i.e.
15446 <filename>conf/machine/<replaceable>machine_name</replaceable>.conf</filename>).
15447 </para>
15448
15449 <para>
15450 Please see the "Selection of Processor Architecture and
15451 Board Type" section in the U-Boot README for valid values
15452 for this variable.
15453 </para>
15454 </glossdef>
15455 </glossentry>
15456
15457 <glossentry id='var-UBOOT_MAKE_TARGET'><glossterm>UBOOT_MAKE_TARGET</glossterm>
15458 <info>
15459 UBOOT_MAKE_TARGET[doc] = "Specifies the target called in the Makefile."
15460 </info>
15461 <glossdef>
15462 <para role="glossdeffirst">
15463<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15464 Specifies the target called in the
15465 <filename>Makefile</filename>.
15466 The default target is "all".
15467 </para>
15468 </glossdef>
15469 </glossentry>
15470
15471 <glossentry id='var-UBOOT_SUFFIX'><glossterm>UBOOT_SUFFIX</glossterm>
15472 <info>
15473 UBOOT_SUFFIX[doc] = "Points to the generated U-Boot extension."
15474 </info>
15475 <glossdef>
15476 <para role="glossdeffirst">
15477<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15478 Points to the generated U-Boot extension.
15479 For example, <filename>u-boot.sb</filename> has a
15480 <filename>.sb</filename> extension.
15481 </para>
15482
15483 <para>
15484 The default U-Boot extension is
15485 <filename>.bin</filename>
15486 </para>
15487 </glossdef>
15488 </glossentry>
15489
15490 <glossentry id='var-UBOOT_TARGET'><glossterm>UBOOT_TARGET</glossterm>
15491 <info>
15492 UBOOT_TARGET[doc] = "Specifies the target used for building U-Boot."
15493 </info>
15494 <glossdef>
15495 <para role="glossdeffirst">
15496<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15497 Specifies the target used for building U-Boot.
15498 The target is passed directly as part of the "make" command
15499 (e.g. SPL and AIS).
15500 If you do not specifically set this variable, the
15501 OpenEmbedded build process passes and uses "all" for the
15502 target during the U-Boot building process.
15503 </para>
15504 </glossdef>
15505 </glossentry>
15506
15507 <glossentry id='var-UNKNOWN_CONFIGURE_WHITELIST'><glossterm>UNKNOWN_CONFIGURE_WHITELIST</glossterm>
15508 <info>
15509 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."
15510 </info>
15511 <glossdef>
15512 <para role="glossdeffirst">
15513<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15514 Specifies a list of options that, if reported by the
15515 configure script as being invalid, should not generate a
15516 warning during the
15517 <link linkend='ref-tasks-configure'><filename>do_configure</filename></link>
15518 task.
15519 Normally, invalid configure options are simply not passed
15520 to the configure script (e.g. should be removed from
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015521 <link linkend='var-EXTRA_OECONF'><filename>EXTRA_OECONF</filename></link>
15522 or
15523 <link linkend='var-PACKAGECONFIG_CONFARGS'><filename>PACKAGECONFIG_CONFARGS</filename></link>).
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015524 However, common options, for example, exist that are passed
15525 to all configure scripts at a class level that might not
15526 be valid for some configure scripts.
15527 It follows that no benefit exists in seeing a warning about
15528 these options.
15529 For these cases, the options are added to
15530 <filename>UNKNOWN_CONFIGURE_WHITELIST</filename>.
15531 </para>
15532
15533 <para>
15534 The configure arguments check that uses
15535 <filename>UNKNOWN_CONFIGURE_WHITELIST</filename> is part
15536 of the
15537 <link linkend='ref-classes-insane'><filename>insane</filename></link>
15538 class and is only enabled if the recipe inherits the
15539 <link linkend='ref-classes-autotools'><filename>autotools</filename></link>
15540 class.
15541 </para>
15542 </glossdef>
15543 </glossentry>
15544
15545 <glossentry id='var-UPDATERCPN'><glossterm>UPDATERCPN</glossterm>
15546 <info>
15547 UPDATERCPN[doc] = "Specifies the package that contains the initscript that is to be enabled."
15548 </info>
15549 <glossdef>
15550 <para role="glossdeffirst">
15551<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15552 For recipes inheriting the
15553 <link linkend='ref-classes-update-rc.d'><filename>update-rc.d</filename></link>
15554 class, <filename>UPDATERCPN</filename> specifies
15555 the package that contains the initscript that is to be
15556 enabled.
15557 </para>
15558
15559 <para>
15560 The default value is "${PN}".
15561 Given that almost all recipes that install initscripts
15562 package them in the main package for the recipe, you
15563 rarely need to set this variable in individual recipes.
15564 </para>
15565 </glossdef>
15566 </glossentry>
15567
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015568 <glossentry id='var-UPSTREAM_CHECK_GITTAGREGEX'><glossterm>UPSTREAM_CHECK_GITTAGREGEX</glossterm>
15569 <info>
15570 UPSTREAM_CHECK_GITTAGREGEX[doc] = "Filters relevant Git tags when fetching source from an upstream Git repository."
15571 </info>
15572 <glossdef>
15573 <para role="glossdeffirst">
15574<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15575 When the
15576 <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
15577 class is enabled globally, you can perform a per-recipe
15578 check for what the latest upstream source code version is
15579 by calling
15580 <filename>bitbake -c checkpkg</filename> <replaceable>recipe</replaceable>.
15581 If the recipe source code is provided from Git
15582 repositories, the OpenEmbedded build system determines the
15583 latest upstream version by picking the latest tag from the
15584 list of all repository tags.
15585 You can use the
15586 <filename>UPSTREAM_CHECK_GITTAGREGEX</filename>
15587 variable to provide a regular expression to filter only the
15588 relevant tags should the default filter not work
15589 correctly.
15590 <literallayout class='monospaced'>
15591 UPSTREAM_CHECK_GITTAGREGEX = "git_tag_regex"
15592 </literallayout>
15593 </para>
15594 </glossdef>
15595 </glossentry>
15596
15597 <glossentry id='var-UPSTREAM_CHECK_REGEX'><glossterm>UPSTREAM_CHECK_REGEX</glossterm>
15598 <info>
15599 UPSTREAM_CHECK_REGEX[doc] = "The regular expression the package checking system uses to parse the page pointed to by UPSTREAM_CHECK_URI."
15600 </info>
15601 <glossdef>
15602 <para role="glossdeffirst">
15603<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15604 When the
15605 <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
15606 class is enabled globally, use the
15607 <filename>UPSTREAM_CHECK_REGEX</filename> variable to
15608 specify a different regular expression instead of the
15609 default one when the package checking system is parsing
15610 the page found using
15611 <link linkend='var-UPSTREAM_CHECK_URI'><filename>UPSTREAM_CHECK_URI</filename></link>.
15612 <literallayout class='monospaced'>
15613 UPSTREAM_CHECK_REGEX = "package_regex"
15614 </literallayout>
15615 </para>
15616 </glossdef>
15617 </glossentry>
15618
15619 <glossentry id='var-UPSTREAM_CHECK_URI'><glossterm>UPSTREAM_CHECK_URI</glossterm>
15620 <info>
15621 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."
15622 </info>
15623 <glossdef>
15624 <para role="glossdeffirst">
15625<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15626 When the
15627 <link linkend='ref-classes-distrodata'><filename>distrodata</filename></link>
15628 class is enabled globally, you can perform a per-recipe
15629 check for what the latest upstream source code version is
15630 by calling <filename>bitbake -c checkpkg</filename>
15631 <replaceable>recipe</replaceable>.
15632 If the source code is provided from tarballs, the latest
15633 version is determined by fetching the directory listing
15634 where the tarball is and attempting to find a later tarball.
15635 When this approach does not work, you can use
15636 <filename>UPSTREAM_CHECK_URI</filename> to
15637 provide a different URI that contains the link to the
15638 latest tarball.
15639 <literallayout class='monospaced'>
15640 UPSTREAM_CHECK_URI = "recipe_url"
15641 </literallayout>
15642 </para>
15643 </glossdef>
15644 </glossentry>
15645
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015646 <glossentry id='var-USE_DEVFS'><glossterm>USE_DEVFS</glossterm>
15647 <info>
15648 USE_DEVFS[doc] = "Determines if devtmpfs is used for /dev population."
15649 </info>
15650 <glossdef>
15651 <para role="glossdeffirst">
15652<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15653 Determines if <filename>devtmpfs</filename> is used for
15654 <filename>/dev</filename> population.
15655 The default value used for <filename>USE_DEVFS</filename>
15656 is "1" when no value is specifically set.
15657 Typically, you would set <filename>USE_DEVFS</filename>
15658 to "0" for a statically populated <filename>/dev</filename>
15659 directory.
15660 </para>
15661
15662 <para>
15663 See the
15664 "<ulink url='&YOCTO_DOCS_DEV_URL;#selecting-dev-manager'>Selecting a Device Manager</ulink>"
15665 section in the Yocto Project Development Manual for
15666 information on how to use this variable.
15667 </para>
15668 </glossdef>
15669 </glossentry>
15670
15671 <glossentry id='var-USE_VT'><glossterm>USE_VT</glossterm>
15672 <info>
15673 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."
15674 </info>
15675 <glossdef>
15676 <para role="glossdeffirst">
15677<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15678 When using
15679 <ulink url='&YOCTO_DOCS_DEV_URL;#new-recipe-enabling-system-services'>SysVinit</ulink>,
15680 determines whether or not to run a
15681 <ulink url='http://en.wikipedia.org/wiki/Getty_%28Unix%29'>getty</ulink>
15682 on any virtual terminals in order to enable logging in
15683 through those terminals.
15684 </para>
15685
15686 <para>
15687 The default value used for <filename>USE_VT</filename>
15688 is "1" when no default value is specifically set.
15689 Typically, you would set <filename>USE_VT</filename>
15690 to "0" in the machine configuration file for machines
15691 that do not have a graphical display attached and
15692 therefore do not need virtual terminal functionality.
15693 </para>
15694 </glossdef>
15695 </glossentry>
15696
15697 <glossentry id='var-USER_CLASSES'><glossterm>USER_CLASSES</glossterm>
15698 <info>
15699 USER_CLASSES[doc] = "List of additional classes to use when building images that enable extra features."
15700 </info>
15701 <glossdef>
15702 <para role="glossdeffirst">
15703<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15704 A list of classes to globally inherit.
15705 These classes are used by the OpenEmbedded build system
15706 to enable extra features (e.g.
15707 <filename>buildstats</filename>,
15708 <filename>image-mklibs</filename>, and so forth).
15709 </para>
15710
15711 <para>
15712 The default list is set in your
15713 <filename>local.conf</filename> file:
15714 <literallayout class='monospaced'>
15715 USER_CLASSES ?= "buildstats image-mklibs image-prelink"
15716 </literallayout>
15717 For more information, see
Patrick Williamsd8c66bc2016-06-20 12:57:21 -050015718 <filename>meta-poky/conf/local.conf.sample</filename> in
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015719 the
15720 <ulink url='&YOCTO_DOCS_DEV_URL;#source-directory'>Source Directory</ulink>.
15721 </para>
15722 </glossdef>
15723 </glossentry>
15724
15725 <glossentry id='var-USERADD_ERROR_DYNAMIC'><glossterm>USERADD_ERROR_DYNAMIC</glossterm>
15726 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015727 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 -050015728 </info>
15729 <glossdef>
15730 <para role="glossdeffirst">
15731<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015732 If set to "error", forces the OpenEmbedded build system to
15733 produce an error if the user identification
15734 (<filename>uid</filename>) and group identification
15735 (<filename>gid</filename>) values are not defined
15736 in <filename>files/passwd</filename>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015737 and <filename>files/group</filename> files.
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015738 If set to "warn", a warning will be issued instead.
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015739 </para>
15740
15741 <para>
15742 The default behavior for the build system is to dynamically
15743 apply <filename>uid</filename> and
15744 <filename>gid</filename> values.
15745 Consequently, the <filename>USERADD_ERROR_DYNAMIC</filename>
15746 variable is by default not set.
15747 If you plan on using statically assigned
15748 <filename>gid</filename> and <filename>uid</filename>
15749 values, you should set
15750 the <filename>USERADD_ERROR_DYNAMIC</filename> variable in
15751 your <filename>local.conf</filename> file as
15752 follows:
15753 <literallayout class='monospaced'>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015754 USERADD_ERROR_DYNAMIC = "error"
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015755 </literallayout>
15756 Overriding the default behavior implies you are going to
15757 also take steps to set static <filename>uid</filename> and
15758 <filename>gid</filename> values through use of the
15759 <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>,
15760 <link linkend='var-USERADD_UID_TABLES'><filename>USERADD_UID_TABLES</filename></link>,
15761 and
15762 <link linkend='var-USERADD_GID_TABLES'><filename>USERADD_GID_TABLES</filename></link>
15763 variables.
15764 </para>
15765 </glossdef>
15766 </glossentry>
15767
15768 <glossentry id='var-USERADD_GID_TABLES'><glossterm>USERADD_GID_TABLES</glossterm>
15769 <info>
15770 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."
15771 </info>
15772 <glossdef>
15773 <para role="glossdeffirst">
15774<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15775 Specifies a password file to use for obtaining static
15776 group identification (<filename>gid</filename>) values
15777 when the OpenEmbedded build system adds a group to the
15778 system during package installation.
15779 </para>
15780
15781 <para>
15782 When applying static group identification
15783 (<filename>gid</filename>) values, the OpenEmbedded build
15784 system looks in
15785 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>
15786 for a <filename>files/group</filename> file and then applies
15787 those <filename>uid</filename> values.
15788 Set the variable as follows in your
15789 <filename>local.conf</filename> file:
15790 <literallayout class='monospaced'>
15791 USERADD_GID_TABLES = "files/group"
15792 </literallayout>
15793 </para>
15794
15795 <note>
15796 Setting the
15797 <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>
15798 variable to "useradd-staticids" causes the build system
15799 to use static <filename>gid</filename> values.
15800 </note>
15801 </glossdef>
15802 </glossentry>
15803
15804 <glossentry id='var-USERADD_PACKAGES'><glossterm>USERADD_PACKAGES</glossterm>
15805 <info>
15806 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."
15807 </info>
15808 <glossdef>
15809 <para role="glossdeffirst">
15810<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15811 When inheriting the
15812 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
15813 class, this variable
15814 specifies the individual packages within the recipe that
15815 require users and/or groups to be added.
15816 </para>
15817
15818 <para>
15819 You must set this variable if the recipe inherits the
15820 class.
15821 For example, the following enables adding a user for the
15822 main package in a recipe:
15823 <literallayout class='monospaced'>
15824 USERADD_PACKAGES = "${PN}"
15825 </literallayout>
15826 <note>
15827 If follows that if you are going to use the
15828 <filename>USERADD_PACKAGES</filename> variable,
15829 you need to set one or more of the
15830 <link linkend='var-USERADD_PARAM'><filename>USERADD_PARAM</filename></link>,
15831 <link linkend='var-GROUPADD_PARAM'><filename>GROUPADD_PARAM</filename></link>,
15832 or
15833 <link linkend='var-GROUPMEMS_PARAM'><filename>GROUPMEMS_PARAM</filename></link>
15834 variables.
15835 </note>
15836 </para>
15837
15838 </glossdef>
15839 </glossentry>
15840
15841 <glossentry id='var-USERADD_PARAM'><glossterm>USERADD_PARAM</glossterm>
15842 <info>
15843 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."
15844 </info>
15845 <glossdef>
15846 <para role="glossdeffirst">
15847<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15848 When inheriting the
15849 <link linkend='ref-classes-useradd'><filename>useradd</filename></link>
15850 class, this variable
15851 specifies for a package what parameters should be passed
15852 to the <filename>useradd</filename> command
15853 if you wish to add a user to the system when the package
15854 is installed.
15855 </para>
15856
15857 <para>
15858 Here is an example from the <filename>dbus</filename>
15859 recipe:
15860 <literallayout class='monospaced'>
15861 USERADD_PARAM_${PN} = "--system --home ${localstatedir}/lib/dbus \
15862 --no-create-home --shell /bin/false \
15863 --user-group messagebus"
15864 </literallayout>
15865 For information on the standard Linux shell command
15866 <filename>useradd</filename>, see
15867 <ulink url='http://linux.die.net/man/8/useradd'></ulink>.
15868 </para>
15869 </glossdef>
15870 </glossentry>
15871
15872 <glossentry id='var-USERADD_UID_TABLES'><glossterm>USERADD_UID_TABLES</glossterm>
15873 <info>
15874 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."
15875 </info>
15876 <glossdef>
15877 <para role="glossdeffirst">
15878<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15879 Specifies a password file to use for obtaining static
15880 user identification (<filename>uid</filename>) values
15881 when the OpenEmbedded build system adds a user to the
15882 system during package installation.
15883 </para>
15884
15885 <para>
15886 When applying static user identification
15887 (<filename>uid</filename>) values, the OpenEmbedded build
15888 system looks in
15889 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>
15890 for a <filename>files/passwd</filename> file and then applies
15891 those <filename>uid</filename> values.
15892 Set the variable as follows in your
15893 <filename>local.conf</filename> file:
15894 <literallayout class='monospaced'>
15895 USERADD_UID_TABLES = "files/passwd"
15896 </literallayout>
15897 </para>
15898
15899 <note>
15900 Setting the
15901 <link linkend='var-USERADDEXTENSION'><filename>USERADDEXTENSION</filename></link>
15902 variable to "useradd-staticids" causes the build system
15903 to use static <filename>uid</filename> values.
15904 </note>
15905 </glossdef>
15906 </glossentry>
15907
15908 <glossentry id='var-USERADDEXTENSION'><glossterm>USERADDEXTENSION</glossterm>
15909 <info>
Patrick Williamsc0f7c042017-02-23 20:41:17 -060015910 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 -050015911 </info>
15912 <glossdef>
15913 <para role="glossdeffirst">
15914<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15915 When set to "useradd-staticids", causes the
15916 OpenEmbedded build system to base all user and group
15917 additions on a static
15918 <filename>passwd</filename> and
15919 <filename>group</filename> files found in
15920 <link linkend='var-BBPATH'><filename>BBPATH</filename></link>.
15921 </para>
15922
15923 <para>
15924 To use static user identification (<filename>uid</filename>)
15925 and group identification (<filename>gid</filename>)
15926 values, set the variable
15927 as follows in your <filename>local.conf</filename> file:
15928 <literallayout class='monospaced'>
15929 USERADDEXTENSION = "useradd-staticids"
15930 </literallayout>
15931 <note>
15932 Setting this variable to use static
15933 <filename>uid</filename> and <filename>gid</filename>
15934 values causes the OpenEmbedded build system to employ
15935 the
Patrick Williamsf1e5d692016-03-30 15:21:19 -050015936 <link linkend='ref-classes-useradd'><filename>useradd-staticids</filename></link>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015937 class.
15938 </note>
15939 </para>
15940
15941 <para>
15942 If you use static <filename>uid</filename> and
15943 <filename>gid</filename> information, you must also
15944 specify the <filename>files/passwd</filename> and
15945 <filename>files/group</filename> files by setting the
15946 <link linkend='var-USERADD_UID_TABLES'><filename>USERADD_UID_TABLES</filename></link>
15947 and
15948 <link linkend='var-USERADD_GID_TABLES'><filename>USERADD_GID_TABLES</filename></link>
15949 variables.
15950 Additionally, you should also set the
15951 <link linkend='var-USERADD_ERROR_DYNAMIC'><filename>USERADD_ERROR_DYNAMIC</filename></link>
15952 variable.
15953 </para>
15954 </glossdef>
15955 </glossentry>
15956
15957 </glossdiv>
15958
Brad Bishop6e60e8b2018-02-01 10:27:11 -050015959 <glossdiv id='var-glossary-v'><title>V</title>
15960
15961 <glossentry id='var-VOLATILE_LOG_DIR'><glossterm>VOLATILE_LOG_DIR</glossterm>
15962 <info>
15963 VOLATILE_LOG_DIR[doc] = "Specifies the persistence of the target's /var/log directory, which is used to house postinstall target log files."
15964 </info>
15965 <glossdef>
15966 <para role="glossdeffirst">
15967<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15968 Specifies the persistence of the target's
15969 <filename>/var/log</filename> directory, which is used to
15970 house postinstall target log files.
15971 </para>
15972
15973 <para>
15974 By default, <filename>VOLATILE_LOG_DIR</filename> is set
15975 to "yes", which means the file is not persistent.
15976 You can override this setting by setting the
15977 variable to "no" to make the log directory persistent.
15978 </para>
15979 </glossdef>
15980 </glossentry>
15981
15982 </glossdiv>
Patrick Williamsc124f4f2015-09-15 14:41:29 -050015983
15984 <glossdiv id='var-glossary-w'><title>W</title>
15985
15986 <glossentry id='var-WARN_QA'><glossterm>WARN_QA</glossterm>
15987 <info>
15988 WARN_QA[doc] = "Specifies the quality assurance checks whose failures are reported as warnings by the OpenEmbedded build system."
15989 </info>
15990 <glossdef>
15991 <para role="glossdeffirst">
15992<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
15993 Specifies the quality assurance checks whose failures are
15994 reported as warnings by the OpenEmbedded build system.
15995 You set this variable in your distribution configuration
15996 file.
15997 For a list of the checks you can control with this variable,
15998 see the
15999 "<link linkend='ref-classes-insane'><filename>insane.bbclass</filename></link>"
16000 section.
16001 </para>
16002 </glossdef>
16003 </glossentry>
16004
Brad Bishop6e60e8b2018-02-01 10:27:11 -050016005 <glossentry id='var-WKS_FILE_DEPENDS'><glossterm>WKS_FILE_DEPENDS</glossterm>
16006 <info>
16007 WKS_FILE_DEPENDS[doc] = "Lists a recipe's build-time dependencies specific to Wic."
16008 </info>
16009 <glossdef>
16010 <para role="glossdeffirst">
16011 When placed in the recipe that builds your image, this
16012 variable lists build-time dependencies.
16013 The <filename>WKS_FILE_DEPENDS</filename> variable is only
16014 applicable when Wic images are active (i.e. when
16015 <link linkend='var-IMAGE_FSTYPES'><filename>IMAGE_FSTYPES</filename></link>
16016 contains entries related to Wic).
16017 If your recipe does not create Wic images, the variable
16018 has no effect.
16019 </para>
16020
16021 <para>
16022 The <filename>WKS_FILE_DEPENDS</filename> variable is
16023 similar to the
16024 <link linkend='var-DEPENDS'><filename>DEPENDS</filename></link>
16025 variable.
16026 When you use the variable in your recipe that builds the
16027 Wic image, dependencies you list in the
16028 <filename>WIC_FILE_DEPENDS</filename> variable are added to
16029 the <filename>DEPENDS</filename> variable.
16030 </para>
16031
16032 <para>
16033 With the <filename>WKS_FILE_DEPENDS</filename> variable,
16034 you have the possibility to specify a list of additional
16035 dependencies (e.g. native tools, bootloaders, and so forth),
16036 that are required to build Wic images.
16037 Following is an example:
16038 <literallayout class='monospaced'>
16039 WKS_FILE_DEPENDS = "<replaceable>some-native-tool</replaceable>"
16040 </literallayout>
16041 In the previous example,
16042 <replaceable>some-native-tool</replaceable> would be
16043 replaced with an actual native tool on which the build
16044 would depend.
16045 </para>
16046 </glossdef>
16047 </glossentry>
16048
Brad Bishop37a0e4d2017-12-04 01:01:44 -050016049 <glossentry id='var-WKS_FILE'><glossterm>WKS_FILE</glossterm>
16050 <info>
16051 WKS_FILE[doc] = "Specifies the name of the wic kickstart file."
16052 </info>
16053 <glossdef>
16054 <para role="glossdeffirst">
16055 Specifies the location of the Wic
16056 kickstart file that is used by the OpenEmbedded build
16057 system to create a partitioned image
16058 (<replaceable>image</replaceable><filename>.wic</filename>).
16059 For information on how to create a
16060 partitioned image, see the
16061 "<ulink url='&YOCTO_DOCS_DEV_URL;#creating-wic-images-oe'>Creating Partitioned Images</ulink>"
16062 section.
16063 For details on the kickstart file format, see the
16064 "<ulink url='&YOCTO_DOCS_DEV_URL;#openembedded-kickstart-wks-reference'>OpenEmbedded Kickstart (<filename>.wks</filename>) Reference</ulink>.
16065 </para>
16066 </glossdef>
16067 </glossentry>
16068
Patrick Williamsc124f4f2015-09-15 14:41:29 -050016069 <glossentry id='var-WORKDIR'><glossterm>WORKDIR</glossterm>
16070 <info>
16071 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."
16072 </info>
16073 <glossdef>
16074 <para role="glossdeffirst">
16075<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
16076 The pathname of the work directory in which the OpenEmbedded
16077 build system builds a recipe.
16078 This directory is located within the
16079 <link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>
16080 directory structure and is specific to the recipe being
16081 built and the system for which it is being built.
16082 </para>
16083
16084 <para>
16085 The <filename>WORKDIR</filename> directory is defined as
16086 follows:
16087 <literallayout class='monospaced'>
16088 ${TMPDIR}/work/${MULTIMACH_TARGET_SYS}/${PN}/${EXTENDPE}${PV}-${PR}
16089 </literallayout>
16090 The actual directory depends on several things:
16091 <itemizedlist>
16092 <listitem><link linkend='var-TMPDIR'><filename>TMPDIR</filename></link>:
16093 The top-level build output directory</listitem>
16094 <listitem><link linkend='var-MULTIMACH_TARGET_SYS'><filename>MULTIMACH_TARGET_SYS</filename></link>:
16095 The target system identifier</listitem>
16096 <listitem><link linkend='var-PN'><filename>PN</filename></link>:
16097 The recipe name</listitem>
16098 <listitem><link linkend='var-EXTENDPE'><filename>EXTENDPE</filename></link>:
16099 The epoch - (if
16100 <link linkend='var-PE'><filename>PE</filename></link>
16101 is not specified, which is usually the case for most
16102 recipes, then <filename>EXTENDPE</filename> is blank)</listitem>
16103 <listitem><link linkend='var-PV'><filename>PV</filename></link>:
16104 The recipe version</listitem>
16105 <listitem><link linkend='var-PR'><filename>PR</filename></link>:
16106 The recipe revision</listitem>
16107 </itemizedlist>
16108 </para>
16109
16110 <para>
16111 As an example, assume a Source Directory top-level folder
16112 name <filename>poky</filename>, a default Build Directory at
16113 <filename>poky/build</filename>, and a
16114 <filename>qemux86-poky-linux</filename> machine target
16115 system.
16116 Furthermore, suppose your recipe is named
16117 <filename>foo_1.3.0-r0.bb</filename>.
16118 In this case, the work directory the build system uses to
16119 build the package would be as follows:
16120 <literallayout class='monospaced'>
16121 poky/build/tmp/work/qemux86-poky-linux/foo/1.3.0-r0
16122 </literallayout>
16123 </para>
16124 </glossdef>
16125 </glossentry>
16126
16127 </glossdiv>
16128
16129 <glossdiv id='var-glossary-x'><title>X</title>
16130
16131 <glossentry id='var-XSERVER'><glossterm>XSERVER</glossterm>
16132 <info>
16133 XSERVER[doc] = "Specifies the packages that should be installed
16134 to provide an X server and drivers for the current machine."
16135 </info>
16136 <glossdef>
16137 <para role="glossdeffirst">
16138<!-- <para role="glossdeffirst"><imagedata fileref="figures/define-generic.png" /> -->
16139 Specifies the packages that should be installed to
16140 provide an X server and drivers for the current machine,
16141 assuming your image directly includes
16142 <filename>packagegroup-core-x11-xserver</filename> or,
16143 perhaps indirectly, includes "x11-base" in
16144 <link linkend='var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></link>.
16145 </para>
16146
16147 <para>
16148 The default value of <filename>XSERVER</filename>, if not
16149 specified in the machine configuration, is
16150 "xserver-xorg xf86-video-fbdev xf86-input-evdev".
16151 </para>
16152 </glossdef>
16153 </glossentry>
16154
16155 </glossdiv>
16156
16157<!-- <glossdiv id='var-glossary-y'><title>Y</title>-->
16158<!-- </glossdiv>-->
16159
16160<!-- <glossdiv id='var-glossary-z'><title>Z</title>-->
16161<!-- </glossdiv>-->
16162
16163</glossary>
16164</chapter>
16165<!--
16166vim: expandtab tw=80 ts=4
16167-->